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/04/15 10:13:17 UTC
[isis] branch master updated: ISIS-2488: adds MMvalidation tests:
detect object-type (logical-type) name clashes
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 1fcdfe9 ISIS-2488: adds MMvalidation tests: detect object-type (logical-type) name clashes
1fcdfe9 is described below
commit 1fcdfe9e11e8050b762213484b5b3f6c9c0c06fd
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 15 12:13:03 2021 +0200
ISIS-2488: adds MMvalidation tests: detect object-type (logical-type)
name clashes
---
.../DomainModelTest_usingBadDomain.java | 18 ++++++++
.../model/bad/InvalidLogicalTypeNameClash.java | 51 ++++++++++++++++++++++
2 files changed, 69 insertions(+)
diff --git a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
index 6b4335e..cad0ee0 100644
--- a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
+++ b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
@@ -54,6 +54,7 @@ import org.apache.isis.testdomain.model.bad.AmbiguousMixinAnnotations;
import org.apache.isis.testdomain.model.bad.AmbiguousTitle;
import org.apache.isis.testdomain.model.bad.Configuration_usingInvalidDomain;
import org.apache.isis.testdomain.model.bad.InvalidActionOverloading;
+import org.apache.isis.testdomain.model.bad.InvalidLogicalTypeNameClash;
import org.apache.isis.testdomain.model.bad.InvalidOrphanedActionSupport;
import org.apache.isis.testdomain.model.bad.InvalidOrphanedCollectionSupport;
import org.apache.isis.testdomain.model.bad.InvalidOrphanedPropertySupport;
@@ -154,6 +155,23 @@ class DomainModelTest_usingBadDomain {
"Action method overloading is not allowed"));
}
+ @Test
+ void logicalTypeNameClash_shouldFail() {
+ assertTrue(validator.anyMatchesContaining(
+ Identifier.classIdentifier(LogicalType.fqcn(InvalidLogicalTypeNameClash.VariantA.class)),
+ "Logical-type-name (aka. object-type) 'isis.testdomain.InvalidLogicalTypeNameClash' "
+ + "mapped to multiple classes: "
+ + "org.apache.isis.testdomain.model.bad.InvalidLogicalTypeNameClash$VariantA,"
+ + "org.apache.isis.testdomain.model.bad.InvalidLogicalTypeNameClash$VariantB")
+ || validator.anyMatchesContaining(
+ Identifier.classIdentifier(LogicalType.fqcn(InvalidLogicalTypeNameClash.VariantB.class)),
+ "Logical-type-name (aka. object-type) 'isis.testdomain.InvalidLogicalTypeNameClash' "
+ + "mapped to multiple classes: "
+ + "org.apache.isis.testdomain.model.bad.InvalidLogicalTypeNameClash$VariantA,"
+ + "org.apache.isis.testdomain.model.bad.InvalidLogicalTypeNameClash$VariantB"));
+ }
+
+
@ParameterizedTest
@MethodSource("provideAmbiguousMixins")
void ambiguousMixinAnnotions_shouldFailValidation(
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/bad/InvalidLogicalTypeNameClash.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/bad/InvalidLogicalTypeNameClash.java
new file mode 100644
index 0000000..a664c00
--- /dev/null
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/model/bad/InvalidLogicalTypeNameClash.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.isis.testdomain.model.bad;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Nature;
+
+public class InvalidLogicalTypeNameClash {
+
+ // logical type name clash: should fail validation
+ @DomainObject(nature = Nature.VIEW_MODEL,
+ objectType = "isis.testdomain.InvalidLogicalTypeNameClash")
+ public static class VariantA {
+
+ @Action
+ public boolean anAction() {
+ return false;
+ }
+
+ }
+
+ // logical type name clash: should fail validation
+ @DomainObject(nature = Nature.VIEW_MODEL,
+ objectType = "isis.testdomain.InvalidLogicalTypeNameClash")
+ public static class VariantB {
+
+ @Action
+ public boolean anAction() {
+ return false;
+ }
+
+ }
+
+}