@@ -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