Skip to content

Commit 759cd8e

Browse files
MarinhoFeliphebrianchandotcom
authored andcommitted
LPD-67814 fix: actions of root descendant should point to endpoints that follow the pattern /parents/by-external-reference-code/{parentERC}/descendants/{descendantERC}
1 parent 8aa098e commit 759cd8e

File tree

1 file changed

+95
-23
lines changed

1 file changed

+95
-23
lines changed

modules/apps/object/object-rest-impl/src/main/java/com/liferay/object/rest/internal/manager/v1_0/DefaultObjectEntryManagerImpl.java

Lines changed: 95 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,8 @@ public ObjectEntry fetchObjectEntry(
569569
}
570570

571571
return _toObjectEntry(
572-
dtoConverterContext, objectDefinition, serviceBuilderObjectEntry);
572+
dtoConverterContext, objectDefinition, serviceBuilderObjectEntry,
573+
null);
573574
}
574575

575576
@Override
@@ -607,7 +608,7 @@ public ObjectEntry fetchRelatedManyToOneObjectEntry(
607608

608609
return _toObjectEntry(
609610
dtoConverterContext, relatedObjectDefinition,
610-
serviceBuilderObjectEntry);
611+
serviceBuilderObjectEntry, null);
611612
}
612613

613614
@Override
@@ -1199,7 +1200,8 @@ externalReferenceCode, getGroupId(objectDefinition, scopeKey),
11991200
_objectEntryService.restoreObjectEntryFromTrash(
12001201
serviceBuilderObjectEntry,
12011202
ServiceContextUtil.createServiceContext(
1202-
serviceBuilderObjectEntry.getObjectEntryId())));
1203+
serviceBuilderObjectEntry.getObjectEntryId())),
1204+
null);
12031205
}
12041206

12051207
@Override
@@ -1314,7 +1316,8 @@ public ObjectEntry updateObjectEntry(
13141316
0L, dtoConverterContext.getLocale(), objectDefinition,
13151317
objectEntry, scopeKey, serviceContext),
13161318
serviceContext),
1317-
scopeKey));
1319+
scopeKey),
1320+
null);
13181321
}
13191322

13201323
public ObjectEntry updateRelatedObjectEntry(
@@ -1391,12 +1394,69 @@ public void validateObjectEntry(
13911394
dtoConverterContext, objectDefinition, objectEntry, scopeKey));
13921395
}
13931396

