org.eclipse.jgit.diff

## Class ContentSource

- java.lang.Object
- - org.eclipse.jgit.diff.ContentSource

    public abstract class ContentSource
    extends Object

Supplies the content of a file for `DiffFormatter`.

A content source is not thread-safe. Sources may contain state, including information about the last ObjectLoader they returned. Callers must be careful to ensure there is no more than one ObjectLoader pending on any source, at any time.

### Nested Class Summary

Nested Classes
`static class` `ContentSource.Pair` A pair of sources to access the old and new sides of a DiffEntry.

### Constructor Summary

Constructors
Constructor and Description
`ContentSource()`

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`static ContentSource` `create(ObjectReader reader)` Construct a content source for an ObjectReader.
`static ContentSource` `create(WorkingTreeIterator iterator)` Construct a content source for a working directory.
`abstract ObjectLoader` `open(String path, ObjectId id)` Open the object.
`abstract long` `size(String path, ObjectId id)` Determine the size of the object.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ContentSource

    public ContentSource()

### Method Detail

#### create

    public static ContentSource create(ObjectReader reader)

Construct a content source for an ObjectReader.

Parameters:
  `reader` - the reader to obtain blobs from.
Returns:
  a source wrapping the reader.

#### create

    public static ContentSource create(WorkingTreeIterator iterator)

Construct a content source for a working directory. If the iterator is a `FileTreeIterator` an optimized version is used that doesn't require seeking through a TreeWalk.

Parameters:
  `iterator` - the iterator to obtain source files through.
Returns:
  a content source wrapping the iterator.

#### size

    public abstract long size(String path,
                              ObjectId id)
                       throws IOException

Determine the size of the object.

Parameters:
  `path` - the path of the file, relative to the root of the repository.
  `id` - blob id of the file, if known.
Returns:
  the size in bytes.
Throws:
  `IOException` - the file cannot be accessed.

#### open

    public abstract ObjectLoader open(String path,
                                      ObjectId id)
                               throws IOException

Open the object.

Parameters:
  `path` - the path of the file, relative to the root of the repository.
  `id` - blob id of the file, if known.
Returns:
  a loader that can supply the content of the file. The loader must be used before another loader can be obtained from this same source.
Throws:
  `IOException` - the file cannot be accessed.