Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,6 @@ jobs:
[
{"jdk": "17.0.2", "os": "windows-latest", distribution: "zulu" }
]
matrix-exclude: >
[
{"jdk": "8"}
]

# deploy:
# name: Deploy
Expand Down
107 changes: 106 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@
</distributionManagement>

<properties>
<javaVersion>17</javaVersion>
<slf4jVersion>2.0.20</slf4jVersion>
<version.sisu>1.1.0</version.sisu>
<project.build.outputTimestamp>2026-06-08T20:12:28Z</project.build.outputTimestamp>
Expand Down Expand Up @@ -210,4 +209,110 @@
</plugins>
</build>

<profiles>
<profile>
<id>java17</id>
<activation>
<jdk>[17,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>java17-main</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<release>17</release>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java17</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<!-- maven-compiler-plugin:testCompile always uses target/classes, where javac cannot resolve
META-INF/versions/17. Compile these tests against the packaged multi-release JAR instead. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>compile-java17-integration-tests</id>
<goals>
<goal>run</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
<target>
<delete dir="${project.build.directory}/it-classes" />
<mkdir dir="${project.build.directory}/it-classes" />
<javac debug="true" destdir="${project.build.directory}/it-classes" encoding="${project.build.sourceEncoding}" includeantruntime="false" release="17" srcdir="${project.basedir}/src/it/java17">
<classpath>
<pathelement location="${project.build.directory}/${project.build.finalName}.jar" />
<path refid="maven.test.classpath" />
</classpath>
</javac>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<classesDirectory>${project.build.directory}/${project.build.finalName}.jar</classesDirectory>
<testClassesDirectory>${project.build.directory}/it-classes</testClassesDirectory>
<failIfNoTests>true</failIfNoTests>
<includes>
<include>**/*IT.class</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>plexus-release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>enforce-java-17-for-release</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>[17,)</version>
<message>To release this MultiRelease jar, use at least Java 17</message>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -19,49 +19,36 @@

import java.nio.file.Path;

import org.codehaus.plexus.archivers.config.ResourceScan;
import org.codehaus.plexus.archiver.zip.PlexusArchiverZipFileResourceCollection;
import org.codehaus.plexus.archiver.zip.ZipArchiver;
import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
import org.codehaus.plexus.components.io.resources.AbstractPlexusIoArchiveResourceCollection;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

import static org.assertj.core.api.Assertions.assertThat;

class CdiFactoryTest {
class CdiFactoryIT {

@Test
void createsConfiguredArchivers(@TempDir Path directory) {
CdiArchiverFactory factory = new CdiArchiverFactory(ZipArchiver::new);

var first = factory.create(configurer -> configurer.setDestFile(directory.resolve("first.zip")));
var second = factory.create(configurer -> configurer.setDestFile(directory.resolve("second.zip")));
var first = factory.create(directory.resolve("first.zip"), configurer -> {});
var second = factory.create(directory.resolve("second.zip"), configurer -> {});

assertThat(first).isNotSameAs(second);
assertThat(first.getDestFile()).isEqualTo(directory.resolve("first.zip").toFile());
assertThat(second.getDestFile())
.isEqualTo(directory.resolve("second.zip").toFile());
assertThat(second.getDestFile()).isEqualTo(directory.resolve("second.zip").toFile());
}

@Test
void createsConfiguredUnarchivers(@TempDir Path directory) {
CdiUnArchiverFactory factory = new CdiUnArchiverFactory(ZipUnArchiver::new);

var unarchiver = factory.create(configurer -> configurer.setSource(directory.resolve("source.zip")));
var unarchiver = factory.create(directory.resolve("source.zip"), c -> {});

assertThat(unarchiver.getSourceFile())
.isEqualTo(directory.resolve("source.zip").toFile());
}

@Test
void createsConfiguredResourceCollections(@TempDir Path directory) {
CdiPlexusIoResourceCollectionFactory factory =
new CdiPlexusIoResourceCollectionFactory(PlexusArchiverZipFileResourceCollection::new);

var collection = (AbstractPlexusIoArchiveResourceCollection)
factory.create(configurer -> configurer.setSource(directory.resolve("source.zip")));

assertThat(collection.getFile())
.isEqualTo(directory.resolve("source.zip").toFile());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
package org.codehaus.plexus.archiver.manager;

import java.io.File;
import java.nio.file.Path;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.util.zip.ZipEntry;
Expand All @@ -50,6 +51,7 @@
import org.codehaus.plexus.archiver.UnArchiver;
import org.codehaus.plexus.archiver.util.DefaultArchivedFileSet;
import org.codehaus.plexus.archiver.util.DefaultFileSet;
import org.codehaus.plexus.archivers.config.ResourceScan;
import org.codehaus.plexus.components.io.resources.AbstractPlexusIoArchiveResourceCollection;
import org.codehaus.plexus.components.io.resources.PlexusIoResourceCollection;
import org.junit.jupiter.api.Test;
Expand All @@ -68,7 +70,7 @@
*This is a copy of ArchiverManager, but without the {@code extends TestSupport} and always using
* {@code SpiArchiverManager} as the ArchiverManager
*/
class ServiceLoaderArchiverManagerTest {
class ServiceLoaderArchiverManagerIT {

// list of items which support Archiver and UnArchiver
private static Stream<String> getArchiversAndUnArchiverForTests() {
Expand Down Expand Up @@ -205,30 +207,22 @@ void lookupResourceCollection(String resourceName) throws Exception {
}

@Test
void configuredLookups(@TempDir File tempDirectory) throws Exception {
void configuredLookups(@TempDir Path tempDirectory) throws Exception {
ArchiverManager manager = new ServiceLoaderArchiverManager();
File archiveFile = new File(tempDirectory, "archive.zip");
File outputDirectory = new File(tempDirectory, "output");
Path archiveFile = tempDirectory.resolve("archive.zip");
Path outputDirectory = tempDirectory.resolve("output");

ArchiverFactory archiverFactory = manager.getArchiverFactory("zip");
Archiver archiver = archiverFactory.create(configurer -> configurer.setDestFile(archiveFile.toPath()));
Archiver secondArchiver = archiverFactory.create(configurer -> {});
UnArchiver unarchiver = manager.getUnArchiverFactory(archiveFile).create(configurer -> {
configurer.setSource(archiveFile.toPath());
configurer.setDestinationDirectory(outputDirectory.toPath());
Archiver archiver = archiverFactory.create(archiveFile, configurer -> {});
Archiver secondArchiver = archiverFactory.create(archiveFile, configurer -> {});
UnArchiver unarchiver = manager.createUnArchiver(archiveFile, configurer -> {
configurer.setDestinationDirectory(outputDirectory);
});
AbstractPlexusIoArchiveResourceCollection resourceCollection = (AbstractPlexusIoArchiveResourceCollection)
manager.getResourceCollectionFactory(archiveFile).create(configurer -> {
configurer.setSource(archiveFile.toPath());
configurer.setPrefix("content/");
});

assertThat(archiver.getDestFile()).isEqualTo(archiveFile);
assertThat(archiver.getDestFile()).isEqualTo(archiveFile.toFile());
assertThat(secondArchiver).isNotSameAs(archiver);
assertThat(unarchiver.getSourceFile()).isEqualTo(archiveFile);
assertThat(unarchiver.getDestDirectory()).isEqualTo(outputDirectory);
assertThat(resourceCollection.getFile()).isEqualTo(archiveFile);
assertThat(resourceCollection.getPrefix()).isEqualTo("content/");
assertThat(unarchiver.getSourceFile()).isEqualTo(archiveFile.toFile());
assertThat(unarchiver.getDestDirectory()).isEqualTo(outputDirectory.toFile());
}

@Test
Expand Down
Loading
Loading