Class ChangeSetPerformer<I extends ArchiveInputStream<E>,O extends ArchiveOutputStream<E>,E extends ArchiveEntry>

java.lang.Object
org.apache.commons.compress.changes.ChangeSetPerformer<I,O,E>
Type Parameters:
I - The ArchiveInputStream type.
O - The ArchiveOutputStream type.
E - The ArchiveEntry type, must be compatible between the input I and output O stream types.

public class ChangeSetPerformer<I extends ArchiveInputStream<E>,O extends ArchiveOutputStream<E>,E extends ArchiveEntry> extends Object
Performs ChangeSet operations on a stream. This class is thread safe and can be used multiple times. It operates on a copy of the ChangeSet. If the ChangeSet changes, a new Performer must be created.
  • Field Details

  • Constructor Details

    • ChangeSetPerformer

      public ChangeSetPerformer(ChangeSet<E> changeSet)
      Constructs a ChangeSetPerformer with the changes from this ChangeSet
      Parameters:
      changeSet - the ChangeSet which operations are used for performing
  • Method Details

    • copyStream

      private void copyStream(InputStream inputStream, O outputStream, E archiveEntry) throws IOException
      Copies the ArchiveEntry to the Output stream
      Parameters:
      inputStream - the stream to read the data from
      outputStream - the stream to write the data to
      archiveEntry - the entry to write
      Throws:
      IOException - if data cannot be read or written
    • isDeletedLater

      private boolean isDeletedLater(Set<Change<E>> workingSet, E entry)
      Checks if an ArchiveEntry is deleted later in the ChangeSet. This is necessary if a file is added with this ChangeSet, but later became deleted in the same set.
      Parameters:
      entry - the entry to check
      Returns:
      true, if this entry has a deletion change later, false otherwise
    • perform

      private ChangeSetResults perform(ChangeSetPerformer.ArchiveEntryIterator<E> entryIterator, O outputStream) throws IOException
      Performs all changes collected in this ChangeSet on the input entries and streams the result to the output stream. This method finishes the stream, no other entries should be added after that.
      Parameters:
      entryIterator - the entries to perform the changes on
      outputStream - the resulting OutputStream with all modifications
      Returns:
      the results of this operation
      Throws:
      IOException - if a read/write error occurs
    • perform

      public ChangeSetResults perform(I inputStream, O outputStream) throws IOException
      Performs all changes collected in this ChangeSet on the input stream and streams the result to the output stream. Perform may be called more than once. This method finishes the stream, no other entries should be added after that.
      Parameters:
      inputStream - the InputStream to perform the changes on
      outputStream - the resulting OutputStream with all modifications
      Returns:
      the results of this operation
      Throws:
      IOException - if a read/write error occurs
    • perform

      public ChangeSetResults perform(ZipFile zipFile, O outputStream) throws IOException
      Performs all changes collected in this ChangeSet on the ZipFile and streams the result to the output stream. Perform may be called more than once. This method finishes the stream, no other entries should be added after that.
      Parameters:
      zipFile - the ZipFile to perform the changes on
      outputStream - the resulting OutputStream with all modifications
      Returns:
      the results of this operation
      Throws:
      IOException - if a read/write error occurs
      Since:
      1.5