Top Description Inners Fields Constructors Methods
org.eclipse.jgit.util.io

public Class AutoLFInputStream

extends InputStream
Class Inheritance
Imports
java.io.IOException, .InputStream, java.util.Arrays, .EnumSet, .Set, org.eclipse.jgit.diff.RawText

An InputStream that normalizes CRLF to LF.

Existing single CR are not changed to LF but are retained as is.

Optionally, a binary check on the first RawText#getBufferSize() bytes is performed and in case of binary files, canonicalization is turned off (for the complete file). If binary checking determines that the input is CR/LF-delimited text and the stream has been created for checkout, canonicalization is also turned off.

Since
4.3

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
AutoLFInputStream.IsBinaryException

A special exception thrown when AutoLFInputStream is told to throw an exception when attempting to read a binary file.

public static enum
AutoLFInputStream.StreamFlag

Flags for controlling auto-detection of binary vs. text content (for text=auto).

Field Summary

Modifier and TypeField and Description
private final boolean
private final byte[]
private int
private boolean
private final boolean
private final InputStream
private boolean
isBinary

Set to true if the input was detected to be binary data.

private boolean
passAsIs

Set to true if no CR/LF processing is to be done: if the input is binary data, or CR/LF-delimited text and StreamFlag#FOR_CHECKOUT was given.

private int
private final byte[]

Constructor Summary

AccessConstructor and Description
public
AutoLFInputStream(InputStream
raw input stream
in
,
Set<AutoLFInputStream.StreamFlag>
StreamFlags controlling the stream behavior; null is treated as an empty set
flags
)

Creates a new InputStream, wrapping the specified stream.

Method Summary

Modifier and TypeMethod and Description
public void
close()

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Closes this input stream and releases any system resources associated with the stream.

public static AutoLFInputStream

Returns:

a new AutoLFInputStream
create
(InputStream
raw input stream
in
,
AutoLFInputStream.StreamFlag...
StreamFlags controlling the stream behavior
flags
)

Factory method for creating an AutoLFInputStream with the specified flags.

private boolean
public boolean

Returns:

true if the stream has detected as a binary so far.
isBinary
()

Whether the stream has detected as a binary so far.

public int
read()

Implements abstract java.io.InputStream.read.

Reads the next byte of data from the input stream.

public int
read(byte[]
the buffer into which the data is read.
bs
,
int
the start offset in array b at which the data is written.
off
,
int
the maximum number of bytes to read.
len
)

Overrides java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes.

Inherited from java.io.InputStream:
availablemarkmarkSupportednullInputStreamreadreadAllBytesreadNBytesreadNBytesresetskipskipNBytestransferTo

Field Detail

abortIfBinaryback to summary
private final boolean abortIfBinary
bufback to summary
private final byte[] buf
cntback to summary
private int cnt
detectBinaryback to summary
private boolean detectBinary
forCheckoutback to summary
private final boolean forCheckout
inback to summary
private final InputStream in
isBinaryback to summary
private boolean isBinary

Set to true if the input was detected to be binary data.

passAsIsback to summary
private boolean passAsIs

Set to true if no CR/LF processing is to be done: if the input is binary data, or CR/LF-delimited text and StreamFlag#FOR_CHECKOUT was given.

ptrback to summary
private int ptr
singleback to summary
private final byte[] single

Constructor Detail

AutoLFInputStreamback to summary
public AutoLFInputStream(InputStream in, Set<AutoLFInputStream.StreamFlag> flags)

Creates a new InputStream, wrapping the specified stream.

Parameters
in:InputStream

raw input stream

flags:Set<AutoLFInputStream.StreamFlag>

StreamFlags controlling the stream behavior; null is treated as an empty set

Since
5.9

Method Detail

closeback to summary
public void close() throws IOException

Overrides java.io.InputStream.close.

Implements java.io.Closeable.close.

Doc from java.io.InputStream.close.

Closes this input stream and releases any system resources associated with the stream.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
createback to summary
public static AutoLFInputStream create(InputStream in, AutoLFInputStream.StreamFlag... flags)

