diff --git a/src/main/java/dev/dinauer/maven/maven/core/MavenService.java b/src/main/java/dev/dinauer/maven/maven/core/MavenService.java index f4680f9..121ea20 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/MavenService.java +++ b/src/main/java/dev/dinauer/maven/maven/core/MavenService.java @@ -23,6 +23,8 @@ import jakarta.ws.rs.BadRequestException; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import org.apache.commons.lang3.NotImplementedException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.List; import java.util.Objects; @@ -30,6 +32,8 @@ import java.util.Objects; @ApplicationScoped public class MavenService { + private static final Logger LOG = LoggerFactory.getLogger(MavenService.class); + @Inject ReleaseService releaseService; @@ -55,12 +59,12 @@ public class MavenService } if (Objects.equals(FileExt.XML, context.extensions().ext())) { - throw new NotImplementedException(); // Hand over to XML metadata service + LOG.debug("Ignoring metadata upload for {}. Metadata files are generated by the registry.", path); } } if (context.getClass() == ArtifactContext.class) { - throw new NotImplementedException(); // Hand over to XML Snapshot artifact metadata service + LOG.debug("Ignoring metadata upload for {}. Metadata files are generated by the registry.", path); } } @@ -70,15 +74,26 @@ public class MavenService if (context.getClass() == VersionContext.class) { VersionContext versionContext = (VersionContext) context; - if (versionContext.isSnapshot()) + if (List.of(FileExt.JAR, FileExt.POM).contains(context.extensions().ext())) { - return snapshotService.serve(toSnapshotContext(versionContext)); + if (versionContext.isSnapshot()) + { + return snapshotService.serve(toSnapshotContext(versionContext)); + } + else + { + return releaseService.serve(toReleaseContext(versionContext)); + } } - else + if (Objects.equals(FileExt.XML, context.extensions().ext())) { - return releaseService.serve(toReleaseContext(versionContext)); + return Response.status(204).build(); } } + if (context.getClass() == ArtifactContext.class) + { + return Response.status(204).build(); + } throw new BadRequestException(); } diff --git a/src/main/java/dev/dinauer/maven/maven/core/release/ReleaseService.java b/src/main/java/dev/dinauer/maven/maven/core/release/ReleaseService.java index 4af0cc6..920265b 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/release/ReleaseService.java +++ b/src/main/java/dev/dinauer/maven/maven/core/release/ReleaseService.java @@ -47,11 +47,25 @@ public class ReleaseService { case JAR -> { - return Response.status(200).type(MediaType.APPLICATION_OCTET_STREAM).entity(releaseJarService.find(releaseContext)).build(); + if (releaseContext.extensions().hashExt().isEmpty()) + { + return Response.status(200).type(MediaType.APPLICATION_OCTET_STREAM).entity(releaseJarService.find(releaseContext)).build(); + } + else + { + return Response.status(200).type(MediaType.TEXT_PLAIN).entity(releaseJarService.findHash(releaseContext)).build(); + } } case POM -> { - return Response.status(200).type(MediaType.APPLICATION_XML).entity(releasePomService.find(releaseContext)).build(); + if (releaseContext.extensions().hashExt().isEmpty()) + { + return Response.status(200).type(MediaType.APPLICATION_XML).entity(releasePomService.find(releaseContext)).build(); + } + else + { + return Response.status(200).type(MediaType.TEXT_PLAIN).entity(releasePomService.findHash(releaseContext)).build(); + } } } throw new BadRequestException(); diff --git a/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotService.java b/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotService.java index 99c477f..c1937dc 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotService.java +++ b/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotService.java @@ -40,11 +40,25 @@ public class SnapshotService { case JAR -> { - return Response.status(200).type(MediaType.APPLICATION_OCTET_STREAM).entity(snapshotJarService.find(snapshotContext)).build(); + if (snapshotContext.extensions().hashExt().isEmpty()) + { + return Response.status(200).type(MediaType.APPLICATION_OCTET_STREAM).entity(snapshotJarService.find(snapshotContext)).build(); + } + else + { + return Response.status(200).type(MediaType.TEXT_PLAIN).entity(snapshotJarService.findHash(snapshotContext)).build(); + } } case POM -> { - return Response.status(200).type(MediaType.APPLICATION_XML).entity(snapshotPomService.find(snapshotContext)).build(); + if (snapshotContext.extensions().hashExt().isEmpty()) + { + return Response.status(200).type(MediaType.APPLICATION_XML).entity(snapshotPomService.find(snapshotContext)).build(); + } + else + { + return Response.status(200).type(MediaType.TEXT_PLAIN).entity(snapshotPomService.findHash(snapshotContext)).build(); + } } } throw new BadRequestException(); diff --git a/src/test/java/dev/dinauer/maven/maven/core/ResourceTest.java b/src/test/java/dev/dinauer/maven/maven/core/ResourceTest.java index 8f9d198..0ede5bf 100644 --- a/src/test/java/dev/dinauer/maven/maven/core/ResourceTest.java +++ b/src/test/java/dev/dinauer/maven/maven/core/ResourceTest.java @@ -8,6 +8,7 @@ import org.flywaydb.core.Flyway; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.platform.commons.util.StringUtils; import java.io.IOException; import java.io.InputStream; @@ -39,6 +40,12 @@ public class ResourceTest String pom = RestAssured.given().get("/maven2/org/postgresql/postgresql/42.7.9-SNAPSHOT/postgresql-42.7.9-20250419.123456-1.pom").body().asString(); byte[] jar = RestAssured.given().get("/maven2/org/postgresql/postgresql/42.7.9-SNAPSHOT/postgresql-42.7.9-20250419.123456-1.jar").body().asByteArray(); + String jarMd5 = RestAssured.given().get("/maven2/org/postgresql/postgresql/42.7.9-SNAPSHOT/postgresql-42.7.9-20250419.123456-1.jar.md5").body().asString(); + String pomMd5 = RestAssured.given().get("/maven2/org/postgresql/postgresql/42.7.9-SNAPSHOT/postgresql-42.7.9-20250419.123456-1.pom.md5").body().asString(); + + Assertions.assertFalse(StringUtils.isBlank(jarMd5)); + Assertions.assertFalse(StringUtils.isBlank(pomMd5)); + Assertions.assertArrayEquals(uploadJar, jar); Assertions.assertEquals(uploadPom, pom); } @@ -56,6 +63,12 @@ public class ResourceTest String pom = RestAssured.given().get("/maven2/org/postgresql/postgresql/42.7.9/postgresql-42.7.9.pom").body().asString(); byte[] jar = RestAssured.given().get("/maven2/org/postgresql/postgresql/42.7.9/postgresql-42.7.9.jar").body().asByteArray(); + String jarMd5 = RestAssured.given().get("/maven2/org/postgresql/postgresql/42.7.9/postgresql-42.7.9.jar.md5").body().asString(); + String pomMd5 = RestAssured.given().get("/maven2/org/postgresql/postgresql/42.7.9/postgresql-42.7.9.pom.md5").body().asString(); + + Assertions.assertFalse(StringUtils.isBlank(jarMd5)); + Assertions.assertFalse(StringUtils.isBlank(pomMd5)); + Assertions.assertArrayEquals(uploadJar, jar); Assertions.assertEquals(uploadPom, pom); }