diff --git a/src/main/java/dev/dinauer/maven/jpa/maven/Jar.java b/src/main/java/dev/dinauer/maven/jpa/maven/Jar.java index c3f0119..71d9f8d 100644 --- a/src/main/java/dev/dinauer/maven/jpa/maven/Jar.java +++ b/src/main/java/dev/dinauer/maven/jpa/maven/Jar.java @@ -23,8 +23,7 @@ public class Jar private String url; - @Column(name = "file_base") - private String fileBase; + private String filename; @ManyToOne @JoinColumn(name = "version_id") @@ -97,14 +96,14 @@ public class Jar return this; } - public String getFileBase() + public String getFilename() { - return fileBase; + return filename; } - public Jar setFileBase(String filename) + public Jar setFilename(String filename) { - this.fileBase = filename; + this.filename = filename; return this; } } diff --git a/src/main/java/dev/dinauer/maven/jpa/maven/Pom.java b/src/main/java/dev/dinauer/maven/jpa/maven/Pom.java index 48505cd..2bd299b 100644 --- a/src/main/java/dev/dinauer/maven/jpa/maven/Pom.java +++ b/src/main/java/dev/dinauer/maven/jpa/maven/Pom.java @@ -23,8 +23,7 @@ public class Pom private String url; - @Column(name = "file_base") - private String fileBase; + private String filename; @OneToOne @JoinColumn(name = "version_id") @@ -97,14 +96,14 @@ public class Pom return this; } - public String getFileBase() + public String getFilename() { - return fileBase; + return filename; } - public Pom setFileBase(String fileBase) + public Pom setFilename(String filename) { - this.fileBase = fileBase; + this.filename = filename; return this; } } diff --git a/src/main/java/dev/dinauer/maven/jpa/maven/Version.java b/src/main/java/dev/dinauer/maven/jpa/maven/Version.java index 0216a07..0ad96a2 100644 --- a/src/main/java/dev/dinauer/maven/jpa/maven/Version.java +++ b/src/main/java/dev/dinauer/maven/jpa/maven/Version.java @@ -177,11 +177,11 @@ public class Version pullCount = pullCount + 1; } - public Optional getJarByFileBase(String fileBase) + public Optional getJarByFilename(String filename) { for (Jar jar : jars) { - if (jar.getFileBase().equals(fileBase)) + if (jar.getFilename().equals(filename)) { return Optional.of(jar); } diff --git a/src/main/java/dev/dinauer/maven/maven/core/JarService.java b/src/main/java/dev/dinauer/maven/maven/core/JarService.java index a91a318..79a0b0f 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/JarService.java +++ b/src/main/java/dev/dinauer/maven/maven/core/JarService.java @@ -25,7 +25,7 @@ public class JarService Version version = versionService.findOrCreate(mavenContext.groupId(), mavenContext.artifactId(), mavenContext.version().getRaw()); if (!existsJar(version.getJars(), mavenContext.file().getBase())) { - version.getJars().add(new Jar().setJar(body).setMd5(md5).setSha1(sha1).setVersion(version).setUrl(mavenContext.path()).setFileBase(mavenContext.file().getBase())); + version.getJars().add(new Jar().setJar(body).setMd5(md5).setSha1(sha1).setVersion(version).setUrl(mavenContext.path()).setFilename(mavenContext.file().getFilename())); versionService.persist(version); return Response.status(Response.Status.CREATED).build(); } @@ -55,14 +55,14 @@ public class JarService private Jar findJar(MavenContext context) { - return versionService.findOptional(context.groupId(), context.artifactId(), context.version().getRaw()).orElseThrow().getJarByFileBase(context.file().getBase()).orElseThrow(); + return versionService.findOptional(context.groupId(), context.artifactId(), context.version().getRaw()).orElseThrow().getJarByFilename(context.file().getBase()).orElseThrow(); } private boolean existsJar(List jars, String fileBase) { for (Jar jar : jars) { - if (fileBase.equals(jar.getFileBase())) + if (fileBase.equals(jar.getFilename())) { return true; } diff --git a/src/main/java/dev/dinauer/maven/maven/core/PomService.java b/src/main/java/dev/dinauer/maven/maven/core/PomService.java index 01ac663..9f6c523 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/PomService.java +++ b/src/main/java/dev/dinauer/maven/maven/core/PomService.java @@ -31,7 +31,7 @@ public class PomService version.setUploadedBy(securityIdentity.getPrincipal().getName()); if (version.getPom() == null) { - version.setPom(new Pom().setPom(new String(body)).setMd5(md5).setSha1(sha1).setVersion(version).setUrl(mavenContext.path()).setFileBase(mavenContext.file().getBase())); + version.setPom(new Pom().setPom(new String(body)).setMd5(md5).setSha1(sha1).setVersion(version).setUrl(mavenContext.path()).setFilename(mavenContext.file().getFilename())); versionService.persist(version); return Response.status(Response.Status.CREATED).build(); } diff --git a/src/main/java/dev/dinauer/maven/maven/core/Service.java b/src/main/java/dev/dinauer/maven/maven/core/Service.java index 316a9f1..9be4bd2 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/Service.java +++ b/src/main/java/dev/dinauer/maven/maven/core/Service.java @@ -59,6 +59,10 @@ public class Service } case POM -> { + if (mavenContext.version().getSnapshot()) + { + throw new WebApplicationException(501); + } if (FileHash.NONE.equals(mavenContext.file().getHash())) { return pomService.store(mavenContext, body); diff --git a/src/main/java/dev/dinauer/maven/maven/core/model/ExtensionParser.java b/src/main/java/dev/dinauer/maven/maven/core/model/ExtensionParser.java index 04c5539..5722b49 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/model/ExtensionParser.java +++ b/src/main/java/dev/dinauer/maven/maven/core/model/ExtensionParser.java @@ -16,7 +16,7 @@ public class ExtensionParser String firstLevelBase = Strings.CI.removeEnd(raw, String.format(".%s", firstLevelExtension)); if (FILE_TYPES.contains(firstLevelExtension)) { - return new Result(firstLevelBase, FileType.valueOf(firstLevelExtension.toUpperCase()), null); + return new Result(firstLevelBase, FileExt.valueOf(firstLevelExtension.toUpperCase()), null); } if (FILE_HASHES.contains(firstLevelExtension)) { @@ -24,13 +24,13 @@ public class ExtensionParser if (FILE_TYPES.contains(secondLevelExtension)) { String secondLevelBase = Strings.CI.removeEnd(firstLevelBase, String.format(".%s", secondLevelExtension)); - return new Result(secondLevelBase, FileType.valueOf(secondLevelExtension.toUpperCase()), FileHash.valueOf(firstLevelExtension.toUpperCase())); + return new Result(secondLevelBase, FileExt.valueOf(secondLevelExtension.toUpperCase()), FileHash.valueOf(firstLevelExtension.toUpperCase())); } } throw new RuntimeException(); } - public record Result(String base, FileType ext, FileHash hashExt) + public record Result(String base, FileExt ext, FileHash hashExt) { } } diff --git a/src/main/java/dev/dinauer/maven/maven/core/model/File.java b/src/main/java/dev/dinauer/maven/maven/core/model/File.java index cfd9abb..0716036 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/model/File.java +++ b/src/main/java/dev/dinauer/maven/maven/core/model/File.java @@ -1,17 +1,12 @@ package dev.dinauer.maven.maven.core.model; -import jakarta.ws.rs.BadRequestException; -import org.apache.commons.io.FilenameUtils; - -import java.util.List; - public class File { private String artifactId; private String version; private String raw; private String base; - private FileType type; + private FileExt type; private FileHash hash; public String getRaw() @@ -36,12 +31,12 @@ public class File return this; } - public FileType getType() + public FileExt getType() { return type; } - public File setType(FileType type) + public File setType(FileExt type) { this.type = type; return this; @@ -79,4 +74,9 @@ public class File this.version = version; return this; } + + public String getFilename() + { + return base + "." + type.toString().toLowerCase(); + } } diff --git a/src/main/java/dev/dinauer/maven/maven/core/model/FileType.java b/src/main/java/dev/dinauer/maven/maven/core/model/FileExt.java similarity index 76% rename from src/main/java/dev/dinauer/maven/maven/core/model/FileType.java rename to src/main/java/dev/dinauer/maven/maven/core/model/FileExt.java index 0115eba..deae3a6 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/model/FileType.java +++ b/src/main/java/dev/dinauer/maven/maven/core/model/FileExt.java @@ -1,6 +1,6 @@ package dev.dinauer.maven.maven.core.model; -public enum FileType +public enum FileExt { JAR, POM, XML } diff --git a/src/main/java/dev/dinauer/maven/maven/core/model/FileParser.java b/src/main/java/dev/dinauer/maven/maven/core/model/FileParser.java index 94e709e..d3b8831 100644 --- a/src/main/java/dev/dinauer/maven/maven/core/model/FileParser.java +++ b/src/main/java/dev/dinauer/maven/maven/core/model/FileParser.java @@ -17,7 +17,7 @@ public class FileParser String base = FilenameUtils.getBaseName(raw); if (FILE_TYPES.contains(extension.toLowerCase())) { - file.setType(FileType.valueOf(extension.toUpperCase())); + file.setType(FileExt.valueOf(extension.toUpperCase())); file.setBase(base); file.setHash(FileHash.NONE); return file; @@ -29,7 +29,7 @@ public class FileParser String secondaryBase = FilenameUtils.getBaseName(base); if (FILE_TYPES.contains(secondaryExtension.toLowerCase())) { - file.setType(FileType.valueOf(secondaryExtension.toUpperCase())); + file.setType(FileExt.valueOf(secondaryExtension.toUpperCase())); file.setBase(secondaryBase); return file; } diff --git a/src/main/resources/db/migration/V1.0.0__init.sql b/src/main/resources/db/migration/V1.0.0__init.sql index ae43f0a..f9c9d82 100644 --- a/src/main/resources/db/migration/V1.0.0__init.sql +++ b/src/main/resources/db/migration/V1.0.0__init.sql @@ -72,7 +72,7 @@ create table version create table jar ( - file_base varchar(255), + filename varchar(255), id varchar(255) not null primary key, md5 varchar(255), @@ -86,7 +86,7 @@ create table jar create table pom ( - file_base varchar(255), + filename varchar(255), id varchar(255) not null primary key, md5 varchar(255), diff --git a/src/test/java/dev/dinauer/maven/maven/core/model/ExtensionParserTest.java b/src/test/java/dev/dinauer/maven/maven/core/model/ExtensionParserTest.java index 5f89173..6be3422 100644 --- a/src/test/java/dev/dinauer/maven/maven/core/model/ExtensionParserTest.java +++ b/src/test/java/dev/dinauer/maven/maven/core/model/ExtensionParserTest.java @@ -13,7 +13,7 @@ public class ExtensionParserTest ExtensionParser.Result result = ExtensionParser.parse(filename); Assertions.assertEquals("test", result.base()); - Assertions.assertEquals(FileType.JAR, result.ext()); + Assertions.assertEquals(FileExt.JAR, result.ext()); Assertions.assertEquals(FileHash.MD5, result.hashExt()); } @@ -25,7 +25,7 @@ public class ExtensionParserTest ExtensionParser.Result result = ExtensionParser.parse(filename); Assertions.assertEquals("test", result.base()); - Assertions.assertEquals(FileType.POM, result.ext()); + Assertions.assertEquals(FileExt.POM, result.ext()); Assertions.assertEquals(FileHash.SHA1, result.hashExt()); } @@ -37,7 +37,7 @@ public class ExtensionParserTest ExtensionParser.Result result = ExtensionParser.parse(filename); Assertions.assertEquals("test", result.base()); - Assertions.assertEquals(FileType.JAR, result.ext()); + Assertions.assertEquals(FileExt.JAR, result.ext()); Assertions.assertNull(result.hashExt()); } } diff --git a/src/test/java/dev/dinauer/maven/maven/core/model/SnapshotFileParserTest.java b/src/test/java/dev/dinauer/maven/maven/core/model/SnapshotFileParserTest.java index 1a052ab..c35ecf0 100644 --- a/src/test/java/dev/dinauer/maven/maven/core/model/SnapshotFileParserTest.java +++ b/src/test/java/dev/dinauer/maven/maven/core/model/SnapshotFileParserTest.java @@ -15,7 +15,7 @@ public class SnapshotFileParserTest Assertions.assertEquals("20240315", file.getDate()); Assertions.assertEquals("142307", file.getTime()); Assertions.assertEquals(3, file.getBuildNumber()); - Assertions.assertEquals(FileType.JAR, file.getType()); + Assertions.assertEquals(FileExt.JAR, file.getType()); Assertions.assertEquals(FileHash.MD5, file.getHash()); } }