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/09/17 08:32:52 UTC
[isis] 01/02: ISIS-2432: SecMan Entities: move title() methods from
concrete classes to api
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 7a4948e3754096ddd679d7c940f565074b43ba94
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 17 09:18:50 2020 +0200
ISIS-2432: SecMan Entities: move title() methods from concrete classes
to api
---
.../api/permission/ApplicationPermission.java | 52 ++++++++++++++++++++++
.../secman/api/role/ApplicationRole.java | 8 ++++
.../secman/api/tenancy/ApplicationTenancy.java | 4 ++
.../secman/api/user/ApplicationUser.java | 12 +++++
.../jdo/dom/permission/ApplicationPermission.java | 46 -------------------
.../secman/jdo/dom/role/ApplicationRole.java | 9 ----
.../secman/jdo/dom/tenancy/ApplicationTenancy.java | 1 -
.../secman/jdo/dom/user/ApplicationUser.java | 14 ------
8 files changed, 76 insertions(+), 70 deletions(-)
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
index f2bc566..a03ddb2 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/ApplicationPermission.java
@@ -18,10 +18,16 @@
*/
package org.apache.isis.extensions.secman.api.permission;
+import java.util.Optional;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureId;
import org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureType;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
import org.apache.isis.extensions.secman.api.role.ApplicationRole;
+import lombok.val;
+
public interface ApplicationPermission {
// -- DOMAIN EVENTS
@@ -39,6 +45,44 @@ public interface ApplicationPermission {
// -- MODEL
+ /**
+ * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
+ * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
+ */
+ default String title() {
+ val buf = new StringBuilder();
+ buf.append(getRole().getName()).append(":") // admin:
+ .append(" ").append(getRule().toString()) // Allow|Veto
+ .append(" ").append(getMode().toString()) // Viewing|Changing
+ .append(" of ");
+
+ createFeatureId()
+ .ifPresent(featureId->{
+
+ switch (featureId.getType()) {
+ case PACKAGE:
+ buf.append(getFeatureFqn()); // com.mycompany
+ break;
+ case CLASS:
+ // abbreviate if required because otherwise title overflows on action prompt.
+ if(getFeatureFqn().length() < 30) {
+ buf.append(getFeatureFqn()); // com.mycompany.Bar
+ } else {
+ buf.append(featureId.getClassName()); // Bar
+ }
+ break;
+ case MEMBER:
+ buf.append(featureId.getClassName())
+ .append("#")
+ .append(featureId.getMemberName()); // com.mycompany.Bar#foo
+ break;
+ }
+
+ });
+
+ return buf.toString();
+ }
+
ApplicationFeatureType getFeatureType();
String getFeatureFqn();
@@ -52,5 +96,13 @@ public interface ApplicationPermission {
ApplicationRole getRole();
void setRole(ApplicationRole applicationRole);
+ // -- HELPER
+
+ @Programmatic
+ default Optional<ApplicationFeatureId> createFeatureId() {
+ return Optional.of(getFeatureType())
+ .map(featureType -> ApplicationFeatureId.newFeature(featureType, getFeatureFqn()));
+ }
+
}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRole.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRole.java
index 92cb103..890156e 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRole.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/ApplicationRole.java
@@ -48,6 +48,14 @@ public interface ApplicationRole {
// -- MODEL
+ /**
+ * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
+ * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
+ */
+ default String title() {
+ return getName();
+ }
+
String getName();
void setName(String name);
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancy.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancy.java
index 6a94fbe..591c7da 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancy.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/ApplicationTenancy.java
@@ -42,6 +42,10 @@ public interface ApplicationTenancy {
// -- MODEL
+ default String title() {
+ return getName();
+ }
+
public String getPath();
public String getName();
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
index c846e3e..c27a06a 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/ApplicationUser.java
@@ -64,6 +64,18 @@ public interface ApplicationUser extends HasUsername, HasAtPath {
// -- MODEL
+ /**
+ * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
+ * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
+ */
+ default String title() {
+ return getName();
+ }
+
+ default String iconName() {
+ return getStatus().isEnabled() ? "enabled" : "disabled";
+ }
+
String getName();
String getEncryptedPassword();
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
index 3dcc37e..ad24fbc 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/permission/ApplicationPermission.java
@@ -149,45 +149,6 @@ public class ApplicationPermission implements org.apache.isis.extensions.secman.
private static final int TYPICAL_LENGTH_TYPE = 7; // ApplicationFeatureType.PACKAGE is longest
- // -- identification
- /**
- * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
- * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
- */
- public String title() {
- final StringBuilder buf = new StringBuilder();
- buf.append(getRole().getName()).append(":") // admin:
- .append(" ").append(getRule().toString()) // Allow|Veto
- .append(" ").append(getMode().toString()) // Viewing|Changing
- .append(" of ");
-
- createFeatureId()
- .ifPresent(featureId->{
-
- switch (featureId.getType()) {
- case PACKAGE:
- buf.append(getFeatureFqn()); // com.mycompany
- break;
- case CLASS:
- // abbreviate if required because otherwise title overflows on action prompt.
- if(getFeatureFqn().length() < 30) {
- buf.append(getFeatureFqn()); // com.mycompany.Bar
- } else {
- buf.append(featureId.getClassName()); // Bar
- }
- break;
- case MEMBER:
- buf.append(featureId.getClassName())
- .append("#")
- .append(featureId.getMemberName()); // com.mycompany.Bar#foo
- break;
- }
-
- });
-
- return buf.toString();
- }
-
// -- role (property)
@@ -242,18 +203,11 @@ public class ApplicationPermission implements org.apache.isis.extensions.secman.
// -- featureId (derived property)
- private Optional<ApplicationFeatureId> createFeatureId() {
- return Optional.of(getFeatureType())
- .map(featureType -> ApplicationFeatureId.newFeature(featureType, getFeatureFqn()));
- }
-
private Optional<ApplicationFeature> getFeature() {
return createFeatureId()
.map(featureId -> applicationFeatureRepository.findFeature(featureId));
}
-
-
// region > type (derived, memberType of associated feature)
public static class TypeDomainEvent extends PropertyDomainEvent<String> {}
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 d7a366d..182cbf3 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
@@ -93,15 +93,6 @@ implements org.apache.isis.extensions.secman.api.role.ApplicationRole, Comparabl
@Inject private ApplicationFeatureRepository applicationFeatureRepository;
@Inject private ApplicationPermissionRepository applicationPermissionRepository;
- // -- identification
- /**
- * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
- * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
- */
- public String title() {
- return getName();
- }
-
// -- name (property)
public static class NameDomainEvent extends PropertyDomainEvent<String> {}
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
index 99f6ab4..fd60f3b 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/tenancy/ApplicationTenancy.java
@@ -93,7 +93,6 @@ org.apache.isis.extensions.secman.api.tenancy.ApplicationTenancy {
public static class NameDomainEvent extends PropertyDomainEvent<String> {}
@javax.jdo.annotations.Column(allowsNull="false", length = MAX_LENGTH_NAME)
- @Title
@Property(
domainEvent = NameDomainEvent.class,
editing = Editing.DISABLED
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 70bccee..0e0daca 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
@@ -138,20 +138,6 @@ org.apache.isis.extensions.secman.api.user.ApplicationUser {
*/
@Inject private PermissionsEvaluationService permissionsEvaluationService;
@Inject private SecurityModuleConfig configBean;
-
- // -- identification
-
- /**
- * having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use
- * wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
- */
- public String title() {
- return getName();
- }
-
- public String iconName() {
- return getStatus().isEnabled() ? "enabled" : "disabled";
- }
// -- name (derived property)