✨ Hashes for metadata
This commit is contained in:
parent
b25c5500b9
commit
591b0e0b18
@ -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"));
|
||||
|
||||
@ -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<GroupId> 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())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -92,7 +92,7 @@ public class ArtifactId
|
||||
|
||||
public List<Version> 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<ReleaseVersion> releaseVersions)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -26,11 +26,11 @@ public class SnapshotBundle
|
||||
@JsonBackReference
|
||||
private SnapshotVersion snapshotVersion;
|
||||
|
||||
@OneToMany(mappedBy = "snapshotBundle")
|
||||
@OneToMany(mappedBy = "snapshotBundle", cascade = CascadeType.REMOVE)
|
||||
@JsonManagedReference
|
||||
private List<SnapshotJar> jars;
|
||||
|
||||
@OneToOne(mappedBy = "snapshotBundle")
|
||||
@OneToOne(mappedBy = "snapshotBundle", cascade = CascadeType.REMOVE)
|
||||
@JsonManagedReference
|
||||
private SnapshotPom pom;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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<SnapshotBundle> snapshotBundles;
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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
|
||||
quarkus.rest-client.idp.url=https://auth.dinauer.dev/api/realms/dev
|
||||
Loading…
x
Reference in New Issue
Block a user