Package org.eclipse.jgit.api

## Class GitCommand<T>

- java.lang.Object
- - org.eclipse.jgit.api.GitCommand<T>

Type Parameters:
  `T` - the return type which is expected from `call()`

All Implemented Interfaces:
  `Callable<T>`

Direct Known Subclasses:
  `AddCommand`, `AddNoteCommand`, `ApplyCommand`, `ArchiveCommand`, `BlameCommand`, `CheckoutCommand`, `CherryPickCommand`, `CleanCommand`, `CommitCommand`, `CreateBranchCommand`, `DeleteBranchCommand`, `DeleteTagCommand`, `DescribeCommand`, `DiffCommand`, `GarbageCollectCommand`, `ListBranchCommand`, `ListNotesCommand`, `ListTagCommand`, `LogCommand`, `MergeCommand`, `NameRevCommand`, `RebaseCommand`, `ReflogCommand`, `RemoveNoteCommand`, `RenameBranchCommand`, `RepoCommand`, `ResetCommand`, `RevertCommand`, `RmCommand`, `ShowNoteCommand`, `StashApplyCommand`, `StashCreateCommand`, `StashDropCommand`, `StashListCommand`, `StatusCommand`, `SubmoduleInitCommand`, `SubmoduleStatusCommand`, `SubmoduleSyncCommand`, `TagCommand`, `TransportCommand`

    public abstract class GitCommand<T>
    extends Object
    implements Callable<T>

Common superclass of all commands in the package `org.eclipse.jgit.api`

This class ensures that all commands fulfill the `Callable` interface. It also has a property `repo` holding a reference to the git `Repository` this command should work with.

Finally this class stores a state telling whether it is allowed to call `call()` on this instance. Instances of `GitCommand` can only be used for one single successful call to `call()`. Afterwards this instance may not be used anymore to set/modify any properties or to call `call()` again. This is achieved by setting the `callable` property to false after the successful execution of `call()` and to check the state (by calling `checkCallable()`) before setting of properties and inside `call()`.

### Field Summary

Fields
`protected Repository` `repo` The repository this command is working with

### Constructor Summary

Constructors
`protected` `GitCommand​(Repository repo)` Creates a new command which interacts with a single repository

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract T` `call()` Executes the command
`protected void` `checkCallable()` Checks that the property `callable` is `true`.
`Repository` `getRepository()`
`protected void` `setCallable​(boolean callable)` Set's the state which tells whether it is allowed to call `call()` on this instance.

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

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

### Field Detail

#### repo

    protected final Repository repo

The repository this command is working with

### Constructor Detail

#### GitCommand

    protected GitCommand​(Repository repo)

Creates a new command which interacts with a single repository

Parameters:
  `repo` - the `Repository` this command should interact with

### Method Detail

#### getRepository

    public Repository getRepository()

Returns:
  the `Repository` this command is interacting with

#### setCallable

    protected void setCallable​(boolean callable)

Set's the state which tells whether it is allowed to call `call()` on this instance. `checkCallable()` will throw an exception when called and this property is set to `false`

Parameters:
  `callable` - if `true` it is allowed to call `call()` on this instance.

#### checkCallable

    protected void checkCallable()

Checks that the property `callable` is `true`. If not then an `IllegalStateException` is thrown

Throws:
  `IllegalStateException` - when this method is called and the property `callable` is `false`

#### call

    public abstract T call()
                    throws GitAPIException

Executes the command

Specified by:
  `call` in interface `Callable<T>`
Returns:
  T a result. Each command has its own return type
Throws:
  `GitAPIException` - or subclass thereof when an error occurs