A Java library for working with XAR archives. It supports both reading and creation of archives, with optional signing and time stamping.
- Java 8 or higher
- Jakarta XML Binding 3.0 implementation
The first step is to add a dependency on com.github.gino0631:xar-core
to your project, for example, if using Maven:
<dependency>
<groupId>com.github.gino0631</groupId>
<artifactId>xar-core</artifactId>
<version>...</version>
</dependency>
If your target environment does not provide Jakarta XML Binding 3.0 implementation, add an implementation of your choice as a dependency:
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>...</version>
</dependency>
Interfaces for public use are contained in com.github.gino0631.xar
and its subpackages, except for impl
and spi
.
To read an archive, load it using XarArchive.load()
:
try (XarArchive xar = XarArchive.load(...) {
XarArchive.Header header = xar.getHeader();
...
List<XarArchive.Entry> entries = xar.getEntries();
...
}
To create an archive, use XarBuilder
:
try (XarBuilder xarBuilder = XarBuilder.getInstance()) {
XarBuilder.Container root = xarBuilder.getRoot();
XarBuilder.File file = root.addFile("file.txt", EncodingAlgorithm.ZLIB, Files.newInputStream(...));
XarBuilder.Directory dir = root.addDirectory("dir");
dir.addFile(...);
...
try (XarArchive xar = xarBuilder.build()) {
xar.writeTo(...);
}
}
If signing is required, set private key, certificates, and provider (if required) before building:
xarBuilder.setSigning(privateKey, certificates, provider);
or, to sign and then to time stamp the signature:
xarBuilder.setSigning(privateKey, certificates, provider, tsa);