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 c8021e1  ISIS-2679: interfaces cannot share their logical type name 
with concrete super classes
c8021e1 is described below

commit c8021e11d538c9c4068e849ea42225f76ef22124
Author: [email protected] <[email protected]@luna>
AuthorDate: Fri May 14 23:52:36 2021 +0200

    ISIS-2679: interfaces cannot share their logical type name with concrete
    super classes
    
    added some fail early logic
---
 .../specloader/LogicalTypeResolverDefault.java     | 24 +++++++++++++++++++++-
 .../api/permission/dom/ApplicationPermission.java  |  4 ++--
 .../secman/api/role/dom/ApplicationRole.java       |  2 +-
 .../secman/api/tenancy/dom/ApplicationTenancy.java |  2 +-
 .../secman/api/user/dom/ApplicationUser.java       |  2 +-
 .../mementos/ObjectMementoServiceWicket.java       |  2 +-
 6 files changed, 29 insertions(+), 7 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
index 3a78292..198c259 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/LogicalTypeResolverDefault.java
@@ -24,10 +24,12 @@ import java.util.Optional;
 
 import org.apache.isis.applib.id.LogicalType;
 import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
 import 
org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 import lombok.NonNull;
+import lombok.val;
 
 class LogicalTypeResolverDefault implements LogicalTypeResolver {
 
@@ -46,7 +48,27 @@ class LogicalTypeResolverDefault implements 
LogicalTypeResolver {
     @Override
     public void register(final @NonNull ObjectSpecification spec) {
         if(hasUsableSpecId(spec)) {
-            logicalTypeByName.put(spec.getLogicalTypeName(), 
spec.getLogicalType());
+
+            val key = spec.getLogicalTypeName();
+
+
+            val previousMapping = logicalTypeByName.put(key, 
spec.getLogicalType());
+
+            // fail fast
+            if(previousMapping!=null) {
+
+                val msg = String.format("failed to register mapping\n"
+                        + "%s -> %s,\n"
+                        + "because there was already a mapping\n "
+                        + "%s -> %s",
+                        spec.getLogicalTypeName(),
+                        spec.getCorrespondingClass(),
+                        spec.getLogicalTypeName(),
+                        previousMapping.getCorrespondingClass());
+
+                throw _Exceptions.unrecoverable(msg);
+            }
+
         }
     }
 
diff --git 
a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/ApplicationPermission.java
 
b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/ApplicationPermission.java
index 3d2d590..6c24d12 100644
--- 
a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/ApplicationPermission.java
+++ 
b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/permission/dom/ApplicationPermission.java
@@ -76,11 +76,11 @@ import lombok.experimental.UtilityClass;
  * @since 2.0 {@index}
  */
 @DomainObject(
-        objectType = ApplicationPermission.OBJECT_TYPE
+        objectType = IsisModuleExtSecmanApi.NAMESPACE + 
".api.ApplicationPermission"
 )
 public interface ApplicationPermission extends 
Comparable<ApplicationPermission> {
 
-    String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + 
".api.ApplicationPermission";
+    String OBJECT_TYPE = IsisModuleExtSecmanApi.NAMESPACE + 
".ApplicationPermission";
 
     String NAMED_QUERY_FIND_BY_FEATURE = "ApplicationPermission.findByFeature";
     String NAMED_QUERY_FIND_BY_ROLE = "ApplicationPermission.findByRole";
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 1c2fdec..9345d07 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
@@ -42,7 +42,7 @@ import 
org.apache.isis.extensions.secman.api.user.dom.ApplicationUser;
  * @since 2.0 {@index}
  */
 @DomainObject(
-        objectType = ApplicationRole.OBJECT_TYPE
+        objectType = IsisModuleExtSecmanApi.NAMESPACE + ".api.ApplicationRole"
 )
 public interface ApplicationRole extends Comparable<ApplicationRole> {
 
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..4903c66 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
@@ -38,7 +38,7 @@ import 
org.apache.isis.extensions.secman.api.IsisModuleExtSecmanApi;
  * @since 2.0 {@index}
  */
 @DomainObject(
-        objectType = ApplicationTenancy.OBJECT_TYPE
+        objectType = IsisModuleExtSecmanApi.NAMESPACE + 
".api.ApplicationTenancy"
 )
 public interface ApplicationTenancy extends Comparable<ApplicationTenancy> {
 
diff --git 
a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/ApplicationUser.java
 
b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/ApplicationUser.java
index 7e5649f..811ab39 100644
--- 
a/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/ApplicationUser.java
+++ 
b/extensions/security/secman/api/src/main/java/org/apache/isis/extensions/secman/api/user/dom/ApplicationUser.java
@@ -52,7 +52,7 @@ import lombok.val;
  * @since 2.0 {@index}
  */
 @DomainObject(
-        objectType = ApplicationUser.OBJECT_TYPE
+        objectType = IsisModuleExtSecmanApi.NAMESPACE + ".api.ApplicationUser"
 )
 public interface ApplicationUser
         extends HasUsername, HasAtPath, Comparable<ApplicationUser> {
diff --git 
a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoServiceWicket.java
 
b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoServiceWicket.java
index 55a42e4..e7d2807 100644
--- 
a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoServiceWicket.java
+++ 
b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/services/mementos/ObjectMementoServiceWicket.java
@@ -102,7 +102,7 @@ public class ObjectMementoServiceWicket implements 
ObjectMementoService {
 
     @Override
     public ObjectMemento mementoForPojo(Object pojo) {
-//        _Probe.errOut("mementoForPojo %s", ""+pojo);
+        //_Probe.errOut("mementoForPojo %s", ""+pojo);
         assertSingleton(pojo);
 
         val managedObject = objectManager.adapt(pojo);

Reply via email to