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:40 UTC

[isis] 03/05: ISIS-2614: converts api.ApplicationTenancy 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 75f6f13f8431a8780c39bef6d13c1a0b39ae4f8f
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon May 24 14:38:03 2021 +0100

    ISIS-2614: converts api.ApplicationTenancy from interface to an abstract class
---
 .../secman/api/tenancy/dom/ApplicationTenancy.java | 84 ++++++++++++++++------
 .../dom/ApplicationTenancy.layout.fallback.xml     |  0
 .../secman/jdo/tenancy/dom/ApplicationTenancy.java | 43 +----------
 .../dom/ApplicationTenancy.layout.fallback.xml     | 67 -----------------
 .../secman/jpa/tenancy/dom/ApplicationTenancy.java | 49 ++-----------
 5 files changed, 71 insertions(+), 172 deletions(-)

diff --git a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/dom/ApplicationTenancy.java b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/dom/ApplicationTenancy.java
index 2011e72..40879d3 100644
--- a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/dom/ApplicationTenancy.java
+++ b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/dom/ApplicationTenancy.java
@@ -23,6 +23,7 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 import java.util.Collection;
+import java.util.Comparator;
 
 import org.apache.isis.applib.annotation.CollectionLayout;
 import org.apache.isis.applib.annotation.DomainObject;
