Skip to content

Commit b425f76

Browse files
committed
feat: let APIs return more info about role assignments
1 parent a696b36 commit b425f76

4 files changed

Lines changed: 46 additions & 17 deletions

File tree

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

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

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

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

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
@@ -84,18 +84,23 @@ public class JsonPrinter {
8484

8585
@EJB
8686
static InAppNotificationsJsonPrinter inAppNotificationsJsonPrinter;
87+
88+
@EJB
89+
static RoleAssigneeServiceBean roleAssigneeService;
8790

8891
public static void injectSettingsService(SettingsServiceBean ssb,
8992
DatasetFieldServiceBean dfsb,
9093
DataverseFieldTypeInputLevelServiceBean dfils,
9194
DatasetServiceBean ds,
9295
MailServiceBean ms,
93-
InAppNotificationsJsonPrinter njp) {
96+
InAppNotificationsJsonPrinter njp,
97+
RoleAssigneeServiceBean ras) {
9498
settingsService = ssb;
9599
datasetFieldService = dfsb;
96100
datasetService = ds;
97101
mailService = ms;
98102
inAppNotificationsJsonPrinter = njp;
103+
roleAssigneeService = ras;
99104
}
100105

101106
public JsonPrinter() {
@@ -150,14 +155,24 @@ public static JsonArrayBuilder jsonRoleAssignments(List<RoleAssignment> roleAssi
150155
}
151156

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

163178
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
@@ -105,6 +105,7 @@ public void setUp() {
105105

106106
@Test
107107
public void testJson_RoleAssignment() {
108+
JsonPrinter.injectSettingsService(null, null, null, null, null, null, new MockRoleAssigneeService());
108109
DataverseRole aRole = new DataverseRole();
109110
PrivateUrlUser privateUrlUserIn = new PrivateUrlUser(42);
110111
RoleAssignee anAssignee = privateUrlUserIn;
@@ -122,6 +123,7 @@ public void testJson_RoleAssignment() {
122123

123124
@Test
124125
public void testJson_PrivateUrl() {
126+
JsonPrinter.injectSettingsService(null, null, null, null, null, null, new MockRoleAssigneeService());
125127
DataverseRole aRole = new DataverseRole();
126128
PrivateUrlUser privateUrlUserIn = new PrivateUrlUser(42);
127129
RoleAssignee anAssignee = privateUrlUserIn;
@@ -205,7 +207,7 @@ public void testDatasetContactOutOfBoxNoPrivacy() {
205207
datasetContactField.setDatasetFieldCompoundValues(vals);
206208
fields.add(datasetContactField);
207209

208-
JsonPrinter.injectSettingsService(null, null, null, null, null, null);
210+
JsonPrinter.injectSettingsService(null, null, null, null, null, null, null);
209211

210212
JsonObject jsonObject = JsonPrinter.json(block, fields).build();
211213
assertNotNull(jsonObject);
@@ -246,7 +248,7 @@ public void testDatasetContactWithPrivacy() {
246248
datasetContactField.setDatasetFieldCompoundValues(vals);
247249
fields.add(datasetContactField);
248250

249-
JsonPrinter.injectSettingsService(new MockSettingsSvc(), null, null, null, null, null);
251+
JsonPrinter.injectSettingsService(new MockSettingsSvc(), null, null, null, null, null, null);
250252

251253
JsonObject jsonObject = JsonPrinter.json(block, fields).build();
252254
assertNotNull(jsonObject);
@@ -296,7 +298,7 @@ public void testDatasetFieldTypesWithChildren() {
296298

297299
block.setDatasetFieldTypes(datasetFieldTypes);
298300

299-
JsonPrinter.injectSettingsService(new MockSettingsSvc(), null, null ,null, null, null);
301+
JsonPrinter.injectSettingsService(new MockSettingsSvc(), null, null ,null, null, null, null);
300302

301303
JsonObject jsonObject = JsonPrinter.json(block).build();
302304
assertNotNull(jsonObject);
@@ -361,6 +363,15 @@ public boolean isTrueForKey(SettingsServiceBean.Key key, boolean defaultValue) {
361363

362364
}
363365

366+
private static class MockRoleAssigneeService extends RoleAssigneeServiceBean {
367+
368+
@Override
369+
public RoleAssignee getRoleAssignee(String identifier) {
370+
return new PrivateUrlUser(42);
371+
}
372+
373+
}
374+
364375
@Test
365376
public void testEnum() throws JsonParseException {
366377
JsonArrayBuilder arr = JsonPrinter.enumsToJson(Arrays.asList(Type.REVOKEROLE, Type.ASSIGNROLE));

0 commit comments

Comments
 (0)