Skip to content

Commit 7471c9f

Browse files
committed
Add project direct_dependencies in components API
1 parent 5e09d4f commit 7471c9f

5 files changed

Lines changed: 16 additions & 6 deletions

File tree

api/src/main/openapi/components/schemas/component-project.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ properties:
2424
maxLength: 255
2525
uuid:
2626
type: string
27-
format: uuid
27+
format: uuid
28+
direct_dependencies:
29+
type: string

apiserver/src/main/java/org/dependencytrack/persistence/jdbi/ComponentDao.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,8 @@ default Page<Component> listComponents(
283283
"L"."NAME" AS "licenseName",
284284
"PROJECT"."NAME" AS "projectName",
285285
"PROJECT"."UUID" AS "projectUuid",
286-
"PROJECT"."VERSION" AS "projectVersion"
286+
"PROJECT"."VERSION" AS "projectVersion",
287+
"PROJECT"."DIRECT_DEPENDENCIES" AS "projectDirectDependencies"
287288
FROM "COMPONENT" "C"
288289
INNER JOIN "PROJECT" ON "C"."PROJECT_ID" = "PROJECT"."ID"
289290
LEFT OUTER JOIN "LICENSE" "L" ON "C"."LICENSE_ID" = "L"."ID"
@@ -346,6 +347,7 @@ public Component map(final ResultSet rs, final StatementContext ctx) throws SQLE
346347
project.setUuid(UUID.fromString(rs.getString("projectUuid")));
347348
maybeSet(rs, "projectName", ResultSet::getString, project::setName);
348349
maybeSet(rs, "projectVersion", ResultSet::getString, project::setVersion);
350+
maybeSet(rs, "projectDirectDependencies", ResultSet::getString, project::setDirectDependencies);
349351
component.setProject(project);
350352
}
351353
maybeSet(rs, "componentPurl", ResultSet::getString, component::setPurl);

apiserver/src/main/java/org/dependencytrack/resources/v2/ComponentsResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public class ComponentsResource extends AbstractApiResource implements Component
7777
public Response createComponent(final CreateComponentRequest request) {
7878
final UUID projectUuid = request.getProjectUuid();
7979
try (QueryManager qm = new QueryManager()) {
80-
final Component componentCreated = qm.callInTransaction(() -> {
80+
qm.callInTransaction(() -> {
8181
final Project project = qm.getObjectByUuid(Project.class, projectUuid);
8282
if (project == null) {
8383
throw new NotFoundException();

apiserver/src/main/java/org/dependencytrack/resources/v2/mapping/ModelMapper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public static ComponentProject mapProject(org.dependencytrack.model.Project proj
6262
.name(project.getName())
6363
.version(project.getVersion())
6464
.uuid(project.getUuid())
65+
.directDependencies(project.getDirectDependencies())
6566
.build();
6667
}
6768

apiserver/src/test/java/org/dependencytrack/resources/v2/ComponentsResourceTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.dependencytrack.ResourceTest;
2727
import org.dependencytrack.auth.Permissions;
2828
import org.dependencytrack.model.Component;
29+
import org.dependencytrack.model.ComponentIdentity;
2930
import org.dependencytrack.model.Project;
3031
import org.junit.jupiter.api.Test;
3132
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -163,7 +164,8 @@ public void listComponentsByIdentityPaginationTest() {
163164
"project": {
164165
"name": "projectA",
165166
"version": "1.0",
166-
"uuid": "${json-unit.any-string}"
167+
"uuid": "${json-unit.any-string}",
168+
"direct_dependencies": "${json-unit.any-string}"
167169
}
168170
},
169171
{
@@ -352,7 +354,8 @@ public void listComponentsByIdentityWithProjectTest() {
352354
"project": {
353355
"name": "projectA",
354356
"version": "1.0",
355-
"uuid": "${json-unit.any-string}"
357+
"uuid": "${json-unit.any-string}",
358+
"direct_dependencies": "${json-unit.any-string}"
356359
}
357360
}
358361
]
@@ -399,7 +402,8 @@ public void listComponentsByIdentityAclTest() {
399402
"project": {
400403
"name": "projectA",
401404
"version": "1.0",
402-
"uuid": "${json-unit.any-string}"
405+
"uuid": "${json-unit.any-string}",
406+
"direct_dependencies": "${json-unit.any-string}"
403407
}
404408
}
405409
]
@@ -418,6 +422,7 @@ private void prepareComponents() {
418422
componentA.setCpe("cpe:2.3:a:groupA:nameA:versionA:*:*:*:*:*:*:*");
419423
componentA.setPurl("pkg:maven/groupA/nameA@versionA?foo=bar");
420424
qm.createComponent(componentA, false);
425+
projectA.setDirectDependencies("[%s]".formatted(new ComponentIdentity(componentA).toJSON()));
421426

422427
final Project projectB = qm.createProject("projectB", null, "1.0", null, null, null, null, false);
423428
var componentB = new Component();

0 commit comments

Comments
 (0)