Add hashes

This commit is contained in:
Andreas Dinauer 2026-04-25 13:17:10 +02:00
parent 818011fc28
commit 40919f532f
4 changed files with 66 additions and 10 deletions

View File

@ -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,6 +74,8 @@ public class MavenService
if (context.getClass() == VersionContext.class)
{
VersionContext versionContext = (VersionContext) context;
if (List.of(FileExt.JAR, FileExt.POM).contains(context.extensions().ext()))
{
if (versionContext.isSnapshot())
{
return snapshotService.serve(toSnapshotContext(versionContext));
@ -79,6 +85,15 @@ public class MavenService
return releaseService.serve(toReleaseContext(versionContext));
}
}
if (Objects.equals(FileExt.XML, context.extensions().ext()))
{
return Response.status(204).build();
}
}
if (context.getClass() == ArtifactContext.class)
{
return Response.status(204).build();
}
throw new BadRequestException();
}

View File

@ -46,13 +46,27 @@ public class ReleaseService
switch (releaseContext.extensions().ext())
{
case JAR ->
{
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 ->
{
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();
}

View File

@ -39,13 +39,27 @@ public class SnapshotService
switch (snapshotContext.extensions().ext())
{
case JAR ->
{
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 ->
{
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();
}

View File

@ -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);
}