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

[isis] branch master updated: ISIS-2431: semantic change of app feature#package

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 b08cba5  ISIS-2431: semantic change of app feature#package
b08cba5 is described below

commit b08cba52a919916942f57b35c235dcbd1ed872b0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 26 19:31:13 2021 +0100

    ISIS-2431: semantic change of app feature#package
    
    switch package names to mean logical namespaces
    
    also exclude mixin types from app features, these are implicitly mapped
    through object member ids
---
 .../isis/applib/services/user/RoleMemento.java     |  2 ++
 .../isis/applib/services/user/UserMemento.java     |  2 ++
 .../services/appfeat/ApplicationFeatureId.java     | 28 +++++++++++-------
 .../ApplicationFeatureRepositoryDefault.java       |  9 +++---
 .../services/appfeat/ApplicationFeatureType.java   | 15 ++++++++++
 .../model/app/user/UserPermissionViewModel.java    | 34 +++++++++++-----------
 6 files changed, 58 insertions(+), 32 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
index 32de23c..e07a8e2 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/RoleMemento.java
@@ -20,6 +20,7 @@ package org.apache.isis.applib.services.user;
 
 import java.io.Serializable;
 
+import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.MemberOrder;
 
 import lombok.Getter;
@@ -29,6 +30,7 @@ import lombok.Value;
  * Immutable serializable value held by {@link UserMemento}.  
  * @since 2.0 {@index}
  */
