Class ReceiveCommand


  • public class ReceiveCommand
    extends Object
    A command being processed by BaseReceivePack.

    This command instance roughly translates to the server side representation of the RemoteRefUpdate created by the client.

    • Constructor Detail

      • ReceiveCommand

        public ReceiveCommand​(ObjectId oldId,
                              ObjectId newId,
                              String name)
        Create a new command for BaseReceivePack.
        Parameters:
        oldId - the old object id; must not be null. Use ObjectId.zeroId() to indicate a ref creation.
        newId - the new object id; must not be null. Use ObjectId.zeroId() to indicate a ref deletion.
        name - name of the ref being affected.
    • Method Detail

      • filter

        public static List<ReceiveCommand> filter​(List<ReceiveCommand> commands,
                                                  ReceiveCommand.Result want)
        Filter a list of commands according to result.
        Parameters:
        commands - commands to filter.
        want - desired status to filter by.
        Returns:
        a copy of the command list containing only those commands with the desired status.
        Since:
        2.0
      • getOldId

        public ObjectId getOldId()
        Returns:
        the old value the client thinks the ref has.
      • getNewId

        public ObjectId getNewId()
        Returns:
        the requested new value for this ref.
      • getRefName

        public String getRefName()
        Returns:
        the name of the ref being updated.
      • getRef

        public Ref getRef()
        Returns:
        the ref, if this was advertised by the connection.
      • getMessage

        public String getMessage()
        Returns:
        the message associated with a failure status.
      • setResult

        public void setResult​(ReceiveCommand.Result s)
        Set the status of this command.
        Parameters:
        s - the new status code for this command.
      • setResult

        public void setResult​(ReceiveCommand.Result s,
                              String m)
        Set the status of this command.
        Parameters:
        s - new status code for this command.
        m - optional message explaining the new status.
      • updateType

        public void updateType​(RevWalk walk)
                        throws IOException
        Update the type of this command by checking for fast-forward.

        If the command's current type is UPDATE, a merge test will be performed using the supplied RevWalk to determine if getOldId() is fully merged into getNewId(). If some commits are not merged the update type is changed to ReceiveCommand.Type.UPDATE_NONFASTFORWARD.

        Parameters:
        walk - an instance to perform the merge test with. The caller must allocate and release this object.
        Throws:
        IOException - either oldId or newId is not accessible in the repository used by the RevWalk. This usually indicates data corruption, and the command cannot be processed.
      • execute

        public void execute​(BaseReceivePack rp)
        Execute this command during a receive-pack session.

        Sets the status of the command as a side effect.

        Parameters:
        rp - receive-pack session.
        Since:
        2.0
      • setResult

        public void setResult​(RefUpdate.Result r)
        Set the result of this command.
        Parameters:
        r - the new result code for this command.