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/04/20 15:13:42 UTC

[isis] branch master updated: ISIS-2562: SecMan: provide all-user table content via mixin;

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 80ba24d  ISIS-2562: SecMan: provide all-user table content via mixin;
80ba24d is described below

commit 80ba24d2f1d76ce8618f2c040dd2aea6c56a06ab
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Apr 20 17:13:15 2021 +0200

    ISIS-2562: SecMan: provide all-user table content via mixin;
    
    allows the framework to recognize the concrete entity types and hence
    properly render the tables in the UI
---
 .../model/dom/user/ApplicationUserManager.java     | 18 ++++------
 ...r.java => ApplicationUserManager_allUsers.java} | 37 +++++++++----------
 .../dom/user/ApplicationUserManager_allUsers.java  | 41 ++++++++++++++++++++++
 .../ApplicationUserManager_newDelegateUser.java    |  6 ++--
 .../user/ApplicationUserManager_newLocalUser.java  |  7 ++--
 .../dom/user/ApplicationUserManager_allUsers.java  | 41 ++++++++++++++++++++++
 .../ApplicationUserManager_newDelegateUser.java    |  6 ++--
 .../user/ApplicationUserManager_newLocalUser.java  |  6 ++--
 8 files changed, 121 insertions(+), 41 deletions(-)

diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager.java
index 7bda584..b613f3b 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager.java
@@ -18,13 +18,8 @@
  */
 package org.apache.isis.extensions.secman.model.dom.user;
 
-import javax.inject.Inject;
-
-import org.apache.isis.applib.annotation.Collection;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
-import org.apache.isis.extensions.secman.api.user.ApplicationUser;
-import org.apache.isis.extensions.secman.api.user.ApplicationUserRepository;
 
 @DomainObject(
         nature = Nature.VIEW_MODEL,
@@ -32,15 +27,16 @@ import org.apache.isis.extensions.secman.api.user.ApplicationUserRepository;
         )
 public class ApplicationUserManager {
 
-    @Inject private ApplicationUserRepository<? extends ApplicationUser> applicationUserRepository;
+//    @Inject private ApplicationUserRepository<? extends ApplicationUser> applicationUserRepository;
 
     public String title() {
         return "ApplicationUserManager"; 
     }
-    
-    @Collection
-    public java.util.Collection<? extends ApplicationUser> getAllUsers() {
-        return applicationUserRepository.allUsers();
-    }
+
+//XXX provided via mixins, that is one specific to JPA the other specific to JDO    
+//    @Collection
+//    public java.util.Collection<? extends ApplicationUser> getAllUsers() {
+//        return applicationUserRepository.allUsers();
+//    }
     
 }
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager_allUsers.java
similarity index 59%
copy from extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager.java
copy to extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager_allUsers.java
index 7bda584..671cbda 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUserManager_allUsers.java
@@ -18,29 +18,30 @@
  */
 package org.apache.isis.extensions.secman.model.dom.user;
 
+import java.util.Collection;
+
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.extensions.secman.api.user.ApplicationUser;
 import org.apache.isis.extensions.secman.api.user.ApplicationUserRepository;
 
