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 2022/09/13 15:05:01 UTC

[isis] branch master updated: ISIS-3209: metamodel test fixes (6) - final

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 bfc1843ce4 ISIS-3209: metamodel test fixes (6) - final
bfc1843ce4 is described below

commit bfc1843ce4249dda715a72981e2351474fdbce08
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 13 17:04:55 2022 +0200

    ISIS-3209: metamodel test fixes (6) - final
---
 .../isis/core/metamodel/facets/Evaluators.java     |  7 ++-
 .../annotation/TitleFacetViaTitleAnnotation.java   |  2 -
 .../title/methods/TitleFacetViaTitleMethod.java    |  7 ++-
 .../title/TitleAnnotationFacetFactoryTest.java     | 69 ++++++++++++----------
 .../ident/title/TitleFacetViaMethodTest.java       |  3 -
 .../title/TitleFacetViaTitleAnnotationTest.java    | 37 +++---------
 .../navparent/NavigableParentFacetMethodTest.java  |  4 --
 7 files changed, 57 insertions(+), 72 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Evaluators.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Evaluators.java
index 2d1f6498fc..fcfa136d72 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Evaluators.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/Evaluators.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.facets;
 
 import java.lang.annotation.Annotation;
 import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
 import java.lang.reflect.AnnotatedElement;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -178,7 +179,7 @@ public final class Evaluators  {
 
         @Override
         protected MethodHandle createMethodHandle() throws IllegalAccessException {
-            return _Reflect.handleOf(method);
+            return MethodHandles.lookup().unreflect(method);
         }
     }
 
