diff --git a/src/main/java/org/dependencytrack/model/ProjectVersion.java b/src/main/java/org/dependencytrack/model/ProjectVersion.java index 84c9b4e521..73bd1c2bc3 100644 --- a/src/main/java/org/dependencytrack/model/ProjectVersion.java +++ b/src/main/java/org/dependencytrack/model/ProjectVersion.java @@ -26,38 +26,5 @@ * Value object holding UUID and version for a project */ @JsonInclude(JsonInclude.Include.NON_NULL) -public class ProjectVersion implements Serializable { - - private static final long serialVersionUID = 1L; - - private UUID uuid; - - private String version; - - public ProjectVersion() { - this.uuid = null; - this.version = null; - } - - public ProjectVersion(UUID uuid, String version) { - this.uuid = uuid; - this.version = version; - - } - - public void setUuid(UUID uuid) { - this.uuid = uuid; - } - - public UUID getUuid() { - return uuid; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getVersion() { - return version; - } +public record ProjectVersion(UUID uuid, String version, Boolean active) implements Serializable { } diff --git a/src/main/java/org/dependencytrack/persistence/ProjectQueryManager.java b/src/main/java/org/dependencytrack/persistence/ProjectQueryManager.java index 6b1a97b7f5..269dfc83ba 100644 --- a/src/main/java/org/dependencytrack/persistence/ProjectQueryManager.java +++ b/src/main/java/org/dependencytrack/persistence/ProjectQueryManager.java @@ -1210,7 +1210,7 @@ private List getProjectVersions(Project project) { final Query query = pm.newQuery(Project.class); query.setFilter("name == :name"); query.setParameters(project.getName()); - query.setResult("uuid, version"); + query.setResult("uuid, version, active"); return query.executeResultList(ProjectVersion.class); } } diff --git a/src/test/java/org/dependencytrack/resources/v1/ProjectResourceTest.java b/src/test/java/org/dependencytrack/resources/v1/ProjectResourceTest.java index dd3229bb7a..7b39462552 100644 --- a/src/test/java/org/dependencytrack/resources/v1/ProjectResourceTest.java +++ b/src/test/java/org/dependencytrack/resources/v1/ProjectResourceTest.java @@ -267,6 +267,36 @@ public void getProjectByUuidTest() { Assert.assertEquals("1.0", json.getJsonArray("versions").getJsonObject(0).getJsonString("version").getString()); } + @Test + public void validateProjectVersionsActiveInactiveTest() { + Project project = qm.createProject("ABC", null, "1.0", null, null, null, true, false); + qm.createProject("ABC", null, "2.0", null, null, null, false, false); + qm.createProject("ABC", null, "3.0", null, null, null, true, false); + + Response response = jersey.target(V1_PROJECT + "/" + project.getUuid()) + .request() + .header(X_API_KEY, apiKey) + .get(Response.class); + + Assert.assertEquals(200, response.getStatus(), 0); + JsonObject json = parseJsonObject(response); + Assert.assertNotNull(json); + Assert.assertEquals("ABC", json.getString("name")); + Assert.assertEquals(3, json.getJsonArray("versions").size()); + + Assert.assertNotNull(json.getJsonArray("versions").getJsonObject(0).getJsonString("uuid").getString()); + Assert.assertEquals("1.0", json.getJsonArray("versions").getJsonObject(0).getJsonString("version").getString()); + Assert.assertTrue(json.getJsonArray("versions").getJsonObject(0).getBoolean("active")); + + Assert.assertNotNull(json.getJsonArray("versions").getJsonObject(1).getJsonString("uuid").getString()); + Assert.assertEquals("2.0", json.getJsonArray("versions").getJsonObject(1).getJsonString("version").getString()); + Assert.assertFalse(json.getJsonArray("versions").getJsonObject(1).getBoolean("active")); + + Assert.assertNotNull(json.getJsonArray("versions").getJsonObject(2).getJsonString("uuid").getString()); + Assert.assertEquals("3.0", json.getJsonArray("versions").getJsonObject(2).getJsonString("version").getString()); + Assert.assertTrue(json.getJsonArray("versions").getJsonObject(2).getBoolean("active")); + } + @Test public void getProjectByInvalidUuidTest() { qm.createProject("ABC", null, "1.0", null, null, null, true, false);