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 2020/02/12 16:57:28 UTC

[isis] branch master updated: ISIS-2158: SecMan: sorted features and new icon for disabled user

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 b027c58  ISIS-2158: SecMan: sorted features and new icon for disabled user
b027c58 is described below

commit b027c583fa88da2419f4a4927a1f312688536615
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Feb 12 17:57:19 2020 +0100

    ISIS-2158: SecMan: sorted features and new icon for disabled user
---
 .../appfeat/ApplicationFeatureRepository.java      |  12 +--
 .../ApplicationFeatureRepositoryDefault.java       | 100 ++++++++++-----------
 .../secman/jdo/dom/user/ApplicationUser.java       |   4 +-
 .../resources/images/ApplicationUser-disabled.png  | Bin 0 -> 1342 bytes
 ...icationUser.png => ApplicationUser-enabled.png} | Bin
 5 files changed, 58 insertions(+), 58 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 67c9fa5..6fa2f0e 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
@@ -18,25 +18,25 @@
  */
 package org.apache.isis.applib.services.appfeat;
 
-import java.util.Set;
+import java.util.SortedSet;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
 public interface ApplicationFeatureRepository  {
 
     @Programmatic
-    Set<String> packageNames();
+    SortedSet<String> packageNames();
 
     @Programmatic
-    Set<String> packageNamesContainingClasses(ApplicationMemberType memberType);
+    SortedSet<String> packageNamesContainingClasses(ApplicationMemberType memberType);
 
     @Programmatic
-    Set<String> classNamesContainedIn(String packageFqn, ApplicationMemberType memberType);
+    SortedSet<String> classNamesContainedIn(String packageFqn, ApplicationMemberType memberType);
 
     @Programmatic
-    Set<String> classNamesRecursivelyContainedIn(String packageFqn);
+    SortedSet<String> classNamesRecursivelyContainedIn(String packageFqn);
 
     @Programmatic
-    Set<String> memberNamesOf(String packageFqn, String className, ApplicationMemberType memberType);
+    SortedSet<String> memberNamesOf(String packageFqn, String className, ApplicationMemberType memberType);
 
 }
\ No newline at end of file
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 b919383..928a252 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
@@ -39,6 +39,7 @@ import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.core.commons.internal.base._Lazy;
 import org.apache.isis.core.commons.internal.collections._Maps;
+import org.apache.isis.core.commons.internal.collections._Sets;
 import org.apache.isis.core.commons.internal.ioc.ManagedBeanAdapter;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.metamodel.services.ApplicationFeaturesInitConfiguration;
@@ -342,40 +343,40 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         return excluded;
     }
 
