You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/01/26 21:13:02 UTC

[isis] branch master updated: ISIS-2431: SecMan use logical names when seeding initial permissions

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

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 496a768  ISIS-2431: SecMan use logical names when seeding initial permissions
496a768 is described below

commit 496a7689e5698e33c0b429a2ca71e425e12261d3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 26 22:12:47 2021 +0100

    ISIS-2431: SecMan use logical names when seeding initial permissions
---
 .../appfeat/ApplicationFeatureRepository.java        |  2 --
 .../appfeat/ApplicationFeatureRepositoryDefault.java | 11 -----------
 .../extensions/secman/api/SecmanConfiguration.java   |  2 +-
 .../AbstractRoleAndPermissionsFixtureScript.java     | 20 ++++++++++++++++----
 4 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java b/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
index d0b17b1..edd1d5b 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/appfeat/ApplicationFeatureRepository.java
@@ -25,8 +25,6 @@ import java.util.SortedSet;
  * @since 1.x {@index}
  */
 public interface ApplicationFeatureRepository  {
-
-    SortedSet<String> namespaces();
     
     SortedSet<String> packageNames();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index fe6c5fc..0c7baef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -71,7 +71,6 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
     private final SortedMap<ApplicationFeatureId, ApplicationFeature> propertyFeatures = _Maps.newTreeMap();
     private final SortedMap<ApplicationFeatureId, ApplicationFeature> collectionFeatures = _Maps.newTreeMap();
     private final SortedMap<ApplicationFeatureId, ApplicationFeature> actionFeatures = _Maps.newTreeMap();
-    private final SortedSet<String> namespaces = _Sets.newTreeSet();
 
     private final IsisConfiguration configuration;
     private final SpecificationLoader specificationLoader;
@@ -177,8 +176,6 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         // add all of its parent packages
         final ApplicationFeatureId classParentPackageId = addClassParent(classFeatureId);
         addParents(classParentPackageId);
-        
-        namespaces.add(spec.getSpecId().getNamespace());
     }
 
     private static Class<?> correspondingClassFor(final ObjectSpecification objectSpec) {
@@ -475,14 +472,6 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         return actionFeatures.values();
     }
 
-    // -- namespaces
-    
-    @Override
-    public SortedSet<String> namespaces() {
-        initializeIfRequired();
-        return Collections.unmodifiableSortedSet(namespaces);
-    }
-    
     // -- packageNames, packageNamesContainingClasses, classNamesContainedIn, memberNamesOf
     
     @Override
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
index 59cb7aa..c66af4a 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/SecmanConfiguration.java
@@ -55,7 +55,7 @@ public class SecmanConfiguration {
      */
     @Getter @Builder.Default @NonNull
     final String[] adminStickyNamespacePermissions = new String[]{
-            "secman"
+            "isis.ext.secman"
     };
     
     @Getter @Singular 
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractRoleAndPermissionsFixtureScript.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractRoleAndPermissionsFixtureScript.java
index f84485c..f95f536 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractRoleAndPermissionsFixtureScript.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/seed/scripts/AbstractRoleAndPermissionsFixtureScript.java
@@ -20,12 +20,16 @@ package org.apache.isis.extensions.secman.jdo.seed.scripts;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureType;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
 import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
 import org.apache.isis.extensions.secman.api.role.ApplicationRole;
@@ -39,6 +43,7 @@ public abstract class AbstractRoleAndPermissionsFixtureScript extends FixtureScr
 
     @Inject private ApplicationRoleRepository applicationRoleRepository;
     @Inject private ApplicationPermissionRepository applicationPermissionRepository;
+    @Inject private SpecificationLoader specificationLoader;
     
     private final String roleName;
     private final String roleDescription;
@@ -125,17 +130,24 @@ public abstract class AbstractRoleAndPermissionsFixtureScript extends FixtureScr
                     featureType, featureFqn);
         }
     }
+    
+    private String asFeatureFqns(Class<?> cls) {
+        return Optional.ofNullable(specificationLoader.loadSpecification(cls))
+                .map(ObjectSpecification::getSpecId)
+                .map(ObjectSpecId::asString)
+                .orElseGet(()->cls.getName());
+    }
 
-    private static List<String> asFeatureFqns(Class<?>[] classes) {
+    private List<String> asFeatureFqns(Class<?>[] classes) {
         return _NullSafe.stream(classes)
-                .map(Class::getName)
+                .map(this::asFeatureFqns)
                 .collect(Collectors.toList());
     }
 
-    private static Iterable<String> asFeatureFqns(final Class<?> cls, final String[] members) {
+    private Iterable<String> asFeatureFqns(final Class<?> cls, final String[] members) {
         return _NullSafe.stream(members)
                 .map(memberName->{
-                    val buf = new StringBuilder(cls.getName());
+                    val buf = new StringBuilder(asFeatureFqns(cls));
                     if(!memberName.startsWith("#")) {
                         buf.append("#");
                     }