Skip to content

Commit 2e0718e

Browse files
Merge branch 'develop' into 11447-mydata-retrieve-empty-result-set
2 parents d5e8cee + a07a2f8 commit 2e0718e

5 files changed

Lines changed: 49 additions & 17 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
All API endpoints that return information about role assignments (such as `/api/dataverses/$ID/assignments`) now include additional fields in their JSON responses: `assigneeName`, `roleDescription`, `definitionPointName`, `definitionPointType`, and `definitionPointGlobalId` (if available).

src/main/java/edu/harvard/iq/dataverse/DvObject.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ public String visit(DataFile df) {
140140

141141
@Column(insertable = false, updatable = false) private String dtype;
142142

143+
public String getDtype() {
144+
return dtype;
145+
}
146+
143147
@OneToMany(mappedBy="dvobject",fetch = FetchType.LAZY,cascade={CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
144148
private List<DataverseFeaturedItem> dataverseFeaturedItems;
145149

src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinter.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,17 +75,22 @@ public class JsonPrinter {
7575
@EJB
7676
static InAppNotificationsJsonPrinter inAppNotificationsJsonPrinter;
7777

78+
@EJB
79+
static RoleAssigneeServiceBean roleAssigneeService;
80+
7881
public static void injectSettingsService(SettingsServiceBean ssb,
7982
DatasetFieldServiceBean dfsb,
8083
DataverseFieldTypeInputLevelServiceBean dfils,
8184
DatasetServiceBean ds,
8285
MailServiceBean ms,
83-
InAppNotificationsJsonPrinter njp) {
86+
InAppNotificationsJsonPrinter njp,
87+
RoleAssigneeServiceBean ras) {
8488
settingsService = ssb;
8589
datasetFieldService = dfsb;
8690
datasetService = ds;
8791
mailService = ms;
8892
inAppNotificationsJsonPrinter = njp;
93+
roleAssigneeService = ras;
8994
}
9095

9196
public JsonPrinter() {
@@ -145,14 +150,24 @@ public static JsonArrayBuilder jsonRoleAssignments(List<RoleAssignment> roleAssi
145150
}
146151

147152
public static JsonObjectBuilder json(RoleAssignment ra) {
148-
return jsonObjectBuilder()
149-
.add("id", ra.getId())
150-
.add("assignee", ra.getAssigneeIdentifier())
151-
.add("roleId", ra.getRole().getId())
152-
.add("roleName", ra.getRole().getName())
153-
.add("_roleAlias", ra.getRole().getAlias())
154-
.add("privateUrlToken", ra.getPrivateUrlToken())
155-
.add("definitionPointId", ra.getDefinitionPoint().getId());
153+
JsonObjectBuilder job = jsonObjectBuilder()
154+
.add("id", ra.getId())
155+
.add("assignee", ra.getAssigneeIdentifier())
156+
.add("assigneeName", roleAssigneeService.getRoleAssignee(ra.getAssigneeIdentifier()).getDisplayInfo().getTitle())
157+
.add("roleId", ra.getRole().getId())
158+
.add("roleName", ra.getRole().getName())
159+
.add("roleDescription", ra.getRole().getDescription())
160+
.add("_roleAlias", ra.getRole().getAlias())
161+
.add("privateUrlToken", ra.getPrivateUrlToken())
162+
.add("definitionPointId", ra.getDefinitionPoint().getId())
163+
.add("definitionPointName", ra.getDefinitionPoint().getDisplayName())
164+
.add("definitionPointType", ra.getDefinitionPoint().getDtype());
165+
166+
if (ra.getDefinitionPoint().getGlobalId() != null) {
167+
job.add("definitionPointGlobalId", ra.getDefinitionPoint().getGlobalId().toString());
168+
}
169+
170+
return job;
156171
}
157172

158173
public static JsonArrayBuilder json(Set<Permission> permissions) {

src/main/java/edu/harvard/iq/dataverse/util/json/JsonPrinterHelper.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package edu.harvard.iq.dataverse.util.json;
22

3-
import edu.harvard.iq.dataverse.DatasetFieldServiceBean;
4-
import edu.harvard.iq.dataverse.DatasetServiceBean;
5-
import edu.harvard.iq.dataverse.DataverseFieldTypeInputLevelServiceBean;
6-
import edu.harvard.iq.dataverse.MailServiceBean;
3+
import edu.harvard.iq.dataverse.*;
74
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
85

96
import jakarta.annotation.PostConstruct;
@@ -37,6 +34,9 @@ public class JsonPrinterHelper {
3734
@EJB
3835
InAppNotificationsJsonPrinter inAppNotificationsJsonPrinter;
3936

37+
@EJB
38+
RoleAssigneeServiceBean roleAssigneeService;
39+
4040
@PostConstruct
4141
public void injectService() {
4242
JsonPrinter.injectSettingsService(
@@ -45,7 +45,8 @@ public void injectService() {
4545
datasetFieldInpuLevelSvc,
4646
datasetSvc,
4747
mailSvc,
48-
inAppNotificationsJsonPrinter
48+
inAppNotificationsJsonPrinter,
49+
roleAssigneeService
4950
);
5051
}
5152
}

src/test/java/edu/harvard/iq/dataverse/util/json/JsonPrinterTest.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public void setUp() {
9999

100100
@Test
101101
public void testJson_RoleAssignment() {
102+
JsonPrinter.injectSettingsService(null, null, null, null, null, null, new MockRoleAssigneeService());
102103
DataverseRole aRole = new DataverseRole();
103104
PrivateUrlUser privateUrlUserIn = new PrivateUrlUser(42);
104105
RoleAssignee anAssignee = privateUrlUserIn;
@@ -116,6 +117,7 @@ public void testJson_RoleAssignment() {
116117

117118
@Test
118119
public void testJson_PrivateUrl() {
120+
JsonPrinter.injectSettingsService(null, null, null, null, null, null, new MockRoleAssigneeService());
119121
DataverseRole aRole = new DataverseRole();
120122
PrivateUrlUser privateUrlUserIn = new PrivateUrlUser(42);
121123
RoleAssignee anAssignee = privateUrlUserIn;
@@ -199,7 +201,7 @@ public void testDatasetContactOutOfBoxNoPrivacy() {
199201
datasetContactField.setDatasetFieldCompoundValues(vals);
200202
fields.add(datasetContactField);
201203

202-
JsonPrinter.injectSettingsService(null, null, null, null, null, null);
204+
JsonPrinter.injectSettingsService(null, null, null, null, null, null, null);
203205

204206
JsonObject jsonObject = JsonPrinter.json(block, fields).build();
205207
assertNotNull(jsonObject);
@@ -240,7 +242,7 @@ public void testDatasetContactWithPrivacy() {
240242
datasetContactField.setDatasetFieldCompoundValues(vals);
241243
fields.add(datasetContactField);
242244

243-
JsonPrinter.injectSettingsService(new MockSettingsSvc(), null, null, null, null, null);
245+
JsonPrinter.injectSettingsService(new MockSettingsSvc(), null, null, null, null, null, null);
244246

245247
JsonObject jsonObject = JsonPrinter.json(block, fields).build();
246248
assertNotNull(jsonObject);
@@ -290,7 +292,7 @@ public void testDatasetFieldTypesWithChildren() {
290292

291293
block.setDatasetFieldTypes(datasetFieldTypes);
292294

293-
JsonPrinter.injectSettingsService(new MockSettingsSvc(), null, null ,null, null, null);
295+
JsonPrinter.injectSettingsService(new MockSettingsSvc(), null, null ,null, null, null, null);
294296

295297
JsonObject jsonObject = JsonPrinter.json(block).build();
296298
assertNotNull(jsonObject);
@@ -355,6 +357,15 @@ public boolean isTrueForKey(SettingsServiceBean.Key key, boolean defaultValue) {
355357

356358
}
357359

360+
private static class MockRoleAssigneeService extends RoleAssigneeServiceBean {
361+
362+
@Override
363+
public RoleAssignee getRoleAssignee(String identifier) {
364+
return new PrivateUrlUser(42);
365+
}
366+
367+
}
368+
358369
@Test
359370
public void testEnum() throws JsonParseException {
360371
JsonArrayBuilder arr = JsonPrinter.enumsToJson(Arrays.asList(Type.REVOKEROLE, Type.ASSIGNROLE));

0 commit comments

Comments
 (0)