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/15 14:24:43 UTC

[isis] branch master updated: ISIS-2480: fixes provisioning issues

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 8c9e009  ISIS-2480: fixes provisioning issues
8c9e009 is described below

commit 8c9e00957ba93a87e0a44065120bfa52cd98a24a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jan 15 15:24:27 2021 +0100

    ISIS-2480: fixes provisioning issues
---
 .../jpa/IsisModuleExtSecmanPersistenceJpa.java     | 41 +++++++++++++++++++---
 .../jpa/dom/permission/ApplicationPermission.java  | 21 ++++++++---
 .../ApplicationPermissionRepository.java           |  4 +--
 .../secman/jpa/dom/role/ApplicationRole.java       | 16 ++++++---
 .../jpa/dom/role/ApplicationRoleRepository.java    |  4 +--
 .../secman/jpa/dom/tenancy/ApplicationTenancy.java |  9 +++--
 .../dom/tenancy/ApplicationTenancyRepository.java  |  4 +--
 .../secman/jpa/dom/user/ApplicationUser.java       | 18 ++++++----
 .../jpa/dom/user/ApplicationUserRepository.java    |  4 +--
 9 files changed, 90 insertions(+), 31 deletions(-)

diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/IsisModuleExtSecmanPersistenceJpa.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/IsisModuleExtSecmanPersistenceJpa.java
index 006bfab..649bd18 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/IsisModuleExtSecmanPersistenceJpa.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/IsisModuleExtSecmanPersistenceJpa.java
@@ -18,14 +18,45 @@
  */
 package org.apache.isis.extensions.secman.jpa;
 
-import org.springframework.context.annotation.ComponentScan;
+import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.extensions.secman.jpa.dom.permission.ApplicationPermission;
+import org.apache.isis.extensions.secman.jpa.dom.permission.ApplicationPermissionRepository;
+import org.apache.isis.extensions.secman.jpa.dom.role.ApplicationRole;
+import org.apache.isis.extensions.secman.jpa.dom.role.ApplicationRoleRepository;
+import org.apache.isis.extensions.secman.jpa.dom.tenancy.ApplicationTenancy;
+import org.apache.isis.extensions.secman.jpa.dom.tenancy.ApplicationTenancyRepository;
+import org.apache.isis.extensions.secman.jpa.dom.user.ApplicationUser;
+import org.apache.isis.extensions.secman.jpa.dom.user.ApplicationUserRepository;
+import org.apache.isis.extensions.secman.jpa.seed.SeedSecurityModuleService;
 
 @Configuration
-@ComponentScan(
-        basePackageClasses= {
-                IsisModuleExtSecmanPersistenceJpa.class
-        })
+@Import({
+    ApplicationPermissionRepository.class,
+    ApplicationRoleRepository.class,
+    ApplicationTenancyRepository.class,
+    ApplicationUserRepository.class,
+
+    ApplicationPermission.class,
+    ApplicationRole.class,
+    ApplicationTenancy.class,
+    ApplicationUser.class,
+
+    SeedSecurityModuleService.class,
+
+})
+//@ComponentScan(
+//        basePackageClasses= {
+//                IsisModuleExtSecmanPersistenceJpa.class
+//        })
+@EntityScan(basePackageClasses = {
+        ApplicationPermission.class,
+        ApplicationRole.class,
+        ApplicationTenancy.class,
+        ApplicationUser.class,
+})
 public class IsisModuleExtSecmanPersistenceJpa {
 
 }
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
index 46f05f6..fd409c7 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermission.java
@@ -26,6 +26,9 @@ import java.util.function.Function;
 import javax.inject.Inject;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
 
 import org.apache.isis.applib.annotation.BookmarkPolicy;
 import org.apache.isis.applib.annotation.DomainObject;
@@ -110,17 +113,25 @@ import lombok.experimental.UtilityClass;
 @DomainObjectLayout(
         bookmarking = BookmarkPolicy.AS_CHILD
         )
