public static <T extends GroupedModel> ModelResourcePermission<T> create( Class<T> modelClass, ToLongFunction<T> primKeyToLongFunction, UnsafeFunction<Long, T, ? extends PortalException> getModelUnsafeFunction, PortletResourcePermission portletResourcePermission, ModelResourcePermissionConfigurator<T> modelResourcePermissionConfigurator, UnaryOperator<String> actionIdMapper) { List<ModelResourcePermissionLogic<T>> modelResourcePermissionLogics = new ArrayList<>(); ModelResourcePermissionDefinition<T> modelResourcePermissionDefinition = new DefaultModelResourcePermissionDefinition<>( modelClass, primKeyToLongFunction, getModelUnsafeFunction, portletResourcePermission, actionIdMapper); ModelResourcePermission<T> modelResourcePermission = new DefaultModelResourcePermission<>( modelResourcePermissionDefinition, modelResourcePermissionLogics); modelResourcePermissionConfigurator. configureModelResourcePermissionLogics( modelResourcePermission, modelResourcePermissionLogics::add); return modelResourcePermission; }