✨ Hashes for metadata
This commit is contained in:
parent
b25c5500b9
commit
591b0e0b18
@ -55,10 +55,26 @@ public class Dev
|
|||||||
tokenRepo.persist(entity);
|
tokenRepo.persist(entity);
|
||||||
QuarkusTransaction.commit();
|
QuarkusTransaction.commit();
|
||||||
|
|
||||||
|
uploadRelease_01();
|
||||||
|
uploadRelease_02();
|
||||||
uploadSnapshot_01();
|
uploadSnapshot_01();
|
||||||
uploadSnapshot_02();
|
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
|
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"));
|
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;
|
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.GroupRepo;
|
||||||
import dev.dinauer.maven.maven.core.GroupId;
|
import dev.dinauer.maven.maven.core.GroupId;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
@ -9,6 +13,7 @@ import jakarta.ws.rs.GET;
|
|||||||
import jakarta.ws.rs.Path;
|
import jakarta.ws.rs.Path;
|
||||||
import jakarta.ws.rs.PathParam;
|
import jakarta.ws.rs.PathParam;
|
||||||
|
|
||||||
|
import java.time.ZonedDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Path("/groups")
|
@Path("/groups")
|
||||||
@ -16,6 +21,8 @@ public class GroupResource
|
|||||||
{
|
{
|
||||||
@Inject
|
@Inject
|
||||||
GroupRepo groupRepo;
|
GroupRepo groupRepo;
|
||||||
|
@Inject
|
||||||
|
EventRepo eventRepo;
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
public List<GroupId> get()
|
public List<GroupId> get()
|
||||||
@ -35,6 +42,11 @@ public class GroupResource
|
|||||||
@Transactional
|
@Transactional
|
||||||
public void delete(@PathParam("id") String id)
|
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()
|
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)
|
public ArtifactId setVersions(List<ReleaseVersion> releaseVersions)
|
||||||
|
|||||||
@ -84,7 +84,14 @@ public class MavenService
|
|||||||
}
|
}
|
||||||
if (Objects.equals(FileExt.XML, context.extensions().ext()))
|
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)
|
if (context.getClass() == ArtifactContext.class)
|
||||||
|
|||||||
@ -26,11 +26,11 @@ public class SnapshotBundle
|
|||||||
@JsonBackReference
|
@JsonBackReference
|
||||||
private SnapshotVersion snapshotVersion;
|
private SnapshotVersion snapshotVersion;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "snapshotBundle")
|
@OneToMany(mappedBy = "snapshotBundle", cascade = CascadeType.REMOVE)
|
||||||
@JsonManagedReference
|
@JsonManagedReference
|
||||||
private List<SnapshotJar> jars;
|
private List<SnapshotJar> jars;
|
||||||
|
|
||||||
@OneToOne(mappedBy = "snapshotBundle")
|
@OneToOne(mappedBy = "snapshotBundle", cascade = CascadeType.REMOVE)
|
||||||
@JsonManagedReference
|
@JsonManagedReference
|
||||||
private SnapshotPom pom;
|
private SnapshotPom pom;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package dev.dinauer.maven.maven.core.snapshot;
|
package dev.dinauer.maven.maven.core.snapshot;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonBackReference;
|
import com.fasterxml.jackson.annotation.JsonBackReference;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@ -16,6 +17,8 @@ public class SnapshotJar
|
|||||||
private String sha1;
|
private String sha1;
|
||||||
|
|
||||||
@Column(columnDefinition = "bytea")
|
@Column(columnDefinition = "bytea")
|
||||||
|
@JsonIgnore
|
||||||
|
@Basic(fetch = FetchType.LAZY)
|
||||||
private byte[] jar;
|
private byte[] jar;
|
||||||
|
|
||||||
private String classifier;
|
private String classifier;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ public class SnapshotVersion implements Version
|
|||||||
@JsonBackReference
|
@JsonBackReference
|
||||||
private ArtifactId artifact;
|
private ArtifactId artifact;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "snapshotVersion")
|
@OneToMany(mappedBy = "snapshotVersion", cascade = CascadeType.REMOVE)
|
||||||
@JsonManagedReference
|
@JsonManagedReference
|
||||||
private List<SnapshotBundle> snapshotBundles;
|
private List<SnapshotBundle> snapshotBundles;
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import dev.dinauer.maven.metadata.Metadata;
|
|||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.ws.rs.InternalServerErrorException;
|
import jakarta.ws.rs.InternalServerErrorException;
|
||||||
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
import org.apache.commons.lang3.Strings;
|
import org.apache.commons.lang3.Strings;
|
||||||
|
|
||||||
import java.util.List;
|
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)
|
private SnapshotMetadata generateMetadata(VersionContext versionContext)
|
||||||
{
|
{
|
||||||
SnapshotBundle latest = snapshotBundleRepo.latest(versionContext);
|
SnapshotBundle latest = snapshotBundleRepo.latest(versionContext);
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
# HTTP
|
# HTTP
|
||||||
|
quarkus.http.host=0.0.0.0
|
||||||
%dev.quarkus.http.cors.enabled=true
|
%dev.quarkus.http.cors.enabled=true
|
||||||
%dev.quarkus.http.port=8081
|
%dev.quarkus.http.port=8081
|
||||||
%dev.quarkus.http.cors.origins=/.*/
|
%dev.quarkus.http.cors.origins=/.*/
|
||||||
@ -24,11 +25,10 @@ quarkus.datasource.db-kind=postgresql
|
|||||||
quarkus.flyway.migrate-at-start=true
|
quarkus.flyway.migrate-at-start=true
|
||||||
|
|
||||||
# OIDC Server
|
# OIDC Server
|
||||||
quarkus.oidc.auth-server-url=http://localhost:8089/api/realms/maven
|
quarkus.oidc.auth-server-url=https://auth.dinauer.dev/api/realms/dev
|
||||||
quarkus.oidc.client-id=backend
|
quarkus.oidc.client-id=dev
|
||||||
quarkus.oidc-client.auth-server-url=http://localhost:8089/api/realms/maven
|
quarkus.oidc-client.auth-server-url=https://auth.dinauer.dev/api/realms/dev
|
||||||
quarkus.oidc-client.client-id=backend
|
quarkus.oidc-client.client-id=dev
|
||||||
quarkus.oidc-client.credentials.secret=backend
|
|
||||||
|
|
||||||
# OIDC REST
|
# 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