You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/06/28 13:39:35 UTC

[isis] 02/02: ISIS-2777: extends AbstractRoleAndPermissionsFixtureScript

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch ISIS-2777
in repository https://gitbox.apache.org/repos/asf/isis.git

commit aa851d468678ccebd970a41f4611f021ba094803
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Jun 28 14:39:09 2021 +0100

    ISIS-2777: extends AbstractRoleAndPermissionsFixtureScript
    
    to allow values to be provided lazily
---
 .../AbstractRoleAndPermissionsFixtureScript.java   | 23 +++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/fixtures/AbstractRoleAndPermissionsFixtureScript.java b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/fixtures/AbstractRoleAndPermissionsFixtureScript.java
index 5a184eb..2d2e1b4 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/fixtures/AbstractRoleAndPermissionsFixtureScript.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/isis/extensions/secman/applib/role/fixtures/AbstractRoleAndPermissionsFixtureScript.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.extensions.secman.applib.role.fixtures;
 
+import java.util.function.Supplier;
+
 import javax.inject.Inject;
 
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureId;
@@ -41,14 +43,24 @@ public abstract class AbstractRoleAndPermissionsFixtureScript extends FixtureScr
     @Inject private ApplicationRoleRepository applicationRoleRepository;
     @Inject private ApplicationPermissionRepository applicationPermissionRepository;
 
-    private final String roleName;
-    private final String roleDescription;
+    private final Supplier<String> roleNameSupplier;
+    private final Supplier<String> roleDescriptionSupplier;
 
     protected AbstractRoleAndPermissionsFixtureScript(
             final String roleName,
             final String roleDescriptionIfAny) {
-        this.roleName = roleName;
-        this.roleDescription = roleDescriptionIfAny;
+        this(() -> roleName, () -> roleDescriptionIfAny);
+    }
+
+    protected AbstractRoleAndPermissionsFixtureScript(
+            final Supplier<String> roleNameSupplier,
+            final Supplier<String> roleDescriptionSupplier) {
+        this.roleNameSupplier = nullSafe(roleNameSupplier);
+        this.roleDescriptionSupplier = nullSafe(roleDescriptionSupplier);
+    }
+
+    private static <T> Supplier<T> nullSafe(Supplier<T> supplier) {
+        return supplier != null ? supplier : () -> null;
     }
 
     /**
@@ -71,8 +83,9 @@ public abstract class AbstractRoleAndPermissionsFixtureScript extends FixtureScr
             return;
         }
 
+        val roleName = roleNameSupplier.get();
         val securityRole = applicationRoleRepository.findByName(roleName)
-                .orElseGet(() -> applicationRoleRepository.newRole(roleName, roleDescription));
+                .orElseGet(() -> applicationRoleRepository.newRole(roleName, roleDescriptionSupplier.get()));
 
         for(val featureId : featureIds) {
             val featureFqn = featureId.getFullyQualifiedName();