1397+
private Map<String, String> _addAction(
1398+
String actionName, DTOConverterContext dtoConverterContext,
1399+
String methodNamePrefix, ObjectDefinition objectDefinition,
1400+
com.liferay.object.model.ObjectEntry serviceBuilderObjectEntry,
1401+
com.liferay.object.model.ObjectEntry
1402+
serviceBuilderParentObjectEntry)
1403+
throws Exception {
1404+
1405+
if (serviceBuilderParentObjectEntry == null) {
1406+
return _addAction(
1407+
actionName, methodNamePrefix + "ObjectEntry",
1408+
serviceBuilderObjectEntry, dtoConverterContext.getUriInfo());
1409+
}
1410+
1411+
String methodName = StringBundler.concat(
1412+
methodNamePrefix,
1413+
"ScopeScopeKeyByExternalReferenceCodeCurrentExternalReferenceCode",
1414+
"ObjectRelationshipNameRelatedExternalReferenceCode");
1415+
1416+
ObjectScopeProvider objectScopeProvider =
1417+
_objectScopeProviderRegistry.getObjectScopeProvider(
1418+
objectDefinition.getScope());
1419+
1420+
if (!objectScopeProvider.isGroupAware()) {
1421+
methodName = StringUtil.removeSubstring(
1422+
methodName, "ScopeScopeKey");
1423+
}
1424+
1425+
return ActionUtil.addAction(
1426+
actionName, ObjectEntryRelatedObjectsResourceImpl.class,
1427+
serviceBuilderObjectEntry.getHeadObjectEntryId(), methodName, null,
1428+
_objectEntryService.getModelResourcePermission(
1429+
serviceBuilderObjectEntry.getObjectDefinitionId()),
1430+
HashMapBuilder.put(
1431+
"currentExternalReferenceCode",
1432+
serviceBuilderParentObjectEntry.getExternalReferenceCode()
1433+
).put(
1434+
"relatedExternalReferenceCode",
1435+
serviceBuilderObjectEntry.getExternalReferenceCode()
1436+
).put(
1437+
"scopeKey",
1438+
() -> {
1439+
if (!objectScopeProvider.isGroupAware()) {
1440+
return null;
1441+
}
1442+
1443+
return String.valueOf(
1444+
serviceBuilderParentObjectEntry.getGroupId());
1445+
}
1446+
).build(),
1447+
dtoConverterContext.getUriInfo());
1448+
}
1449+
13941450
private Map<String, String> _addAction(
13951451
String actionName, String methodName,
13961452
com.liferay.object.model.ObjectEntry serviceBuilderObjectEntry,
13971453
Map<String, String> templateParameterMap, UriInfo uriInfo)
13981454
throws Exception {
13991455

1456+
if (serviceBuilderObjectEntry.isRootDescendantNode()) {
1457+
return null;
1458+
}
1459+
14001460
return ActionUtil.addAction(
14011461
actionName, ObjectEntryResourceImpl.class,
14021462
serviceBuilderObjectEntry.getHeadObjectEntryId(), methodName, null,
@@ -1478,7 +1538,8 @@ null, getGroupId(objectDefinition, scopeKey), objectDefinition,
14781538
_addOrUpdateNestedObjectEntries(
14791539
dtoConverterContext, objectDefinition, objectEntry,
14801540
_getObjectRelationships(objectDefinition, objectEntry),
1481-
serviceBuilderObjectEntry, scopeKey));
1541+
serviceBuilderObjectEntry, scopeKey),
1542+
null);
14821543
}
14831544

14841545
private com.liferay.object.model.ObjectEntry
@@ -1624,7 +1685,8 @@ null, getGroupId(objectDefinition, scopeKey), objectDefinition,
16241685
nestedObjectEntry.getExternalReferenceCode(),
16251686
groupId,
16261687
relatedObjectDefinition.
1627-
getObjectDefinitionId()));
1688+
getObjectDefinitionId()),
1689+
null);
16281690
}
16291691
else {
16301692
nestedObjectEntry =
@@ -1731,7 +1793,8 @@ private ObjectEntry _addRelatedObjectEntry(
17311793
dtoConverterContext.getLocale(), objectDefinition,
17321794
objectEntry, scopeKey, serviceContext),
17331795
serviceContext),
1734-
scopeKey));
1796+
scopeKey),
1797+
null);
17351798
}
17361799

17371800
private void _checkApprovedObjectEntry(
@@ -2053,7 +2116,7 @@ private void _executeObjectAction(
20532116
_jsonFactory.looseSerializeDeep(
20542117
_toObjectEntry(
20552118
dtoConverterContext, objectDefinition,
2056-
serviceBuilderObjectEntry)));
2119+
serviceBuilderObjectEntry, null)));
20572120

20582121
return jsonObject.toMap();
20592122
}
@@ -2244,7 +2307,8 @@ private ObjectEntry _getObjectEntry(
22442307
objectDefinition, serviceBuilderObjectEntry);
22452308

22462309
return _toObjectEntry(
2247-
dtoConverterContext, objectDefinition, serviceBuilderObjectEntry);
2310+
dtoConverterContext, objectDefinition, serviceBuilderObjectEntry,
2311+
null);
22482312
}
22492313

22502314
private ObjectEntry _getObjectEntry(
@@ -2262,7 +2326,8 @@ private ObjectEntry _getObjectEntry(
22622326
_checkRootDescendantNode(serviceBuilderObjectEntry, false);
22632327

22642328
return _toObjectEntry(
2265-
dtoConverterContext, objectDefinition, serviceBuilderObjectEntry);
2329+
dtoConverterContext, objectDefinition, serviceBuilderObjectEntry,
2330+
null);
22662331
}
22672332

