Browse Source
The Large File Storage extension specified by GitHub [1] uses SHA-256 to compute the ID of large files stored by the extension. Hence implement a SHA-256 abstraction similar to the SHA-1 abstraction used by JGit. [1] https://git-lfs.github.com/ Bug: 470333 Change-Id: I3a95954543c8570d73929e55f4a884b55dbf1b7a Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>stable-4.3
Matthias Sohn
10 years ago
committed by
Saša Živkov
66 changed files with 5336 additions and 3 deletions
@ -0,0 +1,8 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<classpath> |
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> |
||||||
|
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> |
||||||
|
<classpathentry kind="src" path="src"/> |
||||||
|
<classpathentry kind="src" path="tst"/> |
||||||
|
<classpathentry kind="output" path="bin"/> |
||||||
|
</classpath> |
@ -0,0 +1,34 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<projectDescription> |
||||||
|
<name>org.eclipse.jgit.lfs.test</name> |
||||||
|
<comment></comment> |
||||||
|
<projects> |
||||||
|
</projects> |
||||||
|
<buildSpec> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.pde.ManifestBuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.pde.SchemaBuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
</buildSpec> |
||||||
|
<natures> |
||||||
|
<nature>org.eclipse.pde.PluginNature</nature> |
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature> |
||||||
|
<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> |
||||||
|
</natures> |
||||||
|
</projectDescription> |
@ -0,0 +1,2 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
encoding/<project>=UTF-8 |
@ -0,0 +1,2 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
line.separator=\n |
@ -0,0 +1,398 @@ |
|||||||
|
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.7 |
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve |
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.7 |
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate |
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate |
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate |
||||||
|
org.eclipse.jdt.core.compiler.doc.comment.support=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.autoboxing=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.comparingIdentical=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.deadCode=error |
||||||
|
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=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private |
||||||
|
org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error |
||||||
|
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=error |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error |
||||||
|
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=error |
||||||
|
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=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=error |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedLabel=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedLocal=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedParameter=warning |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error |
||||||
|
org.eclipse.jdt.core.compiler.source=1.7 |
||||||
|
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=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_method=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_package=0 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false |
||||||
|
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_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=80 |
||||||
|
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=2 |
||||||
|
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=insert |
||||||
|
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_member=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=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_at_end_of_file_if_missing=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_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_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=true |
||||||
|
org.eclipse.jdt.core.formatter.join_wrapped_lines=true |
||||||
|
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=80 |
||||||
|
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=true |
||||||
|
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 |
@ -0,0 +1,61 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true |
||||||
|
formatter_profile=_JGit Format |
||||||
|
formatter_settings_version=12 |
||||||
|
org.eclipse.jdt.ui.ignorelowercasenames=true |
||||||
|
org.eclipse.jdt.ui.importorder=java;javax;org;com; |
||||||
|
org.eclipse.jdt.ui.ondemandthreshold=99 |
||||||
|
org.eclipse.jdt.ui.staticondemandthreshold=99 |
||||||
|
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates/> |
||||||
|
sp_cleanup.add_default_serial_version_id=true |
||||||
|
sp_cleanup.add_generated_serial_version_id=false |
||||||
|
sp_cleanup.add_missing_annotations=false |
||||||
|
sp_cleanup.add_missing_deprecated_annotations=true |
||||||
|
sp_cleanup.add_missing_methods=false |
||||||
|
sp_cleanup.add_missing_nls_tags=false |
||||||
|
sp_cleanup.add_missing_override_annotations=true |
||||||
|
sp_cleanup.add_missing_override_annotations_interface_methods=false |
||||||
|
sp_cleanup.add_serial_version_id=false |
||||||
|
sp_cleanup.always_use_blocks=true |
||||||
|
sp_cleanup.always_use_parentheses_in_expressions=false |
||||||
|
sp_cleanup.always_use_this_for_non_static_field_access=false |
||||||
|
sp_cleanup.always_use_this_for_non_static_method_access=false |
||||||
|
sp_cleanup.convert_to_enhanced_for_loop=false |
||||||
|
sp_cleanup.correct_indentation=false |
||||||
|
sp_cleanup.format_source_code=true |
||||||
|
sp_cleanup.format_source_code_changes_only=true |
||||||
|
sp_cleanup.make_local_variable_final=false |
||||||
|
sp_cleanup.make_parameters_final=false |
||||||
|
sp_cleanup.make_private_fields_final=true |
||||||
|
sp_cleanup.make_type_abstract_if_missing_method=false |
||||||
|
sp_cleanup.make_variable_declarations_final=false |
||||||
|
sp_cleanup.never_use_blocks=false |
||||||
|
sp_cleanup.never_use_parentheses_in_expressions=true |
||||||
|
sp_cleanup.on_save_use_additional_actions=true |
||||||
|
sp_cleanup.organize_imports=false |
||||||
|
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false |
||||||
|
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true |
||||||
|
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true |
||||||
|
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false |
||||||
|
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false |
||||||
|
sp_cleanup.remove_private_constructors=true |
||||||
|
sp_cleanup.remove_trailing_whitespaces=true |
||||||
|
sp_cleanup.remove_trailing_whitespaces_all=true |
||||||
|
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false |
||||||
|
sp_cleanup.remove_unnecessary_casts=false |
||||||
|
sp_cleanup.remove_unnecessary_nls_tags=false |
||||||
|
sp_cleanup.remove_unused_imports=false |
||||||
|
sp_cleanup.remove_unused_local_variables=false |
||||||
|
sp_cleanup.remove_unused_private_fields=true |
||||||
|
sp_cleanup.remove_unused_private_members=false |
||||||
|
sp_cleanup.remove_unused_private_methods=true |
||||||
|
sp_cleanup.remove_unused_private_types=true |
||||||
|
sp_cleanup.sort_members=false |
||||||
|
sp_cleanup.sort_members_all=false |
||||||
|
sp_cleanup.use_blocks=false |
||||||
|
sp_cleanup.use_blocks_only_for_return_and_throw=false |
||||||
|
sp_cleanup.use_parentheses_in_expressions=false |
||||||
|
sp_cleanup.use_this_for_non_static_field_access=false |
||||||
|
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true |
||||||
|
sp_cleanup.use_this_for_non_static_method_access=false |
||||||
|
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true |
@ -0,0 +1,3 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
project.repository.kind=bugzilla |
||||||
|
project.repository.url=https\://bugs.eclipse.org/bugs |
@ -0,0 +1,2 @@ |
|||||||
|
commit.comment.template=${task.description} \n\nBug\: ${task.key} |
||||||
|
eclipse.preferences.version=1 |
@ -0,0 +1,93 @@ |
|||||||
|
ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error |
||||||
|
ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||||
|
ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||||
|
ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||||
|
ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||||
|
API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error |
||||||
|
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error |
||||||
|
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error |
||||||
|
API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error |
||||||
|
CLASS_ELEMENT_TYPE_ADDED_METHOD=Error |
||||||
|
CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||||
|
CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||||
|
CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||||
|
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||||
|
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error |
||||||
|
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||||
|
ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||||
|
ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||||
|
ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error |
||||||
|
ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||||
|
ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||||
|
ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||||
|
FIELD_ELEMENT_TYPE_ADDED_VALUE=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error |
||||||
|
FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error |
||||||
|
FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error |
||||||
|
ILLEGAL_EXTEND=Warning |
||||||
|
ILLEGAL_IMPLEMENT=Warning |
||||||
|
ILLEGAL_INSTANTIATE=Warning |
||||||
|
ILLEGAL_OVERRIDE=Warning |
||||||
|
ILLEGAL_REFERENCE=Warning |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||||
|
INVALID_JAVADOC_TAG=Ignore |
||||||
|
INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error |
||||||
|
LEAK_EXTEND=Warning |
||||||
|
LEAK_FIELD_DECL=Warning |
||||||
|
LEAK_IMPLEMENT=Warning |
||||||
|
LEAK_METHOD_PARAM=Warning |
||||||
|
LEAK_METHOD_RETURN_TYPE=Warning |
||||||
|
METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||||
|
METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error |
||||||
|
METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error |
||||||
|
METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error |
||||||
|
UNUSED_PROBLEM_FILTERS=Warning |
||||||
|
automatically_removed_unused_problem_filters=false |
||||||
|
eclipse.preferences.version=1 |
||||||
|
incompatible_api_component_version=Error |
||||||
|
incompatible_api_component_version_include_major_without_breaking_change=Disabled |
||||||
|
incompatible_api_component_version_include_minor_without_api_change=Disabled |
||||||
|
invalid_since_tag_version=Error |
||||||
|
malformed_since_tag=Error |
||||||
|
missing_since_tag=Error |
||||||
|
report_api_breakage_when_major_version_incremented=Disabled |
||||||
|
report_resolution_errors_api_component=Warning |
@ -0,0 +1,2 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
resolve.requirebundle=false |
@ -0,0 +1,31 @@ |
|||||||
|
TESTS = glob(['tst/**/*.java']) |
||||||
|
|
||||||
|
for t in TESTS: |
||||||
|
n = t[len('tst/'):len(t)-len('.java')].replace('/', '.') |
||||||
|
java_test( |
||||||
|
name = n, |
||||||
|
labels = ['lfs'], |
||||||
|
srcs = [t], |
||||||
|
deps = [ |
||||||
|
':helpers', |
||||||
|
'//org.eclipse.jgit.junit:junit', |
||||||
|
'//org.eclipse.jgit.lfs:jgit-lfs', |
||||||
|
'//org.eclipse.jgit:jgit', |
||||||
|
'//lib:hamcrest-core', |
||||||
|
'//lib:hamcrest-library', |
||||||
|
'//lib:junit', |
||||||
|
], |
||||||
|
source_under_test = ['//org.eclipse.jgit.lfs:jgit-lfs'], |
||||||
|
) |
||||||
|
|
||||||
|
java_library( |
||||||
|
name = 'helpers', |
||||||
|
srcs = glob(['src/**/*.java']), |
||||||
|
deps = [ |
||||||
|
'//org.eclipse.jgit:jgit', |
||||||
|
'//org.eclipse.jgit.lfs:jgit-lfs', |
||||||
|
'//org.eclipse.jgit.junit:junit', |
||||||
|
'//lib:junit', |
||||||
|
], |
||||||
|
visibility = ['PUBLIC'] |
||||||
|
) |
@ -0,0 +1,20 @@ |
|||||||
|
Manifest-Version: 1.0 |
||||||
|
Bundle-ManifestVersion: 2 |
||||||
|
Bundle-Name: %plugin_name |
||||||
|
Bundle-SymbolicName: org.eclipse.jgit.lfs.test |
||||||
|
Bundle-Version: 4.3.0.qualifier |
||||||
|
Bundle-Vendor: %provider_name |
||||||
|
Bundle-Localization: plugin |
||||||
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 |
||||||
|
Import-Package: org.eclipse.jgit.junit;version="[4.3.0,4.4.0)", |
||||||
|
org.eclipse.jgit.lfs.errors;version="[4.3.0,4.4.0)", |
||||||
|
org.eclipse.jgit.lfs.lib;version="[4.3.0,4.4.0)", |
||||||
|
org.eclipse.jgit.lib;version="[4.3.0,4.4.0)", |
||||||
|
org.eclipse.jgit.util;version="[4.3.0,4.4.0)", |
||||||
|
org.hamcrest.core;version="[1.1.0,2.0.0)", |
||||||
|
org.junit;version="[4.0.0,5.0.0)", |
||||||
|
org.junit.runner;version="[4.0.0,5.0.0)", |
||||||
|
org.junit.runners;version="[4.0.0,5.0.0)" |
||||||
|
Export-Package: org.eclipse.jgit.lfs.lib;version="4.3.0";x-internal:=true, |
||||||
|
org.eclipse.jgit.lfs.test;version="4.3.0";x-internal:=true |
||||||
|
|
@ -0,0 +1,5 @@ |
|||||||
|
source.. = tst/, src/ |
||||||
|
output.. = bin/ |
||||||
|
bin.includes = META-INF/,\ |
||||||
|
.,\ |
||||||
|
plugin.properties |
@ -0,0 +1,2 @@ |
|||||||
|
plugin_name=JGit LFS Tests |
||||||
|
provider_name=Eclipse JGit |
@ -0,0 +1,119 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
Copyright (C) 2015 Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
and other copyright owners as documented in the project's IP log. |
||||||
|
|
||||||
|
This program and the accompanying materials are made available |
||||||
|
under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
accompanies this distribution, is reproduced below, and is |
||||||
|
available at http://www.eclipse.org/org/documents/edl-v10.php |
||||||
|
|
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or |
||||||
|
without modification, are permitted provided that the following |
||||||
|
conditions are met: |
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer. |
||||||
|
|
||||||
|
- Redistributions in binary form must reproduce the above |
||||||
|
copyright notice, this list of conditions and the following |
||||||
|
disclaimer in the documentation and/or other materials provided |
||||||
|
with the distribution. |
||||||
|
|
||||||
|
- Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
names of its contributors may be used to endorse or promote |
||||||
|
products derived from this software without specific prior |
||||||
|
written permission. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
--> |
||||||
|
|
||||||
|
<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/maven-v4_0_0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
|
||||||
|
<parent> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>org.eclipse.jgit-parent</artifactId> |
||||||
|
<version>4.3.0-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>org.eclipse.jgit.lfs.test</artifactId> |
||||||
|
<name>JGit - Large File Storage Tests</name> |
||||||
|
|
||||||
|
<description> |
||||||
|
Tests for the Large File Extension (LFS). |
||||||
|
</description> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>junit</groupId> |
||||||
|
<artifactId>junit</artifactId> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>org.eclipse.jgit</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>org.eclipse.jgit.lfs</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>org.eclipse.jgit.junit</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
<scope>test</scope> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
|
||||||
|
<build> |
||||||
|
<testSourceDirectory>tst/</testSourceDirectory> |
||||||
|
<sourceDirectory>src/</sourceDirectory> |
||||||
|
|
||||||
|
<testResources> |
||||||
|
<testResource> |
||||||
|
<directory>tst-rsrc/</directory> |
||||||
|
</testResource> |
||||||
|
</testResources> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||||
|
<artifactId>maven-jar-plugin</artifactId> |
||||||
|
<executions> |
||||||
|
<execution> |
||||||
|
<goals> |
||||||
|
<goal>test-jar</goal> |
||||||
|
</goals> |
||||||
|
</execution> |
||||||
|
</executions> |
||||||
|
</plugin> |
||||||
|
<plugin> |
||||||
|
<artifactId>maven-surefire-plugin</artifactId> |
||||||
|
<configuration> |
||||||
|
<argLine>-Djava.io.tmpdir=${project.build.directory} -Xmx300m</argLine> |
||||||
|
</configuration> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
</project> |
@ -0,0 +1,94 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
package org.eclipse.jgit.lfs.test; |
||||||
|
|
||||||
|
import java.io.BufferedInputStream; |
||||||
|
import java.io.FileNotFoundException; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.InputStream; |
||||||
|
import java.nio.charset.StandardCharsets; |
||||||
|
import java.nio.file.Files; |
||||||
|
import java.nio.file.Path; |
||||||
|
import java.security.MessageDigest; |
||||||
|
|
||||||
|
import org.eclipse.jgit.lfs.lib.Constants; |
||||||
|
import org.eclipse.jgit.lfs.lib.LongObjectId; |
||||||
|
|
||||||
|
public class LongObjectIdTestUtils { |
||||||
|
|
||||||
|
/** |
||||||
|
* Create id as hash of the given string. |
||||||
|
* |
||||||
|
* @param s |
||||||
|
* the string to hash |
||||||
|
* @return id calculated by hashing string |
||||||
|
*/ |
||||||
|
public static LongObjectId hash(String s) { |
||||||
|
MessageDigest md = Constants.newMessageDigest(); |
||||||
|
md.update(s.getBytes(StandardCharsets.UTF_8)); |
||||||
|
return LongObjectId.fromRaw(md.digest()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Create id as hash of a file content |
||||||
|
* |
||||||
|
* @param file |
||||||
|
* the file to hash |
||||||
|
* @return id calculated by hashing file content |
||||||
|
* @throws FileNotFoundException |
||||||
|
* if file doesn't exist |
||||||
|
* @throws IOException |
||||||
|
*/ |
||||||
|
public static LongObjectId hash(Path file) |
||||||
|
throws FileNotFoundException, IOException { |
||||||
|
MessageDigest md = Constants.newMessageDigest(); |
||||||
|
try (InputStream is = new BufferedInputStream( |
||||||
|
Files.newInputStream(file))) { |
||||||
|
final byte[] buffer = new byte[4096]; |
||||||
|
for (int read = 0; (read = is.read(buffer)) != -1;) { |
||||||
|
md.update(buffer, 0, read); |
||||||
|
} |
||||||
|
} |
||||||
|
return LongObjectId.fromRaw(md.digest()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,596 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.eclipse.jgit.lfs.lib; |
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals; |
||||||
|
import static org.junit.Assert.assertFalse; |
||||||
|
import static org.junit.Assert.assertNotNull; |
||||||
|
import static org.junit.Assert.assertNotSame; |
||||||
|
import static org.junit.Assert.assertNull; |
||||||
|
import static org.junit.Assert.assertTrue; |
||||||
|
import static org.junit.Assert.fail; |
||||||
|
|
||||||
|
import org.eclipse.jgit.lfs.test.LongObjectIdTestUtils; |
||||||
|
import org.junit.Test; |
||||||
|
|
||||||
|
/* |
||||||
|
* Ported to SHA-256 from org.eclipse.jgit.lib.AbbreviatedObjectIdTest |
||||||
|
*/ |
||||||
|
public class AbbreviatedLongObjectIdTest { |
||||||
|
@Test |
||||||
|
public void testEmpty_FromByteArray() { |
||||||
|
final AbbreviatedLongObjectId i; |
||||||
|
i = AbbreviatedLongObjectId.fromString(new byte[] {}, 0, 0); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(0, i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals("", i.name()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testEmpty_FromString() { |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId |
||||||
|
.fromString(""); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(0, i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals("", i.name()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testFull_FromByteArray() { |
||||||
|
final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final byte[] b = org.eclipse.jgit.lib.Constants.encodeASCII(s); |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(b, |
||||||
|
0, b.length); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertTrue(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
|
||||||
|
final LongObjectId f = i.toLongObjectId(); |
||||||
|
assertNotNull(f); |
||||||
|
assertEquals(LongObjectId.fromString(s), f); |
||||||
|
assertEquals(f.hashCode(), i.hashCode()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testFull_FromString() { |
||||||
|
final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertTrue(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
|
||||||
|
final LongObjectId f = i.toLongObjectId(); |
||||||
|
assertNotNull(f); |
||||||
|
assertEquals(LongObjectId.fromString(s), f); |
||||||
|
assertEquals(f.hashCode(), i.hashCode()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test1_FromString() { |
||||||
|
final String s = "2"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test2_FromString() { |
||||||
|
final String s = "27"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test3_FromString() { |
||||||
|
final String s = "27e"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test4_FromString() { |
||||||
|
final String s = "27e1"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test5_FromString() { |
||||||
|
final String s = "27e15"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test6_FromString() { |
||||||
|
final String s = "27e15b"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test7_FromString() { |
||||||
|
final String s = "27e15b7"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test8_FromString() { |
||||||
|
final String s = "27e15b72"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test9_FromString() { |
||||||
|
final String s = "27e15b729"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test15_FromString() { |
||||||
|
final String s = "27e15b72937fc8f"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test16_FromString() { |
||||||
|
final String s = "27e15b72937fc8f5"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test17_FromString() { |
||||||
|
final String s = "27e15b72937fc8f55"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test33_FromString() { |
||||||
|
final String s = "27e15b72937fc8f558da24ac3d50ec203"; |
||||||
|
final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotNull(i); |
||||||
|
assertEquals(s.length(), i.length()); |
||||||
|
assertFalse(i.isComplete()); |
||||||
|
assertEquals(s, i.name()); |
||||||
|
assertNull(i.toLongObjectId()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testEquals_Short() { |
||||||
|
final String s = "27e15b72"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId.fromString(s); |
||||||
|
final AbbreviatedLongObjectId b = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotSame(a, b); |
||||||
|
assertTrue(a.hashCode() == b.hashCode()); |
||||||
|
assertEquals(b, a); |
||||||
|
assertEquals(a, b); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testEquals_Full() { |
||||||
|
final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId.fromString(s); |
||||||
|
final AbbreviatedLongObjectId b = AbbreviatedLongObjectId.fromString(s); |
||||||
|
assertNotSame(a, b); |
||||||
|
assertTrue(a.hashCode() == b.hashCode()); |
||||||
|
assertEquals(b, a); |
||||||
|
assertEquals(a, b); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testNotEquals_SameLength() { |
||||||
|
final String sa = "27e15b72"; |
||||||
|
final String sb = "27e15b7f"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId |
||||||
|
.fromString(sa); |
||||||
|
final AbbreviatedLongObjectId b = AbbreviatedLongObjectId |
||||||
|
.fromString(sb); |
||||||
|
assertFalse(a.equals(b)); |
||||||
|
assertFalse(b.equals(a)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testNotEquals_DiffLength() { |
||||||
|
final String sa = "27e15b72abcd"; |
||||||
|
final String sb = "27e15b72"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId |
||||||
|
.fromString(sa); |
||||||
|
final AbbreviatedLongObjectId b = AbbreviatedLongObjectId |
||||||
|
.fromString(sb); |
||||||
|
assertFalse(a.equals(b)); |
||||||
|
assertFalse(b.equals(a)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testPrefixCompare_Full() { |
||||||
|
final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId |
||||||
|
.fromString(s1); |
||||||
|
final LongObjectId i1 = LongObjectId.fromString(s1); |
||||||
|
assertEquals(0, a.prefixCompare(i1)); |
||||||
|
assertTrue(i1.startsWith(a)); |
||||||
|
|
||||||
|
final String s2 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b11"; |
||||||
|
final LongObjectId i2 = LongObjectId.fromString(s2); |
||||||
|
assertTrue(a.prefixCompare(i2) < 0); |
||||||
|
assertFalse(i2.startsWith(a)); |
||||||
|
|
||||||
|
final String s3 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b0f"; |
||||||
|
final LongObjectId i3 = LongObjectId.fromString(s3); |
||||||
|
assertTrue(a.prefixCompare(i3) > 0); |
||||||
|
assertFalse(i3.startsWith(a)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testPrefixCompare_1() { |
||||||
|
final String sa = "2"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId |
||||||
|
.fromString(sa); |
||||||
|
|
||||||
|
final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i1 = LongObjectId.fromString(s1); |
||||||
|
assertEquals(0, a.prefixCompare(i1)); |
||||||
|
assertTrue(i1.startsWith(a)); |
||||||
|
|
||||||
|
final String s2 = "37e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i2 = LongObjectId.fromString(s2); |
||||||
|
assertTrue(a.prefixCompare(i2) < 0); |
||||||
|
assertFalse(i2.startsWith(a)); |
||||||
|
|
||||||
|
final String s3 = "17e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i3 = LongObjectId.fromString(s3); |
||||||
|
assertTrue(a.prefixCompare(i3) > 0); |
||||||
|
assertFalse(i3.startsWith(a)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testPrefixCompare_15() { |
||||||
|
final String sa = "27e15b72937fc8f"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId |
||||||
|
.fromString(sa); |
||||||
|
|
||||||
|
final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i1 = LongObjectId.fromString(s1); |
||||||
|
assertEquals(0, a.prefixCompare(i1)); |
||||||
|
assertTrue(i1.startsWith(a)); |
||||||
|
|
||||||
|
final String s2 = "27e15b72937fc90558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i2 = LongObjectId.fromString(s2); |
||||||
|
assertTrue(a.prefixCompare(i2) < 0); |
||||||
|
assertFalse(i2.startsWith(a)); |
||||||
|
|
||||||
|
final String s3 = "27e15b72937fc8e558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i3 = LongObjectId.fromString(s3); |
||||||
|
assertTrue(a.prefixCompare(i3) > 0); |
||||||
|
assertFalse(i3.startsWith(a)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testPrefixCompare_16() { |
||||||
|
final String sa = "27e15b72937fc8f5"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId |
||||||
|
.fromString(sa); |
||||||
|
|
||||||
|
final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i1 = LongObjectId.fromString(s1); |
||||||
|
assertEquals(0, a.prefixCompare(i1)); |
||||||
|
assertTrue(i1.startsWith(a)); |
||||||
|
|
||||||
|
final String s2 = "27e15b72937fc8f658da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i2 = LongObjectId.fromString(s2); |
||||||
|
assertTrue(a.prefixCompare(i2) < 0); |
||||||
|
assertFalse(i2.startsWith(a)); |
||||||
|
|
||||||
|
final String s3 = "27e15b72937fc8f458da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i3 = LongObjectId.fromString(s3); |
||||||
|
assertTrue(a.prefixCompare(i3) > 0); |
||||||
|
assertFalse(i3.startsWith(a)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testPrefixCompare_17() { |
||||||
|
final String sa = "27e15b72937fc8f55"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId |
||||||
|
.fromString(sa); |
||||||
|
|
||||||
|
final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i1 = LongObjectId.fromString(s1); |
||||||
|
assertEquals(0, a.prefixCompare(i1)); |
||||||
|
assertTrue(i1.startsWith(a)); |
||||||
|
|
||||||
|
final String s2 = "27e15b72937fc8f568da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i2 = LongObjectId.fromString(s2); |
||||||
|
assertTrue(a.prefixCompare(i2) < 0); |
||||||
|
assertFalse(i2.startsWith(a)); |
||||||
|
|
||||||
|
final String s3 = "27e15b72937fc8f548da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i3 = LongObjectId.fromString(s3); |
||||||
|
assertTrue(a.prefixCompare(i3) > 0); |
||||||
|
assertFalse(i3.startsWith(a)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testPrefixCompare_33() { |
||||||
|
final String sa = "27e15b72937fc8f558da24ac3d50ec203"; |
||||||
|
final AbbreviatedLongObjectId a = AbbreviatedLongObjectId |
||||||
|
.fromString(sa); |
||||||
|
|
||||||
|
final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i1 = LongObjectId.fromString(s1); |
||||||
|
assertEquals(0, a.prefixCompare(i1)); |
||||||
|
assertTrue(i1.startsWith(a)); |
||||||
|
|
||||||
|
final String s2 = "27e15b72937fc8f558da24ac3d50ec20402a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i2 = LongObjectId.fromString(s2); |
||||||
|
assertTrue(a.prefixCompare(i2) < 0); |
||||||
|
assertFalse(i2.startsWith(a)); |
||||||
|
|
||||||
|
final String s3 = "27e15b72937fc8f558da24ac3d50ec20202a4cf21e33b87ae8e4ce90e89c4b10"; |
||||||
|
final LongObjectId i3 = LongObjectId.fromString(s3); |
||||||
|
assertTrue(a.prefixCompare(i3) > 0); |
||||||
|
assertFalse(i3.startsWith(a)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testIsId() { |
||||||
|
// These are all too short.
|
||||||
|
assertFalse(AbbreviatedLongObjectId.isId("")); |
||||||
|
assertFalse(AbbreviatedLongObjectId.isId("a")); |
||||||
|
|
||||||
|
// These are too long.
|
||||||
|
assertFalse(AbbreviatedLongObjectId.isId(LongObjectId |
||||||
|
.fromString( |
||||||
|
"27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10") |
||||||
|
.name() + "0")); |
||||||
|
assertFalse(AbbreviatedLongObjectId.isId(LongObjectId |
||||||
|
.fromString( |
||||||
|
"27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10") |
||||||
|
.name() + "c0ffee")); |
||||||
|
|
||||||
|
// These contain non-hex characters.
|
||||||
|
assertFalse(AbbreviatedLongObjectId.isId("01notahexstring")); |
||||||
|
|
||||||
|
// These should all work.
|
||||||
|
assertTrue(AbbreviatedLongObjectId.isId("ab")); |
||||||
|
assertTrue(AbbreviatedLongObjectId.isId("abc")); |
||||||
|
assertTrue(AbbreviatedLongObjectId.isId("abcd")); |
||||||
|
assertTrue(AbbreviatedLongObjectId.isId("abcd0")); |
||||||
|
assertTrue(AbbreviatedLongObjectId.isId("abcd09")); |
||||||
|
assertTrue(AbbreviatedLongObjectId.isId(LongObjectId |
||||||
|
.fromString( |
||||||
|
"27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10") |
||||||
|
.name())); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testAbbreviate() { |
||||||
|
AnyLongObjectId id = LongObjectIdTestUtils.hash("test"); |
||||||
|
assertEquals( |
||||||
|
"abbreviated id should match the id it was abbreviated from", 0, |
||||||
|
id.abbreviate(10).prefixCompare(id)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testFromStringByteWrongLength() { |
||||||
|
byte[] buf = new byte[65]; |
||||||
|
try { |
||||||
|
AbbreviatedLongObjectId.fromString(buf, 0, 65); |
||||||
|
fail("expected IllegalArgumentException for too long AbbreviatedLongObjectId"); |
||||||
|
} catch (IllegalArgumentException e) { |
||||||
|
// expected
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testFromStringWrongLength() { |
||||||
|
AnyLongObjectId id = LongObjectIdTestUtils.hash("test"); |
||||||
|
try { |
||||||
|
AbbreviatedLongObjectId.fromString(id.name() + "c0ffee"); |
||||||
|
fail("expected IllegalArgumentException for too long AbbreviatedLongObjectId"); |
||||||
|
} catch (IllegalArgumentException e) { |
||||||
|
// expected
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testFromLongObjectId() { |
||||||
|
AnyLongObjectId id = LongObjectIdTestUtils.hash("test"); |
||||||
|
assertEquals(0, |
||||||
|
AbbreviatedLongObjectId.fromLongObjectId(id).prefixCompare(id)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testPrefixCompareByte() { |
||||||
|
AnyLongObjectId id = LongObjectId.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"); |
||||||
|
byte[] buf = new byte[32]; |
||||||
|
id.copyRawTo(buf, 0); |
||||||
|
|
||||||
|
AbbreviatedLongObjectId a = id.abbreviate(62); |
||||||
|
assertEquals(0, a.prefixCompare(buf, 0)); |
||||||
|
|
||||||
|
a = LongObjectId |
||||||
|
.fromString( |
||||||
|
"0023456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef") |
||||||
|
.abbreviate(16); |
||||||
|
assertEquals(-1, a.prefixCompare(buf, 0)); |
||||||
|
a = LongObjectId |
||||||
|
.fromString( |
||||||
|
"0123456789abcdef0023456789abcdef0123456789abcdef0123456789abcdef") |
||||||
|
.abbreviate(32); |
||||||
|
assertEquals(-1, a.prefixCompare(buf, 0)); |
||||||
|
a = LongObjectId |
||||||
|
.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0023456789abcdef0123456789abcdef") |
||||||
|
.abbreviate(48); |
||||||
|
assertEquals(-1, a.prefixCompare(buf, 0)); |
||||||
|
a = LongObjectId |
||||||
|
.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0123456789abcdef0023456789abcdef") |
||||||
|
.abbreviate(64); |
||||||
|
assertEquals(-1, a.prefixCompare(buf, 0)); |
||||||
|
|
||||||
|
a = LongObjectId |
||||||
|
.fromString( |
||||||
|
"1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef") |
||||||
|
.abbreviate(16); |
||||||
|
assertEquals(1, a.prefixCompare(buf, 0)); |
||||||
|
a = LongObjectId |
||||||
|
.fromString( |
||||||
|
"0123456789abcdef1123456789abcdef0123456789abcdef0123456789abcdef") |
||||||
|
.abbreviate(32); |
||||||
|
assertEquals(1, a.prefixCompare(buf, 0)); |
||||||
|
a = LongObjectId |
||||||
|
.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef1123456789abcdef0123456789abcdef") |
||||||
|
.abbreviate(48); |
||||||
|
assertEquals(1, a.prefixCompare(buf, 0)); |
||||||
|
a = LongObjectId |
||||||
|
.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0123456789abcdef1123456789abcdef") |
||||||
|
.abbreviate(64); |
||||||
|
assertEquals(1, a.prefixCompare(buf, 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testPrefixCompareLong() { |
||||||
|
AnyLongObjectId id = new LongObjectId(1L, 2L, 3L, 4L); |
||||||
|
long[] buf = new long[4]; |
||||||
|
id.copyRawTo(buf, 0); |
||||||
|
|
||||||
|
AbbreviatedLongObjectId a = id.abbreviate(62); |
||||||
|
assertEquals(0, a.prefixCompare(buf, 0)); |
||||||
|
|
||||||
|
a = new LongObjectId(0L, 2L, 3L, 4L).abbreviate(16); |
||||||
|
assertEquals(-1, a.prefixCompare(buf, 0)); |
||||||
|
a = new LongObjectId(1L, 1L, 3L, 4L).abbreviate(32); |
||||||
|
assertEquals(-1, a.prefixCompare(buf, 0)); |
||||||
|
a = new LongObjectId(1L, 2L, 2L, 4L).abbreviate(48); |
||||||
|
assertEquals(-1, a.prefixCompare(buf, 0)); |
||||||
|
a = new LongObjectId(1L, 2L, 3L, 3L).abbreviate(64); |
||||||
|
assertEquals(-1, a.prefixCompare(buf, 0)); |
||||||
|
|
||||||
|
a = new LongObjectId(2L, 2L, 3L, 4L).abbreviate(16); |
||||||
|
assertEquals(1, a.prefixCompare(buf, 0)); |
||||||
|
a = new LongObjectId(1L, 3L, 3L, 4L).abbreviate(32); |
||||||
|
assertEquals(1, a.prefixCompare(buf, 0)); |
||||||
|
a = new LongObjectId(1L, 2L, 4L, 4L).abbreviate(48); |
||||||
|
assertEquals(1, a.prefixCompare(buf, 0)); |
||||||
|
a = new LongObjectId(1L, 2L, 3L, 5L).abbreviate(64); |
||||||
|
assertEquals(1, a.prefixCompare(buf, 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testGetFirstByte() { |
||||||
|
AnyLongObjectId id = LongObjectId.fromString( |
||||||
|
"f423456789abcdef0123456789abcdef0123456789abcdef1123456789abcdef"); |
||||||
|
AbbreviatedLongObjectId a = id.abbreviate(10); |
||||||
|
assertEquals(0xf4, a.getFirstByte()); |
||||||
|
assertEquals(id.getFirstByte(), a.getFirstByte()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testNotEquals() { |
||||||
|
AbbreviatedLongObjectId a = new LongObjectId(1L, 2L, 3L, 4L) |
||||||
|
.abbreviate(10); |
||||||
|
assertFalse(a.equals("different")); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,427 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.eclipse.jgit.lfs.lib; |
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals; |
||||||
|
import static org.junit.Assert.assertFalse; |
||||||
|
import static org.junit.Assert.assertNotEquals; |
||||||
|
import static org.junit.Assert.assertTrue; |
||||||
|
import static org.junit.Assert.fail; |
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.OutputStreamWriter; |
||||||
|
import java.nio.ByteBuffer; |
||||||
|
import java.nio.charset.Charset; |
||||||
|
import java.nio.charset.StandardCharsets; |
||||||
|
import java.nio.file.Files; |
||||||
|
import java.nio.file.Path; |
||||||
|
|
||||||
|
import org.eclipse.jgit.junit.JGitTestUtil; |
||||||
|
import org.eclipse.jgit.lfs.errors.InvalidLongObjectIdException; |
||||||
|
import org.eclipse.jgit.lfs.test.LongObjectIdTestUtils; |
||||||
|
import org.eclipse.jgit.lib.Constants; |
||||||
|
import org.eclipse.jgit.util.FileUtils; |
||||||
|
import org.junit.AfterClass; |
||||||
|
import org.junit.BeforeClass; |
||||||
|
import org.junit.Test; |
||||||
|
|
||||||
|
/* |
||||||
|
* Ported to SHA-256 from org.eclipse.jgit.lib.ObjectIdTest |
||||||
|
*/ |
||||||
|
public class LongObjectIdTest { |
||||||
|
private static Path tmp; |
||||||
|
|
||||||
|
@BeforeClass |
||||||
|
public static void setup() throws IOException { |
||||||
|
tmp = Files.createTempDirectory("jgit_test_"); |
||||||
|
} |
||||||
|
|
||||||
|
@AfterClass |
||||||
|
public static void tearDown() throws IOException { |
||||||
|
FileUtils.delete(tmp.toFile(), FileUtils.RECURSIVE | FileUtils.RETRY); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test001_toString() { |
||||||
|
final String x = "8367b0edc81df80e6b42eb1b71f783111224e058cb3da37894d065d2deb7ab0a"; |
||||||
|
final LongObjectId oid = LongObjectId.fromString(x); |
||||||
|
assertEquals(x, oid.name()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test002_toString() { |
||||||
|
final String x = "140ce71d628cceb78e3709940ba52a651a0c4a9c1400f2e15e998a1a43887edf"; |
||||||
|
final LongObjectId oid = LongObjectId.fromString(x); |
||||||
|
assertEquals(x, oid.name()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test003_equals() { |
||||||
|
final String x = "8367b0edc81df80e6b42eb1b71f783111224e058cb3da37894d065d2deb7ab0a"; |
||||||
|
final LongObjectId a = LongObjectId.fromString(x); |
||||||
|
final LongObjectId b = LongObjectId.fromString(x); |
||||||
|
assertEquals(a.hashCode(), b.hashCode()); |
||||||
|
assertEquals("a and b should be equal", b, a); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test004_isId() { |
||||||
|
assertTrue("valid id", LongObjectId.isId( |
||||||
|
"8367b0edc81df80e6b42eb1b71f783111224e058cb3da37894d065d2deb7ab0a")); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test005_notIsId() { |
||||||
|
assertFalse("bob is not an id", LongObjectId.isId("bob")); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test006_notIsId() { |
||||||
|
assertFalse("63 digits is not an id", LongObjectId.isId( |
||||||
|
"8367b0edc81df80e6b42eb1b71f783111224e058cb3da37894d065d2deb7ab0")); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test007_isId() { |
||||||
|
assertTrue("uppercase is accepted", LongObjectId.isId( |
||||||
|
"8367b0edc81df80e6b42eb1b71f783111224e058cb3da37894d065d2dEb7ab0A")); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test008_notIsId() { |
||||||
|
assertFalse("g is not a valid hex digit", LongObjectId.isId( |
||||||
|
"g367b0edc81df80e6b42eb1b71f783111224e058cb3da37894d065d2deb7ab0a")); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test009_toString() { |
||||||
|
final String x = "140ce71d628cceb78e3709940ba52a651a0c4a9c1400f2e15e998a1a43887edf"; |
||||||
|
final LongObjectId oid = LongObjectId.fromString(x); |
||||||
|
assertEquals(x, LongObjectId.toString(oid)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test010_toString() { |
||||||
|
final String x = "0000000000000000000000000000000000000000000000000000000000000000"; |
||||||
|
assertEquals(x, LongObjectId.toString(null)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void test011_toString() { |
||||||
|
final String x = "0123456789ABCDEFabcdef01234567890123456789ABCDEFabcdef0123456789"; |
||||||
|
final LongObjectId oid = LongObjectId.fromString(x); |
||||||
|
assertEquals(x.toLowerCase(), oid.name()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testGetByte() { |
||||||
|
byte[] raw = new byte[32]; |
||||||
|
for (int i = 0; i < 32; i++) |
||||||
|
raw[i] = (byte) (0xa0 + i); |
||||||
|
LongObjectId id = LongObjectId.fromRaw(raw); |
||||||
|
|
||||||
|
assertEquals(raw[0] & 0xff, id.getFirstByte()); |
||||||
|
assertEquals(raw[0] & 0xff, id.getByte(0)); |
||||||
|
assertEquals(raw[1] & 0xff, id.getByte(1)); |
||||||
|
assertEquals(raw[1] & 0xff, id.getSecondByte()); |
||||||
|
|
||||||
|
for (int i = 2; i < 32; i++) { |
||||||
|
assertEquals("index " + i, raw[i] & 0xff, id.getByte(i)); |
||||||
|
} |
||||||
|
try { |
||||||
|
id.getByte(32); |
||||||
|
fail("LongObjectId has 32 byte only"); |
||||||
|
} catch (ArrayIndexOutOfBoundsException e) { |
||||||
|
// expected
|
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testSetByte() { |
||||||
|
byte[] exp = new byte[32]; |
||||||
|
for (int i = 0; i < 32; i++) { |
||||||
|
exp[i] = (byte) (0xa0 + i); |
||||||
|
} |
||||||
|
|
||||||
|
MutableLongObjectId id = new MutableLongObjectId(); |
||||||
|
id.fromRaw(exp); |
||||||
|
assertEquals(LongObjectId.fromRaw(exp).name(), id.name()); |
||||||
|
|
||||||
|
id.setByte(0, 0x10); |
||||||
|
assertEquals(0x10, id.getByte(0)); |
||||||
|
exp[0] = 0x10; |
||||||
|
assertEquals(LongObjectId.fromRaw(exp).name(), id.name()); |
||||||
|
|
||||||
|
for (int p = 1; p < 32; p++) { |
||||||
|
id.setByte(p, 0x10 + p); |
||||||
|
assertEquals(0x10 + p, id.getByte(p)); |
||||||
|
exp[p] = (byte) (0x10 + p); |
||||||
|
assertEquals(LongObjectId.fromRaw(exp).name(), id.name()); |
||||||
|
} |
||||||
|
|
||||||
|
for (int p = 0; p < 32; p++) { |
||||||
|
id.setByte(p, 0x80 + p); |
||||||
|
assertEquals(0x80 + p, id.getByte(p)); |
||||||
|
exp[p] = (byte) (0x80 + p); |
||||||
|
assertEquals(LongObjectId.fromRaw(exp).name(), id.name()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testZeroId() { |
||||||
|
AnyLongObjectId zero = new LongObjectId(0L, 0L, 0L, 0L); |
||||||
|
assertEquals(zero, LongObjectId.zeroId()); |
||||||
|
assertEquals( |
||||||
|
"0000000000000000000000000000000000000000000000000000000000000000", |
||||||
|
LongObjectId.zeroId().name()); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testEquals() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
assertTrue("id should equal itself", id1.equals(id1)); |
||||||
|
AnyLongObjectId id2 = new LongObjectId(id1); |
||||||
|
assertEquals("objects should be equals", id1, id2); |
||||||
|
|
||||||
|
id2 = LongObjectIdTestUtils.hash("other"); |
||||||
|
assertNotEquals("objects should be not equal", id1, id2); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyRawBytes() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
AnyLongObjectId id2 = new LongObjectId(id1); |
||||||
|
|
||||||
|
byte[] buf = new byte[64]; |
||||||
|
id1.copyRawTo(buf, 0); |
||||||
|
id2.copyRawTo(buf, 32); |
||||||
|
assertTrue("objects should be equals", |
||||||
|
LongObjectId.equals(buf, 0, buf, 32)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyRawLongs() { |
||||||
|
long[] a = new long[4]; |
||||||
|
a[0] = 1L; |
||||||
|
a[1] = 2L; |
||||||
|
a[2] = 3L; |
||||||
|
a[3] = 4L; |
||||||
|
AnyLongObjectId id1 = new LongObjectId(a[0], a[1], a[2], a[3]); |
||||||
|
AnyLongObjectId id2 = LongObjectId.fromRaw(a); |
||||||
|
assertEquals("objects should be equals", id1, id2); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyFromStringInvalid() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
try { |
||||||
|
LongObjectId.fromString(id1.name() + "01234"); |
||||||
|
fail("expected InvalidLongObjectIdException"); |
||||||
|
} catch (InvalidLongObjectIdException e) { |
||||||
|
assertEquals("Invalid id: " + id1.name() + "01234", |
||||||
|
e.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyFromStringByte() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
byte[] buf = new byte[64]; |
||||||
|
Charset cs = StandardCharsets.US_ASCII; |
||||||
|
cs.encode(id1.name()).get(buf); |
||||||
|
AnyLongObjectId id2 = LongObjectId.fromString(buf, 0); |
||||||
|
assertEquals("objects should be equals", id1, id2); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testHashFile() throws IOException { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
Path f = tmp.resolve("test"); |
||||||
|
JGitTestUtil.write(f.toFile(), "test"); |
||||||
|
AnyLongObjectId id2 = LongObjectIdTestUtils.hash(f); |
||||||
|
assertEquals("objects should be equals", id1, id2); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCompareTo() { |
||||||
|
AnyLongObjectId id1 = LongObjectId.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"); |
||||||
|
assertEquals(0, id1.compareTo(LongObjectId.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"))); |
||||||
|
assertEquals(0, id1.compareTo(id1)); |
||||||
|
|
||||||
|
assertEquals(-1, id1.compareTo(LongObjectId.fromString( |
||||||
|
"1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"))); |
||||||
|
assertEquals(-1, id1.compareTo(LongObjectId.fromString( |
||||||
|
"0123456789abcdef1123456789abcdef0123456789abcdef0123456789abcdef"))); |
||||||
|
assertEquals(-1, id1.compareTo(LongObjectId.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef1123456789abcdef0123456789abcdef"))); |
||||||
|
assertEquals(-1, id1.compareTo(LongObjectId.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0123456789abcdef1123456789abcdef"))); |
||||||
|
|
||||||
|
assertEquals(1, id1.compareTo(LongObjectId.fromString( |
||||||
|
"0023456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"))); |
||||||
|
assertEquals(1, id1.compareTo(LongObjectId.fromString( |
||||||
|
"0123456789abcdef0023456789abcdef0123456789abcdef0123456789abcdef"))); |
||||||
|
assertEquals(1, id1.compareTo(LongObjectId.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0023456789abcdef0123456789abcdef"))); |
||||||
|
assertEquals(1, id1.compareTo(LongObjectId.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0123456789abcdef0023456789abcdef"))); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCompareToByte() { |
||||||
|
AnyLongObjectId id1 = LongObjectId.fromString( |
||||||
|
"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"); |
||||||
|
byte[] buf = new byte[32]; |
||||||
|
id1.copyRawTo(buf, 0); |
||||||
|
assertEquals(0, id1.compareTo(buf, 0)); |
||||||
|
|
||||||
|
LongObjectId |
||||||
|
.fromString( |
||||||
|
"1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef") |
||||||
|
.copyRawTo(buf, 0); |
||||||
|
assertEquals(-1, id1.compareTo(buf, 0)); |
||||||
|
|
||||||
|
LongObjectId |
||||||
|
.fromString( |
||||||
|
"0023456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef") |
||||||
|
.copyRawTo(buf, 0); |
||||||
|
assertEquals(1, id1.compareTo(buf, 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCompareToLong() { |
||||||
|
AnyLongObjectId id1 = new LongObjectId(1L, 2L, 3L, 4L); |
||||||
|
long[] buf = new long[4]; |
||||||
|
id1.copyRawTo(buf, 0); |
||||||
|
assertEquals(0, id1.compareTo(buf, 0)); |
||||||
|
|
||||||
|
new LongObjectId(2L, 2L, 3L, 4L).copyRawTo(buf, 0); |
||||||
|
assertEquals(-1, id1.compareTo(buf, 0)); |
||||||
|
|
||||||
|
new LongObjectId(0L, 2L, 3L, 4L).copyRawTo(buf, 0); |
||||||
|
assertEquals(1, id1.compareTo(buf, 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyToByte() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
byte[] buf = new byte[64]; |
||||||
|
id1.copyTo(buf, 0); |
||||||
|
assertEquals(id1, LongObjectId.fromString(buf, 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyRawToByteBuffer() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
ByteBuffer buf = ByteBuffer.allocate(32); |
||||||
|
id1.copyRawTo(buf); |
||||||
|
assertEquals(id1, LongObjectId.fromRaw(buf.array(), 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyToByteBuffer() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
ByteBuffer buf = ByteBuffer.allocate(64); |
||||||
|
id1.copyTo(buf); |
||||||
|
assertEquals(id1, LongObjectId.fromString(buf.array(), 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyRawToOutputStream() throws IOException { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
ByteArrayOutputStream os = new ByteArrayOutputStream(32); |
||||||
|
id1.copyRawTo(os); |
||||||
|
assertEquals(id1, LongObjectId.fromRaw(os.toByteArray(), 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyToOutputStream() throws IOException { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
ByteArrayOutputStream os = new ByteArrayOutputStream(64); |
||||||
|
id1.copyTo(os); |
||||||
|
assertEquals(id1, LongObjectId.fromString(os.toByteArray(), 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyToWriter() throws IOException { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
ByteArrayOutputStream os = new ByteArrayOutputStream(64); |
||||||
|
OutputStreamWriter w = new OutputStreamWriter(os, Constants.CHARSET); |
||||||
|
id1.copyTo(w); |
||||||
|
w.close(); |
||||||
|
assertEquals(id1, LongObjectId.fromString(os.toByteArray(), 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyToWriterWithBuf() throws IOException { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
ByteArrayOutputStream os = new ByteArrayOutputStream(64); |
||||||
|
OutputStreamWriter w = new OutputStreamWriter(os, Constants.CHARSET); |
||||||
|
char[] buf = new char[64]; |
||||||
|
id1.copyTo(buf, w); |
||||||
|
w.close(); |
||||||
|
assertEquals(id1, LongObjectId.fromString(os.toByteArray(), 0)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopyToStringBuilder() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
StringBuilder sb = new StringBuilder(); |
||||||
|
char[] buf = new char[64]; |
||||||
|
id1.copyTo(buf, sb); |
||||||
|
assertEquals(id1, LongObjectId.fromString(sb.toString())); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopy() { |
||||||
|
AnyLongObjectId id1 = LongObjectIdTestUtils.hash("test"); |
||||||
|
assertEquals(id1.copy(), id1); |
||||||
|
MutableLongObjectId id2 = new MutableLongObjectId(); |
||||||
|
id2.fromObjectId(id1); |
||||||
|
assertEquals(id1, id2.copy()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,92 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
package org.eclipse.jgit.lfs.lib; |
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals; |
||||||
|
|
||||||
|
import org.junit.Test; |
||||||
|
|
||||||
|
/* |
||||||
|
* Ported to SHA-256 from org.eclipse.jgit.lib.MutableObjectIdTest |
||||||
|
*/ |
||||||
|
public class MutableLongObjectIdTest { |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testFromRawLong() { |
||||||
|
MutableLongObjectId m = new MutableLongObjectId(); |
||||||
|
m.fromRaw(new long[] { 1L, 2L, 3L, 4L }); |
||||||
|
assertEquals(new LongObjectId(1L, 2L, 3L, 4L), m); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testFromString() { |
||||||
|
AnyLongObjectId id = new LongObjectId(1L, 2L, 3L, 4L); |
||||||
|
MutableLongObjectId m = new MutableLongObjectId(); |
||||||
|
m.fromString(id.name()); |
||||||
|
assertEquals(id, m); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testFromStringByte() { |
||||||
|
AnyLongObjectId id = new LongObjectId(1L, 2L, 3L, 4L); |
||||||
|
MutableLongObjectId m = new MutableLongObjectId(); |
||||||
|
byte[] buf = new byte[64]; |
||||||
|
id.copyTo(buf, 0); |
||||||
|
m.fromString(buf, 0); |
||||||
|
assertEquals(id, m); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testCopy() { |
||||||
|
MutableLongObjectId m = new MutableLongObjectId(); |
||||||
|
m.fromRaw(new long[] { 1L, 2L, 3L, 4L }); |
||||||
|
assertEquals(m, new MutableLongObjectId(m)); |
||||||
|
} |
||||||
|
|
||||||
|
@Test |
||||||
|
public void testToObjectId() { |
||||||
|
MutableLongObjectId m = new MutableLongObjectId(); |
||||||
|
m.fromRaw(new long[] { 1L, 2L, 3L, 4L }); |
||||||
|
assertEquals(m, m.toObjectId()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,8 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<classpath> |
||||||
|
<classpathentry kind="src" path="src"/> |
||||||
|
<classpathentry kind="src" path="resources"/> |
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/> |
||||||
|
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> |
||||||
|
<classpathentry kind="output" path="bin"/> |
||||||
|
</classpath> |
@ -0,0 +1,125 @@ |
|||||||
|
#FindBugs User Preferences |
||||||
|
#Mon May 04 16:24:13 PDT 2009 |
||||||
|
detectorAppendingToAnObjectOutputStream=AppendingToAnObjectOutputStream|true |
||||||
|
detectorBadAppletConstructor=BadAppletConstructor|false |
||||||
|
detectorBadResultSetAccess=BadResultSetAccess|true |
||||||
|
detectorBadSyntaxForRegularExpression=BadSyntaxForRegularExpression|true |
||||||
|
detectorBadUseOfReturnValue=BadUseOfReturnValue|true |
||||||
|
detectorBadlyOverriddenAdapter=BadlyOverriddenAdapter|true |
||||||
|
detectorBooleanReturnNull=BooleanReturnNull|true |
||||||
|
detectorCallToUnsupportedMethod=CallToUnsupportedMethod|true |
||||||
|
detectorCheckImmutableAnnotation=CheckImmutableAnnotation|true |
||||||
|
detectorCheckTypeQualifiers=CheckTypeQualifiers|true |
||||||
|
detectorCloneIdiom=CloneIdiom|false |
||||||
|
detectorComparatorIdiom=ComparatorIdiom|true |
||||||
|
detectorConfusedInheritance=ConfusedInheritance|true |
||||||
|
detectorConfusionBetweenInheritedAndOuterMethod=ConfusionBetweenInheritedAndOuterMethod|true |
||||||
|
detectorCrossSiteScripting=CrossSiteScripting|true |
||||||
|
detectorDoInsideDoPrivileged=DoInsideDoPrivileged|true |
||||||
|
detectorDontCatchIllegalMonitorStateException=DontCatchIllegalMonitorStateException|true |
||||||
|
detectorDontUseEnum=DontUseEnum|true |
||||||
|
detectorDroppedException=DroppedException|true |
||||||
|
detectorDumbMethodInvocations=DumbMethodInvocations|true |
||||||
|
detectorDumbMethods=DumbMethods|true |
||||||
|
detectorDuplicateBranches=DuplicateBranches|true |
||||||
|
detectorEmptyZipFileEntry=EmptyZipFileEntry|true |
||||||
|
detectorEqualsOperandShouldHaveClassCompatibleWithThis=EqualsOperandShouldHaveClassCompatibleWithThis|true |
||||||
|
detectorFinalizerNullsFields=FinalizerNullsFields|true |
||||||
|
detectorFindBadCast2=FindBadCast2|true |
||||||
|
detectorFindBadForLoop=FindBadForLoop|true |
||||||
|
detectorFindCircularDependencies=FindCircularDependencies|false |
||||||
|
detectorFindDeadLocalStores=FindDeadLocalStores|true |
||||||
|
detectorFindDoubleCheck=FindDoubleCheck|true |
||||||
|
detectorFindEmptySynchronizedBlock=FindEmptySynchronizedBlock|true |
||||||
|
detectorFindFieldSelfAssignment=FindFieldSelfAssignment|true |
||||||
|
detectorFindFinalizeInvocations=FindFinalizeInvocations|true |
||||||
|
detectorFindFloatEquality=FindFloatEquality|true |
||||||
|
detectorFindHEmismatch=FindHEmismatch|true |
||||||
|
detectorFindInconsistentSync2=FindInconsistentSync2|true |
||||||
|
detectorFindJSR166LockMonitorenter=FindJSR166LockMonitorenter|true |
||||||
|
detectorFindLocalSelfAssignment2=FindLocalSelfAssignment2|true |
||||||
|
detectorFindMaskedFields=FindMaskedFields|true |
||||||
|
detectorFindMismatchedWaitOrNotify=FindMismatchedWaitOrNotify|true |
||||||
|
detectorFindNakedNotify=FindNakedNotify|true |
||||||
|
detectorFindNonSerializableStoreIntoSession=FindNonSerializableStoreIntoSession|true |
||||||
|
detectorFindNonSerializableValuePassedToWriteObject=FindNonSerializableValuePassedToWriteObject|true |
||||||
|
detectorFindNonShortCircuit=FindNonShortCircuit|true |
||||||
|
detectorFindNullDeref=FindNullDeref|true |
||||||
|
detectorFindNullDerefsInvolvingNonShortCircuitEvaluation=FindNullDerefsInvolvingNonShortCircuitEvaluation|true |
||||||
|
detectorFindOpenStream=FindOpenStream|true |
||||||
|
detectorFindPuzzlers=FindPuzzlers|true |
||||||
|
detectorFindRefComparison=FindRefComparison|true |
||||||
|
detectorFindReturnRef=FindReturnRef|true |
||||||
|
detectorFindRunInvocations=FindRunInvocations|true |
||||||
|
detectorFindSelfComparison=FindSelfComparison|true |
||||||
|
detectorFindSelfComparison2=FindSelfComparison2|true |
||||||
|
detectorFindSleepWithLockHeld=FindSleepWithLockHeld|true |
||||||
|
detectorFindSpinLoop=FindSpinLoop|true |
||||||
|
detectorFindSqlInjection=FindSqlInjection|true |
||||||
|
detectorFindTwoLockWait=FindTwoLockWait|true |
||||||
|
detectorFindUncalledPrivateMethods=FindUncalledPrivateMethods|true |
||||||
|
detectorFindUnconditionalWait=FindUnconditionalWait|true |
||||||
|
detectorFindUninitializedGet=FindUninitializedGet|true |
||||||
|
detectorFindUnrelatedTypesInGenericContainer=FindUnrelatedTypesInGenericContainer|true |
||||||
|
detectorFindUnreleasedLock=FindUnreleasedLock|true |
||||||
|
detectorFindUnsatisfiedObligation=FindUnsatisfiedObligation|true |
||||||
|
detectorFindUnsyncGet=FindUnsyncGet|true |
||||||
|
detectorFindUselessControlFlow=FindUselessControlFlow|true |
||||||
|
detectorFormatStringChecker=FormatStringChecker|true |
||||||
|
detectorHugeSharedStringConstants=HugeSharedStringConstants|true |
||||||
|
detectorIDivResultCastToDouble=IDivResultCastToDouble|true |
||||||
|
detectorIncompatMask=IncompatMask|true |
||||||
|
detectorInconsistentAnnotations=InconsistentAnnotations|true |
||||||
|
detectorInefficientMemberAccess=InefficientMemberAccess|false |
||||||
|
detectorInefficientToArray=InefficientToArray|true |
||||||
|
detectorInfiniteLoop=InfiniteLoop|true |
||||||
|
detectorInfiniteRecursiveLoop=InfiniteRecursiveLoop|true |
||||||
|
detectorInfiniteRecursiveLoop2=InfiniteRecursiveLoop2|false |
||||||
|
detectorInheritanceUnsafeGetResource=InheritanceUnsafeGetResource|true |
||||||
|
detectorInitializationChain=InitializationChain|true |
||||||
|
detectorInstantiateStaticClass=InstantiateStaticClass|true |
||||||
|
detectorInvalidJUnitTest=InvalidJUnitTest|true |
||||||
|
detectorIteratorIdioms=IteratorIdioms|true |
||||||
|
detectorLazyInit=LazyInit|true |
||||||
|
detectorLoadOfKnownNullValue=LoadOfKnownNullValue|true |
||||||
|
detectorMethodReturnCheck=MethodReturnCheck|true |
||||||
|
detectorMultithreadedInstanceAccess=MultithreadedInstanceAccess|true |
||||||
|
detectorMutableLock=MutableLock|true |
||||||
|
detectorMutableStaticFields=MutableStaticFields|true |
||||||
|
detectorNaming=Naming|true |
||||||
|
detectorNumberConstructor=NumberConstructor|true |
||||||
|
detectorOverridingEqualsNotSymmetrical=OverridingEqualsNotSymmetrical|true |
||||||
|
detectorPreferZeroLengthArrays=PreferZeroLengthArrays|true |
||||||
|
detectorPublicSemaphores=PublicSemaphores|false |
||||||
|
detectorQuestionableBooleanAssignment=QuestionableBooleanAssignment|true |
||||||
|
detectorReadReturnShouldBeChecked=ReadReturnShouldBeChecked|true |
||||||
|
detectorRedundantInterfaces=RedundantInterfaces|true |
||||||
|
detectorRepeatedConditionals=RepeatedConditionals|true |
||||||
|
detectorRuntimeExceptionCapture=RuntimeExceptionCapture|true |
||||||
|
detectorSerializableIdiom=SerializableIdiom|true |
||||||
|
detectorStartInConstructor=StartInConstructor|true |
||||||
|
detectorStaticCalendarDetector=StaticCalendarDetector|true |
||||||
|
detectorStringConcatenation=StringConcatenation|true |
||||||
|
detectorSuperfluousInstanceOf=SuperfluousInstanceOf|true |
||||||
|
detectorSuspiciousThreadInterrupted=SuspiciousThreadInterrupted|true |
||||||
|
detectorSwitchFallthrough=SwitchFallthrough|true |
||||||
|
detectorSynchronizeAndNullCheckField=SynchronizeAndNullCheckField|true |
||||||
|
detectorSynchronizeOnClassLiteralNotGetClass=SynchronizeOnClassLiteralNotGetClass|true |
||||||
|
detectorSynchronizingOnContentsOfFieldToProtectField=SynchronizingOnContentsOfFieldToProtectField|true |
||||||
|
detectorURLProblems=URLProblems|true |
||||||
|
detectorUncallableMethodOfAnonymousClass=UncallableMethodOfAnonymousClass|true |
||||||
|
detectorUnnecessaryMath=UnnecessaryMath|true |
||||||
|
detectorUnreadFields=UnreadFields|true |
||||||
|
detectorUseObjectEquals=UseObjectEquals|false |
||||||
|
detectorUselessSubclassMethod=UselessSubclassMethod|false |
||||||
|
detectorVarArgsProblems=VarArgsProblems|true |
||||||
|
detectorVolatileUsage=VolatileUsage|true |
||||||
|
detectorWaitInLoop=WaitInLoop|true |
||||||
|
detectorWrongMapIterator=WrongMapIterator|true |
||||||
|
detectorXMLFactoryBypass=XMLFactoryBypass|true |
||||||
|
detector_threshold=2 |
||||||
|
effort=default |
||||||
|
excludefilter0=findBugs/FindBugsExcludeFilter.xml |
||||||
|
filter_settings=Medium|BAD_PRACTICE,CORRECTNESS,MT_CORRECTNESS,PERFORMANCE,STYLE|false |
||||||
|
filter_settings_neg=MALICIOUS_CODE,NOISE,I18N,SECURITY,EXPERIMENTAL| |
||||||
|
run_at_full_build=true |
@ -0,0 +1,34 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<projectDescription> |
||||||
|
<name>org.eclipse.jgit.lfs</name> |
||||||
|
<comment></comment> |
||||||
|
<projects> |
||||||
|
</projects> |
||||||
|
<buildSpec> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.jdt.core.javabuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.pde.ManifestBuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.pde.SchemaBuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
</buildSpec> |
||||||
|
<natures> |
||||||
|
<nature>org.eclipse.jdt.core.javanature</nature> |
||||||
|
<nature>org.eclipse.pde.PluginNature</nature> |
||||||
|
<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> |
||||||
|
</natures> |
||||||
|
</projectDescription> |
@ -0,0 +1,2 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
encoding/<project>=UTF-8 |
@ -0,0 +1,2 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
line.separator=\n |
@ -0,0 +1,398 @@ |
|||||||
|
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.7 |
||||||
|
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve |
||||||
|
org.eclipse.jdt.core.compiler.compliance=1.7 |
||||||
|
org.eclipse.jdt.core.compiler.debug.lineNumber=generate |
||||||
|
org.eclipse.jdt.core.compiler.debug.localVariable=generate |
||||||
|
org.eclipse.jdt.core.compiler.debug.sourceFile=generate |
||||||
|
org.eclipse.jdt.core.compiler.doc.comment.support=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.autoboxing=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.comparingIdentical=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.deadCode=error |
||||||
|
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=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.fieldHiding=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=enabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private |
||||||
|
org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled |
||||||
|
org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=private |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.nullReference=error |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=error |
||||||
|
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=error |
||||||
|
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=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedLabel=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedLocal=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedParameter=warning |
||||||
|
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=error |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore |
||||||
|
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning |
||||||
|
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=error |
||||||
|
org.eclipse.jdt.core.compiler.source=1.7 |
||||||
|
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=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_method=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_before_package=0 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 |
||||||
|
org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line |
||||||
|
org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false |
||||||
|
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_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=80 |
||||||
|
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=2 |
||||||
|
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=insert |
||||||
|
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_member=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=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_at_end_of_file_if_missing=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert |
||||||
|
org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_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_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=true |
||||||
|
org.eclipse.jdt.core.formatter.join_wrapped_lines=true |
||||||
|
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=80 |
||||||
|
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=true |
||||||
|
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 |
@ -0,0 +1,61 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true |
||||||
|
formatter_profile=_JGit Format |
||||||
|
formatter_settings_version=12 |
||||||
|
org.eclipse.jdt.ui.ignorelowercasenames=true |
||||||
|
org.eclipse.jdt.ui.importorder=java;javax;org;com; |
||||||
|
org.eclipse.jdt.ui.ondemandthreshold=99 |
||||||
|
org.eclipse.jdt.ui.staticondemandthreshold=99 |
||||||
|
org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8"?><templates/> |
||||||
|
sp_cleanup.add_default_serial_version_id=true |
||||||
|
sp_cleanup.add_generated_serial_version_id=false |
||||||
|
sp_cleanup.add_missing_annotations=false |
||||||
|
sp_cleanup.add_missing_deprecated_annotations=true |
||||||
|
sp_cleanup.add_missing_methods=false |
||||||
|
sp_cleanup.add_missing_nls_tags=false |
||||||
|
sp_cleanup.add_missing_override_annotations=true |
||||||
|
sp_cleanup.add_missing_override_annotations_interface_methods=false |
||||||
|
sp_cleanup.add_serial_version_id=false |
||||||
|
sp_cleanup.always_use_blocks=true |
||||||
|
sp_cleanup.always_use_parentheses_in_expressions=false |
||||||
|
sp_cleanup.always_use_this_for_non_static_field_access=false |
||||||
|
sp_cleanup.always_use_this_for_non_static_method_access=false |
||||||
|
sp_cleanup.convert_to_enhanced_for_loop=false |
||||||
|
sp_cleanup.correct_indentation=false |
||||||
|
sp_cleanup.format_source_code=true |
||||||
|
sp_cleanup.format_source_code_changes_only=true |
||||||
|
sp_cleanup.make_local_variable_final=false |
||||||
|
sp_cleanup.make_parameters_final=false |
||||||
|
sp_cleanup.make_private_fields_final=true |
||||||
|
sp_cleanup.make_type_abstract_if_missing_method=false |
||||||
|
sp_cleanup.make_variable_declarations_final=false |
||||||
|
sp_cleanup.never_use_blocks=false |
||||||
|
sp_cleanup.never_use_parentheses_in_expressions=true |
||||||
|
sp_cleanup.on_save_use_additional_actions=true |
||||||
|
sp_cleanup.organize_imports=false |
||||||
|
sp_cleanup.qualify_static_field_accesses_with_declaring_class=false |
||||||
|
sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true |
||||||
|
sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true |
||||||
|
sp_cleanup.qualify_static_member_accesses_with_declaring_class=false |
||||||
|
sp_cleanup.qualify_static_method_accesses_with_declaring_class=false |
||||||
|
sp_cleanup.remove_private_constructors=true |
||||||
|
sp_cleanup.remove_trailing_whitespaces=true |
||||||
|
sp_cleanup.remove_trailing_whitespaces_all=true |
||||||
|
sp_cleanup.remove_trailing_whitespaces_ignore_empty=false |
||||||
|
sp_cleanup.remove_unnecessary_casts=false |
||||||
|
sp_cleanup.remove_unnecessary_nls_tags=false |
||||||
|
sp_cleanup.remove_unused_imports=false |
||||||
|
sp_cleanup.remove_unused_local_variables=false |
||||||
|
sp_cleanup.remove_unused_private_fields=true |
||||||
|
sp_cleanup.remove_unused_private_members=false |
||||||
|
sp_cleanup.remove_unused_private_methods=true |
||||||
|
sp_cleanup.remove_unused_private_types=true |
||||||
|
sp_cleanup.sort_members=false |
||||||
|
sp_cleanup.sort_members_all=false |
||||||
|
sp_cleanup.use_blocks=false |
||||||
|
sp_cleanup.use_blocks_only_for_return_and_throw=false |
||||||
|
sp_cleanup.use_parentheses_in_expressions=false |
||||||
|
sp_cleanup.use_this_for_non_static_field_access=false |
||||||
|
sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true |
||||||
|
sp_cleanup.use_this_for_non_static_method_access=false |
||||||
|
sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true |
@ -0,0 +1,3 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
project.repository.kind=bugzilla |
||||||
|
project.repository.url=https\://bugs.eclipse.org/bugs |
@ -0,0 +1,2 @@ |
|||||||
|
commit.comment.template=${task.description} \n\nBug\: ${task.key} |
||||||
|
eclipse.preferences.version=1 |
@ -0,0 +1,98 @@ |
|||||||
|
ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error |
||||||
|
ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||||
|
ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||||
|
ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||||
|
ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||||
|
API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error |
||||||
|
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error |
||||||
|
API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error |
||||||
|
API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error |
||||||
|
API_USE_SCAN_FIELD_SEVERITY=Error |
||||||
|
API_USE_SCAN_METHOD_SEVERITY=Error |
||||||
|
API_USE_SCAN_TYPE_SEVERITY=Error |
||||||
|
CLASS_ELEMENT_TYPE_ADDED_METHOD=Error |
||||||
|
CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||||
|
CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||||
|
CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||||
|
CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||||
|
CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||||
|
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||||
|
CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error |
||||||
|
CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||||
|
ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||||
|
ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||||
|
ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error |
||||||
|
ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||||
|
ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||||
|
ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||||
|
FIELD_ELEMENT_TYPE_ADDED_VALUE=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error |
||||||
|
FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error |
||||||
|
FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error |
||||||
|
FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error |
||||||
|
ILLEGAL_EXTEND=Warning |
||||||
|
ILLEGAL_IMPLEMENT=Warning |
||||||
|
ILLEGAL_INSTANTIATE=Warning |
||||||
|
ILLEGAL_OVERRIDE=Warning |
||||||
|
ILLEGAL_REFERENCE=Warning |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error |
||||||
|
INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||||
|
INVALID_ANNOTATION=Ignore |
||||||
|
INVALID_JAVADOC_TAG=Ignore |
||||||
|
INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error |
||||||
|
LEAK_EXTEND=Warning |
||||||
|
LEAK_FIELD_DECL=Warning |
||||||
|
LEAK_IMPLEMENT=Warning |
||||||
|
LEAK_METHOD_PARAM=Warning |
||||||
|
LEAK_METHOD_RETURN_TYPE=Warning |
||||||
|
METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error |
||||||
|
METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error |
||||||
|
METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error |
||||||
|
METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error |
||||||
|
METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error |
||||||
|
MISSING_EE_DESCRIPTIONS=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error |
||||||
|
TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error |
||||||
|
UNUSED_PROBLEM_FILTERS=Warning |
||||||
|
automatically_removed_unused_problem_filters=false |
||||||
|
eclipse.preferences.version=1 |
||||||
|
incompatible_api_component_version=Error |
||||||
|
incompatible_api_component_version_include_major_without_breaking_change=Disabled |
||||||
|
incompatible_api_component_version_include_minor_without_api_change=Disabled |
||||||
|
invalid_since_tag_version=Error |
||||||
|
malformed_since_tag=Error |
||||||
|
missing_since_tag=Error |
||||||
|
report_api_breakage_when_major_version_incremented=Disabled |
||||||
|
report_resolution_errors_api_component=Warning |
@ -0,0 +1,2 @@ |
|||||||
|
eclipse.preferences.version=1 |
||||||
|
resolve.requirebundle=false |
@ -0,0 +1,17 @@ |
|||||||
|
SRCS = glob(['src/**']) |
||||||
|
RESOURCES = glob(['resources/**']) |
||||||
|
|
||||||
|
java_library( |
||||||
|
name = 'jgit-lfs', |
||||||
|
srcs = SRCS, |
||||||
|
resources = RESOURCES, |
||||||
|
deps = [ |
||||||
|
'//org.eclipse.jgit:jgit' |
||||||
|
], |
||||||
|
visibility = ['PUBLIC'], |
||||||
|
) |
||||||
|
|
||||||
|
java_sources( |
||||||
|
name = 'jgit-lfs_src', |
||||||
|
srcs = SRCS + RESOURCES, |
||||||
|
) |
@ -0,0 +1,15 @@ |
|||||||
|
Manifest-Version: 1.0 |
||||||
|
Bundle-ManifestVersion: 2 |
||||||
|
Bundle-Name: %plugin_name |
||||||
|
Bundle-SymbolicName: org.eclipse.jgit.lfs |
||||||
|
Bundle-Version: 4.3.0.qualifier |
||||||
|
Bundle-Localization: plugin |
||||||
|
Bundle-Vendor: %provider_name |
||||||
|
Export-Package: org.eclipse.jgit.lfs.errors;version="4.3.0", |
||||||
|
org.eclipse.jgit.lfs.internal;version="4.3.0";x-friends:="org.eclipse.jgit.lfs.test", |
||||||
|
org.eclipse.jgit.lfs.lib;version="4.3.0" |
||||||
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 |
||||||
|
Import-Package: org.eclipse.jgit.internal.storage.file;version="[4.3.0,4.4.0)", |
||||||
|
org.eclipse.jgit.lib;version="[4.3.0,4.4.0)", |
||||||
|
org.eclipse.jgit.nls;version="[4.3.0,4.4.0)", |
||||||
|
org.eclipse.jgit.util;version="[4.3.0,4.4.0)" |
@ -0,0 +1,59 @@ |
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1" ?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"> |
||||||
|
|
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> |
||||||
|
<title>Eclipse Distribution License - Version 1.0</title> |
||||||
|
<style type="text/css"> |
||||||
|
body { |
||||||
|
size: 8.5in 11.0in; |
||||||
|
margin: 0.25in 0.5in 0.25in 0.5in; |
||||||
|
tab-interval: 0.5in; |
||||||
|
} |
||||||
|
p { |
||||||
|
margin-left: auto; |
||||||
|
margin-top: 0.5em; |
||||||
|
margin-bottom: 0.5em; |
||||||
|
} |
||||||
|
p.list { |
||||||
|
margin-left: 0.5in; |
||||||
|
margin-top: 0.05em; |
||||||
|
margin-bottom: 0.05em; |
||||||
|
} |
||||||
|
</style> |
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
<body lang="EN-US"> |
||||||
|
|
||||||
|
<p><b>Eclipse Distribution License - v 1.0</b></p> |
||||||
|
|
||||||
|
<p>Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. </p> |
||||||
|
|
||||||
|
<p>All rights reserved.</p> |
||||||
|
<p>Redistribution and use in source and binary forms, with or without modification, |
||||||
|
are permitted provided that the following conditions are met: |
||||||
|
<ul><li>Redistributions of source code must retain the above copyright notice, |
||||||
|
this list of conditions and the following disclaimer. </li> |
||||||
|
<li>Redistributions in binary form must reproduce the above copyright notice, |
||||||
|
this list of conditions and the following disclaimer in the documentation |
||||||
|
and/or other materials provided with the distribution. </li> |
||||||
|
<li>Neither the name of the Eclipse Foundation, Inc. nor the names of its |
||||||
|
contributors may be used to endorse or promote products derived from |
||||||
|
this software without specific prior written permission. </li></ul> |
||||||
|
</p> |
||||||
|
<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||||
|
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||||
|
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
||||||
|
POSSIBILITY OF SUCH DAMAGE.</p> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
</html> |
@ -0,0 +1,7 @@ |
|||||||
|
source.. = src/,\ |
||||||
|
resources/ |
||||||
|
output.. = bin/ |
||||||
|
bin.includes = META-INF/,\ |
||||||
|
.,\ |
||||||
|
plugin.properties,\ |
||||||
|
about.html |
@ -0,0 +1,2 @@ |
|||||||
|
plugin_name=JGit Large File Storage |
||||||
|
provider_name=Eclipse JGit |
@ -0,0 +1,140 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
and other copyright owners as documented in the project's IP log. |
||||||
|
|
||||||
|
This program and the accompanying materials are made available |
||||||
|
under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
accompanies this distribution, is reproduced below, and is |
||||||
|
available at http://www.eclipse.org/org/documents/edl-v10.php |
||||||
|
|
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or |
||||||
|
without modification, are permitted provided that the following |
||||||
|
conditions are met: |
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer. |
||||||
|
|
||||||
|
- Redistributions in binary form must reproduce the above |
||||||
|
copyright notice, this list of conditions and the following |
||||||
|
disclaimer in the documentation and/or other materials provided |
||||||
|
with the distribution. |
||||||
|
|
||||||
|
- Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
names of its contributors may be used to endorse or promote |
||||||
|
products derived from this software without specific prior |
||||||
|
written permission. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
--> |
||||||
|
|
||||||
|
<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/maven-v4_0_0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
|
||||||
|
<parent> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>org.eclipse.jgit-parent</artifactId> |
||||||
|
<version>4.3.0-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<artifactId>org.eclipse.jgit.lfs</artifactId> |
||||||
|
<name>JGit - Large File Storage</name> |
||||||
|
|
||||||
|
<description> |
||||||
|
JGit Large File Storage (LFS) implementation. |
||||||
|
</description> |
||||||
|
|
||||||
|
<properties> |
||||||
|
<translate-qualifier/> |
||||||
|
</properties> |
||||||
|
|
||||||
|
<dependencies> |
||||||
|
<dependency> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>org.eclipse.jgit</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
</dependency> |
||||||
|
</dependencies> |
||||||
|
<build> |
||||||
|
<sourceDirectory>src/</sourceDirectory> |
||||||
|
|
||||||
|
<resources> |
||||||
|
<resource> |
||||||
|
<directory>.</directory> |
||||||
|
<includes> |
||||||
|
<include>plugin.properties</include> |
||||||
|
<include>about.html</include> |
||||||
|
</includes> |
||||||
|
</resource> |
||||||
|
<resource> |
||||||
|
<directory>resources/</directory> |
||||||
|
</resource> |
||||||
|
</resources> |
||||||
|
|
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||||
|
<artifactId>maven-source-plugin</artifactId> |
||||||
|
<inherited>true</inherited> |
||||||
|
<executions> |
||||||
|
<execution> |
||||||
|
<id>attach-sources</id> |
||||||
|
<phase>process-classes</phase> |
||||||
|
<goals> |
||||||
|
<goal>jar</goal> |
||||||
|
</goals> |
||||||
|
<configuration> |
||||||
|
<archive> |
||||||
|
<manifestFile>${source-bundle-manifest}</manifestFile> |
||||||
|
</archive> |
||||||
|
</configuration> |
||||||
|
</execution> |
||||||
|
</executions> |
||||||
|
</plugin> |
||||||
|
|
||||||
|
<plugin> |
||||||
|
<artifactId>maven-jar-plugin</artifactId> |
||||||
|
<configuration> |
||||||
|
<archive> |
||||||
|
<manifestFile>${bundle-manifest}</manifestFile> |
||||||
|
</archive> |
||||||
|
</configuration> |
||||||
|
</plugin> |
||||||
|
|
||||||
|
<plugin> |
||||||
|
<groupId>org.codehaus.mojo</groupId> |
||||||
|
<artifactId>clirr-maven-plugin</artifactId> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</build> |
||||||
|
|
||||||
|
<reporting> |
||||||
|
<plugins> |
||||||
|
<plugin> |
||||||
|
<groupId>org.codehaus.mojo</groupId> |
||||||
|
<artifactId>clirr-maven-plugin</artifactId> |
||||||
|
<version>${clirr-version}</version> |
||||||
|
<configuration> |
||||||
|
<comparisonVersion>${jgit-last-release-version}</comparisonVersion> |
||||||
|
<minSeverity>info</minSeverity> |
||||||
|
</configuration> |
||||||
|
</plugin> |
||||||
|
</plugins> |
||||||
|
</reporting> |
||||||
|
</project> |
@ -0,0 +1,4 @@ |
|||||||
|
incorrectLONG_OBJECT_ID_LENGTH=Incorrect LONG_OBJECT_ID_LENGTH. |
||||||
|
invalidLongId=Invalid id: {0} |
||||||
|
invalidLongIdLength=Invalid id length {0}; should be {1} |
||||||
|
requiredHashFunctionNotAvailable=Required hash function {0} not available. |
@ -0,0 +1,90 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2009, Jonas Fonseca <fonseca@diku.dk> |
||||||
|
* Copyright (C) 2007, Robin Rosenberg <robin.rosenberg@dewire.com> |
||||||
|
* Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.eclipse.jgit.lfs.errors; |
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException; |
||||||
|
import java.text.MessageFormat; |
||||||
|
|
||||||
|
import org.eclipse.jgit.lfs.internal.LfsText; |
||||||
|
|
||||||
|
/** |
||||||
|
* Thrown when an invalid long object id is passed in as an argument. |
||||||
|
* |
||||||
|
* @since 4.3 |
||||||
|
*/ |
||||||
|
public class InvalidLongObjectIdException extends IllegalArgumentException { |
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* Create exception with bytes of the invalid object id. |
||||||
|
* |
||||||
|
* @param bytes containing the invalid id. |
||||||
|
* @param offset in the byte array where the error occurred. |
||||||
|
* @param length of the sequence of invalid bytes. |
||||||
|
*/ |
||||||
|
public InvalidLongObjectIdException(byte[] bytes, int offset, int length) { |
||||||
|
super(MessageFormat.format(LfsText.get().invalidLongId, |
||||||
|
asAscii(bytes, offset, length))); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @param idString |
||||||
|
* String containing the invalid id |
||||||
|
*/ |
||||||
|
public InvalidLongObjectIdException(String idString) { |
||||||
|
super(MessageFormat.format(LfsText.get().invalidLongId, idString)); |
||||||
|
} |
||||||
|
|
||||||
|
private static String asAscii(byte[] bytes, int offset, int length) { |
||||||
|
try { |
||||||
|
return ": " + new String(bytes, offset, length, "US-ASCII"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
} catch (UnsupportedEncodingException e2) { |
||||||
|
return ""; //$NON-NLS-1$
|
||||||
|
} catch (StringIndexOutOfBoundsException e2) { |
||||||
|
return ""; //$NON-NLS-1$
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,65 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
package org.eclipse.jgit.lfs.internal; |
||||||
|
|
||||||
|
import org.eclipse.jgit.nls.NLS; |
||||||
|
import org.eclipse.jgit.nls.TranslationBundle; |
||||||
|
|
||||||
|
/** |
||||||
|
* Translation bundle for JGit LFS server |
||||||
|
*/ |
||||||
|
public class LfsText extends TranslationBundle { |
||||||
|
|
||||||
|
/** |
||||||
|
* @return an instance of this translation bundle |
||||||
|
*/ |
||||||
|
public static LfsText get() { |
||||||
|
return NLS.getBundleFor(LfsText.class); |
||||||
|
} |
||||||
|
|
||||||
|
// @formatter:off
|
||||||
|
/***/ public String incorrectLONG_OBJECT_ID_LENGTH; |
||||||
|
/***/ public String invalidLongId; |
||||||
|
/***/ public String invalidLongIdLength; |
||||||
|
/***/ public String requiredHashFunctionNotAvailable; |
||||||
|
} |
@ -0,0 +1,375 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.eclipse.jgit.lfs.lib; |
||||||
|
|
||||||
|
import java.io.Serializable; |
||||||
|
import java.text.MessageFormat; |
||||||
|
|
||||||
|
import org.eclipse.jgit.lfs.errors.InvalidLongObjectIdException; |
||||||
|
import org.eclipse.jgit.lfs.internal.LfsText; |
||||||
|
import org.eclipse.jgit.lib.AbbreviatedObjectId; |
||||||
|
import org.eclipse.jgit.lib.AnyObjectId; |
||||||
|
import org.eclipse.jgit.lib.ObjectId; |
||||||
|
import org.eclipse.jgit.util.NB; |
||||||
|
import org.eclipse.jgit.util.RawParseUtils; |
||||||
|
|
||||||
|
/** |
||||||
|
* A prefix abbreviation of an {@link LongObjectId}. |
||||||
|
* <p> |
||||||
|
* Enable abbreviating SHA-256 strings used by Git LFS, using sufficient leading |
||||||
|
* digits from the LongObjectId name to still be unique within the repository |
||||||
|
* the string was generated from. These ids are likely to be unique for a useful |
||||||
|
* period of time, especially if they contain at least 6-10 hex digits. |
||||||
|
* <p> |
||||||
|
* This class converts the hex string into a binary form, to make it more |
||||||
|
* efficient for matching against an object. |
||||||
|
* |
||||||
|
* Ported to SHA-256 from {@link AbbreviatedObjectId} |
||||||
|
* |
||||||
|
* @since 4.3 |
||||||
|
*/ |
||||||
|
public final class AbbreviatedLongObjectId implements Serializable { |
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
/** |
||||||
|
* Test a string of characters to verify it is a hex format. |
||||||
|
* <p> |
||||||
|
* If true the string can be parsed with {@link #fromString(String)}. |
||||||
|
* |
||||||
|
* @param id |
||||||
|
* the string to test. |
||||||
|
* @return true if the string can converted into an AbbreviatedObjectId. |
||||||
|
*/ |
||||||
|
public static final boolean isId(final String id) { |
||||||
|
if (id.length() < 2 |
||||||
|
|| Constants.LONG_OBJECT_ID_STRING_LENGTH < id.length()) |
||||||
|
return false; |
||||||
|
try { |
||||||
|
for (int i = 0; i < id.length(); i++) |
||||||
|
RawParseUtils.parseHexInt4((byte) id.charAt(i)); |
||||||
|
return true; |
||||||
|
} catch (ArrayIndexOutOfBoundsException e) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an AbbreviatedObjectId from hex characters (US-ASCII). |
||||||
|
* |
||||||
|
* @param buf |
||||||
|
* the US-ASCII buffer to read from. |
||||||
|
* @param offset |
||||||
|
* position to read the first character from. |
||||||
|
* @param end |
||||||
|
* one past the last position to read (<code>end-offset</code> is |
||||||
|
* the length of the string). |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static final AbbreviatedLongObjectId fromString(final byte[] buf, |
||||||
|
final int offset, final int end) { |
||||||
|
if (end - offset > Constants.LONG_OBJECT_ID_STRING_LENGTH) |
||||||
|
throw new IllegalArgumentException(MessageFormat.format( |
||||||
|
LfsText.get().invalidLongIdLength, |
||||||
|
Integer.valueOf(end - offset), |
||||||
|
Integer.valueOf(Constants.LONG_OBJECT_ID_STRING_LENGTH))); |
||||||
|
return fromHexString(buf, offset, end); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an AbbreviatedObjectId from an {@link AnyObjectId}. |
||||||
|
* <p> |
||||||
|
* This method copies over all bits of the Id, and is therefore complete |
||||||
|
* (see {@link #isComplete()}). |
||||||
|
* |
||||||
|
* @param id |
||||||
|
* the {@link ObjectId} to convert from. |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static final AbbreviatedLongObjectId fromLongObjectId( |
||||||
|
AnyLongObjectId id) { |
||||||
|
return new AbbreviatedLongObjectId( |
||||||
|
Constants.LONG_OBJECT_ID_STRING_LENGTH, id.w1, id.w2, id.w3, |
||||||
|
id.w4); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an AbbreviatedLongObjectId from hex characters. |
||||||
|
* |
||||||
|
* @param str |
||||||
|
* the string to read from. Must be <= 64 characters. |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static final AbbreviatedLongObjectId fromString(final String str) { |
||||||
|
if (str.length() > Constants.LONG_OBJECT_ID_STRING_LENGTH) |
||||||
|
throw new IllegalArgumentException( |
||||||
|
MessageFormat.format(LfsText.get().invalidLongId, str)); |
||||||
|
final byte[] b = org.eclipse.jgit.lib.Constants.encodeASCII(str); |
||||||
|
return fromHexString(b, 0, b.length); |
||||||
|
} |
||||||
|
|
||||||
|
private static final AbbreviatedLongObjectId fromHexString(final byte[] bs, |
||||||
|
int ptr, final int end) { |
||||||
|
try { |
||||||
|
final long a = hexUInt64(bs, ptr, end); |
||||||
|
final long b = hexUInt64(bs, ptr + 16, end); |
||||||
|
final long c = hexUInt64(bs, ptr + 32, end); |
||||||
|
final long d = hexUInt64(bs, ptr + 48, end); |
||||||
|
return new AbbreviatedLongObjectId(end - ptr, a, b, c, d); |
||||||
|
} catch (ArrayIndexOutOfBoundsException e1) { |
||||||
|
throw new InvalidLongObjectIdException(bs, ptr, end - ptr); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static final long hexUInt64(final byte[] bs, int p, final int end) { |
||||||
|
if (16 <= end - p) |
||||||
|
return RawParseUtils.parseHexInt64(bs, p); |
||||||
|
|
||||||
|
long r = 0; |
||||||
|
int n = 0; |
||||||
|
while (n < 16 && p < end) { |
||||||
|
r <<= 4; |
||||||
|
r |= RawParseUtils.parseHexInt4(bs[p++]); |
||||||
|
n++; |
||||||
|
} |
||||||
|
return r << (16 - n) * 4; |
||||||
|
} |
||||||
|
|
||||||
|
static long mask(final int nibbles, final long word, final long v) { |
||||||
|
final long b = (word - 1) * 16; |
||||||
|
if (b + 16 <= nibbles) { |
||||||
|
// We have all of the bits required for this word.
|
||||||
|
//
|
||||||
|
return v; |
||||||
|
} |
||||||
|
|
||||||
|
if (nibbles <= b) { |
||||||
|
// We have none of the bits required for this word.
|
||||||
|
//
|
||||||
|
return 0; |
||||||
|
} |
||||||
|
|
||||||
|
final long s = 64 - (nibbles - b) * 4; |
||||||
|
return (v >>> s) << s; |
||||||
|
} |
||||||
|
|
||||||
|
/** Number of half-bytes used by this id. */ |
||||||
|
final int nibbles; |
||||||
|
|
||||||
|
final long w1; |
||||||
|
|
||||||
|
final long w2; |
||||||
|
|
||||||
|
final long w3; |
||||||
|
|
||||||
|
final long w4; |
||||||
|
|
||||||
|
AbbreviatedLongObjectId(final int n, final long new_1, final long new_2, |
||||||
|
final long new_3, final long new_4) { |
||||||
|
nibbles = n; |
||||||
|
w1 = new_1; |
||||||
|
w2 = new_2; |
||||||
|
w3 = new_3; |
||||||
|
w4 = new_4; |
||||||
|
} |
||||||
|
|
||||||
|
/** @return number of hex digits appearing in this id */ |
||||||
|
public int length() { |
||||||
|
return nibbles; |
||||||
|
} |
||||||
|
|
||||||
|
/** @return true if this ObjectId is actually a complete id. */ |
||||||
|
public boolean isComplete() { |
||||||
|
return length() == Constants.LONG_OBJECT_ID_STRING_LENGTH; |
||||||
|
} |
||||||
|
|
||||||
|
/** @return a complete ObjectId; null if {@link #isComplete()} is false */ |
||||||
|
public LongObjectId toLongObjectId() { |
||||||
|
return isComplete() ? new LongObjectId(w1, w2, w3, w4) : null; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Compares this abbreviation to a full object id. |
||||||
|
* |
||||||
|
* @param other |
||||||
|
* the other object id. |
||||||
|
* @return <0 if this abbreviation names an object that is less than |
||||||
|
* <code>other</code>; 0 if this abbreviation exactly matches the |
||||||
|
* first {@link #length()} digits of <code>other.name()</code>; |
||||||
|
* >0 if this abbreviation names an object that is after |
||||||
|
* <code>other</code>. |
||||||
|
*/ |
||||||
|
public final int prefixCompare(final AnyLongObjectId other) { |
||||||
|
int cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w1, mask(1, other.w1)); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w2, mask(2, other.w2)); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w3, mask(3, other.w3)); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
return NB.compareUInt64(w4, mask(4, other.w4)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Compare this abbreviation to a network-byte-order LongObjectId. |
||||||
|
* |
||||||
|
* @param bs |
||||||
|
* array containing the other LongObjectId in network byte order. |
||||||
|
* @param p |
||||||
|
* position within {@code bs} to start the compare at. At least |
||||||
|
* 32 bytes, starting at this position are required. |
||||||
|
* @return <0 if this abbreviation names an object that is less than |
||||||
|
* <code>other</code>; 0 if this abbreviation exactly matches the |
||||||
|
* first {@link #length()} digits of <code>other.name()</code>; |
||||||
|
* >0 if this abbreviation names an object that is after |
||||||
|
* <code>other</code>. |
||||||
|
*/ |
||||||
|
public final int prefixCompare(final byte[] bs, final int p) { |
||||||
|
int cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w1, mask(1, NB.decodeInt64(bs, p))); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w2, mask(2, NB.decodeInt64(bs, p + 8))); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w3, mask(3, NB.decodeInt64(bs, p + 16))); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
return NB.compareUInt64(w4, mask(4, NB.decodeInt64(bs, p + 24))); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Compare this abbreviation to a network-byte-order LongObjectId. |
||||||
|
* |
||||||
|
* @param bs |
||||||
|
* array containing the other LongObjectId in network byte order. |
||||||
|
* @param p |
||||||
|
* position within {@code bs} to start the compare at. At least 4 |
||||||
|
* longs, starting at this position are required. |
||||||
|
* @return <0 if this abbreviation names an object that is less than |
||||||
|
* <code>other</code>; 0 if this abbreviation exactly matches the |
||||||
|
* first {@link #length()} digits of <code>other.name()</code>; |
||||||
|
* >0 if this abbreviation names an object that is after |
||||||
|
* <code>other</code>. |
||||||
|
*/ |
||||||
|
public final int prefixCompare(final long[] bs, final int p) { |
||||||
|
int cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w1, mask(1, bs[p])); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w2, mask(2, bs[p + 1])); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w3, mask(3, bs[p + 2])); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
return NB.compareUInt64(w4, mask(4, bs[p + 3])); |
||||||
|
} |
||||||
|
|
||||||
|
/** @return value for a fan-out style map, only valid of length >= 2. */ |
||||||
|
public final int getFirstByte() { |
||||||
|
return (int) (w1 >>> 56); |
||||||
|
} |
||||||
|
|
||||||
|
private long mask(final long word, final long v) { |
||||||
|
return mask(nibbles, word, v); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public int hashCode() { |
||||||
|
return (int) (w1 >> 32); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean equals(final Object o) { |
||||||
|
if (o instanceof AbbreviatedLongObjectId) { |
||||||
|
final AbbreviatedLongObjectId b = (AbbreviatedLongObjectId) o; |
||||||
|
return nibbles == b.nibbles && w1 == b.w1 && w2 == b.w2 |
||||||
|
&& w3 == b.w3 && w4 == b.w4; |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string form of the abbreviation, in lower case hexadecimal. |
||||||
|
*/ |
||||||
|
public final String name() { |
||||||
|
final char[] b = new char[Constants.LONG_OBJECT_ID_STRING_LENGTH]; |
||||||
|
|
||||||
|
AnyLongObjectId.formatHexChar(b, 0, w1); |
||||||
|
if (nibbles <= 16) |
||||||
|
return new String(b, 0, nibbles); |
||||||
|
|
||||||
|
AnyLongObjectId.formatHexChar(b, 16, w2); |
||||||
|
if (nibbles <= 32) |
||||||
|
return new String(b, 0, nibbles); |
||||||
|
|
||||||
|
AnyLongObjectId.formatHexChar(b, 32, w3); |
||||||
|
if (nibbles <= 48) |
||||||
|
return new String(b, 0, nibbles); |
||||||
|
|
||||||
|
AnyLongObjectId.formatHexChar(b, 48, w4); |
||||||
|
return new String(b, 0, nibbles); |
||||||
|
} |
||||||
|
|
||||||
|
@SuppressWarnings("nls") |
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return "AbbreviatedLongObjectId[" + name() + "]"; //$NON-NLS-1$
|
||||||
|
} |
||||||
|
} |
@ -0,0 +1,555 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.eclipse.jgit.lfs.lib; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.io.OutputStream; |
||||||
|
import java.io.Writer; |
||||||
|
import java.nio.ByteBuffer; |
||||||
|
|
||||||
|
import org.eclipse.jgit.lib.AnyObjectId; |
||||||
|
import org.eclipse.jgit.lib.ObjectReader; |
||||||
|
import org.eclipse.jgit.util.NB; |
||||||
|
|
||||||
|
/** |
||||||
|
* A (possibly mutable) SHA-256 abstraction. |
||||||
|
* <p> |
||||||
|
* If this is an instance of {@link MutableLongObjectId} the concept of equality |
||||||
|
* with this instance can alter at any time, if this instance is modified to |
||||||
|
* represent a different object name. |
||||||
|
* |
||||||
|
* Ported to SHA-256 from {@link AnyObjectId} |
||||||
|
* |
||||||
|
* @since 4.3 |
||||||
|
*/ |
||||||
|
public abstract class AnyLongObjectId implements Comparable<AnyLongObjectId> { |
||||||
|
|
||||||
|
/** |
||||||
|
* Compare two object identifier byte sequences for equality. |
||||||
|
* |
||||||
|
* @param firstObjectId |
||||||
|
* the first identifier to compare. Must not be null. |
||||||
|
* @param secondObjectId |
||||||
|
* the second identifier to compare. Must not be null. |
||||||
|
* @return true if the two identifiers are the same. |
||||||
|
*/ |
||||||
|
public static boolean equals(final AnyLongObjectId firstObjectId, |
||||||
|
final AnyLongObjectId secondObjectId) { |
||||||
|
if (firstObjectId == secondObjectId) |
||||||
|
return true; |
||||||
|
|
||||||
|
// We test word 2 first as odds are someone already used our
|
||||||
|
// word 1 as a hash code, and applying that came up with these
|
||||||
|
// two instances we are comparing for equality. Therefore the
|
||||||
|
// first two words are very likely to be identical. We want to
|
||||||
|
// break away from collisions as quickly as possible.
|
||||||
|
//
|
||||||
|
return firstObjectId.w2 == secondObjectId.w2 |
||||||
|
&& firstObjectId.w3 == secondObjectId.w3 |
||||||
|
&& firstObjectId.w4 == secondObjectId.w4 |
||||||
|
&& firstObjectId.w1 == secondObjectId.w1; |
||||||
|
} |
||||||
|
|
||||||
|
long w1; |
||||||
|
|
||||||
|
long w2; |
||||||
|
|
||||||
|
long w3; |
||||||
|
|
||||||
|
long w4; |
||||||
|
|
||||||
|
/** |
||||||
|
* Get the first 8 bits of the LongObjectId. |
||||||
|
* |
||||||
|
* This is a faster version of {@code getByte(0)}. |
||||||
|
* |
||||||
|
* @return a discriminator usable for a fan-out style map. Returned values |
||||||
|
* are unsigned and thus are in the range [0,255] rather than the |
||||||
|
* signed byte range of [-128, 127]. |
||||||
|
*/ |
||||||
|
public final int getFirstByte() { |
||||||
|
return (int) (w1 >>> 56); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Get the second 8 bits of the LongObjectId. |
||||||
|
* |
||||||
|
* @return a discriminator usable for a fan-out style map. Returned values |
||||||
|
* are unsigned and thus are in the range [0,255] rather than the |
||||||
|
* signed byte range of [-128, 127]. |
||||||
|
*/ |
||||||
|
public final int getSecondByte() { |
||||||
|
return (int) ((w1 >>> 48) & 0xff); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Get any byte from the LongObjectId. |
||||||
|
* |
||||||
|
* Callers hard-coding {@code getByte(0)} should instead use the much faster |
||||||
|
* special case variant {@link #getFirstByte()}. |
||||||
|
* |
||||||
|
* @param index |
||||||
|
* index of the byte to obtain from the raw form of the |
||||||
|
* LongObjectId. Must be in range [0, |
||||||
|
* {@link Constants#LONG_OBJECT_ID_LENGTH}). |
||||||
|
* @return the value of the requested byte at {@code index}. Returned values |
||||||
|
* are unsigned and thus are in the range [0,255] rather than the |
||||||
|
* signed byte range of [-128, 127]. |
||||||
|
* @throws ArrayIndexOutOfBoundsException |
||||||
|
* {@code index} is less than 0, equal to |
||||||
|
* {@link Constants#LONG_OBJECT_ID_LENGTH}, or greater than |
||||||
|
* {@link Constants#LONG_OBJECT_ID_LENGTH}. |
||||||
|
*/ |
||||||
|
public final int getByte(int index) { |
||||||
|
long w; |
||||||
|
switch (index >> 3) { |
||||||
|
case 0: |
||||||
|
w = w1; |
||||||
|
break; |
||||||
|
case 1: |
||||||
|
w = w2; |
||||||
|
break; |
||||||
|
case 2: |
||||||
|
w = w3; |
||||||
|
break; |
||||||
|
case 3: |
||||||
|
w = w4; |
||||||
|
break; |
||||||
|
default: |
||||||
|
throw new ArrayIndexOutOfBoundsException(index); |
||||||
|
} |
||||||
|
|
||||||
|
return (int) ((w >>> (8 * (15 - (index & 15)))) & 0xff); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Compare this LongObjectId to another and obtain a sort ordering. |
||||||
|
* |
||||||
|
* @param other |
||||||
|
* the other id to compare to. Must not be null. |
||||||
|
* @return < 0 if this id comes before other; 0 if this id is equal to |
||||||
|
* other; > 0 if this id comes after other. |
||||||
|
*/ |
||||||
|
public final int compareTo(final AnyLongObjectId other) { |
||||||
|
if (this == other) |
||||||
|
return 0; |
||||||
|
|
||||||
|
int cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w1, other.w1); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w2, other.w2); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w3, other.w3); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
return NB.compareUInt64(w4, other.w4); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Compare this LongObjectId to a network-byte-order LongObjectId. |
||||||
|
* |
||||||
|
* @param bs |
||||||
|
* array containing the other LongObjectId in network byte order. |
||||||
|
* @param p |
||||||
|
* position within {@code bs} to start the compare at. At least |
||||||
|
* 32 bytes, starting at this position are required. |
||||||
|
* @return a negative integer, zero, or a positive integer as this object is |
||||||
|
* less than, equal to, or greater than the specified object. |
||||||
|
*/ |
||||||
|
public final int compareTo(final byte[] bs, final int p) { |
||||||
|
int cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w1, NB.decodeInt64(bs, p)); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w2, NB.decodeInt64(bs, p + 8)); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w3, NB.decodeInt64(bs, p + 16)); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
return NB.compareUInt64(w4, NB.decodeInt64(bs, p + 24)); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Compare this LongObjectId to a network-byte-order LongObjectId. |
||||||
|
* |
||||||
|
* @param bs |
||||||
|
* array containing the other LongObjectId in network byte order. |
||||||
|
* @param p |
||||||
|
* position within {@code bs} to start the compare at. At least 4 |
||||||
|
* longs, starting at this position are required. |
||||||
|
* @return a negative integer, zero, or a positive integer as this object is |
||||||
|
* less than, equal to, or greater than the specified object. |
||||||
|
*/ |
||||||
|
public final int compareTo(final long[] bs, final int p) { |
||||||
|
int cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w1, bs[p]); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w2, bs[p + 1]); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
cmp = NB.compareUInt64(w3, bs[p + 2]); |
||||||
|
if (cmp != 0) |
||||||
|
return cmp; |
||||||
|
|
||||||
|
return NB.compareUInt64(w4, bs[p + 3]); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Tests if this LongObjectId starts with the given abbreviation. |
||||||
|
* |
||||||
|
* @param abbr |
||||||
|
* the abbreviation. |
||||||
|
* @return true if this LongObjectId begins with the abbreviation; else |
||||||
|
* false. |
||||||
|
*/ |
||||||
|
public boolean startsWith(final AbbreviatedLongObjectId abbr) { |
||||||
|
return abbr.prefixCompare(this) == 0; |
||||||
|
} |
||||||
|
|
||||||
|
public final int hashCode() { |
||||||
|
return (int) (w1 >> 32); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Determine if this LongObjectId has exactly the same value as another. |
||||||
|
* |
||||||
|
* @param other |
||||||
|
* the other id to compare to. May be null. |
||||||
|
* @return true only if both LongObjectIds have identical bits. |
||||||
|
*/ |
||||||
|
public final boolean equals(final AnyLongObjectId other) { |
||||||
|
return other != null ? equals(this, other) : false; |
||||||
|
} |
||||||
|
|
||||||
|
public final boolean equals(final Object o) { |
||||||
|
if (o instanceof AnyLongObjectId) |
||||||
|
return equals((AnyLongObjectId) o); |
||||||
|
else |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to an output writer in raw binary. |
||||||
|
* |
||||||
|
* @param w |
||||||
|
* the buffer to copy to. Must be in big endian order. |
||||||
|
*/ |
||||||
|
public void copyRawTo(final ByteBuffer w) { |
||||||
|
w.putLong(w1); |
||||||
|
w.putLong(w2); |
||||||
|
w.putLong(w3); |
||||||
|
w.putLong(w4); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to a byte array. |
||||||
|
* |
||||||
|
* @param b |
||||||
|
* the buffer to copy to. |
||||||
|
* @param o |
||||||
|
* the offset within b to write at. |
||||||
|
*/ |
||||||
|
public void copyRawTo(final byte[] b, final int o) { |
||||||
|
NB.encodeInt64(b, o, w1); |
||||||
|
NB.encodeInt64(b, o + 8, w2); |
||||||
|
NB.encodeInt64(b, o + 16, w3); |
||||||
|
NB.encodeInt64(b, o + 24, w4); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to an long array. |
||||||
|
* |
||||||
|
* @param b |
||||||
|
* the buffer to copy to. |
||||||
|
* @param o |
||||||
|
* the offset within b to write at. |
||||||
|
*/ |
||||||
|
public void copyRawTo(final long[] b, final int o) { |
||||||
|
b[o] = w1; |
||||||
|
b[o + 1] = w2; |
||||||
|
b[o + 2] = w3; |
||||||
|
b[o + 3] = w4; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to an output writer in raw binary. |
||||||
|
* |
||||||
|
* @param w |
||||||
|
* the stream to write to. |
||||||
|
* @throws IOException |
||||||
|
* the stream writing failed. |
||||||
|
*/ |
||||||
|
public void copyRawTo(final OutputStream w) throws IOException { |
||||||
|
writeRawLong(w, w1); |
||||||
|
writeRawLong(w, w2); |
||||||
|
writeRawLong(w, w3); |
||||||
|
writeRawLong(w, w4); |
||||||
|
} |
||||||
|
|
||||||
|
private static void writeRawLong(final OutputStream w, long v) |
||||||
|
throws IOException { |
||||||
|
w.write((int) (v >>> 56)); |
||||||
|
w.write((int) (v >>> 48)); |
||||||
|
w.write((int) (v >>> 40)); |
||||||
|
w.write((int) (v >>> 32)); |
||||||
|
w.write((int) (v >>> 24)); |
||||||
|
w.write((int) (v >>> 16)); |
||||||
|
w.write((int) (v >>> 8)); |
||||||
|
w.write((int) v); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to an output writer in hex format. |
||||||
|
* |
||||||
|
* @param w |
||||||
|
* the stream to copy to. |
||||||
|
* @throws IOException |
||||||
|
* the stream writing failed. |
||||||
|
*/ |
||||||
|
public void copyTo(final OutputStream w) throws IOException { |
||||||
|
w.write(toHexByteArray()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to a byte array in hex format. |
||||||
|
* |
||||||
|
* @param b |
||||||
|
* the buffer to copy to. |
||||||
|
* @param o |
||||||
|
* the offset within b to write at. |
||||||
|
*/ |
||||||
|
public void copyTo(byte[] b, int o) { |
||||||
|
formatHexByte(b, o + 0, w1); |
||||||
|
formatHexByte(b, o + 16, w2); |
||||||
|
formatHexByte(b, o + 32, w3); |
||||||
|
formatHexByte(b, o + 48, w4); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to a ByteBuffer in hex format. |
||||||
|
* |
||||||
|
* @param b |
||||||
|
* the buffer to copy to. |
||||||
|
*/ |
||||||
|
public void copyTo(ByteBuffer b) { |
||||||
|
b.put(toHexByteArray()); |
||||||
|
} |
||||||
|
|
||||||
|
private byte[] toHexByteArray() { |
||||||
|
final byte[] dst = new byte[Constants.LONG_OBJECT_ID_STRING_LENGTH]; |
||||||
|
formatHexByte(dst, 0, w1); |
||||||
|
formatHexByte(dst, 16, w2); |
||||||
|
formatHexByte(dst, 32, w3); |
||||||
|
formatHexByte(dst, 48, w4); |
||||||
|
return dst; |
||||||
|
} |
||||||
|
|
||||||
|
private static final byte[] hexbyte = { '0', '1', '2', '3', '4', '5', '6', |
||||||
|
'7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; |
||||||
|
|
||||||
|
private static void formatHexByte(final byte[] dst, final int p, long w) { |
||||||
|
int o = p + 15; |
||||||
|
while (o >= p && w != 0) { |
||||||
|
dst[o--] = hexbyte[(int) (w & 0xf)]; |
||||||
|
w >>>= 4; |
||||||
|
} |
||||||
|
while (o >= p) |
||||||
|
dst[o--] = '0'; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to an output writer in hex format. |
||||||
|
* |
||||||
|
* @param w |
||||||
|
* the stream to copy to. |
||||||
|
* @throws IOException |
||||||
|
* the stream writing failed. |
||||||
|
*/ |
||||||
|
public void copyTo(final Writer w) throws IOException { |
||||||
|
w.write(toHexCharArray()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to an output writer in hex format. |
||||||
|
* |
||||||
|
* @param tmp |
||||||
|
* temporary char array to buffer construct into before writing. |
||||||
|
* Must be at least large enough to hold 2 digits for each byte |
||||||
|
* of object id (64 characters or larger). |
||||||
|
* @param w |
||||||
|
* the stream to copy to. |
||||||
|
* @throws IOException |
||||||
|
* the stream writing failed. |
||||||
|
*/ |
||||||
|
public void copyTo(final char[] tmp, final Writer w) throws IOException { |
||||||
|
toHexCharArray(tmp); |
||||||
|
w.write(tmp, 0, Constants.LONG_OBJECT_ID_STRING_LENGTH); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy this LongObjectId to a StringBuilder in hex format. |
||||||
|
* |
||||||
|
* @param tmp |
||||||
|
* temporary char array to buffer construct into before writing. |
||||||
|
* Must be at least large enough to hold 2 digits for each byte |
||||||
|
* of object id (64 characters or larger). |
||||||
|
* @param w |
||||||
|
* the string to append onto. |
||||||
|
*/ |
||||||
|
public void copyTo(final char[] tmp, final StringBuilder w) { |
||||||
|
toHexCharArray(tmp); |
||||||
|
w.append(tmp, 0, Constants.LONG_OBJECT_ID_STRING_LENGTH); |
||||||
|
} |
||||||
|
|
||||||
|
char[] toHexCharArray() { |
||||||
|
final char[] dst = new char[Constants.LONG_OBJECT_ID_STRING_LENGTH]; |
||||||
|
toHexCharArray(dst); |
||||||
|
return dst; |
||||||
|
} |
||||||
|
|
||||||
|
private void toHexCharArray(final char[] dst) { |
||||||
|
formatHexChar(dst, 0, w1); |
||||||
|
formatHexChar(dst, 16, w2); |
||||||
|
formatHexChar(dst, 32, w3); |
||||||
|
formatHexChar(dst, 48, w4); |
||||||
|
} |
||||||
|
|
||||||
|
private static final char[] hexchar = { '0', '1', '2', '3', '4', '5', '6', |
||||||
|
'7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; |
||||||
|
|
||||||
|
static void formatHexChar(final char[] dst, final int p, long w) { |
||||||
|
int o = p + 15; |
||||||
|
while (o >= p && w != 0) { |
||||||
|
dst[o--] = hexchar[(int) (w & 0xf)]; |
||||||
|
w >>>= 4; |
||||||
|
} |
||||||
|
while (o >= p) |
||||||
|
dst[o--] = '0'; |
||||||
|
} |
||||||
|
|
||||||
|
@SuppressWarnings("nls") |
||||||
|
@Override |
||||||
|
public String toString() { |
||||||
|
return "AnyLongObjectId[" + name() + "]"; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string form of the SHA-256, in lower case hexadecimal. |
||||||
|
*/ |
||||||
|
public final String name() { |
||||||
|
return new String(toHexCharArray()); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* @return string form of the SHA-256, in lower case hexadecimal. |
||||||
|
*/ |
||||||
|
public final String getName() { |
||||||
|
return name(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Return an abbreviation (prefix) of this object SHA-256. |
||||||
|
* <p> |
||||||
|
* This implementation does not guarantee uniqueness. Callers should instead |
||||||
|
* use {@link ObjectReader#abbreviate(AnyObjectId, int)} to obtain a unique |
||||||
|
* abbreviation within the scope of a particular object database. |
||||||
|
* |
||||||
|
* @param len |
||||||
|
* length of the abbreviated string. |
||||||
|
* @return SHA-256 abbreviation. |
||||||
|
*/ |
||||||
|
public AbbreviatedLongObjectId abbreviate(final int len) { |
||||||
|
final long a = AbbreviatedLongObjectId.mask(len, 1, w1); |
||||||
|
final long b = AbbreviatedLongObjectId.mask(len, 2, w2); |
||||||
|
final long c = AbbreviatedLongObjectId.mask(len, 3, w3); |
||||||
|
final long d = AbbreviatedLongObjectId.mask(len, 4, w4); |
||||||
|
return new AbbreviatedLongObjectId(len, a, b, c, d); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Obtain an immutable copy of this current object. |
||||||
|
* <p> |
||||||
|
* Only returns <code>this</code> if this instance is an unsubclassed |
||||||
|
* instance of {@link LongObjectId}; otherwise a new instance is returned |
||||||
|
* holding the same value. |
||||||
|
* <p> |
||||||
|
* This method is useful to shed any additional memory that may be tied to |
||||||
|
* the subclass, yet retain the unique identity of the object id for future |
||||||
|
* lookups within maps and repositories. |
||||||
|
* |
||||||
|
* @return an immutable copy, using the smallest memory footprint possible. |
||||||
|
*/ |
||||||
|
public final LongObjectId copy() { |
||||||
|
if (getClass() == LongObjectId.class) |
||||||
|
return (LongObjectId) this; |
||||||
|
return new LongObjectId(this); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Obtain an immutable copy of this current object. |
||||||
|
* <p> |
||||||
|
* See {@link #copy()} if <code>this</code> is a possibly subclassed (but |
||||||
|
* immutable) identity and the application needs a lightweight identity |
||||||
|
* <i>only</i> reference. |
||||||
|
* |
||||||
|
* @return an immutable copy. May be <code>this</code> if this is already an |
||||||
|
* immutable instance. |
||||||
|
*/ |
||||||
|
public abstract LongObjectId toObjectId(); |
||||||
|
} |
@ -0,0 +1,102 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
package org.eclipse.jgit.lfs.lib; |
||||||
|
|
||||||
|
import java.security.MessageDigest; |
||||||
|
import java.security.NoSuchAlgorithmException; |
||||||
|
import java.text.MessageFormat; |
||||||
|
|
||||||
|
import org.eclipse.jgit.lfs.internal.LfsText; |
||||||
|
|
||||||
|
/** |
||||||
|
* Misc. constants used throughout JGit LFS extension. |
||||||
|
* |
||||||
|
* @since 4.3 |
||||||
|
**/ |
||||||
|
@SuppressWarnings("nls") |
||||||
|
public final class Constants { |
||||||
|
/** Hash function used natively by Git LFS extension for large objects. */ |
||||||
|
private static final String LONG_HASH_FUNCTION = "SHA-256"; |
||||||
|
|
||||||
|
/** |
||||||
|
* A Git LFS large object hash is 256 bits, i.e. 32 bytes. |
||||||
|
* <p> |
||||||
|
* Changing this assumption is not going to be as easy as changing this |
||||||
|
* declaration. |
||||||
|
*/ |
||||||
|
public static final int LONG_OBJECT_ID_LENGTH = 32; |
||||||
|
|
||||||
|
/** |
||||||
|
* A Git LFS large object can be expressed as a 64 character string of |
||||||
|
* hexadecimal digits. |
||||||
|
* |
||||||
|
* @see #LONG_OBJECT_ID_LENGTH |
||||||
|
*/ |
||||||
|
public static final int LONG_OBJECT_ID_STRING_LENGTH = LONG_OBJECT_ID_LENGTH |
||||||
|
* 2; |
||||||
|
|
||||||
|
/** |
||||||
|
* Create a new digest function for objects. |
||||||
|
* |
||||||
|
* @return a new digest object. |
||||||
|
* @throws RuntimeException |
||||||
|
* this Java virtual machine does not support the required hash |
||||||
|
* function. Very unlikely given that JGit uses a hash function |
||||||
|
* that is in the Java reference specification. |
||||||
|
*/ |
||||||
|
public static MessageDigest newMessageDigest() { |
||||||
|
try { |
||||||
|
return MessageDigest.getInstance(LONG_HASH_FUNCTION); |
||||||
|
} catch (NoSuchAlgorithmException nsae) { |
||||||
|
throw new RuntimeException(MessageFormat.format( |
||||||
|
LfsText.get().requiredHashFunctionNotAvailable, |
||||||
|
LONG_HASH_FUNCTION), nsae); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
static { |
||||||
|
if (LONG_OBJECT_ID_LENGTH != newMessageDigest().getDigestLength()) |
||||||
|
throw new LinkageError( |
||||||
|
LfsText.get().incorrectLONG_OBJECT_ID_LENGTH); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,309 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.eclipse.jgit.lfs.lib; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.io.ObjectInputStream; |
||||||
|
import java.io.ObjectOutputStream; |
||||||
|
import java.io.Serializable; |
||||||
|
|
||||||
|
import org.eclipse.jgit.lfs.errors.InvalidLongObjectIdException; |
||||||
|
import org.eclipse.jgit.lib.ObjectId; |
||||||
|
import org.eclipse.jgit.util.NB; |
||||||
|
import org.eclipse.jgit.util.RawParseUtils; |
||||||
|
|
||||||
|
/** |
||||||
|
* A SHA-256 abstraction. |
||||||
|
* |
||||||
|
* Ported to SHA-256 from {@link ObjectId} |
||||||
|
* |
||||||
|
* @since 4.3 |
||||||
|
*/ |
||||||
|
public class LongObjectId extends AnyLongObjectId implements Serializable { |
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
private static final LongObjectId ZEROID; |
||||||
|
|
||||||
|
private static final String ZEROID_STR; |
||||||
|
|
||||||
|
static { |
||||||
|
ZEROID = new LongObjectId(0L, 0L, 0L, 0L); |
||||||
|
ZEROID_STR = ZEROID.name(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Get the special all-zero LongObjectId. |
||||||
|
* |
||||||
|
* @return the all-zero LongObjectId, often used to stand-in for no object. |
||||||
|
*/ |
||||||
|
public static final LongObjectId zeroId() { |
||||||
|
return ZEROID; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Test a string of characters to verify that it can be interpreted as |
||||||
|
* LongObjectId. |
||||||
|
* <p> |
||||||
|
* If true the string can be parsed with {@link #fromString(String)}. |
||||||
|
* |
||||||
|
* @param id |
||||||
|
* the string to test. |
||||||
|
* @return true if the string can converted into an LongObjectId. |
||||||
|
*/ |
||||||
|
public static final boolean isId(final String id) { |
||||||
|
if (id.length() != Constants.LONG_OBJECT_ID_STRING_LENGTH) |
||||||
|
return false; |
||||||
|
try { |
||||||
|
for (int i = 0; i < Constants.LONG_OBJECT_ID_STRING_LENGTH; i++) { |
||||||
|
RawParseUtils.parseHexInt4((byte) id.charAt(i)); |
||||||
|
} |
||||||
|
return true; |
||||||
|
} catch (ArrayIndexOutOfBoundsException e) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert a LongObjectId into a hex string representation. |
||||||
|
* |
||||||
|
* @param i |
||||||
|
* the id to convert. May be null. |
||||||
|
* @return the hex string conversion of this id's content. |
||||||
|
*/ |
||||||
|
public static final String toString(final LongObjectId i) { |
||||||
|
return i != null ? i.name() : ZEROID_STR; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Compare two object identifier byte sequences for equality. |
||||||
|
* |
||||||
|
* @param firstBuffer |
||||||
|
* the first buffer to compare against. Must have at least 32 |
||||||
|
* bytes from position fi through the end of the buffer. |
||||||
|
* @param fi |
||||||
|
* first offset within firstBuffer to begin testing. |
||||||
|
* @param secondBuffer |
||||||
|
* the second buffer to compare against. Must have at least 32 |
||||||
|
* bytes from position si through the end of the buffer. |
||||||
|
* @param si |
||||||
|
* first offset within secondBuffer to begin testing. |
||||||
|
* @return true if the two identifiers are the same. |
||||||
|
*/ |
||||||
|
public static boolean equals(final byte[] firstBuffer, final int fi, |
||||||
|
final byte[] secondBuffer, final int si) { |
||||||
|
return firstBuffer[fi] == secondBuffer[si] |
||||||
|
&& firstBuffer[fi + 1] == secondBuffer[si + 1] |
||||||
|
&& firstBuffer[fi + 2] == secondBuffer[si + 2] |
||||||
|
&& firstBuffer[fi + 3] == secondBuffer[si + 3] |
||||||
|
&& firstBuffer[fi + 4] == secondBuffer[si + 4] |
||||||
|
&& firstBuffer[fi + 5] == secondBuffer[si + 5] |
||||||
|
&& firstBuffer[fi + 6] == secondBuffer[si + 6] |
||||||
|
&& firstBuffer[fi + 7] == secondBuffer[si + 7] |
||||||
|
&& firstBuffer[fi + 8] == secondBuffer[si + 8] |
||||||
|
&& firstBuffer[fi + 9] == secondBuffer[si + 9] |
||||||
|
&& firstBuffer[fi + 10] == secondBuffer[si + 10] |
||||||
|
&& firstBuffer[fi + 11] == secondBuffer[si + 11] |
||||||
|
&& firstBuffer[fi + 12] == secondBuffer[si + 12] |
||||||
|
&& firstBuffer[fi + 13] == secondBuffer[si + 13] |
||||||
|
&& firstBuffer[fi + 14] == secondBuffer[si + 14] |
||||||
|
&& firstBuffer[fi + 15] == secondBuffer[si + 15] |
||||||
|
&& firstBuffer[fi + 16] == secondBuffer[si + 16] |
||||||
|
&& firstBuffer[fi + 17] == secondBuffer[si + 17] |
||||||
|
&& firstBuffer[fi + 18] == secondBuffer[si + 18] |
||||||
|
&& firstBuffer[fi + 19] == secondBuffer[si + 19] |
||||||
|
&& firstBuffer[fi + 20] == secondBuffer[si + 20] |
||||||
|
&& firstBuffer[fi + 21] == secondBuffer[si + 21] |
||||||
|
&& firstBuffer[fi + 22] == secondBuffer[si + 22] |
||||||
|
&& firstBuffer[fi + 23] == secondBuffer[si + 23] |
||||||
|
&& firstBuffer[fi + 24] == secondBuffer[si + 24] |
||||||
|
&& firstBuffer[fi + 25] == secondBuffer[si + 25] |
||||||
|
&& firstBuffer[fi + 26] == secondBuffer[si + 26] |
||||||
|
&& firstBuffer[fi + 27] == secondBuffer[si + 27] |
||||||
|
&& firstBuffer[fi + 28] == secondBuffer[si + 28] |
||||||
|
&& firstBuffer[fi + 29] == secondBuffer[si + 29] |
||||||
|
&& firstBuffer[fi + 30] == secondBuffer[si + 30] |
||||||
|
&& firstBuffer[fi + 31] == secondBuffer[si + 31]; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert a LongObjectId from raw binary representation. |
||||||
|
* |
||||||
|
* @param bs |
||||||
|
* the raw byte buffer to read from. At least 32 bytes must be |
||||||
|
* available within this byte array. |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static final LongObjectId fromRaw(final byte[] bs) { |
||||||
|
return fromRaw(bs, 0); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert a LongObjectId from raw binary representation. |
||||||
|
* |
||||||
|
* @param bs |
||||||
|
* the raw byte buffer to read from. At least 32 bytes after p |
||||||
|
* must be available within this byte array. |
||||||
|
* @param p |
||||||
|
* position to read the first byte of data from. |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static final LongObjectId fromRaw(final byte[] bs, final int p) { |
||||||
|
final long a = NB.decodeInt64(bs, p); |
||||||
|
final long b = NB.decodeInt64(bs, p + 8); |
||||||
|
final long c = NB.decodeInt64(bs, p + 16); |
||||||
|
final long d = NB.decodeInt64(bs, p + 24); |
||||||
|
return new LongObjectId(a, b, c, d); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert a LongObjectId from raw binary representation. |
||||||
|
* |
||||||
|
* @param is |
||||||
|
* the raw long buffer to read from. At least 4 longs must be |
||||||
|
* available within this long array. |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static final LongObjectId fromRaw(final long[] is) { |
||||||
|
return fromRaw(is, 0); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert a LongObjectId from raw binary representation. |
||||||
|
* |
||||||
|
* @param is |
||||||
|
* the raw long buffer to read from. At least 4 longs after p |
||||||
|
* must be available within this long array. |
||||||
|
* @param p |
||||||
|
* position to read the first long of data from. |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static final LongObjectId fromRaw(final long[] is, final int p) { |
||||||
|
return new LongObjectId(is[p], is[p + 1], is[p + 2], is[p + 3]); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert a LongObjectId from hex characters (US-ASCII). |
||||||
|
* |
||||||
|
* @param buf |
||||||
|
* the US-ASCII buffer to read from. At least 64 bytes after |
||||||
|
* offset must be available within this byte array. |
||||||
|
* @param offset |
||||||
|
* position to read the first character from. |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static final LongObjectId fromString(final byte[] buf, final int offset) { |
||||||
|
return fromHexString(buf, offset); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert a LongObjectId from hex characters. |
||||||
|
* |
||||||
|
* @param str |
||||||
|
* the string to read from. Must be 64 characters long. |
||||||
|
* @return the converted object id. |
||||||
|
*/ |
||||||
|
public static LongObjectId fromString(final String str) { |
||||||
|
if (str.length() != Constants.LONG_OBJECT_ID_STRING_LENGTH) |
||||||
|
throw new InvalidLongObjectIdException(str); |
||||||
|
return fromHexString(org.eclipse.jgit.lib.Constants.encodeASCII(str), |
||||||
|
0); |
||||||
|
} |
||||||
|
|
||||||
|
private static final LongObjectId fromHexString(final byte[] bs, int p) { |
||||||
|
try { |
||||||
|
final long a = RawParseUtils.parseHexInt64(bs, p); |
||||||
|
final long b = RawParseUtils.parseHexInt64(bs, p + 16); |
||||||
|
final long c = RawParseUtils.parseHexInt64(bs, p + 32); |
||||||
|
final long d = RawParseUtils.parseHexInt64(bs, p + 48); |
||||||
|
return new LongObjectId(a, b, c, d); |
||||||
|
} catch (ArrayIndexOutOfBoundsException e1) { |
||||||
|
throw new InvalidLongObjectIdException(bs, p, |
||||||
|
Constants.LONG_OBJECT_ID_STRING_LENGTH); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
LongObjectId(final long new_1, final long new_2, final long new_3, |
||||||
|
final long new_4) { |
||||||
|
w1 = new_1; |
||||||
|
w2 = new_2; |
||||||
|
w3 = new_3; |
||||||
|
w4 = new_4; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Initialize this instance by copying another existing LongObjectId. |
||||||
|
* <p> |
||||||
|
* This constructor is mostly useful for subclasses which want to extend a |
||||||
|
* LongObjectId with more properties, but initialize from an existing |
||||||
|
* LongObjectId instance acquired by other means. |
||||||
|
* |
||||||
|
* @param src |
||||||
|
* another already parsed LongObjectId to copy the value out of. |
||||||
|
*/ |
||||||
|
protected LongObjectId(final AnyLongObjectId src) { |
||||||
|
w1 = src.w1; |
||||||
|
w2 = src.w2; |
||||||
|
w3 = src.w3; |
||||||
|
w4 = src.w4; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public LongObjectId toObjectId() { |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
private void writeObject(ObjectOutputStream os) throws IOException { |
||||||
|
os.writeLong(w1); |
||||||
|
os.writeLong(w2); |
||||||
|
os.writeLong(w3); |
||||||
|
os.writeLong(w4); |
||||||
|
} |
||||||
|
|
||||||
|
private void readObject(ObjectInputStream ois) throws IOException { |
||||||
|
w1 = ois.readLong(); |
||||||
|
w2 = ois.readLong(); |
||||||
|
w3 = ois.readLong(); |
||||||
|
w4 = ois.readLong(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,256 @@ |
|||||||
|
/* |
||||||
|
* Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
* and other copyright owners as documented in the project's IP log. |
||||||
|
* |
||||||
|
* This program and the accompanying materials are made available |
||||||
|
* under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
* accompanies this distribution, is reproduced below, and is |
||||||
|
* available at http://www.eclipse.org/org/documents/edl-v10.php
|
||||||
|
* |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or |
||||||
|
* without modification, are permitted provided that the following |
||||||
|
* conditions are met: |
||||||
|
* |
||||||
|
* - Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* |
||||||
|
* - Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following |
||||||
|
* disclaimer in the documentation and/or other materials provided |
||||||
|
* with the distribution. |
||||||
|
* |
||||||
|
* - Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
* names of its contributors may be used to endorse or promote |
||||||
|
* products derived from this software without specific prior |
||||||
|
* written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
*/ |
||||||
|
|
||||||
|
package org.eclipse.jgit.lfs.lib; |
||||||
|
|
||||||
|
import java.text.MessageFormat; |
||||||
|
|
||||||
|
import org.eclipse.jgit.lfs.errors.InvalidLongObjectIdException; |
||||||
|
import org.eclipse.jgit.lfs.internal.LfsText; |
||||||
|
import org.eclipse.jgit.lib.MutableObjectId; |
||||||
|
import org.eclipse.jgit.util.NB; |
||||||
|
import org.eclipse.jgit.util.RawParseUtils; |
||||||
|
|
||||||
|
/** |
||||||
|
* A mutable SHA-256 abstraction. |
||||||
|
* |
||||||
|
* Ported to SHA-256 from {@link MutableObjectId} |
||||||
|
* |
||||||
|
* @since 4.3 |
||||||
|
*/ |
||||||
|
public class MutableLongObjectId extends AnyLongObjectId { |
||||||
|
/** |
||||||
|
* Empty constructor. Initialize object with default (zeros) value. |
||||||
|
*/ |
||||||
|
public MutableLongObjectId() { |
||||||
|
super(); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copying constructor. |
||||||
|
* |
||||||
|
* @param src |
||||||
|
* original entry, to copy id from |
||||||
|
*/ |
||||||
|
MutableLongObjectId(MutableLongObjectId src) { |
||||||
|
fromObjectId(src); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Set any byte in the id. |
||||||
|
* |
||||||
|
* @param index |
||||||
|
* index of the byte to set in the raw form of the ObjectId. Must |
||||||
|
* be in range [0, {@link Constants#LONG_OBJECT_ID_LENGTH}). |
||||||
|
* @param value |
||||||
|
* the value of the specified byte at {@code index}. Values are |
||||||
|
* unsigned and thus are in the range [0,255] rather than the |
||||||
|
* signed byte range of [-128, 127]. |
||||||
|
* @throws ArrayIndexOutOfBoundsException |
||||||
|
* {@code index} is less than 0, equal to |
||||||
|
* {@link Constants#LONG_OBJECT_ID_LENGTH}, or greater than |
||||||
|
* {@link Constants#LONG_OBJECT_ID_LENGTH}. |
||||||
|
*/ |
||||||
|
public void setByte(int index, int value) { |
||||||
|
switch (index >> 3) { |
||||||
|
case 0: |
||||||
|
w1 = set(w1, index & 7, value); |
||||||
|
break; |
||||||
|
case 1: |
||||||
|
w2 = set(w2, index & 7, value); |
||||||
|
break; |
||||||
|
case 2: |
||||||
|
w3 = set(w3, index & 7, value); |
||||||
|
break; |
||||||
|
case 3: |
||||||
|
w4 = set(w4, index & 7, value); |
||||||
|
break; |
||||||
|
default: |
||||||
|
throw new ArrayIndexOutOfBoundsException(index); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private static long set(long w, int index, long value) { |
||||||
|
value &= 0xff; |
||||||
|
|
||||||
|
switch (index) { |
||||||
|
case 0: |
||||||
|
return (w & 0x00ffffffffffffffL) | (value << 56); |
||||||
|
case 1: |
||||||
|
return (w & 0xff00ffffffffffffL) | (value << 48); |
||||||
|
case 2: |
||||||
|
return (w & 0xffff00ffffffffffL) | (value << 40); |
||||||
|
case 3: |
||||||
|
return (w & 0xffffff00ffffffffL) | (value << 32); |
||||||
|
case 4: |
||||||
|
return (w & 0xffffffff00ffffffL) | (value << 24); |
||||||
|
case 5: |
||||||
|
return (w & 0xffffffffff00ffffL) | (value << 16); |
||||||
|
case 6: |
||||||
|
return (w & 0xffffffffffff00ffL) | (value << 8); |
||||||
|
case 7: |
||||||
|
return (w & 0xffffffffffffff00L) | value; |
||||||
|
default: |
||||||
|
throw new ArrayIndexOutOfBoundsException(); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
/** Make this id match {@link LongObjectId#zeroId()}. */ |
||||||
|
public void clear() { |
||||||
|
w1 = 0; |
||||||
|
w2 = 0; |
||||||
|
w3 = 0; |
||||||
|
w4 = 0; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Copy an LongObjectId into this mutable buffer. |
||||||
|
* |
||||||
|
* @param src |
||||||
|
* the source id to copy from. |
||||||
|
*/ |
||||||
|
public void fromObjectId(AnyLongObjectId src) { |
||||||
|
this.w1 = src.w1; |
||||||
|
this.w2 = src.w2; |
||||||
|
this.w3 = src.w3; |
||||||
|
this.w4 = src.w4; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an LongObjectId from raw binary representation. |
||||||
|
* |
||||||
|
* @param bs |
||||||
|
* the raw byte buffer to read from. At least 32 bytes must be |
||||||
|
* available within this byte array. |
||||||
|
*/ |
||||||
|
public void fromRaw(final byte[] bs) { |
||||||
|
fromRaw(bs, 0); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an LongObjectId from raw binary representation. |
||||||
|
* |
||||||
|
* @param bs |
||||||
|
* the raw byte buffer to read from. At least 32 bytes after p |
||||||
|
* must be available within this byte array. |
||||||
|
* @param p |
||||||
|
* position to read the first byte of data from. |
||||||
|
*/ |
||||||
|
public void fromRaw(final byte[] bs, final int p) { |
||||||
|
w1 = NB.decodeInt64(bs, p); |
||||||
|
w2 = NB.decodeInt64(bs, p + 8); |
||||||
|
w3 = NB.decodeInt64(bs, p + 16); |
||||||
|
w4 = NB.decodeInt64(bs, p + 24); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an LongObjectId from binary representation expressed in integers. |
||||||
|
* |
||||||
|
* @param longs |
||||||
|
* the raw long buffer to read from. At least 4 longs must be |
||||||
|
* available within this longs array. |
||||||
|
*/ |
||||||
|
public void fromRaw(final long[] longs) { |
||||||
|
fromRaw(longs, 0); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an LongObjectId from binary representation expressed in longs. |
||||||
|
* |
||||||
|
* @param longs |
||||||
|
* the raw int buffer to read from. At least 4 longs after p must |
||||||
|
* be available within this longs array. |
||||||
|
* @param p |
||||||
|
* position to read the first integer of data from. |
||||||
|
* |
||||||
|
*/ |
||||||
|
public void fromRaw(final long[] longs, final int p) { |
||||||
|
w1 = longs[p]; |
||||||
|
w2 = longs[p + 1]; |
||||||
|
w3 = longs[p + 2]; |
||||||
|
w4 = longs[p + 3]; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an LongObjectId from hex characters (US-ASCII). |
||||||
|
* |
||||||
|
* @param buf |
||||||
|
* the US-ASCII buffer to read from. At least 32 bytes after |
||||||
|
* offset must be available within this byte array. |
||||||
|
* @param offset |
||||||
|
* position to read the first character from. |
||||||
|
*/ |
||||||
|
public void fromString(final byte[] buf, final int offset) { |
||||||
|
fromHexString(buf, offset); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* Convert an LongObjectId from hex characters. |
||||||
|
* |
||||||
|
* @param str |
||||||
|
* the string to read from. Must be 64 characters long. |
||||||
|
*/ |
||||||
|
public void fromString(final String str) { |
||||||
|
if (str.length() != Constants.LONG_OBJECT_ID_STRING_LENGTH) |
||||||
|
throw new IllegalArgumentException( |
||||||
|
MessageFormat.format(LfsText.get().invalidLongId, str)); |
||||||
|
fromHexString(org.eclipse.jgit.lib.Constants.encodeASCII(str), 0); |
||||||
|
} |
||||||
|
|
||||||
|
private void fromHexString(final byte[] bs, int p) { |
||||||
|
try { |
||||||
|
w1 = RawParseUtils.parseHexInt64(bs, p); |
||||||
|
w2 = RawParseUtils.parseHexInt64(bs, p + 16); |
||||||
|
w3 = RawParseUtils.parseHexInt64(bs, p + 32); |
||||||
|
w4 = RawParseUtils.parseHexInt64(bs, p + 48); |
||||||
|
} catch (ArrayIndexOutOfBoundsException e1) { |
||||||
|
throw new InvalidLongObjectIdException(bs, p, |
||||||
|
Constants.LONG_OBJECT_ID_STRING_LENGTH); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public LongObjectId toObjectId() { |
||||||
|
return new LongObjectId(this); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1 @@ |
|||||||
|
target/ |
@ -0,0 +1,17 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<projectDescription> |
||||||
|
<name>org.eclipse.jgit.lfs.feature</name> |
||||||
|
<comment></comment> |
||||||
|
<projects> |
||||||
|
</projects> |
||||||
|
<buildSpec> |
||||||
|
<buildCommand> |
||||||
|
<name>org.eclipse.pde.FeatureBuilder</name> |
||||||
|
<arguments> |
||||||
|
</arguments> |
||||||
|
</buildCommand> |
||||||
|
</buildSpec> |
||||||
|
<natures> |
||||||
|
<nature>org.eclipse.pde.FeatureNature</nature> |
||||||
|
</natures> |
||||||
|
</projectDescription> |
@ -0,0 +1,3 @@ |
|||||||
|
#Fri Jun 18 23:33:45 CEST 2010 |
||||||
|
eclipse.preferences.version=1 |
||||||
|
encoding/<project>=UTF-8 |
@ -0,0 +1,3 @@ |
|||||||
|
#Fri Jun 18 23:33:45 CEST 2010 |
||||||
|
eclipse.preferences.version=1 |
||||||
|
line.separator=\n |
@ -0,0 +1,4 @@ |
|||||||
|
#Tue Jul 19 20:11:28 CEST 2011 |
||||||
|
eclipse.preferences.version=1 |
||||||
|
project.repository.kind=bugzilla |
||||||
|
project.repository.url=https\://bugs.eclipse.org/bugs |
@ -0,0 +1,3 @@ |
|||||||
|
#Tue Jul 19 20:11:28 CEST 2011 |
||||||
|
commit.comment.template=${task.description} \n\nBug\: ${task.key} |
||||||
|
eclipse.preferences.version=1 |
@ -0,0 +1,4 @@ |
|||||||
|
bin.includes = feature.xml,\ |
||||||
|
edl-v10.html,\ |
||||||
|
feature.properties,\ |
||||||
|
license.html |
@ -0,0 +1,59 @@ |
|||||||
|
<?xml version="1.0" encoding="ISO-8859-1" ?> |
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"> |
||||||
|
|
||||||
|
<head> |
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> |
||||||
|
<title>Eclipse Distribution License - Version 1.0</title> |
||||||
|
<style type="text/css"> |
||||||
|
body { |
||||||
|
size: 8.5in 11.0in; |
||||||
|
margin: 0.25in 0.5in 0.25in 0.5in; |
||||||
|
tab-interval: 0.5in; |
||||||
|
} |
||||||
|
p { |
||||||
|
margin-left: auto; |
||||||
|
margin-top: 0.5em; |
||||||
|
margin-bottom: 0.5em; |
||||||
|
} |
||||||
|
p.list { |
||||||
|
margin-left: 0.5in; |
||||||
|
margin-top: 0.05em; |
||||||
|
margin-bottom: 0.05em; |
||||||
|
} |
||||||
|
</style> |
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
<body lang="EN-US"> |
||||||
|
|
||||||
|
<p><b>Eclipse Distribution License - v 1.0</b></p> |
||||||
|
|
||||||
|
<p>Copyright (c) 2007, Eclipse Foundation, Inc. and its licensors. </p> |
||||||
|
|
||||||
|
<p>All rights reserved.</p> |
||||||
|
<p>Redistribution and use in source and binary forms, with or without modification, |
||||||
|
are permitted provided that the following conditions are met: |
||||||
|
<ul><li>Redistributions of source code must retain the above copyright notice, |
||||||
|
this list of conditions and the following disclaimer.</li> |
||||||
|
<li>Redistributions in binary form must reproduce the above copyright notice, |
||||||
|
this list of conditions and the following disclaimer in the documentation |
||||||
|
and/or other materials provided with the distribution.</li> |
||||||
|
<li>Neither the name of the Eclipse Foundation, Inc. nor the names of its |
||||||
|
contributors may be used to endorse or promote products derived from |
||||||
|
this software without specific prior written permission.</li></ul> |
||||||
|
</p> |
||||||
|
<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||||
|
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
||||||
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
||||||
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
||||||
|
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
||||||
|
POSSIBILITY OF SUCH DAMAGE.</p> |
||||||
|
|
||||||
|
</body> |
||||||
|
|
||||||
|
</html> |
@ -0,0 +1,159 @@ |
|||||||
|
############################################################################### |
||||||
|
# Copyright (c) 20015 Matthias Sohn <matthias.sohn@sap.com> and others. |
||||||
|
# |
||||||
|
# All rights reserved. This program and the accompanying materials |
||||||
|
# are made available under the terms of the Eclipse Public License v1.0 |
||||||
|
# which accompanies this distribution, and is available at |
||||||
|
# http://www.eclipse.org/legal/epl-v10.html |
||||||
|
# |
||||||
|
############################################################################### |
||||||
|
|
||||||
|
featureName=Java implementation of Git - optional LFS support |
||||||
|
providerName=Eclipse JGit |
||||||
|
|
||||||
|
updateSiteName=Eclipse JGit Update Site |
||||||
|
|
||||||
|
# description property - text of the "Feature Description" |
||||||
|
description=\ |
||||||
|
Optional LFS support.\n |
||||||
|
################ end of description property ################################## |
||||||
|
|
||||||
|
# "copyright" property - text of the "Feature Update Copyright" |
||||||
|
copyright=\ |
||||||
|
Copyright (c) 2015, Matthias Sohn et.al.\n\ |
||||||
|
All rights reserved. This program and the accompanying materials\n\ |
||||||
|
are made available under the terms of the Eclipse Distribution License v1.0\n\ |
||||||
|
which accompanies this distribution, and is available at\n\ |
||||||
|
http://www.eclipse.org/org/documents/edl-v10.html\n |
||||||
|
################ end of copyright property #################################### |
||||||
|
|
||||||
|
# "licenseURL" property - URL of the "Feature License" |
||||||
|
# do not translate value - just change to point to a locale-specific HTML page |
||||||
|
licenseURL=license.html |
||||||
|
|
||||||
|
# "license" property - text of the "Feature Update License" |
||||||
|
# should be plain text version of license agreement pointed to be "licenseURL" |
||||||
|
license=\ |
||||||
|
Eclipse Foundation Software User Agreement\n\ |
||||||
|
April 9, 2014\n\ |
||||||
|
\n\ |
||||||
|
Usage Of Content\n\ |
||||||
|
\n\ |
||||||
|
THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\ |
||||||
|
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\ |
||||||
|
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\ |
||||||
|
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\ |
||||||
|
NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\ |
||||||
|
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\ |
||||||
|
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\ |
||||||
|
OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\ |
||||||
|
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\ |
||||||
|
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\ |
||||||
|
BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\ |
||||||
|
\n\ |
||||||
|
Applicable Licenses\n\ |
||||||
|
\n\ |
||||||
|
Unless otherwise indicated, all Content made available by the\n\ |
||||||
|
Eclipse Foundation is provided to you under the terms and conditions of\n\ |
||||||
|
the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\ |
||||||
|
provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\ |
||||||
|
For purposes of the EPL, "Program" will mean the Content.\n\ |
||||||
|
\n\ |
||||||
|
Content includes, but is not limited to, source code, object code,\n\ |
||||||
|
documentation and other files maintained in the Eclipse Foundation source code\n\ |
||||||
|
repository ("Repository") in software modules ("Modules") and made available\n\ |
||||||
|
as downloadable archives ("Downloads").\n\ |
||||||
|
\n\ |
||||||
|
- Content may be structured and packaged into modules to facilitate delivering,\n\ |
||||||
|
extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\ |
||||||
|
plug-in fragments ("Fragments"), and features ("Features").\n\ |
||||||
|
- Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\ |
||||||
|
in a directory named "plugins".\n\ |
||||||
|
- A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\ |
||||||
|
Each Feature may be packaged as a sub-directory in a directory named "features".\n\ |
||||||
|
Within a Feature, files named "feature.xml" may contain a list of the names and version\n\ |
||||||
|
numbers of the Plug-ins and/or Fragments associated with that Feature.\n\ |
||||||
|
- Features may also include other Features ("Included Features"). Within a Feature, files\n\ |
||||||
|
named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\ |
||||||
|
\n\ |
||||||
|
The terms and conditions governing Plug-ins and Fragments should be\n\ |
||||||
|
contained in files named "about.html" ("Abouts"). The terms and\n\ |
||||||
|
conditions governing Features and Included Features should be contained\n\ |
||||||
|
in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\ |
||||||
|
Licenses may be located in any directory of a Download or Module\n\ |
||||||
|
including, but not limited to the following locations:\n\ |
||||||
|
\n\ |
||||||
|
- The top-level (root) directory\n\ |
||||||
|
- Plug-in and Fragment directories\n\ |
||||||
|
- Inside Plug-ins and Fragments packaged as JARs\n\ |
||||||
|
- Sub-directories of the directory named "src" of certain Plug-ins\n\ |
||||||
|
- Feature directories\n\ |
||||||
|
\n\ |
||||||
|
Note: if a Feature made available by the Eclipse Foundation is installed using the\n\ |
||||||
|
Provisioning Technology (as defined below), you must agree to a license ("Feature \n\ |
||||||
|
Update License") during the installation process. If the Feature contains\n\ |
||||||
|
Included Features, the Feature Update License should either provide you\n\ |
||||||
|
with the terms and conditions governing the Included Features or inform\n\ |
||||||
|
you where you can locate them. Feature Update Licenses may be found in\n\ |
||||||
|
the "license" property of files named "feature.properties" found within a Feature.\n\ |
||||||
|
Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\ |
||||||
|
terms and conditions (or references to such terms and conditions) that\n\ |
||||||
|
govern your use of the associated Content in that directory.\n\ |
||||||
|
\n\ |
||||||
|
THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\ |
||||||
|
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\ |
||||||
|
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\ |
||||||
|
\n\ |
||||||
|
- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\ |
||||||
|
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\ |
||||||
|
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\ |
||||||
|
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\ |
||||||
|
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\ |
||||||
|
\n\ |
||||||
|
IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\ |
||||||
|
TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\ |
||||||
|
is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\ |
||||||
|
govern that particular Content.\n\ |
||||||
|
\n\ |
||||||
|
\n\Use of Provisioning Technology\n\ |
||||||
|
\n\ |
||||||
|
The Eclipse Foundation makes available provisioning software, examples of which include,\n\ |
||||||
|
but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\ |
||||||
|
the purpose of allowing users to install software, documentation, information and/or\n\ |
||||||
|
other materials (collectively "Installable Software"). This capability is provided with\n\ |
||||||
|
the intent of allowing such users to install, extend and update Eclipse-based products.\n\ |
||||||
|
Information about packaging Installable Software is available at\n\ |
||||||
|
http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\ |
||||||
|
\n\ |
||||||
|
You may use Provisioning Technology to allow other parties to install Installable Software.\n\ |
||||||
|
You shall be responsible for enabling the applicable license agreements relating to the\n\ |
||||||
|
Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\ |
||||||
|
in accordance with the Specification. By using Provisioning Technology in such a manner and\n\ |
||||||
|
making it available in accordance with the Specification, you further acknowledge your\n\ |
||||||
|
agreement to, and the acquisition of all necessary rights to permit the following:\n\ |
||||||
|
\n\ |
||||||
|
1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\ |
||||||
|
the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\ |
||||||
|
extending or updating the functionality of an Eclipse-based product.\n\ |
||||||
|
2. During the Provisioning Process, the Provisioning Technology may cause third party\n\ |
||||||
|
Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\ |
||||||
|
3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\ |
||||||
|
govern the use of the Installable Software ("Installable Software Agreement") and such\n\ |
||||||
|
Installable Software Agreement shall be accessed from the Target Machine in accordance\n\ |
||||||
|
with the Specification. Such Installable Software Agreement must inform the user of the\n\ |
||||||
|
terms and conditions that govern the Installable Software and must solicit acceptance by\n\ |
||||||
|
the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\ |
||||||
|
indication of agreement by the user, the provisioning Technology will complete installation\n\ |
||||||
|
of the Installable Software.\n\ |
||||||
|
\n\ |
||||||
|
Cryptography\n\ |
||||||
|
\n\ |
||||||
|
Content may contain encryption software. The country in which you are\n\ |
||||||
|
currently may have restrictions on the import, possession, and use,\n\ |
||||||
|
and/or re-export to another country, of encryption software. BEFORE\n\ |
||||||
|
using any encryption software, please check the country's laws,\n\ |
||||||
|
regulations and policies concerning the import, possession, or use, and\n\ |
||||||
|
re-export of encryption software, to see if this is permitted.\n\ |
||||||
|
\n\ |
||||||
|
Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n |
||||||
|
########### end of license property ########################################## |
@ -0,0 +1,36 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<feature |
||||||
|
id="org.eclipse.jgit.lfs" |
||||||
|
label="%featureName" |
||||||
|
version="4.3.0.qualifier" |
||||||
|
provider-name="%providerName"> |
||||||
|
|
||||||
|
<description url="http://www.eclipse.org/jgit/"> |
||||||
|
%description |
||||||
|
</description> |
||||||
|
|
||||||
|
<copyright> |
||||||
|
%copyright |
||||||
|
</copyright> |
||||||
|
|
||||||
|
<license url="%licenseURL"> |
||||||
|
%license |
||||||
|
</license> |
||||||
|
|
||||||
|
<url> |
||||||
|
<update label="%updateSiteName" url="http://download.eclipse.org/egit/updates"/> |
||||||
|
<discovery label="%updateSiteName" url="http://download.eclipse.org/egit/updates"/> |
||||||
|
</url> |
||||||
|
|
||||||
|
<requires> |
||||||
|
<import plugin="org.eclipse.jgit"/> |
||||||
|
</requires> |
||||||
|
|
||||||
|
<plugin |
||||||
|
id="org.eclipse.jgit.lfs" |
||||||
|
download-size="0" |
||||||
|
install-size="0" |
||||||
|
version="0.0.0" |
||||||
|
unpack="false"/> |
||||||
|
|
||||||
|
</feature> |
@ -0,0 +1,106 @@ |
|||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
||||||
|
<!-- saved from url=(0044)http://www.eclipse.org/legal/epl/notice.html --> |
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
||||||
|
|
||||||
|
<title>Eclipse Foundation Software User Agreement</title> |
||||||
|
</head> |
||||||
|
|
||||||
|
<body lang="EN-US"> |
||||||
|
<h2>Eclipse Foundation Software User Agreement</h2> |
||||||
|
<p>April 9, 2014</p> |
||||||
|
|
||||||
|
<h3>Usage Of Content</h3> |
||||||
|
|
||||||
|
<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS |
||||||
|
(COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND |
||||||
|
CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE |
||||||
|
OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR |
||||||
|
NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND |
||||||
|
CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p> |
||||||
|
|
||||||
|
<h3>Applicable Licenses</h3> |
||||||
|
|
||||||
|
<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 |
||||||
|
("EPL"). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. |
||||||
|
For purposes of the EPL, "Program" will mean the Content.</p> |
||||||
|
|
||||||
|
<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code |
||||||
|
repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").</p> |
||||||
|
|
||||||
|
<ul> |
||||||
|
<li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").</li> |
||||||
|
<li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".</li> |
||||||
|
<li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins |
||||||
|
and/or Fragments associated with that Feature.</li> |
||||||
|
<li>Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.</li> |
||||||
|
</ul> |
||||||
|
|
||||||
|
<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and |
||||||
|
Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module |
||||||
|
including, but not limited to the following locations:</p> |
||||||
|
|
||||||
|
<ul> |
||||||
|
<li>The top-level (root) directory</li> |
||||||
|
<li>Plug-in and Fragment directories</li> |
||||||
|
<li>Inside Plug-ins and Fragments packaged as JARs</li> |
||||||
|
<li>Sub-directories of the directory named "src" of certain Plug-ins</li> |
||||||
|
<li>Feature directories</li> |
||||||
|
</ul> |
||||||
|
|
||||||
|
<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the |
||||||
|
installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or |
||||||
|
inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. |
||||||
|
Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in |
||||||
|
that directory.</p> |
||||||
|
|
||||||
|
<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE |
||||||
|
OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p> |
||||||
|
|
||||||
|
<ul> |
||||||
|
<li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li> |
||||||
|
<li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li> |
||||||
|
<li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li> |
||||||
|
<li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li> |
||||||
|
<li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li> |
||||||
|
</ul> |
||||||
|
|
||||||
|
<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please |
||||||
|
contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p> |
||||||
|
|
||||||
|
|
||||||
|
<h3>Use of Provisioning Technology</h3> |
||||||
|
|
||||||
|
<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse |
||||||
|
Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or |
||||||
|
other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to |
||||||
|
install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a> |
||||||
|
("Specification").</p> |
||||||
|
|
||||||
|
<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the |
||||||
|
applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology |
||||||
|
in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the |
||||||
|
Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p> |
||||||
|
|
||||||
|
<ol> |
||||||
|
<li>A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology |
||||||
|
on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based |
||||||
|
product.</li> |
||||||
|
<li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be |
||||||
|
accessed and copied to the Target Machine.</li> |
||||||
|
<li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable |
||||||
|
Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target |
||||||
|
Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern |
||||||
|
the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such |
||||||
|
indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li> |
||||||
|
</ol> |
||||||
|
|
||||||
|
<h3>Cryptography</h3> |
||||||
|
|
||||||
|
<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to |
||||||
|
another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, |
||||||
|
possession, or use, and re-export of encryption software, to see if this is permitted.</p> |
||||||
|
|
||||||
|
<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p> |
||||||
|
|
||||||
|
|
||||||
|
</body></html> |
@ -0,0 +1,77 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<!-- |
||||||
|
Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> |
||||||
|
and other copyright owners as documented in the project's IP log. |
||||||
|
|
||||||
|
This program and the accompanying materials are made available |
||||||
|
under the terms of the Eclipse Distribution License v1.0 which |
||||||
|
accompanies this distribution, is reproduced below, and is |
||||||
|
available at http://www.eclipse.org/org/documents/edl-v10.php |
||||||
|
|
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or |
||||||
|
without modification, are permitted provided that the following |
||||||
|
conditions are met: |
||||||
|
|
||||||
|
- Redistributions of source code must retain the above copyright |
||||||
|
notice, this list of conditions and the following disclaimer. |
||||||
|
|
||||||
|
- Redistributions in binary form must reproduce the above |
||||||
|
copyright notice, this list of conditions and the following |
||||||
|
disclaimer in the documentation and/or other materials provided |
||||||
|
with the distribution. |
||||||
|
|
||||||
|
- Neither the name of the Eclipse Foundation, Inc. nor the |
||||||
|
names of its contributors may be used to endorse or promote |
||||||
|
products derived from this software without specific prior |
||||||
|
written permission. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
||||||
|
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
||||||
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
||||||
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
||||||
|
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
--> |
||||||
|
|
||||||
|
<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/maven-v4_0_0.xsd"> |
||||||
|
<modelVersion>4.0.0</modelVersion> |
||||||
|
|
||||||
|
<parent> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>jgit.tycho.parent</artifactId> |
||||||
|
<version>4.3.0-SNAPSHOT</version> |
||||||
|
</parent> |
||||||
|
|
||||||
|
<groupId>org.eclipse.jgit.feature</groupId> |
||||||
|
<artifactId>org.eclipse.jgit.lfs</artifactId> |
||||||
|
<packaging>eclipse-feature</packaging> |
||||||
|
|
||||||
|
<name>JGit - Optional LFS support</name> |
||||||
|
<dependencies> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>org.eclipse.jgit</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
<dependency> |
||||||
|
<groupId>org.eclipse.jgit</groupId> |
||||||
|
<artifactId>org.eclipse.jgit.lfs</artifactId> |
||||||
|
<version>${project.version}</version> |
||||||
|
</dependency> |
||||||
|
|
||||||
|
</dependencies> |
||||||
|
|
||||||
|
</project> |
Loading…
Reference in new issue