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);