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/03/04 12:04:47 UTC

[isis] branch master updated (d6a9804 -> 99efb64)

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

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


    from d6a9804  ISIS-2565: polishing
     new 986fb22  ISIS-2565: updates some mixin semantics
     new 99efb64  ISIS-2553: remove redundant mixins

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../appfeat/ApplicationFeatureRepository.java      |  13 ++-
 .../services/appfeat/ApplicationFeature.java       |   2 +-
 .../ApplicationFeatureRepositoryDefault.java       |  53 ++++-----
 .../ApplicationFeatureRepositoryDefaultTest.java   |  10 +-
 .../user/ApplicationUser_filterPermissions.java    |  19 ++--
 ...OrphanedPermissionManager_relocateSelected.java |   2 +-
 .../model/dom/role/ApplicationRole_addAction.java  | 107 ------------------
 .../model/dom/role/ApplicationRole_addClass.java   |  82 --------------
 .../dom/role/ApplicationRole_addCollection.java    | 111 -------------------
 .../model/dom/role/ApplicationRole_addPackage.java |  86 ---------------
 .../dom/role/ApplicationRole_addProperty.java      | 121 ---------------------
 .../ApplicationPermissionRepository.java           |  20 ++--
 .../secman/jdo/dom/role/ApplicationRole.java       |  24 ----
 .../ApplicationPermissionRepository.java           |  22 ++--
 .../secman/jpa/dom/role/ApplicationRole.java       |  24 ----
 15 files changed, 79 insertions(+), 617 deletions(-)
 delete mode 100644 extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addAction.java
 delete mode 100644 extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addClass.java
 delete mode 100644 extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addCollection.java
 delete mode 100644 extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addPackage.java
 delete mode 100644 extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addProperty.java


[isis] 01/02: ISIS-2565: updates some mixin semantics

Posted by ah...@apache.org.
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

commit 986fb228c526c30852f0098edb55e0d3323f6fb0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Mar 4 12:05:57 2021 +0100

    ISIS-2565: updates some mixin semantics
---
 .../model/dom/role/ApplicationRole_addAction.java   | 21 +++++++++++----------
 .../dom/role/ApplicationRole_addCollection.java     | 20 ++++++++++----------
 ...ckage.java => ApplicationRole_addNamespace.java} |  8 ++++----
 .../model/dom/role/ApplicationRole_addProperty.java | 20 ++++++++++----------
 ...e_addClass.java => ApplicationRole_addType.java} | 12 ++++++------
 5 files changed, 41 insertions(+), 40 deletions(-)

diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addAction.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addAction.java
index d61fb6c..84b3c36 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addAction.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addAction.java
@@ -61,14 +61,15 @@ public class ApplicationRole_addAction {
             final ApplicationPermissionRule rule,
             @ParameterLayout(named="Mode")
             final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Package", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String packageFqn,
-            @ParameterLayout(named="Class", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String className,
+            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
+            final String namespace,
+            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
+            final String logicalTypeSimpleName,
             @ParameterLayout(named="Action", typicalLength = ApplicationFeature.TYPICAL_LENGTH_MEMBER_NAME)
             final String memberName) {
         
-        applicationPermissionRepository.newPermission(holder, rule, mode, packageFqn, className, memberName);
+        applicationPermissionRepository
+        .newPermission(holder, rule, mode, namespace, logicalTypeSimpleName, memberName);
         return holder;
     }
 
@@ -91,17 +92,17 @@ public class ApplicationRole_addAction {
     public java.util.Collection<String> choices3Act(
             final ApplicationPermissionRule rule,
             final ApplicationPermissionMode mode,
-            final String packageFqn) {
-        return applicationFeatureRepository.classNamesContainedIn(packageFqn, ApplicationMemberSort.ACTION);
+            final String namespace) {
+        return applicationFeatureRepository.classNamesContainedIn(namespace, ApplicationMemberSort.ACTION);
     }
 
     @Model
     public java.util.Collection<String> choices4Act(
             final ApplicationPermissionRule rule,
             final ApplicationPermissionMode mode,
-            final String packageFqn,
-            final String className) {
-        return applicationFeatureRepository.memberNamesOf(packageFqn, className, ApplicationMemberSort.ACTION);
+            final String namespace,
+            final String logicalTypeSimpleName) {
+        return applicationFeatureRepository.memberNamesOf(namespace, logicalTypeSimpleName, ApplicationMemberSort.ACTION);
     }
     
 }
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addCollection.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addCollection.java
index ad9fa38..3c50a00 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addCollection.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addCollection.java
@@ -64,15 +64,15 @@ public class ApplicationRole_addCollection {
             final ApplicationPermissionRule rule,
             @ParameterLayout(named="Mode")
             final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Package", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String packageFqn,
-            @ParameterLayout(named="Class", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String className,
+            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
+            final String namespace,
+            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
+            final String logicalTypeSimpleName,
             @ParameterLayout(named="Collection", typicalLength=ApplicationFeature.TYPICAL_LENGTH_MEMBER_NAME)
             final String memberName) {
         
         applicationPermissionRepository
-            .newPermission(holder, rule, mode, packageFqn, className, memberName);
+            .newPermission(holder, rule, mode, namespace, logicalTypeSimpleName, memberName);
         return holder;
     }
 
@@ -95,17 +95,17 @@ public class ApplicationRole_addCollection {
     public Collection<String> choices3Act(
             final ApplicationPermissionRule rule,
             final ApplicationPermissionMode mode,
-            final String packageFqn) {
-        return applicationFeatureRepository.classNamesContainedIn(packageFqn, ApplicationMemberSort.COLLECTION);
+            final String namespace) {
+        return applicationFeatureRepository.classNamesContainedIn(namespace, ApplicationMemberSort.COLLECTION);
     }
 
     @Model
     public Collection<String> choices4Act(
             final ApplicationPermissionRule rule,
             final ApplicationPermissionMode mode,
-            final String packageFqn,
-            final String className) {
-        return applicationFeatureRepository.memberNamesOf(packageFqn, className, ApplicationMemberSort.COLLECTION);
+            final String namespace,
+            final String logicalTypeSimpleName) {
+        return applicationFeatureRepository.memberNamesOf(namespace, logicalTypeSimpleName, ApplicationMemberSort.COLLECTION);
     }
 
 }
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addPackage.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addNamespace.java
similarity index 93%
rename from extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addPackage.java
rename to extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addNamespace.java
index 88db573..339eecc 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addPackage.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addNamespace.java
@@ -41,7 +41,7 @@ import lombok.RequiredArgsConstructor;
         domainEvent = AddPermissionDomainEvent.class, 
         associateWith = "permissions")
 @RequiredArgsConstructor
-public class ApplicationRole_addPackage {
+public class ApplicationRole_addNamespace {
     
     @Inject private ApplicationFeatureRepository applicationFeatureRepository;
     @Inject private ApplicationPermissionRepository<? extends ApplicationPermission> applicationPermissionRepository;
@@ -60,11 +60,11 @@ public class ApplicationRole_addPackage {
             final ApplicationPermissionRule rule,
             @ParameterLayout(named="Mode")
             final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Package", typicalLength= ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String packageFqn) {
+            @ParameterLayout(named="Namespace", typicalLength= ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
+            final String namespace) {
         
         applicationPermissionRepository
-            .newPermission(holder, rule, mode, ApplicationFeatureSort.NAMESPACE, packageFqn);
+            .newPermission(holder, rule, mode, ApplicationFeatureSort.NAMESPACE, namespace);
         return holder;
     }
 
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addProperty.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addProperty.java
index 4b822e7..8aeb81c 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addProperty.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addProperty.java
@@ -65,15 +65,15 @@ public class ApplicationRole_addProperty {
             final ApplicationPermissionRule rule,
             @ParameterLayout(named="Mode")
             final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Package", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String packageFqn,
-            @ParameterLayout(named="Class", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String className,
+            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
+            final String namespace,
+            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
+            final String logicalTypeSimpleName,
             @ParameterLayout(named="Property", typicalLength=ApplicationFeature.TYPICAL_LENGTH_MEMBER_NAME)
             final String memberName) {
         
         applicationPermissionRepository
-            .newPermission(holder, rule, mode, packageFqn, className, memberName);
+            .newPermission(holder, rule, mode, namespace, logicalTypeSimpleName, memberName);
         return holder;
     }
 
@@ -102,8 +102,8 @@ public class ApplicationRole_addProperty {
     public Collection<String> choices3Act(
             final ApplicationPermissionRule rule,
             final ApplicationPermissionMode mode,
-            final String packageFqn) {
-        return applicationFeatureRepository.classNamesContainedIn(packageFqn, ApplicationMemberSort.PROPERTY);
+            final String namespace) {
+        return applicationFeatureRepository.classNamesContainedIn(namespace, ApplicationMemberSort.PROPERTY);
     }
 
     /**
@@ -113,9 +113,9 @@ public class ApplicationRole_addProperty {
     public Collection<String> choices4Act(
             final ApplicationPermissionRule rule,
             final ApplicationPermissionMode mode,
-            final String packageFqn,
-            final String className) {
-        return applicationFeatureRepository.memberNamesOf(packageFqn, className, ApplicationMemberSort.PROPERTY);
+            final String namespace,
+            final String logicalTypeSimpleName) {
+        return applicationFeatureRepository.memberNamesOf(namespace, logicalTypeSimpleName, ApplicationMemberSort.PROPERTY);
     }
 
 }
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addClass.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addType.java
similarity index 88%
rename from extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addClass.java
rename to extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addType.java
index a45c36b..2b5db48 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addClass.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addType.java
@@ -40,7 +40,7 @@ import lombok.RequiredArgsConstructor;
         domainEvent = AddPermissionDomainEvent.class, 
         associateWith = "permissions")
 @RequiredArgsConstructor
-public class ApplicationRole_addClass {
+public class ApplicationRole_addType {
     
     @Inject private ApplicationPermissionRepository<? extends ApplicationPermission> applicationPermissionRepository;
     
@@ -57,14 +57,14 @@ public class ApplicationRole_addClass {
             final ApplicationPermissionRule rule,
             @ParameterLayout(named="Mode")
             final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Package", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String packageFqn,
-            @ParameterLayout(named="Class", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String className) {
+            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
+            final String namespace,
+            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
+            final String logicalTypeSimpleName) {
         
         applicationPermissionRepository.newPermission(
                 holder, rule, mode, ApplicationFeatureSort.TYPE,
-                packageFqn + "." + className);
+                namespace + "." + logicalTypeSimpleName);
         
         return holder;
     }


[isis] 02/02: ISIS-2553: remove redundant mixins

Posted by ah...@apache.org.
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

commit 99efb645615c2dc252fc684076aad08ab6bbfa2b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Mar 4 13:04:32 2021 +0100

    ISIS-2553: remove redundant mixins
---
 .../appfeat/ApplicationFeatureRepository.java      |  13 ++-
 .../services/appfeat/ApplicationFeature.java       |   2 +-
 .../ApplicationFeatureRepositoryDefault.java       |  53 ++++-----
 .../ApplicationFeatureRepositoryDefaultTest.java   |  10 +-
 .../user/ApplicationUser_filterPermissions.java    |  19 ++--
 ...OrphanedPermissionManager_relocateSelected.java |   2 +-
 .../model/dom/role/ApplicationRole_addAction.java  | 108 ------------------
 .../dom/role/ApplicationRole_addCollection.java    | 111 -------------------
 .../dom/role/ApplicationRole_addNamespace.java     |  86 ---------------
 .../dom/role/ApplicationRole_addProperty.java      | 121 ---------------------
 .../model/dom/role/ApplicationRole_addType.java    |  82 --------------
 .../ApplicationPermissionRepository.java           |  20 ++--
 .../secman/jdo/dom/role/ApplicationRole.java       |  24 ----
 .../ApplicationPermissionRepository.java           |  22 ++--
 .../secman/jpa/dom/role/ApplicationRole.java       |  24 ----
 15 files changed, 79 insertions(+), 618 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 a5974c8..73e171e 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
@@ -26,27 +26,32 @@ import java.util.SortedSet;
  * class members (collectively: "application features") of the domain classes
  * within the framework's internal metamodel.
  *
- * @since 1.x {@index}
+ * @since 1.x revised for 2.0 {@index}
  */
 public interface ApplicationFeatureRepository  {
 
-    SortedSet<String> packageNames();
+    //TODO[2553] why return String, when AppFeatId is now API
+    SortedSet<String> namespaceNames();
 
-    SortedSet<String> packageNamesContainingClasses(
-            ApplicationMemberSort memberSort);
+//    SortedSet<String> namespaceNamesContainingSort(
+//            ApplicationMemberSort memberSort);
 
+    //TODO[2553] remove, only used by orphaned search, which can be done much simpler
     SortedSet<String> classNamesContainedIn(
             String packageFqn,
             ApplicationMemberSort memberSort);
 
+    //TODO[2553] remove or rename->logicalTypeSimpleNamesRecursivelyContainedInNamespace
     SortedSet<String> classNamesRecursivelyContainedIn(
             String packageFqn);
 
+    //TODO[2553] why return String, when AppFeatId is now API
     SortedSet<String> memberNamesOf(
             String packageFqn,
             String className,
             ApplicationMemberSort memberSort);
 
+    
     Map<String, ApplicationFeatureId> getFeatureIdentifiersByName();
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeature.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeature.java
index 4921d48..0c930f3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeature.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeature.java
@@ -48,7 +48,7 @@ import lombok.experimental.UtilityClass;
  *
  * <p>
  *     Note that this is NOT a view model; instead it can be converted to a string using methods of
- *     {@link ApplicationFeatureRepository}, eg {@link ApplicationFeatureRepository#classNamesContainedIn(String, ApplicationMemberSort)}.
+ *     {@link ApplicationFeatureRepository}.
  * </p>
  */
 @Value
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 b568f10..70c9de4 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
@@ -235,7 +235,7 @@ implements ApplicationFeatureRepository {
     }
 
     private ApplicationFeature findPackageElseCreate(final ApplicationFeatureId parentPackageId) {
-        ApplicationFeature parentPackage = findPackage(parentPackageId);
+        ApplicationFeature parentPackage = findNamespace(parentPackageId);
         if (parentPackage == null) {
             parentPackage = newPackage(parentPackageId);
         }
@@ -314,7 +314,7 @@ implements ApplicationFeatureRepository {
         // also cache per memberSort
         featuresMapFor(memberSort).put(featureId, memberFeature);
 
-        final ApplicationFeature classFeature = findClass(classFeatureId);
+        final ApplicationFeature classFeature = findLogicalType(classFeatureId);
         classFeature.addToMembers(featureId, memberSort);
     }
 
@@ -375,9 +375,9 @@ implements ApplicationFeatureRepository {
         initializeIfRequired();
         switch (featureId.getSort()) {
         case NAMESPACE:
-            return findPackage(featureId);
+            return findNamespace(featureId);
         case TYPE:
-            return findClass(featureId);
+            return findLogicalType(featureId);
         case MEMBER:
             return findMember(featureId);
         }
@@ -385,13 +385,13 @@ implements ApplicationFeatureRepository {
     }
 
 
-    public ApplicationFeature findPackage(final ApplicationFeatureId featureId) {
+    public ApplicationFeature findNamespace(final ApplicationFeatureId featureId) {
         initializeIfRequired();
         return packageFeatures.get(featureId);
     }
 
 
-    public ApplicationFeature findClass(final ApplicationFeatureId featureId) {
+    public ApplicationFeature findLogicalType(final ApplicationFeatureId featureId) {
         initializeIfRequired();
         return classFeatures.get(featureId);
     }
@@ -464,36 +464,39 @@ implements ApplicationFeatureRepository {
         return featureIdentifiersByName;
     }
     
-    // -- packageNames, packageNamesContainingClasses, classNamesContainedIn, memberNamesOf
+    // -- namespaceNames, packageNamesContainingClasses, classNamesContainedIn, memberNamesOf
     
     @Override
-    public SortedSet<String> packageNames() {
+    public SortedSet<String> namespaceNames() {
         initializeIfRequired();
         return stream(allFeatures(ApplicationFeatureSort.NAMESPACE))
                 .map(ApplicationFeature.Functions.GET_FQN)
                 .collect(_Sets.toUnmodifiableSorted());
     }
 
-    @Override
-    public SortedSet<String> packageNamesContainingClasses(final ApplicationMemberSort memberSort) {
-        initializeIfRequired();
-        final Collection<ApplicationFeature> packages = allFeatures(ApplicationFeatureSort.NAMESPACE);
-
-        return stream(packages)
-                .filter(ApplicationFeature.Predicates.packageContainingClasses(memberSort, this))
-                .map(ApplicationFeature.Functions.GET_FQN)
-                .collect(_Sets.toUnmodifiableSorted());
-    }
+//    @Override
+//    public SortedSet<String> namespaceNamesContainingSort(final ApplicationMemberSort memberSort) {
+//        initializeIfRequired();
+//        final Collection<ApplicationFeature> packages = allFeatures(ApplicationFeatureSort.NAMESPACE);
+//
+//        return stream(packages)
+//                .filter(ApplicationFeature.Predicates.packageContainingClasses(memberSort, this))
+//                .map(ApplicationFeature.Functions.GET_FQN)
+//                .collect(_Sets.toUnmodifiableSorted());
+//    }
 
     @Override
-    public SortedSet<String> classNamesContainedIn(final String packageFqn, final ApplicationMemberSort memberSort) {
+    public SortedSet<String> classNamesContainedIn(
+            final String namespace, 
+            final ApplicationMemberSort memberSort) {
+        
         initializeIfRequired();
-        final ApplicationFeatureId packageId = ApplicationFeatureId.newNamespace(packageFqn);
-        final ApplicationFeature pkg = findPackage(packageId);
-        if (pkg == null) {
+        final ApplicationFeatureId namespaceId = ApplicationFeatureId.newNamespace(namespace);
+        final ApplicationFeature namespaceFeat = findNamespace(namespaceId);
+        if (namespaceFeat == null) {
             return Collections.emptySortedSet();
         }
-        final SortedSet<ApplicationFeatureId> contents = pkg.getContents();
+        final SortedSet<ApplicationFeatureId> contents = namespaceFeat.getContents();
         return contents.stream()
                 .filter(_Predicates.isLogicalTypeContaining(memberSort, this))
                 .map(ApplicationFeatureId::getTypeSimpleName)
@@ -504,7 +507,7 @@ implements ApplicationFeatureRepository {
     public SortedSet<String> classNamesRecursivelyContainedIn(final String packageFqn) {
         initializeIfRequired();
         final ApplicationFeatureId packageId = ApplicationFeatureId.newNamespace(packageFqn);
-        final ApplicationFeature pkg = findPackage(packageId);
+        final ApplicationFeature pkg = findNamespace(packageId);
         if (pkg == null) {
             return Collections.emptySortedSet();
         }
@@ -522,7 +525,7 @@ implements ApplicationFeatureRepository {
             final ApplicationMemberSort memberSort) {
         initializeIfRequired();
         final ApplicationFeatureId classId = ApplicationFeatureId.newType(packageFqn + "." + className);
-        final ApplicationFeature cls = findClass(classId);
+        final ApplicationFeature cls = findLogicalType(classId);
         if (cls == null) {
             return Collections.emptySortedSet();
         }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
index 2818b99..6ec1629 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
@@ -221,17 +221,17 @@ public class ApplicationFeatureRepositoryDefaultTest {
             applicationFeatureRepository.createApplicationFeaturesFor(mockSpec);
 
             // then
-            final ApplicationFeature orgPkg = applicationFeatureRepository.findPackage(ApplicationFeatureId.newNamespace("org"));
+            final ApplicationFeature orgPkg = applicationFeatureRepository.findNamespace(ApplicationFeatureId.newNamespace("org"));
             assertThat(orgPkg, is(notNullValue()));
-            final ApplicationFeature orgIsisaddonsPkg = applicationFeatureRepository.findPackage(ApplicationFeatureId.newNamespace("org.isisaddons"));
+            final ApplicationFeature orgIsisaddonsPkg = applicationFeatureRepository.findNamespace(ApplicationFeatureId.newNamespace("org.isisaddons"));
             assertThat(orgPkg, is(notNullValue()));
-            final ApplicationFeature featurePkg = applicationFeatureRepository.findPackage(ApplicationFeatureId.newNamespace("org.isisaddons.module.security.dom.feature"));
+            final ApplicationFeature featurePkg = applicationFeatureRepository.findNamespace(ApplicationFeatureId.newNamespace("org.isisaddons.module.security.dom.feature"));
             assertThat(orgPkg, is(notNullValue()));
             assertThat(orgPkg.getContents(), contains(orgIsisaddonsPkg.getFeatureId()));
             assertThat(featurePkg.getContents(), contains(ApplicationFeatureId.newType(Bar.class.getName())));
 
             // then
-            final ApplicationFeature barClass = applicationFeatureRepository.findClass(ApplicationFeatureId.newType(Bar.class.getName()));
+            final ApplicationFeature barClass = applicationFeatureRepository.findLogicalType(ApplicationFeatureId.newType(Bar.class.getName()));
             assertThat(barClass, is(Matchers.notNullValue()));
 
             // then the mockActThatIsHidden is not listed.
@@ -290,7 +290,7 @@ public class ApplicationFeatureRepositoryDefaultTest {
 
             // then
             Assert.assertThat(classParentId, is(equalTo(classFeatureId.getParentNamespaceFeatureId())));
-            final ApplicationFeature classPackage = applicationFeatureRepository.findPackage(classParentId);
+            final ApplicationFeature classPackage = applicationFeatureRepository.findNamespace(classParentId);
             assertThat(classPackage, is(newlyCreatedParent));
         }
 
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/ApplicationUser_filterPermissions.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/ApplicationUser_filterPermissions.java
index 36d1451..b6ed9b1 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/ApplicationUser_filterPermissions.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/ApplicationUser_filterPermissions.java
@@ -56,13 +56,16 @@ public class ApplicationUser_filterPermissions {
 
     @Model
     public List<UserPermissionViewModel> act(
-            @ParameterLayout(named="Package", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String packageFqn,
+            
+            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
+            final String namespace,
+            
             @Parameter(optionality = Optionality.OPTIONAL)
-            @ParameterLayout(named="Class",  typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String className) {
+            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
+            final String logicalTypeSimpleName) {
+        
         val allMembers = applicationFeatureRepository.allMembers();
-        val filtered = _Lists.filter(allMembers, within(packageFqn, className));
+        val filtered = _Lists.filter(allMembers, within(namespace, logicalTypeSimpleName));
         return asViewModels(filtered);
     }
 
@@ -71,7 +74,7 @@ public class ApplicationUser_filterPermissions {
      */
     @Model
     public Collection<String> choices0Act() {
-        return applicationFeatureRepository.packageNames();
+        return applicationFeatureRepository.namespaceNames();
     }
 
 
@@ -79,8 +82,8 @@ public class ApplicationUser_filterPermissions {
      * Class names for selected package.
      */
     @Model
-    public Collection<String> choices1Act(final String packageFqn) {
-        return applicationFeatureRepository.classNamesRecursivelyContainedIn(packageFqn);
+    public Collection<String> choices1Act(final String namespace) {
+        return applicationFeatureRepository.classNamesRecursivelyContainedIn(namespace);
     }
 
 
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/permission/ApplicationOrphanedPermissionManager_relocateSelected.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/permission/ApplicationOrphanedPermissionManager_relocateSelected.java
index fd48c85..5a36429 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/permission/ApplicationOrphanedPermissionManager_relocateSelected.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/permission/ApplicationOrphanedPermissionManager_relocateSelected.java
@@ -56,7 +56,7 @@ public class ApplicationOrphanedPermissionManager_relocateSelected {
     }
 
     public Collection<String> choices1Act() {
-        return applicationFeatureRepository.packageNames();
+        return applicationFeatureRepository.namespaceNames();
     }
     
     private void relocate(
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addAction.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addAction.java
deleted file mode 100644
index 84b3c36..0000000
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addAction.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.extensions.secman.model.dom.role;
-
-import javax.enterprise.inject.Model;
-import javax.inject.Inject;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
-import org.apache.isis.applib.services.appfeat.ApplicationMemberSort;
-import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeature;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermission;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRepository;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole.AddPermissionDomainEvent;
-
-import lombok.RequiredArgsConstructor;
-
-//probably obsolete since ApplicationRole_addPermission
-@Action(
-        domainEvent = AddPermissionDomainEvent.class, 
-        associateWith = "permissions")
-@RequiredArgsConstructor
-public class ApplicationRole_addAction {
-    
-    @Inject private ApplicationFeatureRepository applicationFeatureRepository;
-    @Inject private ApplicationPermissionRepository<? extends ApplicationPermission> applicationPermissionRepository;
-    
-    private final ApplicationRole holder;
-
-    /**
-     * Adds a {@link ApplicationPermission permission} for this role to a
-     * {@link ApplicationMemberSort#ACTION action}
-     * {@link ApplicationFeatureSort#MEMBER member}
-     * {@link ApplicationFeature feature}.
-     */
-    @MemberOrder(sequence = "3")
-    public ApplicationRole act(
-            @ParameterLayout(named="Rule")
-            final ApplicationPermissionRule rule,
-            @ParameterLayout(named="Mode")
-            final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String namespace,
-            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String logicalTypeSimpleName,
-            @ParameterLayout(named="Action", typicalLength = ApplicationFeature.TYPICAL_LENGTH_MEMBER_NAME)
-            final String memberName) {
-        
-        applicationPermissionRepository
-        .newPermission(holder, rule, mode, namespace, logicalTypeSimpleName, memberName);
-        return holder;
-    }
-
-    @Model
-    public ApplicationPermissionRule default0Act() {
-        return ApplicationPermissionRule.ALLOW;
-    }
-
-    @Model
-    public ApplicationPermissionMode default1Act() {
-        return ApplicationPermissionMode.CHANGING;
-    }
-
-    @Model
-    public java.util.Collection<String> choices2Act() {
-        return applicationFeatureRepository.packageNamesContainingClasses(ApplicationMemberSort.ACTION);
-    }
-
-    @Model
-    public java.util.Collection<String> choices3Act(
-            final ApplicationPermissionRule rule,
-            final ApplicationPermissionMode mode,
-            final String namespace) {
-        return applicationFeatureRepository.classNamesContainedIn(namespace, ApplicationMemberSort.ACTION);
-    }
-
-    @Model
-    public java.util.Collection<String> choices4Act(
-            final ApplicationPermissionRule rule,
-            final ApplicationPermissionMode mode,
-            final String namespace,
-            final String logicalTypeSimpleName) {
-        return applicationFeatureRepository.memberNamesOf(namespace, logicalTypeSimpleName, ApplicationMemberSort.ACTION);
-    }
-    
-}
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addCollection.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addCollection.java
deleted file mode 100644
index 3c50a00..0000000
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addCollection.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.extensions.secman.model.dom.role;
-
-import java.util.Collection;
-
-import javax.enterprise.inject.Model;
-import javax.inject.Inject;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
-import org.apache.isis.applib.services.appfeat.ApplicationMemberSort;
-import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeature;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermission;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRepository;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole.AddPermissionDomainEvent;
-
-import lombok.RequiredArgsConstructor;
-
-// probably obsolete since ApplicationRole_addPermission
-@Action(
-        domainEvent = AddPermissionDomainEvent.class, 
-        associateWith = "permissions")
-@RequiredArgsConstructor
-public class ApplicationRole_addCollection {
-    
-    @Inject private ApplicationFeatureRepository applicationFeatureRepository;
-    @Inject private ApplicationPermissionRepository<? extends ApplicationPermission> applicationPermissionRepository;
-    
-    private final ApplicationRole holder;
-
-
-    /**
-     * Adds a {@link ApplicationPermission permission} for this role to a
-     * {@link ApplicationMemberSort#COLLECTION collection}
-     * {@link ApplicationFeatureSort#MEMBER member}
-     * {@link ApplicationFeature feature}.
-     */
-    @MemberOrder(sequence = "5")
-    public ApplicationRole act(
-            @ParameterLayout(named="Rule")
-            final ApplicationPermissionRule rule,
-            @ParameterLayout(named="Mode")
-            final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String namespace,
-            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String logicalTypeSimpleName,
-            @ParameterLayout(named="Collection", typicalLength=ApplicationFeature.TYPICAL_LENGTH_MEMBER_NAME)
-            final String memberName) {
-        
-        applicationPermissionRepository
-            .newPermission(holder, rule, mode, namespace, logicalTypeSimpleName, memberName);
-        return holder;
-    }
-
-    @Model
-    public ApplicationPermissionRule default0Act() {
-        return ApplicationPermissionRule.ALLOW;
-    }
-
-    @Model
-    public ApplicationPermissionMode default1Act() {
-        return ApplicationPermissionMode.CHANGING;
-    }
-
-    @Model
-    public Collection<String> choices2Act() {
-        return applicationFeatureRepository.packageNamesContainingClasses(ApplicationMemberSort.COLLECTION);
-    }
-    
-    @Model
-    public Collection<String> choices3Act(
-            final ApplicationPermissionRule rule,
-            final ApplicationPermissionMode mode,
-            final String namespace) {
-        return applicationFeatureRepository.classNamesContainedIn(namespace, ApplicationMemberSort.COLLECTION);
-    }
-
-    @Model
-    public Collection<String> choices4Act(
-            final ApplicationPermissionRule rule,
-            final ApplicationPermissionMode mode,
-            final String namespace,
-            final String logicalTypeSimpleName) {
-        return applicationFeatureRepository.memberNamesOf(namespace, logicalTypeSimpleName, ApplicationMemberSort.COLLECTION);
-    }
-
-}
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addNamespace.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addNamespace.java
deleted file mode 100644
index 339eecc..0000000
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addNamespace.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.extensions.secman.model.dom.role;
-
-import javax.enterprise.inject.Model;
-import javax.inject.Inject;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
-import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeature;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermission;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRepository;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole.AddPermissionDomainEvent;
-
-import lombok.RequiredArgsConstructor;
-
-//probably obsolete since ApplicationRole_addPermission
-@Action(
-        domainEvent = AddPermissionDomainEvent.class, 
-        associateWith = "permissions")
-@RequiredArgsConstructor
-public class ApplicationRole_addNamespace {
-    
-    @Inject private ApplicationFeatureRepository applicationFeatureRepository;
-    @Inject private ApplicationPermissionRepository<? extends ApplicationPermission> applicationPermissionRepository;
-    
-    private final ApplicationRole holder;
-    
-    /**
-     * Adds a {@link ApplicationPermission permission}
-     * for this role to a
-     * {@link ApplicationFeatureSort#NAMESPACE package}
-     * {@link ApplicationFeature feature}.
-     */
-    @MemberOrder(sequence = "1")
-    public ApplicationRole act(
-            @ParameterLayout(named="Rule")
-            final ApplicationPermissionRule rule,
-            @ParameterLayout(named="Mode")
-            final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Namespace", typicalLength= ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String namespace) {
-        
-        applicationPermissionRepository
-            .newPermission(holder, rule, mode, ApplicationFeatureSort.NAMESPACE, namespace);
-        return holder;
-    }
-
-    @Model
-    public ApplicationPermissionRule default0Act() {
-        return ApplicationPermissionRule.ALLOW;
-    }
-
-    @Model
-    public ApplicationPermissionMode default1Act() {
-        return ApplicationPermissionMode.CHANGING;
-    }
-
-    @Model
-    public java.util.Collection<String> choices2Act() {
-        return applicationFeatureRepository.packageNames();
-    }
-
-}
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addProperty.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addProperty.java
deleted file mode 100644
index 8aeb81c..0000000
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addProperty.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.extensions.secman.model.dom.role;
-
-import java.util.Collection;
-
-import javax.enterprise.inject.Model;
-import javax.inject.Inject;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
-import org.apache.isis.applib.services.appfeat.ApplicationMemberSort;
-import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeature;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermission;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRepository;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole.AddPermissionDomainEvent;
-
-import lombok.RequiredArgsConstructor;
-
-//probably obsolete since ApplicationRole_addPermission
-@Action(
-        domainEvent = AddPermissionDomainEvent.class, 
-        associateWith = "permissions")
-@RequiredArgsConstructor
-public class ApplicationRole_addProperty {
-    
-    @Inject private ApplicationFeatureRepository applicationFeatureRepository;
-    @Inject private ApplicationPermissionRepository<? extends ApplicationPermission> applicationPermissionRepository;
-    
-    private final ApplicationRole holder;
-
-    // -- addProperty (action)
-    
-    /**
-     * Adds a {@link ApplicationPermission permission} for this role to a
-     * {@link ApplicationMemberSort#PROPERTY property}
-     * {@link ApplicationFeatureSort#MEMBER member}
-     * {@link ApplicationFeature feature}.
-     */
-    @MemberOrder(sequence = "4")
-    public ApplicationRole act(
-            @ParameterLayout(named="Rule")
-            final ApplicationPermissionRule rule,
-            @ParameterLayout(named="Mode")
-            final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String namespace,
-            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String logicalTypeSimpleName,
-            @ParameterLayout(named="Property", typicalLength=ApplicationFeature.TYPICAL_LENGTH_MEMBER_NAME)
-            final String memberName) {
-        
-        applicationPermissionRepository
-            .newPermission(holder, rule, mode, namespace, logicalTypeSimpleName, memberName);
-        return holder;
-    }
-
-    @Model
-    public ApplicationPermissionRule default0Act() {
-        return ApplicationPermissionRule.ALLOW;
-    }
-
-    @Model
-    public ApplicationPermissionMode default1Act() {
-        return ApplicationPermissionMode.CHANGING;
-    }
-
-    /**
-     * Package names that have classes in them.
-     */
-    @Model
-    public Collection<String> choices2Act() {
-        return applicationFeatureRepository.packageNamesContainingClasses(ApplicationMemberSort.PROPERTY);
-    }
-
-    /**
-     * Class names for selected package.
-     */
-    @Model
-    public Collection<String> choices3Act(
-            final ApplicationPermissionRule rule,
-            final ApplicationPermissionMode mode,
-            final String namespace) {
-        return applicationFeatureRepository.classNamesContainedIn(namespace, ApplicationMemberSort.PROPERTY);
-    }
-
-    /**
-     * Member names for selected class.
-     */
-    @Model
-    public Collection<String> choices4Act(
-            final ApplicationPermissionRule rule,
-            final ApplicationPermissionMode mode,
-            final String namespace,
-            final String logicalTypeSimpleName) {
-        return applicationFeatureRepository.memberNamesOf(namespace, logicalTypeSimpleName, ApplicationMemberSort.PROPERTY);
-    }
-
-}
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addType.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addType.java
deleted file mode 100644
index 2b5db48..0000000
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_addType.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.extensions.secman.model.dom.role;
-
-import javax.enterprise.inject.Model;
-import javax.inject.Inject;
-
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.ParameterLayout;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureSort;
-import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeature;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermission;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRepository;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole;
-import org.apache.isis.extensions.secman.api.role.ApplicationRole.AddPermissionDomainEvent;
-
-import lombok.RequiredArgsConstructor;
-
-//probably obsolete since ApplicationRole_addPermission
-@Action(
-        domainEvent = AddPermissionDomainEvent.class, 
-        associateWith = "permissions")
-@RequiredArgsConstructor
-public class ApplicationRole_addType {
-    
-    @Inject private ApplicationPermissionRepository<? extends ApplicationPermission> applicationPermissionRepository;
-    
-    private final ApplicationRole holder;
-
-    /**
-     * Adds a {@link ApplicationPermission permission} for this role to a
-     * {@link ApplicationFeatureSort#MEMBER member}
-     * {@link ApplicationFeature feature}.
-     */
-    @MemberOrder(sequence = "1")
-    public ApplicationRole act(
-            @ParameterLayout(named="Rule")
-            final ApplicationPermissionRule rule,
-            @ParameterLayout(named="Mode")
-            final ApplicationPermissionMode mode,
-            @ParameterLayout(named="Namespace", typicalLength=ApplicationFeature.TYPICAL_LENGTH_PKG_FQN)
-            final String namespace,
-            @ParameterLayout(named="Type", typicalLength=ApplicationFeature.TYPICAL_LENGTH_CLS_NAME)
-            final String logicalTypeSimpleName) {
-        
-        applicationPermissionRepository.newPermission(
-                holder, rule, mode, ApplicationFeatureSort.TYPE,
-                namespace + "." + logicalTypeSimpleName);
-        
-        return holder;
-    }
-
-    @Model
-    public ApplicationPermissionRule default0Act() {
-        return ApplicationPermissionRule.ALLOW;
-    }
-
-    @Model
-    public ApplicationPermissionMode default1Act() {
-        return ApplicationPermissionMode.CHANGING;
-    }
-
-}
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermissionRepository.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermissionRepository.java
index de4e66b..e8a5a87 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermissionRepository.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermissionRepository.java
@@ -316,12 +316,12 @@ implements org.apache.isis.extensions.secman.api.permission.ApplicationPermissio
     @Override
     public Collection<ApplicationPermission> findOrphaned() {
 
-        final Collection<String> packageNames = featureRepository.packageNames();
+        final Collection<String> namespaceNames = featureRepository.namespaceNames();
         final Set<String> availableClasses = _Sets.newTreeSet();
-        for (String packageName : packageNames) {
-            appendClasses(packageName, ApplicationMemberSort.PROPERTY, availableClasses);
-            appendClasses(packageName, ApplicationMemberSort.COLLECTION, availableClasses);
-            appendClasses(packageName, ApplicationMemberSort.ACTION, availableClasses);
+        for (String packageName : namespaceNames) {
+            appendLogicalTypes(packageName, ApplicationMemberSort.PROPERTY, availableClasses);
+            appendLogicalTypes(packageName, ApplicationMemberSort.COLLECTION, availableClasses);
+            appendLogicalTypes(packageName, ApplicationMemberSort.ACTION, availableClasses);
         }
 
         val orphaned = _Lists.<ApplicationPermission>newArrayList();
@@ -333,7 +333,7 @@ implements org.apache.isis.extensions.secman.api.permission.ApplicationPermissio
             switch (featureSort) {
 
             case NAMESPACE:
-                if(!packageNames.contains(featureFqn)) {
+                if(!namespaceNames.contains(featureFqn)) {
                     orphaned.add(permission);
                 }
                 break;
@@ -366,9 +366,11 @@ implements org.apache.isis.extensions.secman.api.permission.ApplicationPermissio
         return orphaned;
     }
 
-    private void appendClasses(
-            final String packageName, final ApplicationMemberSort getMemberSort, final Set<String> availableClasses) {
-        final Collection<String> classNames = featureRepository.classNamesContainedIn(packageName, getMemberSort);
+    private void appendLogicalTypes(
+            final String packageName, 
+            final ApplicationMemberSort memberSort, 
+            final Set<String> availableClasses) {
+        final Collection<String> classNames = featureRepository.classNamesContainedIn(packageName, memberSort);
         for (String className : classNames) {
             availableClasses.add(packageName + "." + className);
         }
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
index a7f6ec4..408d981 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/role/ApplicationRole.java
@@ -38,14 +38,11 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
 import org.apache.isis.applib.types.DescriptionType;
 import org.apache.isis.applib.util.Equality;
 import org.apache.isis.applib.util.Hashing;
 import org.apache.isis.applib.util.ObjectContracts;
 import org.apache.isis.applib.util.ToString;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
 import org.apache.isis.extensions.secman.jdo.dom.permission.ApplicationPermission;
 import org.apache.isis.extensions.secman.jdo.dom.permission.ApplicationPermissionRepository;
 import org.apache.isis.extensions.secman.jdo.dom.user.ApplicationUser;
@@ -90,7 +87,6 @@ import lombok.Setter;
 public class ApplicationRole
 implements org.apache.isis.extensions.secman.api.role.ApplicationRole, Comparable<ApplicationRole> {
 
-    @Inject private ApplicationFeatureRepository applicationFeatureRepository;
     @Inject private ApplicationPermissionRepository applicationPermissionRepository;
 
     // -- name (property)
@@ -141,26 +137,6 @@ implements org.apache.isis.extensions.secman.api.role.ApplicationRole, Comparabl
         return applicationPermissionRepository.findByRole(this);
     }
 
-
-
-
-    /**
-     * Package names that have classes in them.
-     */
-    public java.util.Collection<String> choices2AddClass() {
-        return applicationFeatureRepository.packageNamesContainingClasses(null);
-    }
-
-    /**
-     * Class names for selected package.
-     */
-    public java.util.Collection<String> choices3AddClass(
-            final ApplicationPermissionRule rule,
-            final ApplicationPermissionMode mode,
-            final String packageFqn) {
-        return applicationFeatureRepository.classNamesContainedIn(packageFqn, null);
-    }
-
     // -- users (collection)
 
     public static class UsersDomainEvent extends CollectionDomainEvent<ApplicationUser> {}
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermissionRepository.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermissionRepository.java
index a507da8..76cd812 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermissionRepository.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermissionRepository.java
@@ -335,12 +335,14 @@ implements org.apache.isis.extensions.secman.api.permission.ApplicationPermissio
     @Override
     public Collection<ApplicationPermission> findOrphaned() {
 
-        final Collection<String> packageNames = applicationFeatureRepository.packageNames();
+        applicationFeatureRepository.getFeatureIdentifiersByName();
+        
+        final Collection<String> namespaceNames = applicationFeatureRepository.namespaceNames();
         final Set<String> availableClasses = _Sets.newTreeSet();
-        for (String packageName : packageNames) {
-            appendClasses(packageName, ApplicationMemberSort.PROPERTY, availableClasses);
-            appendClasses(packageName, ApplicationMemberSort.COLLECTION, availableClasses);
-            appendClasses(packageName, ApplicationMemberSort.ACTION, availableClasses);
+        for (String packageName : namespaceNames) {
+            appendLogicalTypes(packageName, ApplicationMemberSort.PROPERTY, availableClasses);
+            appendLogicalTypes(packageName, ApplicationMemberSort.COLLECTION, availableClasses);
+            appendLogicalTypes(packageName, ApplicationMemberSort.ACTION, availableClasses);
         }
 
         val orphaned = _Lists.<ApplicationPermission>newArrayList();
@@ -353,7 +355,7 @@ implements org.apache.isis.extensions.secman.api.permission.ApplicationPermissio
             switch (featureType) {
 
             case NAMESPACE:
-                if(!packageNames.contains(featureFqn)) {
+                if(!namespaceNames.contains(featureFqn)) {
                     orphaned.add(permission);
                 }
                 break;
@@ -386,9 +388,11 @@ implements org.apache.isis.extensions.secman.api.permission.ApplicationPermissio
         return orphaned;
     }
 
-    private void appendClasses(
-            final String packageName, final ApplicationMemberSort getMemberSort, final Set<String> availableClasses) {
-        final Collection<String> classNames = applicationFeatureRepository.classNamesContainedIn(packageName, getMemberSort);
+    private void appendLogicalTypes(
+            final String packageName, 
+            final ApplicationMemberSort memberSort, 
+            final Set<String> availableClasses) {
+        final Collection<String> classNames = applicationFeatureRepository.classNamesContainedIn(packageName, memberSort);
         for (String className : classNames) {
             availableClasses.add(packageName + "." + className);
         }
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRole.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRole.java
index 5d5d865..2ccc99f 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRole.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRole.java
@@ -45,14 +45,11 @@ import org.apache.isis.applib.annotation.Editing;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
-import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
 import org.apache.isis.applib.types.DescriptionType;
 import org.apache.isis.applib.util.Equality;
 import org.apache.isis.applib.util.Hashing;
 import org.apache.isis.applib.util.ObjectContracts;
 import org.apache.isis.applib.util.ToString;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionMode;
-import org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRule;
 import org.apache.isis.extensions.secman.jpa.dom.constants.NamedQueryNames;
 import org.apache.isis.extensions.secman.jpa.dom.permission.ApplicationPermission;
 import org.apache.isis.extensions.secman.jpa.dom.permission.ApplicationPermissionRepository;
@@ -98,7 +95,6 @@ implements
     org.apache.isis.extensions.secman.api.role.ApplicationRole,
     Comparable<ApplicationRole> {
 
-    @Inject private transient ApplicationFeatureRepository applicationFeatureRepository;
     @Inject private transient ApplicationPermissionRepository applicationPermissionRepository;
 
     @Id
@@ -153,26 +149,6 @@ implements
         return applicationPermissionRepository.findByRole(this);
     }
 
-
-
-
-    /**
-     * Package names that have classes in them.
-     */
-    public java.util.Collection<String> choices2AddClass() {
-        return applicationFeatureRepository.packageNamesContainingClasses(null);
-    }
-
-    /**
-     * Class names for selected package.
-     */
-    public java.util.Collection<String> choices3AddClass(
-            final ApplicationPermissionRule rule,
-            final ApplicationPermissionMode mode,
-            final String packageFqn) {
-        return applicationFeatureRepository.classNamesContainedIn(packageFqn, null);
-    }
-
     // -- users (collection)
 
     public static class UsersDomainEvent extends CollectionDomainEvent<ApplicationUser> {}