You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/05/24 14:23:38 UTC
[isis] 01/05: ISIS-2614: converts api.ApplicationRole from
interface to an abstract class
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-2614
in repository https://gitbox.apache.org/repos/asf/isis.git
commit b3b6f6942001e08e1058849533e776d0b7167b25
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon May 24 14:24:21 2021 +0100
ISIS-2614: converts api.ApplicationRole from interface to an abstract class
---
.../dom/ApplicationPermissionRepository.java | 2 +
.../secman/api/role/dom/ApplicationRole.java | 98 ++++++++++++++++------
.../role/dom/ApplicationRole.layout.fallback.xml | 0
.../secman/jdo/role/dom/ApplicationRole.java | 47 +----------
.../role/dom/ApplicationRole.layout.fallback.xml | 67 ---------------
.../secman/jpa/role/dom/ApplicationRole.java | 57 ++-----------
6 files changed, 85 insertions(+), 186 deletions(-)
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/ApplicationPermissionRepository.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/ApplicationPermissionRepository.java
index 043dbea..8066f82 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/ApplicationPermissionRepository.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/ApplicationPermissionRepository.java
@@ -87,4 +87,6 @@ public interface ApplicationPermissionRepository {
String featureFqn);
List<ApplicationPermission> findByUser(ApplicationUser applicationUser);
+
+ List<ApplicationPermission> findByRole(ApplicationRole applicationRole);
}
diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/ApplicationRole.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/ApplicationRole.java
index e2a972c..1d4b7ed 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/ApplicationRole.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/ApplicationRole.java
@@ -22,9 +22,12 @@ import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import java.util.Comparator;
import java.util.List;
import java.util.Set;
+import javax.inject.Inject;
+
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.DomainObject;
@@ -34,8 +37,13 @@ import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.util.Equality;
+import org.apache.isis.applib.util.Hashing;
+import org.apache.isis.applib.util.ObjectContracts;
+import org.apache.isis.applib.util.ToString;
import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission;
+import org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermissionRepository;
import org.apache.isis.extensions.secman.api.user.dom.ApplicationUser;
/**
@@ -44,30 +52,29 @@ import org.apache.isis.extensions.secman.api.user.dom.ApplicationUser;
@DomainObject(
objectType = ApplicationRole.OBJECT_TYPE
)
-public interface ApplicationRole extends Comparable<ApplicationRole> {
+public abstract class ApplicationRole implements Comparable<ApplicationRole> {
+
+ public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationRole";
- String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationRole";
+ public static final String NAMED_QUERY_FIND_BY_NAME = "ApplicationRole.findByName";
+ public static final String NAMED_QUERY_FIND_BY_NAME_CONTAINING = "ApplicationRole.findByNameContaining";
- String NAMED_QUERY_FIND_BY_NAME = "ApplicationRole.findByName";
- String NAMED_QUERY_FIND_BY_NAME_CONTAINING = "ApplicationRole.findByNameContaining";
+ @Inject transient private ApplicationPermissionRepository applicationPermissionRepository;
// -- EVENTS
- abstract class PropertyDomainEvent<T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationRole, T> {}
- abstract class CollectionDomainEvent<T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationRole, T> {}
+ public static abstract class PropertyDomainEvent<T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationRole, T> {}
+ public static abstract class CollectionDomainEvent<T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationRole, T> {}
// -- 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() {
+ public String title() {
return getName();
}
+
// -- NAME
@Property(
@@ -89,16 +96,16 @@ public interface ApplicationRole extends Comparable<ApplicationRole> {
)
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
- @interface Name {
+ public @interface Name {
int MAX_LENGTH = 120;
int TYPICAL_LENGTH = 30;
- class DomainEvent extends PropertyDomainEvent<String> {}
+ public static class DomainEvent extends PropertyDomainEvent<String> {}
}
@Name
- String getName();
- void setName(String name);
+ public abstract String getName();
+ public abstract void setName(String name);
// -- DESCRIPTION
@@ -125,16 +132,16 @@ public interface ApplicationRole extends Comparable<ApplicationRole> {
)
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
- @interface Description {
+ public @interface Description {
int MAX_LENGTH = 254;
int TYPICAL_LENGTH = 50;
- class DomainEvent extends PropertyDomainEvent<String> {}
+ public class DomainEvent extends PropertyDomainEvent<String> {}
}
@Description
- String getDescription();
- void setDescription(String description);
+ public abstract String getDescription();
+ public abstract void setDescription(String description);
// -- USERS
@@ -148,12 +155,12 @@ public interface ApplicationRole extends Comparable<ApplicationRole> {
)
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
- @interface Users {
- class DomainEvent extends CollectionDomainEvent<ApplicationUser> {}
+ public @interface Users {
+ public static class DomainEvent extends CollectionDomainEvent<ApplicationUser> {}
}
@Users
- Set<ApplicationUser> getUsers();
+ public abstract Set<ApplicationUser> getUsers();
// -- PERMISSIONS
@@ -168,11 +175,52 @@ public interface ApplicationRole extends Comparable<ApplicationRole> {
)
@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
- @interface Permissions {
- class DomainEvent extends CollectionDomainEvent<ApplicationPermission> {}
+ public @interface Permissions {
+ public static class DomainEvent extends CollectionDomainEvent<ApplicationPermission> {}
}
+
+ // -- PERMISSIONS
+
@Permissions
- List<ApplicationPermission> getPermissions();
+ public List<org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission> getPermissions() {
+ return applicationPermissionRepository.findByRole(this);
+ }
+
+
+ // -- equals, hashCode, compareTo, toString
+
+ private static final Comparator<ApplicationRole> comparator =
+ Comparator.comparing(ApplicationRole::getName);
+
+ private static final Equality<ApplicationRole> equality =
+ ObjectContracts.checkEquals(ApplicationRole::getName);
+
+ private static final Hashing<ApplicationRole> hashing =
+ ObjectContracts.hashing(ApplicationRole::getName);
+
+ private static final ToString<ApplicationRole> toString =
+ ObjectContracts.toString("name", ApplicationRole::getName);
+
+
+ @Override
+ public int compareTo(final org.apache.isis.extensions.secman.api.role.dom.ApplicationRole other) {
+ return comparator.compare(this, (ApplicationRole)other);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ return equality.equals(this, obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return hashing.hashCode(this);
+ }
+
+ @Override
+ public String toString() {
+ return toString.toString(this);
+ }
}
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRole.layout.fallback.xml b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/ApplicationRole.layout.fallback.xml
similarity index 100%
rename from extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRole.layout.fallback.xml
rename to extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/role/dom/ApplicationRole.layout.fallback.xml
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.java
index f30fee0..84d6a82 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.java
@@ -84,11 +84,10 @@ import org.apache.isis.extensions.secman.jdo.permission.dom.ApplicationPermissio
bookmarking = BookmarkPolicy.AS_ROOT
)
public class ApplicationRole
- implements org.apache.isis.extensions.secman.api.role.dom.ApplicationRole {
+ extends org.apache.isis.extensions.secman.api.role.dom.ApplicationRole {
protected final static String FQCN = "org.apache.isis.extensions.secman.jdo.role.dom.ApplicationRole";
- @Inject private ApplicationPermissionRepository applicationPermissionRepository;
// -- NAME
@@ -139,48 +138,4 @@ public class ApplicationRole
}
- // -- PERMISSIONS
-
- @Override
- @Permissions
- public List<org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission> getPermissions() {
- return applicationPermissionRepository.findByRole(this);
- }
-
-
- // -- equals, hashCode, compareTo, toString
-
- private static final Comparator<ApplicationRole> comparator =
- Comparator.comparing(ApplicationRole::getName);
-
- private static final Equality<ApplicationRole> equality =
- ObjectContracts.checkEquals(ApplicationRole::getName);
-
- private static final Hashing<ApplicationRole> hashing =
- ObjectContracts.hashing(ApplicationRole::getName);
-
- private static final ToString<ApplicationRole> toString =
- ObjectContracts.toString("name", ApplicationRole::getName);
-
-
- @Override
- public int compareTo(final org.apache.isis.extensions.secman.api.role.dom.ApplicationRole other) {
- return comparator.compare(this, (ApplicationRole)other);
- }
-
- @Override
- public boolean equals(final Object obj) {
- return equality.equals(this, obj);
- }
-
- @Override
- public int hashCode() {
- return hashing.hashCode(this);
- }
-
- @Override
- public String toString() {
- return toString.toString(this);
- }
-
}
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.layout.fallback.xml b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.layout.fallback.xml
deleted file mode 100644
index 6822413..0000000
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRole.layout.fallback.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!--
-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.
--->
-<bs3:grid
- xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd"
- xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3"
- xmlns:cpt="http://isis.apache.org/applib/layout/component"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <bs3:row>
- <bs3:col span="12" unreferencedActions="true">
- <cpt:domainObject/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="4">
- <bs3:tabGroup>
- <bs3:tab name="Identity">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Identity" id="identity"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Other">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Other" id="other" unreferencedProperties="true"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- <bs3:tab name="Metadata">
- <bs3:row>
- <bs3:col span="12">
- <cpt:fieldSet name="Metadata" id="metadata"/>
- </bs3:col>
- </bs3:row>
- </bs3:tab>
- </bs3:tabGroup>
- <cpt:fieldSet name="Details" id="details"/>
- </bs3:col>
- <bs3:col span="8">
- <cpt:collection id="permissions"/>
- <cpt:collection id="users"/>
- </bs3:col>
- </bs3:row>
- <bs3:row>
- <bs3:col span="12">
- <bs3:tabGroup unreferencedCollections="true"/>
- </bs3:col>
- </bs3:row>
-</bs3:grid>
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRole.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRole.java
index 0a58ea6..224c75f 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRole.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRole.java
@@ -34,6 +34,7 @@ import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
+import javax.persistence.Version;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.applib.annotation.Bounding;
@@ -61,12 +62,12 @@ import org.apache.isis.persistence.jpa.applib.integration.JpaEntityInjectionPoin
@NamedQuery(
name = org.apache.isis.extensions.secman.api.role.dom.ApplicationRole.NAMED_QUERY_FIND_BY_NAME,
query = "SELECT r "
- + "FROM org.apache.isis.extensions.secman.jpa.role.dom.ApplicationRole r "
+ + "FROM ApplicationRole r "
+ "WHERE r.name = :name"),
@NamedQuery(
name = org.apache.isis.extensions.secman.api.role.dom.ApplicationRole.NAMED_QUERY_FIND_BY_NAME_CONTAINING,
query = "SELECT r "
- + "FROM org.apache.isis.extensions.secman.jpa.role.dom.ApplicationRole r "
+ + "FROM ApplicationRole r "
+ "WHERE r.name LIKE :regex"),
})
@EntityListeners(JpaEntityInjectionPointResolver.class)
@@ -80,15 +81,17 @@ import org.apache.isis.persistence.jpa.applib.integration.JpaEntityInjectionPoin
bookmarking = BookmarkPolicy.AS_ROOT
)
public class ApplicationRole
- implements org.apache.isis.extensions.secman.api.role.dom.ApplicationRole {
+ extends org.apache.isis.extensions.secman.api.role.dom.ApplicationRole {
- @Inject private transient ApplicationPermissionRepository applicationPermissionRepository;
@Id
@GeneratedValue
private Long id;
+ @Version
+ private Long version;
+
// -- NAME
@@ -104,6 +107,8 @@ public class ApplicationRole
public void setName(String name) {
this.name = name;
}
+
+
// -- DESCRIPTION
@Column(nullable = true, length = Description.MAX_LENGTH)
@@ -137,48 +142,4 @@ public class ApplicationRole
}
- // -- PERMISSIONS
-
- @Override
- @Permissions
- public List<org.apache.isis.extensions.secman.api.permission.dom.ApplicationPermission> getPermissions() {
- return applicationPermissionRepository.findByRole(this);
- }
-
-
- // -- equals, hashCode, compareTo, toString
-
- private static final Comparator<ApplicationRole> comparator =
- Comparator.comparing(ApplicationRole::getName);
-
- private static final Equality<ApplicationRole> equality =
- ObjectContracts.checkEquals(ApplicationRole::getName);
-
- private static final Hashing<ApplicationRole> hashing =
- ObjectContracts.hashing(ApplicationRole::getName);
-
- private static final ToString<ApplicationRole> toString =
- ObjectContracts.toString("name", ApplicationRole::getName);
-
-
- @Override
- public int compareTo(final org.apache.isis.extensions.secman.api.role.dom.ApplicationRole other) {
- return comparator.compare(this, (ApplicationRole)other);
- }
-
- @Override
- public boolean equals(final Object obj) {
- return equality.equals(this, obj);
- }
-
- @Override
- public int hashCode() {
- return hashing.hashCode(this);
- }
-
- @Override
- public String toString() {
- return toString.toString(this);
- }
-
}