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