Packages

c

sbt.internal.inc

IndexBasedZipOps

abstract class IndexBasedZipOps extends CreateZip

Provides efficient implementation of operations on zip files * that are used for implementation of the Straight to Jar feature.

The implementation is based on index (aka central directory) that is located at the end of the zip file and contains among others the name/path and offset where the actual data of stored file is located. Reading zips should always be done based on that index, which means that it is often enough to manipulate this index without rewriting the other part of the file. This class heavily relies on this fact.

This class abstracts over the actual operations on index i.e. reading, manipulating and storing it making it easy to replace.

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. IndexBasedZipOps
  2. CreateZip
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new IndexBasedZipOps()

Type Members

  1. final class CachedStamps extends AnyRef

    Reads timestamps of zip entries.

    Reads timestamps of zip entries. On the first access to a given zip it reads the timestamps once and keeps them cached for future lookups.

    It only supports reading stamps from a single zip. The zip passed as an argument is only used to initialize the cache and is later ignored. This is enough as stamps are only read from the output jar.

  2. abstract type CentralDir

    Represents the central directory (index) of a zip file.

    Represents the central directory (index) of a zip file. It must contain the start offset (where it is located in the zip file) and list of headers

  3. abstract type Header

    Represents a header of a zip entry located inside the central directory.

    Represents a header of a zip entry located inside the central directory. It has to contain the timestamp, name/path and offset to the actual data in zip file.

Abstract Value Members

  1. abstract def getCentralDirStart(centralDir: CentralDir): Long
    Attributes
    protected
  2. abstract def getFileName(header: Header): String
    Attributes
    protected
  3. abstract def getFileOffset(header: Header): Long
    Attributes
    protected
  4. abstract def getHeaders(centralDir: CentralDir): Seq[Header]
    Attributes
    protected
  5. abstract def getLastModifiedTime(header: Header): Long
    Attributes
    protected
  6. abstract def readCentralDir(path: Path): CentralDir
    Attributes
    protected
  7. abstract def setCentralDirStart(centralDir: CentralDir, centralDirStart: Long): Unit
    Attributes
    protected
  8. abstract def setFileOffset(header: Header, offset: Long): Unit
    Attributes
    protected
  9. abstract def setHeaders(centralDir: CentralDir, headers: Seq[Header]): Unit
    Attributes
    protected
  10. abstract def writeCentralDir(centralDir: CentralDir, outputStream: OutputStream): Unit
    Attributes
    protected

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  6. def createZip(target: File, files: Seq[(File, String)]): Unit
    Definition Classes
    CreateZip
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  11. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. def includeInArchive(zipFile: File, files: Seq[(File, String)]): Unit

    Adds files (plain files) to the specified zip file.

    Adds files (plain files) to the specified zip file. Implemented by creating a new zip with the plain files. If zipFile already exists, the archives will be merged. Plain files are not removed after this operation.

    zipFile

    A zip file to add files to

    files

    a sequence of tuples with actual file to include and the path in the zip where it should be put.

  13. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  14. def listEntries(zipFile: File): Seq[String]
  15. def mergeArchives(target: Path, source: Path): Unit
  16. def mergeArchives(into: File, from: File): Unit

    Merges two zip files.

    Merges two zip files. It works by appending contents of from to into. Indices are combined, in case of duplicates, the final entries that are used are from from. The final merged zip is available under into path, and from is deleted.

    into

    the target zip file to merge to

    from

    the source zip file that is added/merged to into

  17. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  18. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  19. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  20. def readCentralDir(zipFile: File): CentralDir

    Reads the current index from given zip file

    Reads the current index from given zip file

    zipFile

    path to the zip file

    returns

    current index

  21. def removeEntries(zipFile: File, entries: Iterable[String]): Unit

    Removes specified entries from given zip file by replacing current index with a version without those entries.

    Removes specified entries from given zip file by replacing current index with a version without those entries.

    zipFile

    the zip file to remove entries from

    entries

    paths to files inside the jar e.g. sbt/internal/inc/IndexBasedZipOps.class

  22. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  23. def toString(): String
    Definition Classes
    AnyRef → Any
  24. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  25. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  27. def writeCentralDir(zipFile: File, centralDir: CentralDir): Unit

    Replaces index inside the zip file.

    Replaces index inside the zip file.

    zipFile

    the zip file that should have the index updated

    centralDir

    the index to be stored in the file

Inherited from CreateZip

Inherited from AnyRef

Inherited from Any

Ungrouped