22682333
private ObjectEntry _getObjectEntryByVersion(
@@ -2607,7 +2672,8 @@ private ObjectEntry _getRelatedObjectEntry(
26072672
}
26082673

26092674
return _toObjectEntry(
2610-
dtoConverterContext, objectDefinition, serviceBuilderObjectEntry);
2675+
dtoConverterContext, objectDefinition, serviceBuilderObjectEntry,
2676+
serviceBuilderParentObjectEntry);
26112677
}
26122678

26132679
private int _getStartPosition(Pagination pagination) {
@@ -3106,13 +3172,15 @@ private List<ObjectEntry> _toObjectEntries(
31063172
dtoConverterContext,
31073173
_objectDefinitionLocalService.getObjectDefinition(
31083174
serviceBuilderObjectEntry.getObjectDefinitionId()),
3109-
serviceBuilderObjectEntry));
3175+
serviceBuilderObjectEntry, null));
31103176
}
31113177

31123178
private ObjectEntry _toObjectEntry(
31133179
DTOConverterContext dtoConverterContext,
31143180
ObjectDefinition objectDefinition,
3115-
com.liferay.object.model.ObjectEntry serviceBuilderObjectEntry)
3181+
com.liferay.object.model.ObjectEntry serviceBuilderObjectEntry,
3182+
com.liferay.object.model.ObjectEntry
3183+
serviceBuilderParentObjectEntry)
31163184
throws Exception {
31173185

31183186
Map<String, Map<String, String>> actions = GetterUtil.getObject(
@@ -3125,9 +3193,10 @@ private ObjectEntry _toObjectEntry(
31253193
actions
31263194
).<String, Map<String, String>>put(
31273195
"delete",
3128-
_addAction(
3129-
ActionKeys.DELETE, "deleteObjectEntry",
3130-
serviceBuilderObjectEntry, dtoConverterContext.getUriInfo())
3196+
() -> _addAction(
3197+
ActionKeys.DELETE, dtoConverterContext, "delete",
3198+
objectDefinition, serviceBuilderObjectEntry,
3199+
serviceBuilderParentObjectEntry)
31313200
).put(
31323201
"expire",
31333202
() -> {
@@ -3147,9 +3216,10 @@ private ObjectEntry _toObjectEntry(
31473216
}
31483217
).put(
31493218
"get",
3150-
_addAction(
3151-
ActionKeys.VIEW, "getObjectEntry",
3152-
serviceBuilderObjectEntry, dtoConverterContext.getUriInfo())
3219+
() -> _addAction(
3220+
ActionKeys.VIEW, dtoConverterContext, "get",
3221+
objectDefinition, serviceBuilderObjectEntry,
3222+
serviceBuilderParentObjectEntry)
31533223
).put(
31543224
"permissions",
31553225
_addAction(
@@ -3209,9 +3279,10 @@ private ObjectEntry _toObjectEntry(
32093279
}
32103280
).put(
32113281
"update",
3212-
_addAction(
3213-
ActionKeys.UPDATE, "patchObjectEntry",
3214-
serviceBuilderObjectEntry, dtoConverterContext.getUriInfo())
3282+
() -> _addAction(
3283+
ActionKeys.UPDATE, dtoConverterContext, "patch",
3284+
objectDefinition, serviceBuilderObjectEntry,
3285+
serviceBuilderParentObjectEntry)
32153286
).put(
32163287
"versions",
32173288
_addAction(
@@ -3434,7 +3505,8 @@ private ObjectEntry _updateObjectEntry(
34343505
_addOrUpdateNestedObjectEntries(
34353506
dtoConverterContext, objectDefinition, objectEntry,
34363507
_getObjectRelationships(objectDefinition, objectEntry),
3437-
serviceBuilderObjectEntry, scopeKey));
3508+
serviceBuilderObjectEntry, scopeKey),
3509+
null);
34383510
}
34393511

34403512
private ObjectEntry _updateRelatedObjectEntry(

0 commit comments

Comments
 (0)