@@ -199,8 +200,8 @@ public final class Evaluators  {
         protected MethodHandle createMethodHandle() throws IllegalAccessException {
             val getter = correspondingGetter.orElse(null);
             return getter!=null
-                    ? _Reflect.handleOf(getter)
-                    : _Reflect.handleOfGetterOn(field);
+                    ? MethodHandles.lookup().unreflect(getter)
+                    : MethodHandles.lookup().unreflectGetter(field);
         }
 
         private boolean isSameAs(final MethodEvaluator methodEvaluator) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
index 8875b5620b..31195f5701 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java
@@ -155,9 +155,7 @@ implements ImperativeFacet {
 
             return stringBuilder.toString().trim();
         } catch (final RuntimeException ex) {
-
             val isUnitTesting = super.getMetaModelContext().getSystemEnvironment().isUnitTesting();
-
             if(!isUnitTesting) {
                 log.warn("Title failure", ex);
             }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
index d932cbdc42..0fde9c3708 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/title/methods/TitleFacetViaTitleMethod.java
@@ -26,6 +26,8 @@ import org.springframework.lang.Nullable;
 
 import org.apache.isis.applib.services.i18n.TranslatableString;
 import org.apache.isis.applib.services.i18n.TranslationContext;
+import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.HasImperativeAspect;
 import org.apache.isis.core.metamodel.facets.ImperativeAspect;
@@ -88,7 +90,10 @@ implements HasImperativeAspect {
             }
             return null;
         } catch (final RuntimeException ex) {
-            val isUnitTesting = getMetaModelContext().getSystemEnvironment().isUnitTesting();
+            val isUnitTesting = Optional.ofNullable(getMetaModelContext())
+                    .map(MetaModelContext::getSystemEnvironment)
+                    .map(IsisSystemEnvironment::isUnitTesting)
+                    .orElse(false);
             if(!isUnitTesting) {
                 log.warn("Failed Title {}", owningAdapter.getSpecification(), ex);
             }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleAnnotationFacetFactoryTest.java
index 1f51b7b717..22077385dd 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleAnnotationFacetFactoryTest.java
@@ -25,7 +25,7 @@ import java.util.List;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
+import org.mockito.Mockito;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -37,6 +37,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
 import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.Nature;
 import org.apache.isis.applib.annotation.Title;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
+import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJupiterTestCase;
 import org.apache.isis.core.metamodel.facets.Evaluators;
@@ -45,16 +47,27 @@ import org.apache.isis.core.metamodel.facets.object.title.TitleFacet;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation;
 import org.apache.isis.core.metamodel.object.ManagedObject;
+import org.apache.isis.core.metamodel.valuesemantics.IntValueSemantics;
 
 import lombok.val;
 
-public class TitleAnnotationFacetFactoryTest
+class TitleAnnotationFacetFactoryTest
 extends AbstractFacetFactoryJupiterTestCase {
 
     private TitleAnnotationFacetFactory facetFactory;
 
     @BeforeEach
     public void setUp() throws Exception {
+
+        val mockInteractionService = Mockito.mock(InteractionService.class);
+
+        metaModelContext = MetaModelContext_forTesting.builder()
+                .interactionService(mockInteractionService)
+                .valueSemantic(new IntValueSemantics())
+                .build();
+
+
+        assertNotNull(getInteractionService());
         facetFactory = new TitleAnnotationFacetFactory(metaModelContext);
     }
 
@@ -65,7 +78,9 @@ extends AbstractFacetFactoryJupiterTestCase {
         super.tearDown();
     }
 
-    public static class Customer {
+    // -- SCENARIO 1
+
+    public static class Customer1 {
 
         @Title
         public String someTitle() {
@@ -76,17 +91,19 @@ extends AbstractFacetFactoryJupiterTestCase {
     @Test
     public void testTitleAnnotatedMethodPickedUpOnClassRemoved() throws Exception {
         facetFactory.process(ProcessClassContext
-                .forTesting(Customer.class, mockMethodRemover, facetedMethod));
+                .forTesting(Customer1.class, mockMethodRemover, facetedMethod));
 
         final Facet facet = facetedMethod.getFacet(TitleFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof TitleFacetViaTitleAnnotation);
-        final TitleFacetViaTitleAnnotation titleFacetViaTitleAnnotation = (TitleFacetViaTitleAnnotation) facet;
+        final TitleFacetViaTitleAnnotation titleFacetViaTitleAnnotation =
+                (TitleFacetViaTitleAnnotation) facet;
 
-        final List<Method> titleMethods = Arrays.asList(Customer.class.getMethod("someTitle"));
+        final List<Method> titleMethods = Arrays.asList(Customer1.class.getMethod("someTitle"));
         for (int i = 0; i < titleMethods.size(); i++) {
             final Evaluators.MethodEvaluator titleEvaluator =
-                    (Evaluators.MethodEvaluator) titleFacetViaTitleAnnotation.getComponents().getElseFail(i)
+                    (Evaluators.MethodEvaluator) titleFacetViaTitleAnnotation.getComponents()
+                    .getElseFail(i)
                     .getTitleEvaluator();
 
             assertEquals(titleMethods.get(i),
@@ -94,6 +111,8 @@ extends AbstractFacetFactoryJupiterTestCase {
         }
     }
 
+    // -- SCENARIO 2
+
     public static class Customer2 {
 
         @Title(sequence = "1", append = ".")
@@ -113,8 +132,6 @@ extends AbstractFacetFactoryJupiterTestCase {
 
     }
 
-  //FIXME[ISIS-3207]
-    @DisabledIfSystemProperty(named = "isRunningWithSurefire", matches = "true")
     @Test
     public void testTitleAnnotatedMethodsPickedUpOnClass() throws Exception {
 
@@ -124,14 +141,18 @@ extends AbstractFacetFactoryJupiterTestCase {
         final Facet facet = facetedMethod.getFacet(TitleFacet.class);
         assertNotNull(facet);
         assertTrue(facet instanceof TitleFacetViaTitleAnnotation);
-        final TitleFacetViaTitleAnnotation titleFacetViaTitleAnnotation = (TitleFacetViaTitleAnnotation) facet;
+        final TitleFacetViaTitleAnnotation titleFacetViaTitleAnnotation =
+                (TitleFacetViaTitleAnnotation) facet;
 
-        final List<Method> titleMethods = Arrays.asList(Customer2.class.getMethod("titleElement1"), Customer2.class.getMethod("titleElement3"), Customer2.class.getMethod("titleElement2"));
+        final List<Method> titleMethods = Arrays.asList(
+                Customer2.class.getMethod("titleElement1"),
+                Customer2.class.getMethod("titleElement3"),
+                Customer2.class.getMethod("titleElement2"));
 
-        //final List<TitleComponent> components = titleFacetViaTitleAnnotation.getComponents();
         for (int i = 0; i < titleMethods.size(); i++) {
             final Evaluators.MethodEvaluator titleEvaluator =
-                    (Evaluators.MethodEvaluator) titleFacetViaTitleAnnotation.getComponents().getElseFail(i)
+                    (Evaluators.MethodEvaluator) titleFacetViaTitleAnnotation.getComponents()
+                    .getElseFail(i)
                     .getTitleEvaluator();
 
             assertEquals(titleMethods.get(i),
@@ -145,6 +166,8 @@ extends AbstractFacetFactoryJupiterTestCase {
         assertThat(title, is("titleElement1. titleElement3,titleElement2"));
     }
 
+    // -- SCENARIO 3
+
     public static class Customer3 {
     }
 
@@ -157,6 +180,8 @@ extends AbstractFacetFactoryJupiterTestCase {
         assertNull(facetedMethod.getFacet(TitleFacet.class));
     }
 
+    // -- SCENARIO 4
+
     @DomainObject(nature = Nature.VIEW_MODEL)
     public static class Customer4 {
 
@@ -202,8 +227,6 @@ extends AbstractFacetFactoryJupiterTestCase {
 
     }
 
-  //FIXME[ISIS-3207]
-    @DisabledIfSystemProperty(named = "isRunningWithSurefire", matches = "true")
     @Test
     public void titleAnnotatedMethodsSomeOfWhichReturnNulls() throws Exception {
 
@@ -217,25 +240,11 @@ extends AbstractFacetFactoryJupiterTestCase {
         facetFactory.process(ProcessClassContext
                 .forTesting(Customer4.class, mockMethodRemover, facetedMethod));
 
-        final Customer4 customer = new Customer4();
-        val objectAdapter = ManagedObject.adaptScalar(getSpecificationLoader(), customer);
+        val objectAdapter = getObjectManager().adapt(new Customer4());
 
         assertThat(objectAdapter.getTitle(),
                 is("titleElement1 titleElement3 titleElement5 3 this needs to be trimmed"));
     }
 
 
-    public static class Customer5 {
-
-        @Title(sequence = "1")
-        public String titleProperty() {
-            return "titleElement1";
-        }
-
-        public String otherProperty() {
-            return null;
-        }
-    }
-
-
 }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodTest.java
index 1a88ac5ebc..43875a0b66 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaMethodTest.java
@@ -22,7 +22,6 @@ import java.lang.reflect.Method;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
 import org.mockito.Mockito;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -35,8 +34,6 @@ import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJupiterTestCase
 import org.apache.isis.core.metamodel.facets.object.title.methods.TitleFacetViaTitleMethod;
 import org.apache.isis.core.metamodel.object.ManagedObject;
 
-//FIXME[ISIS-3207]
-@DisabledIfSystemProperty(named = "isRunningWithSurefire", matches = "true")
 class TitleFacetViaMethodTest
 extends AbstractFacetFactoryJupiterTestCase {
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaTitleAnnotationTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaTitleAnnotationTest.java
index 900a8c4a6f..696c3ef0df 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaTitleAnnotationTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/ident/title/TitleFacetViaTitleAnnotationTest.java
@@ -20,7 +20,6 @@ package org.apache.isis.core.metamodel.facets.object.ident.title;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
@@ -35,14 +34,14 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation;
 import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
+
+import lombok.val;
 
 @ExtendWith(MockitoExtension.class)
 class TitleFacetViaTitleAnnotationTest {
 
     @Mock FacetHolder mockFacetHolder;
     @Mock ManagedObject mockManagedObject;
-    @Mock ObjectManager mockObjectManager;
 
     protected MetaModelContext metaModelContext;
 
@@ -77,13 +76,9 @@ class TitleFacetViaTitleAnnotationTest {
     @BeforeEach
     public void setUp() {
         metaModelContext = MetaModelContext_forTesting.builder()
-//                .objectAdapterProvider(mockAdapterManager)
-                .objectManager(mockObjectManager)
                 .build();
     }
 
-  //FIXME[ISIS-3207]
-    @DisabledIfSystemProperty(named = "isRunningWithSurefire", matches = "true")
     @Test
     public void testTitle() throws Exception {
 
@@ -93,29 +88,13 @@ class TitleFacetViaTitleAnnotationTest {
                 .orElse(null);
 
         final NormalDomainObject normalPojo = new NormalDomainObject();
-//FIXME
-//        final Sequence sequence = context.sequence("in-title-element-order");
-//        context.checking(new Expectations() {
-//            {
-//
-//                allowing(mockFacetHolder).getMetaModelContext();
-//                will(returnValue(metaModelContext));
-//
-//                allowing(mockManagedObject).getPojo();
-//                will(returnValue(normalPojo));
-//
-//                allowing(mockObjectManager).adapt("Normal");
-//                inSequence(sequence);
-//
-//                allowing(mockObjectManager).adapt("Domain");
-//                inSequence(sequence);
-//
-//                allowing(mockObjectManager).adapt("Object");
-//                inSequence(sequence);
-//            }
-//        });
 
-        final String title = facet.title(mockManagedObject);
+        Mockito.when(mockFacetHolder.getMetaModelContext()).thenReturn(metaModelContext);
+
+        val managedObject =
+                metaModelContext.getObjectManager().adapt(normalPojo);
+
+        final String title = facet.title(managedObject);
         assertThat(title, is("Normal Domain Object"));
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/NavigableParentFacetMethodTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/NavigableParentFacetMethodTest.java
index dbcc05cfec..238d638b2d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/NavigableParentFacetMethodTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/navparent/NavigableParentFacetMethodTest.java
@@ -23,7 +23,6 @@ import java.lang.reflect.Method;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
 import org.mockito.Mockito;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -34,9 +33,6 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.navparent.method.NavigableParentFacetViaMethod;
 import org.apache.isis.core.metamodel.object.ManagedObject;
 
-//FIXME[ISIS-3207] reflection using MH throws
-// java.lang.IllegalAccessException: access to public member failed: org.apache.isis.core.metamodel.facets.object.navparent.NavigableParentFacetMethodTest$DomainObjectWithProblemInNavigableParentMethod.parent[Ljava.lang.Object;@3eb631b8/invokeVirtual, from class org.apache.isis.commons.internal.reflection._Reflect (module org.apache.isis.commons)
-@DisabledIfSystemProperty(named = "isRunningWithSurefire", matches = "true")
 class NavigableParentFacetMethodTest {
 
     private NavigableParentFacetViaMethod facet;