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) {