Factory method for creating an AutoLFInputStream with the specified flags.

Parameters
in:InputStream

raw input stream

flags:AutoLFInputStream.StreamFlag[]

StreamFlags controlling the stream behavior

Returns:AutoLFInputStream

a new AutoLFInputStream

Since
5.9
fillBufferback to summary
private boolean fillBuffer() throws IOException
isBinaryback to summary
public boolean isBinary()

Whether the stream has detected as a binary so far.

Returns:boolean

true if the stream has detected as a binary so far.

Since
3.3
readback to summary
public int read() throws IOException

Implements abstract java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

Returns:int

the next byte of data, or -1 if the end of the stream is reached.

Annotations
@Override
Exceptions
IOException:
if an I/O error occurs.
readback to summary
public int read(byte[] bs, int off, int len) throws IOException

Overrides java.io.InputStream.read.

Doc from java.io.InputStream.read.

Reads up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read. The number of bytes actually read is returned as an integer.

This method blocks until input data is available, end of file is detected, or an exception is thrown.

If len is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len. Let k be the number of bytes actually read; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off-1] and elements b[off+len] through b[b.length-1] are unaffected.

Parameters
bs:byte[]

the buffer into which the data is read.

off:int

the start offset in array b at which the data is written.

len:int

the maximum number of bytes to read.

Returns:int

the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.

Annotations
@Override
Exceptions
IOException:
If the first byte cannot be read for any reason other than end of file, or if the input stream has been closed, or if some other I/O error occurs.
org.eclipse.jgit.util.io back to summary

public Class AutoLFInputStream.IsBinaryException

extends IOException
Class Inheritance

A special exception thrown when AutoLFInputStream is told to throw an exception when attempting to read a binary file. The exception may be thrown at any stage during reading.
Since
3.3

Field Summary

Modifier and TypeField and Description
private static final long

Constructor Summary

AccessConstructor and Description
pack-priv

Field Detail

serialVersionUIDback to summary
private static final long serialVersionUID

Hides java.io.IOException.serialVersionUID.

Constructor Detail

IsBinaryExceptionback to summary
pack-priv IsBinaryException()
org.eclipse.jgit.util.io back to summary

public final Enum AutoLFInputStream.StreamFlag

extends Enum<AutoLFInputStream.StreamFlag>
Class Inheritance

Flags for controlling auto-detection of binary vs. text content (for text=auto).
Since
5.9

Field Summary

Modifier and TypeField and Description
public static final AutoLFInputStream.StreamFlag
ABORT_IF_BINARY

If DETECT_BINARY is set, throw an IsBinaryException if binary content is detected.

public static final AutoLFInputStream.StreamFlag
DETECT_BINARY

Check the first 8kB for binary content and switch off canonicalization off for the whole file if so.

public static final AutoLFInputStream.StreamFlag
FOR_CHECKOUT

If DETECT_BINARY is set and content is found to be CR-LF delimited text, switch off canonicalization.

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static AutoLFInputStream.StreamFlag
public static AutoLFInputStream.StreamFlag[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

ABORT_IF_BINARYback to summary
public static final AutoLFInputStream.StreamFlag ABORT_IF_BINARY

If DETECT_BINARY is set, throw an IsBinaryException if binary content is detected.

DETECT_BINARYback to summary
public static final AutoLFInputStream.StreamFlag DETECT_BINARY

Check the first 8kB for binary content and switch off canonicalization off for the whole file if so.

FOR_CHECKOUTback to summary
public static final AutoLFInputStream.StreamFlag FOR_CHECKOUT

If DETECT_BINARY is set and content is found to be CR-LF delimited text, switch off canonicalization.

Constructor Detail

StreamFlagback to summary
private StreamFlag()

Method Detail

valueOfback to summary
public static AutoLFInputStream.StreamFlag valueOf(String name)
valuesback to summary
public static AutoLFInputStream.StreamFlag[] values()