-@DomainObject(
-        nature = Nature.VIEW_MODEL,
-        objectType = "isis.ext.secman.ApplicationUserManager"
-        )
-public class ApplicationUserManager {
-
-    @Inject private ApplicationUserRepository<? extends ApplicationUser> applicationUserRepository;
-
-    public String title() {
-        return "ApplicationUserManager"; 
-    }
+/**
+ * @apiNote This mixin requires concrete implementations associated with JPA and JDO,
+ * since action's type parameters are inspected for their compile time types 
+ * and the ApplicationRole here is just an interface that the framework has not much 
+ * meta-model information to derive UI behavior from.
+ * 
+ * @implNote due to current limitations, both the main and its supporting methods have to be
+ * overridden with the concrete subclasses. 
+ * 
+ */
+public abstract class ApplicationUserManager_allUsers<U extends ApplicationUser> {
     
-    @Collection
-    public java.util.Collection<? extends ApplicationUser> getAllUsers() {
-        return applicationUserRepository.allUsers();
-    }
+    @Inject private ApplicationUserRepository<U> applicationUserRepository;
     
+    protected Collection<U> doColl() {
+        return applicationUserRepository.allUsers();        
+    }
+
+
 }
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_allUsers.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_allUsers.java
new file mode 100644
index 0000000..9d5be86
--- /dev/null
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_allUsers.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.extensions.secman.jdo.dom.user;
+
+import java.util.Collection;
+
+import org.apache.isis.applib.annotation.MemberSupport;
+import org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager;
+
+import lombok.RequiredArgsConstructor;
+
+@org.apache.isis.applib.annotation.Collection
+@RequiredArgsConstructor
+public class ApplicationUserManager_allUsers
+extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_allUsers<ApplicationUser>{
+    
+    @SuppressWarnings("unused")
+    private final ApplicationUserManager target;
+    
+    @MemberSupport
+    public Collection<ApplicationUser> coll() {
+        return super.doColl();        
+    }
+
+}
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_newDelegateUser.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_newDelegateUser.java
index df09a02..09cd8f1 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_newDelegateUser.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_newDelegateUser.java
@@ -37,11 +37,10 @@ import lombok.RequiredArgsConstructor;
 public class ApplicationUserManager_newDelegateUser
 extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_newDelegateUser<ApplicationRole>{
     
-    @SuppressWarnings("unused")
     private final ApplicationUserManager target;
     
     @MemberSupport
-    public ApplicationUser act(
+    public ApplicationUserManager act(
             
           @Parameter(maxLength = ApplicationUser.MAX_LENGTH_USERNAME)
           @ParameterLayout(named = "Name")
@@ -57,7 +56,8 @@ extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_
             
             ) {
         
-        return super.doAct(username, initialRole, enabled);
+        super.doAct(username, initialRole, enabled);
+        return target; 
     }
     
     @MemberSupport
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_newLocalUser.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_newLocalUser.java
index 63be89b..3aa1286 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_newLocalUser.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/dom/user/ApplicationUserManager_newLocalUser.java
@@ -38,11 +38,10 @@ import lombok.RequiredArgsConstructor;
 public class ApplicationUserManager_newLocalUser
 extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_newLocalUser<ApplicationRole> {
     
-    @SuppressWarnings("unused")
     private final ApplicationUserManager target;
     
     @MemberSupport
-    public ApplicationUser act(
+    public ApplicationUserManager act(
           @Parameter(maxLength = ApplicationUser.MAX_LENGTH_USERNAME)
           @ParameterLayout(named = "Name")
           final String username,
@@ -66,7 +65,9 @@ extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_
           @Parameter(optionality = Optionality.OPTIONAL)
           @ParameterLayout(named = "Email Address")
           final String emailAddress) {
-        return super.doAct(username, password, passwordRepeat, initialRole, enabled, emailAddress);
+        
+        super.doAct(username, password, passwordRepeat, initialRole, enabled, emailAddress);
+        return target; 
     }
     
     @MemberSupport
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_allUsers.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_allUsers.java
new file mode 100644
index 0000000..6fc9b1e
--- /dev/null
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_allUsers.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.extensions.secman.jpa.dom.user;
+
+import java.util.Collection;
+
+import org.apache.isis.applib.annotation.MemberSupport;
+import org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager;
+
+import lombok.RequiredArgsConstructor;
+
+@org.apache.isis.applib.annotation.Collection
+@RequiredArgsConstructor
+public class ApplicationUserManager_allUsers
+extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_allUsers<ApplicationUser>{
+    
+    @SuppressWarnings("unused")
+    private final ApplicationUserManager target;
+    
+    @MemberSupport
+    public Collection<ApplicationUser> coll() {
+        return super.doColl();        
+    }
+
+}
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_newDelegateUser.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_newDelegateUser.java
index eb12063..c5039d7 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_newDelegateUser.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_newDelegateUser.java
@@ -37,11 +37,10 @@ import lombok.RequiredArgsConstructor;
 public class ApplicationUserManager_newDelegateUser
 extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_newDelegateUser<ApplicationRole>{
     
-    @SuppressWarnings("unused")
     private final ApplicationUserManager target;
     
     @MemberSupport
-    public ApplicationUser act(
+    public ApplicationUserManager act(
             
           @Parameter(maxLength = ApplicationUser.MAX_LENGTH_USERNAME)
           @ParameterLayout(named = "Name")
@@ -57,7 +56,8 @@ extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_
             
             ) {
         
-        return super.doAct(username, initialRole, enabled);
+        super.doAct(username, initialRole, enabled);
+        return target;
     }
     
     @MemberSupport
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_newLocalUser.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_newLocalUser.java
index ac0173b..53b8bb0 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_newLocalUser.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserManager_newLocalUser.java
@@ -38,11 +38,10 @@ import lombok.RequiredArgsConstructor;
 public class ApplicationUserManager_newLocalUser 
 extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_newLocalUser<ApplicationRole> {
     
-    @SuppressWarnings("unused")
     private final ApplicationUserManager target;
     
     @MemberSupport
-    public ApplicationUser act(
+    public ApplicationUserManager act(
           @Parameter(maxLength = ApplicationUser.MAX_LENGTH_USERNAME)
           @ParameterLayout(named = "Name")
           final String username,
@@ -66,7 +65,8 @@ extends org.apache.isis.extensions.secman.model.dom.user.ApplicationUserManager_
           @Parameter(optionality = Optionality.OPTIONAL)
           @ParameterLayout(named = "Email Address")
           final String emailAddress) {
-        return super.doAct(username, password, passwordRepeat, initialRole, enabled, emailAddress);
+        super.doAct(username, password, passwordRepeat, initialRole, enabled, emailAddress);
+        return target;
     }
     
     @MemberSupport