public class ObjectChecker extends Object
Verifications made by this class only check that the fields of an object are formatted correctly. The ObjectId checksum of the object is not verified, and connectivity links between objects are also not verified. Its assumed that the caller can provide both of these validations on its own.
Instances of this class are not thread safe, but they may be reused to perform multiple object validations.
Modifier and Type | Field and Description |
---|---|
static byte[] |
author
Header "author "
|
static byte[] |
committer
Header "committer "
|
static byte[] |
encoding
Header "encoding "
|
static byte[] |
object
Header "object "
|
static byte[] |
parent
Header "parent "
|
static byte[] |
tag
Header "tag "
|
static byte[] |
tagger
Header "tagger "
|
static byte[] |
tree
Header "tree "
|
static byte[] |
type
Header "type "
|
Constructor and Description |
---|
ObjectChecker() |
Modifier and Type | Method and Description |
---|---|
void |
check(int objType,
byte[] raw)
Check an object for parsing errors.
|
void |
checkBlob(byte[] raw)
Check a blob for errors.
|
void |
checkCommit(byte[] raw)
Check a commit for errors.
|
void |
checkPath(byte[] raw,
int ptr,
int end)
Check tree path entry for validity.
|
void |
checkPath(String path)
Check tree path entry for validity.
|
void |
checkPathSegment(byte[] raw,
int ptr,
int end)
Check tree path entry for validity.
|
void |
checkTag(byte[] raw)
Check an annotated tag for errors.
|
void |
checkTree(byte[] raw)
Check a canonical formatted tree for errors.
|
ObjectChecker |
setAllowLeadingZeroFileMode(boolean allow)
Enable accepting leading zero mode in tree entries.
|
ObjectChecker |
setSafeForMacOS(boolean mac)
Restrict trees to only names legal on Mac OS X platforms.
|
ObjectChecker |
setSafeForWindows(boolean win)
Restrict trees to only names legal on Windows platforms.
|
public static final byte[] tree
public static final byte[] parent
public static final byte[] author
public static final byte[] committer
public static final byte[] encoding
public static final byte[] object
public static final byte[] type
public static final byte[] tag
public static final byte[] tagger
public ObjectChecker setAllowLeadingZeroFileMode(boolean allow)
Some broken Git libraries generated leading zeros in the mode part of tree entries. This is technically incorrect but gracefully allowed by git-core. JGit rejects such trees by default, but may need to accept them on broken histories.
allow
- allow leading zero mode.this
.public ObjectChecker setSafeForWindows(boolean win)
Also rejects any mixed case forms of reserved names (.git
).
win
- true if Windows name checking should be performed.this
.public ObjectChecker setSafeForMacOS(boolean mac)
Rejects any mixed case forms of reserved names (.git
)
for users working on HFS+ in case-insensitive (default) mode.
mac
- true if Mac OS X name checking should be performed.this
.public void check(int objType, byte[] raw) throws CorruptObjectException
objType
- type of the object. Must be a valid object type code in
Constants
.raw
- the raw data which comprises the object. This should be in the
canonical format (that is the format used to generate the
ObjectId of the object). The array is never modified.CorruptObjectException
- if an error is identified.public void checkCommit(byte[] raw) throws CorruptObjectException
raw
- the commit data. The array is never modified.CorruptObjectException
- if any error was detected.public void checkTag(byte[] raw) throws CorruptObjectException
raw
- the tag data. The array is never modified.CorruptObjectException
- if any error was detected.public void checkTree(byte[] raw) throws CorruptObjectException
raw
- the raw tree data. The array is never modified.CorruptObjectException
- if any error was detected.public void checkPath(String path) throws CorruptObjectException
Unlike checkPathSegment(byte[], int, int)
, this version
scans a multi-directory path string such as "src/main.c"
.
path
- path string to scan.CorruptObjectException
- path is invalid.public void checkPath(byte[] raw, int ptr, int end) throws CorruptObjectException
Unlike checkPathSegment(byte[], int, int)
, this version
scans a multi-directory path string such as "src/main.c"
.
raw
- buffer to scan.ptr
- offset to first byte of the name.end
- offset to one past last byte of name.CorruptObjectException
- path is invalid.public void checkPathSegment(byte[] raw, int ptr, int end) throws CorruptObjectException
raw
- buffer to scan.ptr
- offset to first byte of the name.end
- offset to one past last byte of name.CorruptObjectException
- name is invalid.public void checkBlob(byte[] raw) throws CorruptObjectException
raw
- the blob data. The array is never modified.CorruptObjectException
- if any error was detected.Copyright © 2015. All rights reserved.