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/06/08 08:20:55 UTC
[isis] branch master updated: ISIS-2724: add MM guard against wrong
use of @DomainObject on mixins
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 954292c ISIS-2724: add MM guard against wrong use of @DomainObject on mixins
954292c is described below
commit 954292c7ee9d84d28133e194e1ae07c00de5f6a7
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jun 8 10:20:41 2021 +0200
ISIS-2724: add MM guard against wrong use of @DomainObject on mixins
also adds some performance tweaks for @DomainObject processing
---
.../org/apache/isis/applib/annotation/Nature.java | 4 +
.../DomainObjectAnnotationFacetFactory.java | 184 +++++++++++++++------
.../annotation/ValueAnnotationFacetFactory.java | 10 --
...oicesFacetFromBoundedAnnotationFactoryTest.java | 5 +-
.../DomainObjectAnnotationFacetFactoryTest.java | 18 +-
.../ObjectTypeAnnotationFacetFactoryTest.java | 5 +-
6 files changed, 158 insertions(+), 68 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/Nature.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/Nature.java
index a253c13..d3ace3d 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/Nature.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/Nature.java
@@ -84,4 +84,8 @@ public enum Nature {
public boolean isEntity() {
return this == Nature.ENTITY;
}
+
+ public boolean isMixin() {
+ return this == Nature.MIXIN;
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index 50251df..3fe2740 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -27,8 +27,12 @@ import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.Value;
import org.apache.isis.applib.events.domain.ActionDomainEvent;
import org.apache.isis.applib.events.domain.CollectionDomainEvent;
import org.apache.isis.applib.events.domain.PropertyDomainEvent;
@@ -41,11 +45,13 @@ import org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent;
import org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent;
import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.mixins.system.HasInteractionId;
+import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.commons.internal.collections._Multimaps;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
+import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
@@ -82,7 +88,9 @@ import static org.apache.isis.commons.internal.base._NullSafe.stream;
import lombok.NonNull;
import lombok.val;
+import lombok.extern.log4j.Log4j2;
+@Log4j2
public class DomainObjectAnnotationFacetFactory
extends FacetFactoryAbstract
implements
@@ -106,25 +114,81 @@ implements
@Override
public void process(final ProcessObjectTypeContext processClassContext) {
- processObjectType(processClassContext);
+
+ val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
+ processLogicalTypeName(domainObjectIfAny, processClassContext);
+
+ // conflicting type semantics validation ...
+ validateConflictingTypeSemantics(domainObjectIfAny, processClassContext);
}
+ /*
+ * on the fly validation ...
+ * yet only considers annotations and falls short on other means
+ * (eg. ValueTypeRegistry, configuration, ...)
+ * TODO instead properly validate by implementing a validator that looks into the facets that are created
+ */
+ private void validateConflictingTypeSemantics(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessObjectTypeContext processClassContext) {
+
+ if(!domainObjectIfAny.isPresent()) {
+ return;
+ }
+
+ val domainObject = domainObjectIfAny.get();
+
+ val facetHolder = (IdentifiedHolder)processClassContext.getFacetHolder();
+ val cls = processClassContext.getCls();
+
+ if(processClassContext.synthesizeOnType(Value.class).isPresent()) {
+ ValidationFailure.raiseFormatted(facetHolder,
+ "Cannot use @DomainObject and @Value on the same type: %s", cls.getName());
+ }
+
+ if(!domainObject.nature().isMixin()) {
+ if(processClassContext.synthesizeOnType(Action.class).isPresent()) {
+ ValidationFailure.raiseFormatted(facetHolder,
+ "Cannot use @DomainObject and @Action on the same type, "
+ + "unless nature is MIXIN: %s", cls.getName());
+ }
+ if(processClassContext.synthesizeOnType(Property.class).isPresent()) {
+ ValidationFailure.raiseFormatted(facetHolder,
+ "Cannot use @DomainObject and @Property on the same type, "
+ + "unless nature is MIXIN: %s", cls.getName());
+ }
+ if(processClassContext.synthesizeOnType(Collection.class).isPresent()) {
+ ValidationFailure.raiseFormatted(facetHolder,
+ "Cannot use @DomainObject and @Collection on the same type, "
+ + "unless nature is MIXIN: %s", cls.getName());
+ }
+ }
+
+ if(domainObject.nature().isMixin()
+ && _Strings.isNotEmpty(domainObject.logicalTypeName())) {
+ // just a console warning, not decided yet whether we should be strict and fail MM validation
+ log.warn("Mixins don't need a logicalTypeName, as was declared with {}.", cls.getName());
+ }
+ }
@Override
public void process(final ProcessClassContext processClassContext) {
- processEntityChangePublishing(processClassContext);
- processAutoComplete(processClassContext);
- processBounded(processClassContext);
- processEditing(processClassContext);
- processNature(processClassContext);
- processLifecycleEvents(processClassContext);
- processDomainEvents(processClassContext);
+ val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
+ processEntityChangePublishing(domainObjectIfAny, processClassContext);
+ processAutoComplete(domainObjectIfAny, processClassContext);
+ processBounded(domainObjectIfAny, processClassContext);
+ processEditing(domainObjectIfAny, processClassContext);
+ processNature(domainObjectIfAny, processClassContext);
+ processLifecycleEvents(domainObjectIfAny, processClassContext);
+ processDomainEvents(domainObjectIfAny, processClassContext);
}
- void processEntityChangePublishing(final ProcessClassContext processClassContext) {
+ void processEntityChangePublishing(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessClassContext processClassContext) {
val cls = processClassContext.getCls();
val facetHolder = processClassContext.getFacetHolder();
@@ -139,7 +203,7 @@ implements
}
// check for @DomainObject(entityChangePublishing=....)
- val entityChangePublishing = processClassContext.synthesizeOnType(DomainObject.class)
+ val entityChangePublishing = domainObjectIfAny
.map(DomainObject::entityChangePublishing);
val entityChangePublishingFacet = EntityChangePublishingFacetForDomainObjectAnnotation
.create(entityChangePublishing, getConfiguration(), facetHolder);
@@ -150,7 +214,9 @@ implements
// -- AUTO COMPLETE
- void processAutoComplete(final ProcessClassContext processClassContext) {
+ void processAutoComplete(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessClassContext processClassContext) {
val cls = processClassContext.getCls();
val facetHolder = processClassContext.getFacetHolder();
@@ -215,50 +281,50 @@ implements
// -- BOUNDED
- void processBounded(final ProcessClassContext processClassContext) {
+ // check from @DomainObject(bounded=...)
+ void processBounded(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessClassContext processClassContext) {
val facetHolder = processClassContext.getFacetHolder();
-
- // check from @DomainObject(bounded=...)
- val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
- val facet = ChoicesFacetForDomainObjectAnnotation.create(domainObjectIfAny, facetHolder);
-
- // then add
- super.addFacet(facet);
+ FacetUtil.addFacet(
+ ChoicesFacetForDomainObjectAnnotation
+ .create(domainObjectIfAny, facetHolder));
}
- void processEditing(final ProcessClassContext processClassContext) {
+ // check from @DomainObject(editing=...)
+ void processEditing(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessClassContext processClassContext) {
val facetHolder = processClassContext.getFacetHolder();
- // check from @DomainObject(editing=...)
- val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
-
- super.addFacet(
+ FacetUtil.addFacet(
EditingEnabledFacetForDomainObjectAnnotation
.create(domainObjectIfAny, facetHolder));
- super.addFacet(
+ FacetUtil.addFacet(
ImmutableFacetForDomainObjectAnnotation
.create(domainObjectIfAny, getConfiguration(), facetHolder));
}
- void processObjectType(final ProcessObjectTypeContext processClassContext) {
+ // check from @DomainObject(logicalTypeName=...)
+ void processLogicalTypeName(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessObjectTypeContext processClassContext) {
val cls = processClassContext.getCls();
val facetHolder = processClassContext.getFacetHolder();
- // check from @DomainObject(logicalTypeName=...)
- val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
- val facet = LogicalTypeFacetForDomainObjectAnnotation.create(domainObjectIfAny, cls, facetHolder);
-
- // then add
- super.addFacet(facet);
+ FacetUtil.addFacet(
+ LogicalTypeFacetForDomainObjectAnnotation
+ .create(domainObjectIfAny, cls, facetHolder));
}
- void processNature(final ProcessClassContext processClassContext) {
+ void processNature(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessClassContext processClassContext) {
val cls = processClassContext.getCls();
val facetHolder = processClassContext.getFacetHolder();
- val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
if(!domainObjectIfAny.isPresent()) {
return;
@@ -300,9 +366,10 @@ implements
}
- private void processLifecycleEvents(final ProcessClassContext processClassContext) {
+ private void processLifecycleEvents(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessClassContext processClassContext) {
- val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
if(!domainObjectIfAny.isPresent()) {
return;
}
@@ -318,8 +385,9 @@ implements
}
- private void processDomainEvents(final ProcessClassContext processClassContext) {
- val domainObjectIfAny = processClassContext.synthesizeOnType(DomainObject.class);
+ private void processDomainEvents(
+ final Optional<DomainObject> domainObjectIfAny,
+ final ProcessClassContext processClassContext) {
if(!domainObjectIfAny.isPresent()) {
return;
}
@@ -330,7 +398,9 @@ implements
processDomainEventCollection(domainObjectIfAny, facetHolder);
}
- private void processLifecycleEventCreated(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processLifecycleEventCreated(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::createdLifecycleEvent)
@@ -346,7 +416,9 @@ implements
.ifPresent(super::addFacet);
}
- private void processLifecycleEventLoaded(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processLifecycleEventLoaded(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::loadedLifecycleEvent)
@@ -362,7 +434,9 @@ implements
.ifPresent(super::addFacet);
}
- private void processLifecycleEventPersisting(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processLifecycleEventPersisting(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::persistingLifecycleEvent)
@@ -378,7 +452,9 @@ implements
.ifPresent(super::addFacet);
}
- private void processLifecycleEventPersisted(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processLifecycleEventPersisted(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::persistedLifecycleEvent)
@@ -394,7 +470,9 @@ implements
.ifPresent(super::addFacet);
}
- private void processLifecycleEventRemoving(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processLifecycleEventRemoving(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::removingLifecycleEvent)
@@ -410,7 +488,9 @@ implements
.ifPresent(super::addFacet);
}
- private void processLifecycleEventUpdated(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processLifecycleEventUpdated(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::updatedLifecycleEvent)
@@ -426,7 +506,9 @@ implements
.ifPresent(super::addFacet);
}
- private void processLifecycleEventUpdating(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processLifecycleEventUpdating(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::updatingLifecycleEvent)
@@ -442,7 +524,9 @@ implements
.ifPresent(super::addFacet);
}
- private void processDomainEventAction(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processDomainEventAction(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::actionDomainEvent)
@@ -453,7 +537,9 @@ implements
}
- private void processDomainEventProperty(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processDomainEventProperty(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::propertyDomainEvent)
@@ -463,7 +549,9 @@ implements
.ifPresent(super::addFacet);
}
- private void processDomainEventCollection(final Optional<DomainObject> domainObjectIfAny, final FacetHolder holder) {
+ private void processDomainEventCollection(
+ final Optional<DomainObject> domainObjectIfAny,
+ final FacetHolder holder) {
domainObjectIfAny
.map(DomainObject::collectionDomainEvent)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/ValueAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/ValueAnnotationFacetFactory.java
index 5050380..7b3ddb4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/ValueAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/annotation/ValueAnnotationFacetFactory.java
@@ -18,13 +18,10 @@
*/
package org.apache.isis.core.metamodel.facets.value.annotation;
-import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.core.metamodel.facetapi.FacetUtil;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.ObjectTypeFacetFactory;
-import org.apache.isis.core.metamodel.specloader.validator.ValidationFailure;
import lombok.val;
@@ -46,13 +43,6 @@ implements
val valueIfAny = processClassContext.synthesizeOnType(org.apache.isis.applib.annotation.Value.class);
FacetUtil.addFacet(LogicalTypeFacetForValueAnnotation.create(valueIfAny, cls, facetHolder));
- // conflicting type semantics validation
- if(valueIfAny.isPresent()
- && processClassContext.synthesizeOnType(DomainObject.class).isPresent()) {
- ValidationFailure.raiseFormatted((IdentifiedHolder)facetHolder,
- "Cannot use @DomainObject and @Value on the same type: %s", cls.getName());
- }
-
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
index d69019d..8cf242d 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
@@ -28,6 +28,8 @@ import org.apache.isis.core.metamodel.facets.object.choices.ChoicesFacetFromBoun
import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
import org.apache.isis.core.metamodel.methods.MethodByClassMap;
+import lombok.val;
+
public class ChoicesFacetFromBoundedAnnotationFactoryTest extends AbstractFacetFactoryTest {
private DomainObjectAnnotationFacetFactory facetFactory;
@@ -50,7 +52,8 @@ public class ChoicesFacetFromBoundedAnnotationFactoryTest extends AbstractFacetF
class Customer {
}
- facetFactory.processBounded(new ProcessClassContext(Customer.class, methodRemover, facetedMethod));
+ val context = new ProcessClassContext(Customer.class, methodRemover, facetedMethod);
+ facetFactory.processBounded(context.synthesizeOnType(DomainObject.class), context);
final Facet facet = facetedMethod.getFacet(ChoicesFacet.class);
assertNotNull(facet);
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 043aad1..9612a17 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -27,6 +27,11 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
+
import org.apache.isis.applib.annotation.Bounding;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.mixins.system.HasInteractionId;
@@ -55,11 +60,6 @@ import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet;
import org.apache.isis.core.metamodel.methods.MethodByClassMap;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertFalse;
-
import lombok.val;
public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
@@ -128,7 +128,8 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
allowingEntityChangePublishingToReturn(PublishingPolicies.EntityChangePublishingPolicy.ALL);
- facetFactory.processEntityChangePublishing(new ProcessClassContext(HasInteractionId.class, mockMethodRemover, facetHolder));
+ val context = new ProcessClassContext(HasInteractionId.class, mockMethodRemover, facetHolder);
+ facetFactory.processEntityChangePublishing(context.synthesizeOnType(DomainObject.class), context);
final Facet facet = facetHolder.getFacet(EntityChangePublishingFacet.class);
Assert.assertNull(facet);
@@ -142,7 +143,8 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
public void configured_value_set_to_all() {
allowingEntityChangePublishingToReturn(PublishingPolicies.EntityChangePublishingPolicy.ALL);
- facetFactory.processEntityChangePublishing(new ProcessClassContext(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
+ val context = new ProcessClassContext(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder);
+ facetFactory.processEntityChangePublishing(context.synthesizeOnType(DomainObject.class), context);
final Facet facet = facetHolder.getFacet(EntityChangePublishingFacet.class);
assertThat(facet, is(notNullValue()));
@@ -531,7 +533,7 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
}
- public static class ObjectType extends DomainObjectAnnotationFacetFactoryTest {
+ public static class LogicalTypeName extends DomainObjectAnnotationFacetFactoryTest {
@DomainObject(logicalTypeName = "CUS")
class CustomerWithDomainObjectAndObjectTypeSet {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java
index 181ee93..f927c55 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ObjectTypeAnnotationFacetFactoryTest.java
@@ -34,6 +34,8 @@ import org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.Lo
import org.apache.isis.core.metamodel.facets.object.logicaltype.LogicalTypeFacet;
import org.apache.isis.core.metamodel.methods.MethodByClassMap;
+import lombok.val;
+
public class ObjectTypeAnnotationFacetFactoryTest extends AbstractFacetFactoryJUnit4TestCase {
private DomainObjectAnnotationFacetFactory facetFactory;
@@ -52,7 +54,8 @@ public class ObjectTypeAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
expectNoMethodsRemoved();
- facetFactory.processObjectType(new ProcessObjectTypeContext(Customer.class, facetHolder));
+ val context = new ProcessObjectTypeContext(Customer.class, facetHolder);
+ facetFactory.processLogicalTypeName(context.synthesizeOnType(DomainObject.class), context);
final LogicalTypeFacet facet = facetHolder.getFacet(LogicalTypeFacet.class);