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)