-public class ApplicationPermission implements org.apache.isis.extensions.secman.api.permission.ApplicationPermission, Comparable<ApplicationPermission> {
+public class ApplicationPermission 
+implements 
+    org.apache.isis.extensions.secman.api.permission.ApplicationPermission, 
+    Comparable<ApplicationPermission> {
 
     private static final int TYPICAL_LENGTH_TYPE = 7;  // ApplicationFeatureType.PACKAGE is longest
-
-
+    
+    @Inject private transient ApplicationFeatureRepositoryDefault applicationFeatureRepository;
+    
+    @Id
+    @GeneratedValue
+    private Long id;
+    
     // -- role (property)
 
     public static class RoleDomainEvent extends PropertyDomainEvent<ApplicationRole> {}
 
 
-    @Column(name="roleId", nullable=false)
+    @JoinColumn(name="roleId", nullable=false)
     @Property(
             domainEvent = RoleDomainEvent.class,
             editing = Editing.DISABLED
@@ -303,6 +314,6 @@ public class ApplicationPermission implements org.apache.isis.extensions.secman.
 
     }
 
-    @Inject private ApplicationFeatureRepositoryDefault applicationFeatureRepository;
+    
 
 }
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermissionRepository.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermissionRepository.java
index f7a6d4d..378d569 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermissionRepository.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/permission/ApplicationPermissionRepository.java
@@ -27,7 +27,7 @@ import java.util.stream.Collectors;
 import javax.inject.Inject;
 import javax.inject.Named;
 
-import org.springframework.stereotype.Repository;
+import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
@@ -55,7 +55,7 @@ import org.apache.isis.extensions.secman.jpa.dom.user.ApplicationUser;
 import lombok.NonNull;
 import lombok.val;
 
-@Repository
+@Service
 @Named("isisExtSecman.applicationPermissionRepository")
 public class ApplicationPermissionRepository
 implements org.apache.isis.extensions.secman.api.permission.ApplicationPermissionRepository<ApplicationPermission> {
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRole.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRole.java
index 1eefafb..6d78d30 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRole.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRole.java
@@ -26,6 +26,8 @@ import java.util.TreeSet;
 import javax.inject.Inject;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
 import javax.persistence.ManyToMany;
 
 import org.apache.isis.applib.annotation.BookmarkPolicy;
@@ -89,10 +91,16 @@ import lombok.Setter;
         bookmarking = BookmarkPolicy.AS_ROOT
         )
 public class ApplicationRole 
-implements org.apache.isis.extensions.secman.api.role.ApplicationRole, Comparable<ApplicationRole> {
+implements 
+    org.apache.isis.extensions.secman.api.role.ApplicationRole, 
+    Comparable<ApplicationRole> {
 
-    @Inject private ApplicationFeatureRepository applicationFeatureRepository;
-    @Inject private ApplicationPermissionRepository applicationPermissionRepository;
+    @Inject private transient ApplicationFeatureRepository applicationFeatureRepository;
+    @Inject private transient ApplicationPermissionRepository applicationPermissionRepository;
+    
+    @Id
+    @GeneratedValue
+    private Long id;
     
     // -- name (property)
 
@@ -166,7 +174,7 @@ implements org.apache.isis.extensions.secman.api.role.ApplicationRole, Comparabl
 
     public static class UsersDomainEvent extends CollectionDomainEvent<ApplicationUser> {}
 
-    @ManyToMany(mappedBy = "roles")
+    @ManyToMany
     @Collection(
             domainEvent = UsersDomainEvent.class,
             editing = Editing.DISABLED
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRoleRepository.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRoleRepository.java
index d01e0ac..624d212 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRoleRepository.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRoleRepository.java
@@ -26,7 +26,7 @@ import java.util.Optional;
 import javax.inject.Inject;
 import javax.inject.Named;
 
-import org.springframework.stereotype.Repository;
+import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.services.factory.FactoryService;
@@ -40,7 +40,7 @@ import org.apache.isis.extensions.secman.model.dom.permission.ApplicationPermiss
 
 import lombok.val;
 
-@Repository
+@Service
 @Named("isisExtSecman.applicationRoleRepository")
 public class ApplicationRoleRepository 
 implements org.apache.isis.extensions.secman.api.role.ApplicationRoleRepository<ApplicationRole> {
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/tenancy/ApplicationTenancy.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/tenancy/ApplicationTenancy.java
index 2b9c185..f5c83c7 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/tenancy/ApplicationTenancy.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/tenancy/ApplicationTenancy.java
@@ -25,6 +25,7 @@ import java.util.TreeSet;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
 import javax.persistence.OneToMany;
 
 import org.apache.isis.applib.annotation.BookmarkPolicy;
@@ -85,8 +86,10 @@ import lombok.Setter;
 @DomainObjectLayout(
         bookmarking = BookmarkPolicy.AS_ROOT
         )
-public class ApplicationTenancy implements Comparable<ApplicationTenancy>,
-org.apache.isis.extensions.secman.api.tenancy.ApplicationTenancy {
+public class ApplicationTenancy 
+implements 
+    Comparable<ApplicationTenancy>,
+    org.apache.isis.extensions.secman.api.tenancy.ApplicationTenancy {
 
     // -- name (property, title)
 
@@ -125,7 +128,7 @@ org.apache.isis.extensions.secman.api.tenancy.ApplicationTenancy {
     public static class ParentDomainEvent extends PropertyDomainEvent<ApplicationTenancy> {}
 
 
-    @Column(name="parentPath", nullable=true)
+    @JoinColumn(name="parentPath", nullable=true)
     @Property(
             domainEvent = ParentDomainEvent.class,
             editing = Editing.DISABLED
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/tenancy/ApplicationTenancyRepository.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/tenancy/ApplicationTenancyRepository.java
index b07b476..ba02450 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/tenancy/ApplicationTenancyRepository.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/tenancy/ApplicationTenancyRepository.java
@@ -25,7 +25,7 @@ import java.util.concurrent.Callable;
 import javax.inject.Inject;
 import javax.inject.Named;
 
-import org.springframework.stereotype.Repository;
+import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.services.factory.FactoryService;
@@ -38,7 +38,7 @@ import org.apache.isis.extensions.secman.jpa.dom.user.ApplicationUser;
 import lombok.NonNull;
 import lombok.val;
 
-@Repository
+@Service
 @Named("isisExtSecman.applicationTenancyRepository")
 public class ApplicationTenancyRepository 
 implements org.apache.isis.extensions.secman.api.tenancy.ApplicationTenancyRepository<ApplicationTenancy> {
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.java
index 91a07c7..0d21e93 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.java
@@ -26,6 +26,8 @@ import java.util.TreeSet;
 import javax.inject.Inject;
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.JoinTable;
 import javax.persistence.ManyToMany;
@@ -124,18 +126,22 @@ import lombok.val;
 public class ApplicationUser implements Comparable<ApplicationUser>, 
 org.apache.isis.extensions.secman.api.user.ApplicationUser {
 
-    @Inject private ApplicationUserRepository applicationUserRepository;
-    @Inject private ApplicationPermissionRepository applicationPermissionRepository;
-    @Inject private UserService userService;
+    @Inject private transient ApplicationUserRepository applicationUserRepository;
+    @Inject private transient ApplicationPermissionRepository applicationPermissionRepository;
+    @Inject private transient UserService userService;
     /**
      * Optional service, if configured then is used to evaluate permissions within
      * {@link org.apache.isis.extensions.secman.api.permission.ApplicationPermissionValueSet#evaluate(ApplicationFeatureId, ApplicationPermissionMode)}
      * else will fallback to a {@link org.apache.isis.extensions.secman.api.permission.PermissionsEvaluationService#DEFAULT default}
      * implementation.
      */
-    @Inject private PermissionsEvaluationService permissionsEvaluationService;
-    @Inject private SecurityModuleConfig configBean;
+    @Inject private transient PermissionsEvaluationService permissionsEvaluationService;
+    @Inject private transient SecurityModuleConfig configBean;
 
+    @Id
+    @GeneratedValue
+    private Long id;
+    
     // -- name (derived property)
 
     public static class NameDomainEvent extends PropertyDomainEvent<String> {}
@@ -364,7 +370,7 @@ org.apache.isis.extensions.secman.api.user.ApplicationUser {
 //    @javax.jdo.annotations.Persistent(table="ApplicationUserRoles")
 //    @javax.jdo.annotations.Join(column="userId")
 //    @javax.jdo.annotations.Element(column="roleId")
-    @ManyToMany(mappedBy = "roles")
+    @ManyToMany(mappedBy = "users")
     @JoinTable(
             name = "ApplicationUserRoles", 
             joinColumns = {@JoinColumn(name = "userId")}, 
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserRepository.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserRepository.java
index ae185d7..0d3f7d9 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserRepository.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUserRepository.java
@@ -27,7 +27,7 @@ import javax.annotation.Nullable;
 import javax.inject.Inject;
 import javax.inject.Named;
 
-import org.springframework.stereotype.Repository;
+import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.services.eventbus.EventBusService;
@@ -51,7 +51,7 @@ import org.apache.isis.extensions.secman.model.dom.user.ApplicationUser_unlock;
 import lombok.NonNull;
 import lombok.val;
 
-@Repository
+@Service
 @Named("isisExtSecman.applicationUserRepository")
 public class ApplicationUserRepository
 implements org.apache.isis.extensions.secman.api.user.ApplicationUserRepository<ApplicationUser> {