@@ -32,6 +33,10 @@ 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.annotation.Where;
+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;
 
 /**
@@ -40,25 +45,25 @@ import org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
 @DomainObject(
         objectType = ApplicationTenancy.OBJECT_TYPE
 )
-public interface ApplicationTenancy extends Comparable<ApplicationTenancy> {
+public abstract class ApplicationTenancy implements Comparable<ApplicationTenancy> {
 
-    String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationTenancy";
-
-    String NAMED_QUERY_FIND_BY_NAME = "ApplicationTenancy.findByName";
-    String NAMED_QUERY_FIND_BY_PATH = "ApplicationTenancy.findByPath";
-    String NAMED_QUERY_FIND_BY_NAME_OR_PATH_MATCHING = "ApplicationTenancy.findByNameOrPathMatching";
+    public static final String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + ".ApplicationTenancy";
 
+    public static final String NAMED_QUERY_FIND_BY_NAME = "ApplicationTenancy.findByName";
+    public static final String NAMED_QUERY_FIND_BY_PATH = "ApplicationTenancy.findByPath";
+    public static final String NAMED_QUERY_FIND_BY_NAME_OR_PATH_MATCHING = "ApplicationTenancy.findByNameOrPathMatching";
 
 
     // -- DOMAIN EVENTS
 
-    abstract class PropertyDomainEvent<T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationTenancy, T> {}
-    abstract class CollectionDomainEvent<T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationTenancy, T> {}
-    abstract class ActionDomainEvent extends IsisModuleExtSecmanApi.ActionDomainEvent<ApplicationTenancy> {}
+    public static abstract class PropertyDomainEvent<T> extends IsisModuleExtSecmanApi.PropertyDomainEvent<ApplicationTenancy, T> {}
+    public static abstract class CollectionDomainEvent<T> extends IsisModuleExtSecmanApi.CollectionDomainEvent<ApplicationTenancy, T> {}
+    public static abstract class ActionDomainEvent extends IsisModuleExtSecmanApi.ActionDomainEvent<ApplicationTenancy> {}
+
 
     // -- MODEL
 
-    default String title() {
+    public String title() {
         return getName();
     }
 
@@ -84,7 +89,7 @@ public interface ApplicationTenancy extends Comparable<ApplicationTenancy> {
     )
     @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 = 20;
 
@@ -92,8 +97,8 @@ public interface ApplicationTenancy extends Comparable<ApplicationTenancy> {
     }
 
     @Name
-    String getName();
-    void setName(String name);
+    public abstract String getName();
+    public abstract void setName(String name);
 
 
     // -- PATH
@@ -108,20 +113,19 @@ public interface ApplicationTenancy extends Comparable<ApplicationTenancy> {
     )
     @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
     @Retention(RetentionPolicy.RUNTIME)
-    @interface Path {
+    public @interface Path {
         int MAX_LENGTH = 255;
 
         class DomainEvent extends PropertyDomainEvent<String> {}
     }
 
     @Path
-    String getPath();
-    void setPath(String path);
+    public abstract String getPath();
+    public abstract void setPath(String path);
 
 
     // -- PARENT
 
-
     @Property(
             domainEvent = Parent.DomainEvent.class,
             editing = Editing.DISABLED
@@ -133,13 +137,13 @@ public interface ApplicationTenancy extends Comparable<ApplicationTenancy> {
     )
     @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
     @Retention(RetentionPolicy.RUNTIME)
-    @interface Parent {
+    public @interface Parent {
         class DomainEvent extends PropertyDomainEvent<ApplicationTenancy> {}
     }
 
     @Parent
-    ApplicationTenancy getParent();
-    void setParent(ApplicationTenancy parent);
+    public abstract ApplicationTenancy getParent();
+    public abstract void setParent(ApplicationTenancy parent);
 
 
 
@@ -153,12 +157,48 @@ public interface ApplicationTenancy extends Comparable<ApplicationTenancy> {
     )
     @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
     @Retention(RetentionPolicy.RUNTIME)
-    @interface Children {
+    public @interface Children {
         class DomainEvent extends CollectionDomainEvent<ApplicationTenancy> {}
     }
 
     @Children
-    Collection<ApplicationTenancy> getChildren();
+    public abstract Collection<ApplicationTenancy> getChildren();
+
+
+
+    // -- CONTRACT
+
+    private static final Equality<ApplicationTenancy> equality =
+            ObjectContracts.checkEquals(ApplicationTenancy::getPath);
+
+    private static final Hashing<ApplicationTenancy> hashing =
+            ObjectContracts.hashing(ApplicationTenancy::getPath);
+
+    private static final ToString<ApplicationTenancy> toString =
+            ObjectContracts.toString("path", ApplicationTenancy::getPath)
+                    .thenToString("name", ApplicationTenancy::getName);
 
+    private static final Comparator<ApplicationTenancy> comparator =
+            Comparator.comparing(ApplicationTenancy::getPath);
+
+    @Override
+    public int compareTo(final org.apache.isis.extensions.secman.api.tenancy.dom.ApplicationTenancy other) {
+        return comparator.compare(this, (ApplicationTenancy) other);
+    }
+
+    @Override
+    public boolean equals(final Object other) {
+        return equality.equals(this, other);
+    }
+
+    @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/tenancy/dom/ApplicationTenancy.layout.fallback.xml b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/dom/ApplicationTenancy.layout.fallback.xml
similarity index 100%
rename from extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancy.layout.fallback.xml
rename to extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/tenancy/dom/ApplicationTenancy.layout.fallback.xml
diff --git a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.java b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.java
index deb3383..8ca5bff 100644
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.java
+++ b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.extensions.secman.jdo.tenancy.dom;
 
-import java.util.Comparator;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
@@ -41,10 +40,6 @@ import javax.jdo.annotations.VersionStrategy;
 import org.apache.isis.applib.annotation.BookmarkPolicy;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
-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.commons.internal.base._Casts;
 
 
@@ -88,10 +83,11 @@ import org.apache.isis.commons.internal.base._Casts;
         bookmarking = BookmarkPolicy.AS_ROOT
         )
 public class ApplicationTenancy
-    implements org.apache.isis.extensions.secman.api.tenancy.dom.ApplicationTenancy {
+    extends org.apache.isis.extensions.secman.api.tenancy.dom.ApplicationTenancy {
 
     protected final static String FQCN = "org.apache.isis.extensions.secman.jdo.tenancy.dom.ApplicationTenancy";
 
+
     // -- NAME
 
     @Column(allowsNull  ="false", length = Name.MAX_LENGTH)
@@ -161,39 +157,4 @@ public class ApplicationTenancy
     }
 
 
-    // -- CONTRACT
-
-    private static final Equality<ApplicationTenancy> equality =
-            ObjectContracts.checkEquals(ApplicationTenancy::getPath);
-
-    private static final Hashing<ApplicationTenancy> hashing =
-            ObjectContracts.hashing(ApplicationTenancy::getPath);
-
-    private static final ToString<ApplicationTenancy> toString =
-            ObjectContracts.toString("path", ApplicationTenancy::getPath)
-            .thenToString("name", ApplicationTenancy::getName);
-
-    private static final Comparator<ApplicationTenancy> comparator =
-            Comparator.comparing(ApplicationTenancy::getPath);
-
-    @Override
-    public int compareTo(final org.apache.isis.extensions.secman.api.tenancy.dom.ApplicationTenancy other) {
-        return comparator.compare(this, (ApplicationTenancy) other);
-    }
-
-    @Override
-    public boolean equals(final Object other) {
-        return equality.equals(this, other);
-    }
-
-    @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/tenancy/dom/ApplicationTenancy.layout.fallback.xml b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.layout.fallback.xml
deleted file mode 100644
index e991bcc..0000000
--- a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancy.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="children"/>
-            <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/tenancy/dom/ApplicationTenancy.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancy.java
index 55f0a0c..8d5f96a 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancy.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancy.java
@@ -18,13 +18,13 @@
  */
 package org.apache.isis.extensions.secman.jpa.tenancy.dom;
 