-    /**
-     * Ignore the (strict) super-classes of any services.
-     * <p>
-     * For example, we want to ignore <code>ExceptionRecognizerComposite</code> 
-     * because there is no service of that type (only of subtypes of that).
-     * </p>
-     */
-    @Deprecated
-    private boolean isSuperClassOfService(final ObjectSpecification spec) {
-
-        val specClass = spec.getCorrespondingClass();
-        
-        // is this class a supertype or the actual type of one of the services?
-        boolean serviceCls = false;
-        for (final ManagedBeanAdapter bean : registeredServices.get()) {
-            final Class<?> serviceClass = bean.getBeanClass();
-            if (specClass.isAssignableFrom(serviceClass)) {
-                serviceCls = true;
-            }
-        }
-        if (!serviceCls) {
-            return false;
-        }
-
-        // yes it is.  In which case, is it the actual concrete class of one of those services?
-        for (final Object registeredService : registeredServices.get()) {
-            final Class<?> serviceClass = registeredService.getClass();
-            if (serviceClass.isAssignableFrom(specClass)) {
-                return false;
-            }
-        }
-        // couldn't find a service of exactly this type, so ignore the spec.
-        return true;
-    }
+//XXX[2286] .. replaced by check 'spec.getBeanSort().isUnknown()'
+//    /**
+//     * Ignore the (strict) super-classes of any services.
+//     * <p>
+//     * For example, we want to ignore <code>ExceptionRecognizerComposite</code> 
+//     * because there is no service of that type (only of subtypes of that).
+//     * </p>
+//     */
+//    private boolean isSuperClassOfService(final ObjectSpecification spec) {
+//
+//        val specClass = spec.getCorrespondingClass();
+//        
+//        // is this class a supertype or the actual type of one of the services?
+//        boolean serviceCls = false;
+//        for (final ManagedBeanAdapter bean : registeredServices.get()) {
+//            final Class<?> serviceClass = bean.getBeanClass();
+//            if (specClass.isAssignableFrom(serviceClass)) {
+//                serviceCls = true;
+//            }
+//        }
+//        if (!serviceCls) {
+//            return false;
+//        }
+//
+//        // yes it is.  In which case, is it the actual concrete class of one of those services?
+//        for (final Object registeredService : registeredServices.get()) {
+//            final Class<?> serviceClass = registeredService.getClass();
+//            if (serviceClass.isAssignableFrom(specClass)) {
+//                return false;
+//            }
+//        }
+//        // couldn't find a service of exactly this type, so ignore the spec.
+//        return true;
+//    }
 
     protected boolean isHidden(final ObjectSpecification spec) {
         final HiddenFacet facet = spec.getFacet(HiddenFacet.class);
@@ -482,56 +483,56 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
 
     // -- packageNames, packageNamesContainingClasses, classNamesContainedIn, memberNamesOf
     @Override 
-    public Set<String> packageNames() {
+    public SortedSet<String> packageNames() {
         initializeIfRequired();
         return stream(allFeatures(ApplicationFeatureType.PACKAGE))
                 .map(ApplicationFeature.Functions.GET_FQN)
-                .collect(Collectors.toSet());
+                .collect(_Sets.toUnmodifiableSorted());
     }
 
     @Override 
-    public Set<String> packageNamesContainingClasses(final ApplicationMemberType memberType) {
+    public SortedSet<String> packageNamesContainingClasses(final ApplicationMemberType memberType) {
         initializeIfRequired();
         final Collection<ApplicationFeature> packages = allFeatures(ApplicationFeatureType.PACKAGE);
 
         return stream(packages)
                 .filter(ApplicationFeature.Predicates.packageContainingClasses(memberType, this))
                 .map(ApplicationFeature.Functions.GET_FQN)
-                .collect(Collectors.toSet());
+                .collect(_Sets.toUnmodifiableSorted());
     }
 
     @Override 
-    public Set<String> classNamesContainedIn(final String packageFqn, final ApplicationMemberType memberType) {
+    public SortedSet<String> classNamesContainedIn(final String packageFqn, final ApplicationMemberType memberType) {
         initializeIfRequired();
         final ApplicationFeatureId packageId = ApplicationFeatureId.newPackage(packageFqn);
         final ApplicationFeature pkg = findPackage(packageId);
         if (pkg == null) {
-            return Collections.emptySet();
+            return Collections.emptySortedSet();
         }
         final SortedSet<ApplicationFeatureId> contents = pkg.getContents();
         return contents.stream()
                 .filter(ApplicationFeatureId.Predicates.isClassContaining(memberType, this))
                 .map(ApplicationFeatureId.Functions.GET_CLASS_NAME)
-                .collect(Collectors.toSet());
+                .collect(_Sets.toUnmodifiableSorted());
     }
 
     @Override 
-    public Set<String> classNamesRecursivelyContainedIn(final String packageFqn) {
+    public SortedSet<String> classNamesRecursivelyContainedIn(final String packageFqn) {
         initializeIfRequired();
         final ApplicationFeatureId packageId = ApplicationFeatureId.newPackage(packageFqn);
         final ApplicationFeature pkg = findPackage(packageId);
         if (pkg == null) {
-            return Collections.emptySet();
+            return Collections.emptySortedSet();
         }
         final Set<ApplicationFeatureId> classIds = this.classFeatures.keySet();
         return classIds.stream()
                 .filter(ApplicationFeatureId.Predicates.isClassRecursivelyWithin(packageId))
                 .map(ApplicationFeatureId.Functions.GET_CLASS_NAME)
-                .collect(Collectors.toSet());
+                .collect(_Sets.toUnmodifiableSorted());
     }
 
     @Override 
-    public Set<String> memberNamesOf(
+    public SortedSet<String> memberNamesOf(
             final String packageFqn,
             final String className,
             final ApplicationMemberType memberType) {
@@ -539,19 +540,16 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         final ApplicationFeatureId classId = ApplicationFeatureId.newClass(packageFqn + "." + className);
         final ApplicationFeature cls = findClass(classId);
         if (cls == null) {
-            return Collections.emptySet();
+            return Collections.emptySortedSet();
         }
         final SortedSet<ApplicationFeatureId> featureIds = cls.membersOf(memberType);
         return featureIds.stream()
                 .map(ApplicationFeatureId.Functions.GET_MEMBER_NAME)
-                .collect(Collectors.toSet());
+                .collect(_Sets.toUnmodifiableSorted());
     }
 
-    //region  > services (injected)
-
     @Inject ServiceRegistry serviceRegistry;
-    @Inject
-    SpecificationLoader specificationLoader;
+    @Inject SpecificationLoader specificationLoader;
     @Inject ApplicationFeatureFactory applicationFeatureFactory;
 
     private _Lazy<List<ManagedBeanAdapter>> registeredServices = _Lazy.threadSafe(()->{
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
index 625fe1c..80426c6 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUser.java
@@ -159,7 +159,9 @@ org.apache.isis.extensions.secman.api.user.ApplicationUser {
         return getName();
     }
 
-
+    public String iconName() {
+        return getStatus().isEnabled() ? "enabled" : "disabled"; 
+    }
 
     // -- name (derived property)
 
diff --git a/extensions/security/secman/persistence-jdo/src/main/resources/images/ApplicationUser-disabled.png b/extensions/security/secman/persistence-jdo/src/main/resources/images/ApplicationUser-disabled.png
new file mode 100644
index 0000000..759cc85
Binary files /dev/null and b/extensions/security/secman/persistence-jdo/src/main/resources/images/ApplicationUser-disabled.png differ
diff --git a/extensions/security/secman/persistence-jdo/src/main/resources/images/ApplicationUser.png b/extensions/security/secman/persistence-jdo/src/main/resources/images/ApplicationUser-enabled.png
similarity index 100%
rename from extensions/security/secman/persistence-jdo/src/main/resources/images/ApplicationUser.png
rename to extensions/security/secman/persistence-jdo/src/main/resources/images/ApplicationUser-enabled.png