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/03/02 07:17:16 UTC

[isis] 08/11: ISIS-2553: using LogicalType instead of ObjectSpecId (5th iteration)

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

commit 3f1c8995bfd714a6a6d80d17e545e2c88afdcccb
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Mar 2 07:10:26 2021 +0100

    ISIS-2553: using LogicalType instead of ObjectSpecId (5th iteration)
---
 ...ypeIdentifierTest.java => LogicalTypeTest.java} | 21 +++++++---
 .../applib/id/LogicalTypeTest_valueSemantics.java  | 22 +++++++----
 .../services/appfeat/ApplicationFeatureId.java     |  4 +-
 .../metamodel/MetaModelServiceDefault.java         |  7 ++--
 .../spec/ObjectSpecIdTest_constructor.java         | 45 ----------------------
 5 files changed, 35 insertions(+), 64 deletions(-)

diff --git a/api/applib/src/test/java/org/apache/isis/applib/id/TypeIdentifierTest.java b/api/applib/src/test/java/org/apache/isis/applib/id/LogicalTypeTest.java
similarity index 72%
rename from api/applib/src/test/java/org/apache/isis/applib/id/TypeIdentifierTest.java
rename to api/applib/src/test/java/org/apache/isis/applib/id/LogicalTypeTest.java
index 6698d61..9ee23fc 100644
--- a/api/applib/src/test/java/org/apache/isis/applib/id/TypeIdentifierTest.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/id/LogicalTypeTest.java
@@ -18,21 +18,17 @@
  */
 package org.apache.isis.applib.id;
 
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import org.apache.isis.applib.SomeDomainClass;
 import org.apache.isis.commons.internal.testing._SerializationTester;
 
 import lombok.val;
 
-class TypeIdentifierTest {
-
-    @BeforeEach
-    void setUp() throws Exception {
-    }
+class LogicalTypeTest {
 
     @Test
     void eager() {
@@ -65,6 +61,19 @@ class TypeIdentifierTest {
                 _SerializationTester.roundtrip(original).getLogicalTypeName(), 
                 original.getLogicalTypeName());
     }
+    
+    @Test
+    void cannotBeEmpty() throws Exception {
+        assertThrows(IllegalArgumentException.class, ()->LogicalType.eager(Object.class, ""));
+        assertThrows(IllegalArgumentException.class, ()->LogicalType.lazy(Object.class, ()->"").getLogicalTypeName());
+    }
 
+    @Test
+    void cannotBeNull()  {
+        assertThrows(NullPointerException.class, ()->LogicalType.lazy(null, ()->"x"));
+        assertThrows(NullPointerException.class, ()->LogicalType.lazy(Object.class, null));
+        assertThrows(NullPointerException.class, ()->LogicalType.eager(null, "x"));
+        assertThrows(IllegalArgumentException.class, ()->LogicalType.eager(Object.class, null));
+    }
 
 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/ObjectSpecIdTest_valueSemantics.java b/api/applib/src/test/java/org/apache/isis/applib/id/LogicalTypeTest_valueSemantics.java
similarity index 58%
rename from core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/ObjectSpecIdTest_valueSemantics.java
rename to api/applib/src/test/java/org/apache/isis/applib/id/LogicalTypeTest_valueSemantics.java
index b3808d7..0045823 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/ObjectSpecIdTest_valueSemantics.java
+++ b/api/applib/src/test/java/org/apache/isis/applib/id/LogicalTypeTest_valueSemantics.java
@@ -16,24 +16,30 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.metamodel.spec;
+package org.apache.isis.applib.id;
 
-import java.util.Arrays;
 import java.util.List;
 
-import org.apache.isis.applib.id.ObjectSpecId;
+import org.apache.isis.applib.SomeDomainClass;
+import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.internaltestsupport.contract.ValueTypeContractTestAbstract;
 
-public class ObjectSpecIdTest_valueSemantics extends ValueTypeContractTestAbstract<ObjectSpecId> {
+public class LogicalTypeTest_valueSemantics 
+extends ValueTypeContractTestAbstract<LogicalType> {
 
     @Override
-    protected List<ObjectSpecId> getObjectsWithSameValue() {
-        return Arrays.asList(ObjectSpecId.of("CUS"), ObjectSpecId.of("CUS"), ObjectSpecId.of("CUS"));
+    protected List<LogicalType> getObjectsWithSameValue() {
+        return _Lists.of(
+                LogicalType.fqcn(SomeDomainClass.class),
+                LogicalType.lazy(SomeDomainClass.class, ()->SomeDomainClass.class.getName()));
     }
 
     @Override
-    protected List<ObjectSpecId> getObjectsWithDifferentValue() {
-        return Arrays.asList(ObjectSpecId.of("bUS"), ObjectSpecId.of("CUt"));
+    protected List<LogicalType> getObjectsWithDifferentValue() {
+        return _Lists.of(
+                LogicalType.fqcn(Object.class),
+                LogicalType.lazy(List.class, ()->List.class.getName()));
     }
 
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
index ba3ce09..ac3ed55 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureId.java
@@ -214,7 +214,7 @@ implements
     // -- objectSpecId (property)
 
     @Programmatic
-    public ObjectSpecId getObjectSpecId() {
+    public String getLogicalTypeName() {
         if (getTypeSimpleName() == null) {
             return null;
         }
@@ -225,7 +225,7 @@ implements
         }
         buf.append(getTypeSimpleName());
 
-        return ObjectSpecId.of(buf.toString());
+        return buf.toString();
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 918ffd8..72c25f6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -39,6 +39,7 @@ import org.apache.isis.applib.services.metamodel.Config;
 import org.apache.isis.applib.services.metamodel.DomainMember;
 import org.apache.isis.applib.services.metamodel.DomainModel;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
+import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.core.metamodel.facets.members.publish.command.CommandPublishingFacet;
 import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet;
@@ -216,12 +217,12 @@ public class MetaModelServiceDefault implements MetaModelService {
         final ApplicationFeatureId featureId = ApplicationFeatureId
                 .newFeature(ApplicationFeatureType.MEMBER, memberIdentifier);
 
-        final ObjectSpecId objectSpecId = featureId.getObjectSpecId();
-        if(objectSpecId == null) {
+        final String logicalTypeName = featureId.getLogicalTypeName();
+        if(_Strings.isNullOrEmpty(logicalTypeName)) {
             return null;
         }
 
-        final ObjectSpecification spec = specificationLoader.lookupBySpecIdElseLoad(objectSpecId.asString());
+        final ObjectSpecification spec = specificationLoader.lookupBySpecIdElseLoad(logicalTypeName);
         if(spec == null) {
             return null;
         }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/ObjectSpecIdTest_constructor.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/ObjectSpecIdTest_constructor.java
deleted file mode 100644
index 402f616..0000000
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/spec/ObjectSpecIdTest_constructor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  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.core.metamodel.spec;
-
-import org.junit.Test;
-
-import org.apache.isis.applib.id.ObjectSpecId;
-
-public class ObjectSpecIdTest_constructor {
-
-    @Test
-    public void happyCase() throws Exception {
-        @SuppressWarnings("unused")
-        final ObjectSpecId objectSpecId = ObjectSpecId.of("CUS");
-    }
-
-    @Test(expected=IllegalArgumentException.class)
-    public void cannotBeEmpty() throws Exception {
-        ObjectSpecId.of("");
-    }
-
-
-    @Test(expected=NullPointerException.class)
-    public void cannotBeNull() throws Exception {
-        ObjectSpecId.of(null);
-    }
-
-
-}