-import java.util.Comparator;
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
@@ -33,14 +33,11 @@ import javax.persistence.NamedQuery;
 import javax.persistence.OneToMany;
 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.DomainObject;
 import org.apache.isis.applib.annotation.DomainObjectLayout;
-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.commons.internal.base._Casts;
 
 
@@ -80,7 +77,11 @@ import org.apache.isis.commons.internal.base._Casts;
         bookmarking = BookmarkPolicy.AS_ROOT
         )
 public class ApplicationTenancy
-    implements org.apache.isis.extensions.secman.api.tenancy.dom.ApplicationTenancy {
+    extends org.apache.isis.extensions.secman.api.tenancy.dom.ApplicationTenancy {
+
+
+    @Version
+    private Long version;
 
 
     // -- NAME
@@ -118,7 +119,6 @@ public class ApplicationTenancy
 
     // -- PARENT
 
-
     @ManyToOne
     @JoinColumn(name="parentPath", nullable = true)
     private ApplicationTenancy parent;
@@ -153,39 +153,4 @@ public class ApplicationTenancy
     }
 
 
-    // -- CONTRACT
-
-    private static final Equality<ApplicationTenancy> equality =
-            ObjectContracts.checkEquals(ApplicationTenancy::getPath);
-
-    private static final Hashing<ApplicationTenancy> hashing =
-            ObjectContracts.hashing(ApplicationTenancy::getPath);
-
-    private static final ToString<ApplicationTenancy> toString =
-            ObjectContracts.toString("path", ApplicationTenancy::getPath)
-            .thenToString("name", ApplicationTenancy::getName);
-
-    private static final Comparator<ApplicationTenancy> comparator =
-            Comparator.comparing(ApplicationTenancy::getPath);
-
-    @Override
-    public int compareTo(final org.apache.isis.extensions.secman.api.tenancy.dom.ApplicationTenancy other) {
-        return comparator.compare(this, (ApplicationTenancy)other);
-    }
-
-    @Override
-    public boolean equals(final Object other) {
-        return equality.equals(this, other);
-    }
-
-    @Override
-    public int hashCode() {
-        return hashing.hashCode(this);
-    }
-
-    @Override
-    public String toString() {
-        return toString.toString(this);
-    }
-
 }