+@DomainObject(objectType = "isisApplib.RoleMemento")
 @Value
 public final class RoleMemento implements Serializable {
 
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
index 9db8a35..54e14a4 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/UserMemento.java
@@ -25,6 +25,7 @@ import java.util.stream.Stream;
 
 import javax.annotation.Nullable;
 
+import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
@@ -36,6 +37,7 @@ import lombok.NonNull;
  * Immutable serializable value holding details about a user and its roles.
  * @since 1.x revised in 2.0 {@index}
  */
+@DomainObject(objectType = "isisApplib.UserMemento")
 public final class UserMemento implements Serializable {
     
     private static final long serialVersionUID = 7190090455587885367L;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
index 2630d22..bd11527 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
@@ -44,17 +44,16 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecId;
 
 /**
  * Value type representing a package, class or member.
- *
  * <p>
- *     This value is {@link Comparable}, the implementation of which considers {@link #getType() (feature) type},
- *     {@link #getPackageName() package name}, {@link #getClassName() class name} and {@link #getMemberName() member name}.
- * </p>
+ * This value is {@link Comparable}, the implementation of which considers 
+ * {@link #getType() (feature) type}, {@link #getPackageName() package name}, 
+ * {@link #getClassName() class name} and {@link #getMemberName() member name}.
  */
 @Value
-public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, Serializable {
-
-
-    // //////////////////////////////////////
+public class ApplicationFeatureId 
+implements
+    Comparable<ApplicationFeatureId>, 
+    Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -65,7 +64,10 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
 
     // -- factory methods
 
-    public static ApplicationFeatureId newFeature(final ApplicationFeatureType featureType, final String fullyQualifiedName) {
+    public static ApplicationFeatureId newFeature(
+            final ApplicationFeatureType featureType, 
+            final String fullyQualifiedName) {
+        
         switch (featureType) {
         case PACKAGE:
             return newPackage(fullyQualifiedName);
@@ -78,7 +80,9 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
     }
 
     public static ApplicationFeatureId newFeature(
-            final String packageFqn, final String className, final String memberName) {
+            final String packageFqn, 
+            final String className,
+            final String memberName) {
         if(className == null) {
             return newPackage(packageFqn);
         }
@@ -221,11 +225,13 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
     // -- packageName (property)
     private String packageName;
 
+    /** @deprecated with v2.0.0-M5 semantics changed: should be renamed to getNamespace() */
     @Programmatic
     public String getPackageName() {
         return packageName;
     }
 
+    /** @deprecated with v2.0.0-M5 semantics changed: should be renamed to setNamespace() */
     void setPackageName(final String packageName) {
         this.packageName = packageName;
     }
@@ -237,11 +243,13 @@ public class ApplicationFeatureId implements Comparable<ApplicationFeatureId>, S
 
     private String className;
 
+    /** @deprecated with v2.0.0-M5 semantics changed: should be renamed to getTypeSimpleName() */
     @Programmatic
     public String getClassName() {
         return className;
     }
 
+    /** @deprecated with v2.0.0-M5 semantics changed: should be renamed to setTypeSimpleName() */
     void setClassName(final String className) {
         this.className = className;
     }
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 a69e7e0..fe6c5fc 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
@@ -138,8 +138,8 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
             return;
         }
 
-        final String fullIdentifier = spec.getFullIdentifier();
-        final ApplicationFeatureId classFeatureId = ApplicationFeatureId.newClass(fullIdentifier);
+        final String specIdString = spec.getSpecId().asString();
+        final ApplicationFeatureId classFeatureId = ApplicationFeatureId.newClass(specIdString);
 
         // add class to our map
         // (later on it may get removed if the class turns out to have no features,
@@ -174,7 +174,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
         }
 
         // leave the class as is and (as there were indeed members for this class)
-        // and add all of its parent packages
+        // add all of its parent packages
         final ApplicationFeatureId classParentPackageId = addClassParent(classFeatureId);
         addParents(classParentPackageId);
         
@@ -195,7 +195,6 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
 
     ApplicationFeatureId addClassParent(final ApplicationFeatureId classFeatureId) {
         final ApplicationFeatureId parentPackageId = classFeatureId.getParentPackageId();
-
         final ApplicationFeature parentPackage = findPackageElseCreate(parentPackageId);
 
         parentPackage.addToContents(classFeatureId);
@@ -321,7 +320,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
 
     protected boolean exclude(final ObjectSpecification spec) {
 
-        val excluded = spec.isAbstract() ||
+        val excluded = spec.isMixin() || spec.isAbstract() ||
                 spec.getBeanSort().isUnknown() ||
                 isBuiltIn(spec) ||
                 isHidden(spec);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureType.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureType.java
index 0c51d83..9b1f671 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureType.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureType.java
@@ -21,6 +21,12 @@ package org.apache.isis.core.metamodel.services.appfeat;
 import org.apache.isis.core.metamodel.commons.StringExtensions;
 
 public enum ApplicationFeatureType {
+    
+    /** 
+     * {@code namespace + "." + typeSimpleName} make up the fully qualified logical type name
+     * 
+     * @deprecated with v2.0.0-M5 semantics changed: should be renamed to NAMESPACE
+     */
     PACKAGE {
         @Override
         void init(final ApplicationFeatureId feature, final String fullyQualifiedName) {
@@ -30,6 +36,10 @@ public enum ApplicationFeatureType {
             feature.type = this;
         }
     },
+    
+    /** 
+     * {@code namespace + "." + typeSimpleName} make up the fully qualified logical type name
+     */
     CLASS {
         @Override
         void init(final ApplicationFeatureId feature, final String fullyQualifiedName) {
@@ -45,6 +55,11 @@ public enum ApplicationFeatureType {
             feature.type = this;
         }
     },
+    
+    /** 
+     * {@code namespace + "." + typeSimpleName + "." + memberName} 
+     * make up the fully qualified logical member name
+     */
     MEMBER {
         @Override
         void init(final ApplicationFeatureId feature, final String fullyQualifiedName) {
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/UserPermissionViewModel.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/UserPermissionViewModel.java
index ec6da23..c714053 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/UserPermissionViewModel.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/app/user/UserPermissionViewModel.java
@@ -146,23 +146,23 @@ public class UserPermissionViewModel implements ViewModel {
         final ApplicationFeatureId changingEvaluationCauseFeatureId = changingEvaluationCause != null? changingEvaluationCause.getFeatureId(): null;
 
         return join(
-                username, 
-
-                viewingEvaluationGranted,
-                viewingEvaluationCauseFeatureId != null? viewingEvaluationCauseFeatureId.getType(): "",
-                        viewingEvaluationCauseFeatureId != null? viewingEvaluationCauseFeatureId.getFullyQualifiedName(): "",
-                                viewingEvaluationCause != null? viewingEvaluationCause.getRule(): "",
-                                        viewingEvaluationCause != null? viewingEvaluationCause.getMode(): "",
-
-                                                changingEvaluationGranted,
-                                                changingEvaluationCauseFeatureId != null? changingEvaluationCauseFeatureId.getType(): "",
-                                                        changingEvaluationCauseFeatureId != null? changingEvaluationCauseFeatureId.getFullyQualifiedName(): "",
-                                                                changingEvaluationCause != null? changingEvaluationCause.getRule(): "",
-                                                                        changingEvaluationCause != null? changingEvaluationCause.getMode(): "",
-
-                                                                                featureId.getType(), 
-                                                                                featureId.getFullyQualifiedName()
-                );
+        username, 
+        
+        viewingEvaluationGranted,
+        viewingEvaluationCauseFeatureId != null? viewingEvaluationCauseFeatureId.getType(): "",
+        viewingEvaluationCauseFeatureId != null? viewingEvaluationCauseFeatureId.getFullyQualifiedName(): "",
+        viewingEvaluationCause != null? viewingEvaluationCause.getRule(): "",
+        viewingEvaluationCause != null? viewingEvaluationCause.getMode(): "",
+        
+        changingEvaluationGranted,
+        changingEvaluationCauseFeatureId != null? changingEvaluationCauseFeatureId.getType(): "",
+        changingEvaluationCauseFeatureId != null? changingEvaluationCauseFeatureId.getFullyQualifiedName(): "",
+        changingEvaluationCause != null? changingEvaluationCause.getRule(): "",
+        changingEvaluationCause != null? changingEvaluationCause.getMode(): "",
+        
+        featureId.getType(), 
+        featureId.getFullyQualifiedName()
+        );
     }
 
     private static String join(Object ... args) {