diff --git a/src/main/java/dev/dinauer/maven/Dev.java b/src/main/java/dev/dinauer/maven/Dev.java index 590ffc5..d9bbcfb 100644 --- a/src/main/java/dev/dinauer/maven/Dev.java +++ b/src/main/java/dev/dinauer/maven/Dev.java @@ -55,10 +55,26 @@ public class Dev tokenRepo.persist(entity); QuarkusTransaction.commit(); + uploadRelease_01(); + uploadRelease_02(); uploadSnapshot_01(); uploadSnapshot_02(); } + private void uploadRelease_01() throws IOException + { + mavenService.upload("/org/postgresql/postgresql/42.7.8/postgresql-42.7.8.pom", readFile("/jar/postgresql-42.7.9.pom")); + mavenService.upload("/org/postgresql/postgresql/42.7.8/postgresql-42.7.8.jar", readFile("/jar/postgresql-42.7.9.jar")); + mavenService.upload("/org/postgresql/postgresql/42.7.8/postgresql-42.7.8-tests.jar", readFile("/jar/postgresql-42.7.9.jar")); + mavenService.upload("/org/postgresql/postgresql/42.7.8/postgresql-42.7.8-javadocs.jar", readFile("/jar/postgresql-42.7.9.jar")); + } + + private void uploadRelease_02() throws IOException + { + mavenService.upload("/org/postgresql/postgresql/42.7.9/postgresql-42.7.9.jar", readFile("/jar/postgresql-42.7.9.jar")); + mavenService.upload("/org/postgresql/postgresql/42.7.9/postgresql-42.7.9.pom", readFile("/jar/postgresql-42.7.9.pom")); + } + private void uploadSnapshot_01() throws IOException { mavenService.upload("/org/postgresql/postgresql/42.7.9-SNAPSHOT/postgresql-42.7.9-20250419.123456-1.jar", readFile("/jar/postgresql-42.7.9.jar")); diff --git a/src/main/java/dev/dinauer/maven/app/GroupResource.java b/src/main/java/dev/dinauer/maven/app/GroupResource.java index 1c7d6c6..ed15591 100644 --- a/src/main/java/dev/dinauer/maven/app/GroupResource.java +++ b/src/main/java/dev/dinauer/maven/app/GroupResource.java @@ -1,5 +1,9 @@ package dev.dinauer.maven.app; +import dev.dinauer.maven.event.Event; +import dev.dinauer.maven.event.EventType; +import dev.dinauer.maven.event.Resource; +import dev.dinauer.maven.event.repo.EventRepo; import dev.dinauer.maven.maven.core.GroupRepo; import dev.dinauer.maven.maven.core.GroupId; import jakarta.inject.Inject; @@ -9,6 +13,7 @@ import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.PathParam; +import java.time.ZonedDateTime; import java.util.List; @Path("/groups") @@ -16,6 +21,8 @@ public class GroupResource { @Inject GroupRepo groupRepo; + @Inject + EventRepo eventRepo; @GET public List get() @@ -35,6 +42,11 @@ public class GroupResource @Transactional public void delete(@PathParam("id") String id) { - groupRepo.deleteById(id); + GroupId groupId = groupRepo.findById(id); + if (groupId != null) + { + groupRepo.delete(groupId); + eventRepo.persist(new Event().setType(EventType.DELETE).setTimestamp(ZonedDateTime.now()).setResource(new Resource().setGroupId(groupId.getGroupId()))); + } } } diff --git a/src/main/java/dev/dinauer/maven/maven/core/ArtifactId.java b/src/main/java/dev/dinauer/maven/maven/core/ArtifactId.java index f208d9b..783c4a9 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/ArtifactId.java +++ b/src/main/java/dev/dinauer/maven/maven/core/ArtifactId.java @@ -92,7 +92,7 @@ public class ArtifactId public List getVersions() { - return Stream.concat(snapshotVersions.stream(), releaseVersions.stream()).toList(); + return Stream.concat(snapshotVersions.stream(), releaseVersions.stream()).sorted(Comparator.comparing(item -> new DefaultArtifactVersion(item.getVersion()))).toList().reversed(); } public ArtifactId setVersions(List releaseVersions) 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 359ddbd..d2255cd 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/MavenService.java +++ b/src/main/java/dev/dinauer/maven/maven/core/MavenService.java @@ -84,7 +84,14 @@ public class MavenService } if (Objects.equals(FileExt.XML, context.extensions().ext())) { - return Response.status(200).type(MediaType.APPLICATION_XML).entity(snapshotMetadataService.generate(versionContext)).build(); + if (context.extensions().hashExt().isEmpty()) + { + return Response.status(200).type(MediaType.APPLICATION_XML).entity(snapshotMetadataService.generate(versionContext)).build(); + } + else + { + return Response.status(200).type(MediaType.TEXT_PLAIN).entity(snapshotMetadataService.generateHash(versionContext)).build(); + } } } if (context.getClass() == ArtifactContext.class) diff --git a/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotBundle.java b/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotBundle.java index f102cd8..4178f27 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotBundle.java +++ b/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotBundle.java @@ -26,11 +26,11 @@ public class SnapshotBundle @JsonBackReference private SnapshotVersion snapshotVersion; - @OneToMany(mappedBy = "snapshotBundle") + @OneToMany(mappedBy = "snapshotBundle", cascade = CascadeType.REMOVE) @JsonManagedReference private List jars; - @OneToOne(mappedBy = "snapshotBundle") + @OneToOne(mappedBy = "snapshotBundle", cascade = CascadeType.REMOVE) @JsonManagedReference private SnapshotPom pom; diff --git a/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotJar.java b/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotJar.java index f85924d..650fd37 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotJar.java +++ b/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotJar.java @@ -1,6 +1,7 @@ package dev.dinauer.maven.maven.core.snapshot; import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; @Entity @@ -16,6 +17,8 @@ public class SnapshotJar private String sha1; @Column(columnDefinition = "bytea") + @JsonIgnore + @Basic(fetch = FetchType.LAZY) private byte[] jar; private String classifier; diff --git a/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotVersion.java b/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotVersion.java index ce3e136..8fcdb85 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotVersion.java +++ b/src/main/java/dev/dinauer/maven/maven/core/snapshot/SnapshotVersion.java @@ -23,7 +23,7 @@ public class SnapshotVersion implements Version @JsonBackReference private ArtifactId artifact; - @OneToMany(mappedBy = "snapshotVersion") + @OneToMany(mappedBy = "snapshotVersion", cascade = CascadeType.REMOVE) @JsonManagedReference private List snapshotBundles; diff --git a/src/main/java/dev/dinauer/maven/maven/core/snapshot/metadata/SnapshotMetadataService.java b/src/main/java/dev/dinauer/maven/maven/core/snapshot/metadata/SnapshotMetadataService.java index 1a69cb5..e8f83b5 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/snapshot/metadata/SnapshotMetadataService.java +++ b/src/main/java/dev/dinauer/maven/maven/core/snapshot/metadata/SnapshotMetadataService.java @@ -14,6 +14,7 @@ import dev.dinauer.maven.metadata.Metadata; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.ws.rs.InternalServerErrorException; +import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.Strings; import java.util.List; @@ -39,6 +40,22 @@ public class SnapshotMetadataService } } + public String generateHash(VersionContext versionContext) + { + switch (versionContext.extensions().hashExt().orElseThrow()) + { + case MD5 -> + { + return DigestUtils.md5Hex(generate(versionContext)); + } + case SHA256 -> + { + return DigestUtils.sha256Hex(generate(versionContext)); + } + } + throw new IllegalArgumentException(); + } + private SnapshotMetadata generateMetadata(VersionContext versionContext) { SnapshotBundle latest = snapshotBundleRepo.latest(versionContext); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 77034a3..6a99a62 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,4 +1,5 @@ # HTTP +quarkus.http.host=0.0.0.0 %dev.quarkus.http.cors.enabled=true %dev.quarkus.http.port=8081 %dev.quarkus.http.cors.origins=/.*/ @@ -24,11 +25,10 @@ quarkus.datasource.db-kind=postgresql quarkus.flyway.migrate-at-start=true # OIDC Server -quarkus.oidc.auth-server-url=http://localhost:8089/api/realms/maven -quarkus.oidc.client-id=backend -quarkus.oidc-client.auth-server-url=http://localhost:8089/api/realms/maven -quarkus.oidc-client.client-id=backend -quarkus.oidc-client.credentials.secret=backend +quarkus.oidc.auth-server-url=https://auth.dinauer.dev/api/realms/dev +quarkus.oidc.client-id=dev +quarkus.oidc-client.auth-server-url=https://auth.dinauer.dev/api/realms/dev +quarkus.oidc-client.client-id=dev # OIDC REST -quarkus.rest-client.idp.url=http://localhost:8089/api/realms/maven \ No newline at end of file +quarkus.rest-client.idp.url=https://auth.dinauer.dev/api/realms/dev \ No newline at end of file