or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

archive-bases.mdassets.mdcontainers.mdimport-export.mdindex.mdspecifications.mdutilities.md
tile.json

tessl/maven-org-jboss-shrinkwrap--shrinkwrap-impl-base

Common base implementations for the ShrinkWrap project enabling declarative assembly of Java archives (JAR, WAR, EAR, RAR) in code

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.jboss.shrinkwrap/shrinkwrap-impl-base@1.2.x

To install, run

npx @tessl/cli install tessl/maven-org-jboss-shrinkwrap--shrinkwrap-impl-base@1.2.0

index.mddocs/

ShrinkWrap Implementation Base

ShrinkWrap Implementation Base provides common base implementations for the ShrinkWrap project, enabling declarative assembly of Java archives (JAR, WAR, EAR, RAR) in code. This library serves as the foundation for creating, manipulating, and exporting various archive formats without requiring build scripts or external tools.

Package Information

  • Package Name: shrinkwrap-impl-base
  • Package Type: maven
  • Language: Java
  • Group ID: org.jboss.shrinkwrap
  • Artifact ID: shrinkwrap-impl-base
  • Version: 1.2.6
  • Installation: Add to Maven POM:
<dependency>
    <groupId>org.jboss.shrinkwrap</groupId>
    <artifactId>shrinkwrap-impl-base</artifactId>
    <version>1.2.6</version>
</dependency>

Core Imports

Primary base classes for archive implementations:

import org.jboss.shrinkwrap.impl.base.MemoryMapArchiveBase;
import org.jboss.shrinkwrap.impl.base.container.ContainerBase;
import org.jboss.shrinkwrap.impl.base.spec.JavaArchiveImpl;
import org.jboss.shrinkwrap.impl.base.spec.WebArchiveImpl;

Exporters and importers:

import org.jboss.shrinkwrap.impl.base.exporter.ZipExporterImpl;
import org.jboss.shrinkwrap.impl.base.exporter.ExplodedExporterImpl;
import org.jboss.shrinkwrap.impl.base.importer.ZipImporterImpl;

Utilities and path handling:

import org.jboss.shrinkwrap.impl.base.path.BasicPath;
import org.jboss.shrinkwrap.impl.base.ServiceExtensionLoader;

Basic Usage

Creating and working with archive implementations:

import org.jboss.shrinkwrap.impl.base.spec.JavaArchiveImpl;
import org.jboss.shrinkwrap.impl.base.path.BasicPath;
import org.jboss.shrinkwrap.api.Archive;

// Create a JAR archive implementation
JavaArchiveImpl archive = new JavaArchiveImpl("myapp.jar");

// Add content using the container base functionality
archive.addClass(MyClass.class);
archive.addAsResource("config.properties");

// Work with archive paths
BasicPath path = new BasicPath("/META-INF/MANIFEST.MF");

// Export to different formats
InputStream zipStream = archive.as(ZipExporter.class).exportAsInputStream();

Architecture

The impl-base module is organized into several key architectural layers:

  • Base Classes: Abstract implementations providing core archive functionality
  • Container Implementations: Concrete archive type implementations (JAR, WAR, EAR, RAR)
  • Import/Export System: Pluggable format support for various archive types
  • Path Management: Archive path abstraction and utilities
  • Extension System: Service loader-based extension mechanism

Capabilities

Archive Base Classes

Foundational abstract classes providing core archive functionality including memory management, content operations, and thread safety.

Key API interfaces:

public abstract class MemoryMapArchiveBase<T extends Archive<T>> implements Archive<T>
public abstract class AssignableBase<T extends Assignable> implements Assignable

Archive Base Classes

Container Implementations

Complete implementations for standard Java archive types with specialized container operations.

Key API interfaces:

public abstract class ContainerBase<T extends Archive<T>> implements Archive<T>
public class JavaArchiveImpl extends ContainerBase<JavaArchive> implements JavaArchive
public class WebArchiveImpl extends WebContainerBase<WebArchive> implements WebArchive

Container Implementations

Archive Specifications

Concrete archive type implementations for JAR, WAR, EAR, and RAR formats with full specification compliance.

Key API interfaces:

public class JavaArchiveImpl implements JavaArchive
public class WebArchiveImpl implements WebArchive
public class EnterpriseArchiveImpl implements EnterpriseArchive

Archive Specifications

Import and Export

Comprehensive support for importing from and exporting to various archive formats including ZIP, TAR, and exploded directories.

Key API interfaces:

public class ZipExporterImpl implements ZipExporter
public class ExplodedExporterImpl implements ExplodedExporter
public class ZipImporterImpl implements ZipImporter

Import and Export

Path and Filter Utilities

Archive path manipulation and content filtering capabilities for selective archive operations.

Key API interfaces:

public class BasicPath implements ArchivePath
public class IncludeRegExpPaths implements Filter<ArchivePath>
public class ExcludePaths implements Filter<ArchivePath>

Path and Filter Utilities

Asset Management

Asset implementations for various content types including service providers and ZIP entries.

Key API interfaces:

public class ServiceProviderAsset implements Asset
public class ZipFileEntryAsset implements Asset

Asset Management

Error Handling

The library defines specific exceptions for common error scenarios:

public class ExtensionLoadingException extends RuntimeException

Common error handling patterns:

  • Extension loading failures throw ExtensionLoadingException
  • Path-related errors use standard IllegalArgumentException
  • Archive operation failures use ShrinkWrap API exceptions