You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/10/27 07:26:06 UTC
[isis] 03/03: ISIS-1632: converts a number of facet factories to
handle Lists of annotations (WORK IN PROGRESS, CODE STILL DOES NOT COMPILE)
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch dev/2.0.0/ISIS-1632-meta-annotations
in repository https://gitbox.apache.org/repos/asf/isis.git
commit cdcc0ce5197981bb5569730f77e6229600a35dd8
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Oct 27 08:25:47 2017 +0100
ISIS-1632: converts a number of facet factories to handle Lists of annotations (WORK IN PROGRESS, CODE STILL DOES NOT COMPILE)
---
.../apache/isis/applib/annotation/Auditing.java | 7 +-
.../org/apache/isis/applib/annotation/Editing.java | 12 +-
.../apache/isis/applib/annotation/Publishing.java | 7 +-
.../DomainObjectAnnotationFacetFactory.java | 317 +++++++++++----------
.../AuditableFacetForDomainObjectAnnotation.java | 38 ++-
.../ChoicesFacetForDomainObjectAnnotation.java | 4 +-
.../ImmutableFacetForDomainObjectAnnotation.java | 51 ++--
...ObjectSpecIdFacetForDomainObjectAnnotation.java | 19 +-
...lishedObjectFacetForDomainObjectAnnotation.java | 8 +-
...atableObjectFacetForDomainObjectAnnotation.java | 80 +++---
...PolicyFacetForDomainObjectLayoutAnnotation.java | 16 +-
...arkPolicyFacetForViewModelLayoutAnnotation.java | 14 +-
...lassFaFacetForDomainObjectLayoutAnnotation.java | 22 +-
...sClassFacetForDomainObjectLayoutAnnotation.java | 14 +-
...ObjectLayoutAnnotationUsingCssClassUiEvent.java | 33 ++-
...ainObjectLayoutAnnotationUsingTitleUiEvent.java | 32 +--
.../mixin/MixinFacetForDomainObjectAnnotation.java | 3 +-
.../facets/object/parseable/ParserUtil.java | 2 +-
.../value/vsp/ValueSemanticsProviderUtil.java | 3 +-
...doPersistenceCapableAnnotationFacetFactory.java | 2 +-
...ndatoryFromJdoColumnAnnotationFacetFactory.java | 4 +-
21 files changed, 370 insertions(+), 318 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Auditing.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Auditing.java
index 145cba0..283c859 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Auditing.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Auditing.java
@@ -37,5 +37,10 @@ public enum Auditing {
/**
* Do not audit changes to this object (even if otherwise configured to enable auditing).
*/
- DISABLED
+ DISABLED,
+ /**
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
+ */
+ NOT_SPECIFIED
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Editing.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Editing.java
index b452397..73bd187 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Editing.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Editing.java
@@ -36,10 +36,12 @@ public enum Editing {
ENABLED,
/**
* Do not allow the properties to be edited, or the collections to be added to/removed from.
- *
- * <p>
- * Corresponds to the {@link Immutable} annotation).
- * </p>
*/
- DISABLED
+ DISABLED,
+ /**
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
+ */
+ NOT_SPECIFIED
+
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Publishing.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Publishing.java
index 64f6638..78afcdc 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Publishing.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Publishing.java
@@ -37,5 +37,10 @@ public enum Publishing {
/**
* Do not publish changes to this object (even if otherwise configured to enable publishing).
*/
- DISABLED
+ DISABLED,
+ /**
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
+ */
+ NOT_SPECIFIED
}
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 fcf9b3d..429106e 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
@@ -20,7 +20,9 @@ package org.apache.isis.core.metamodel.facets.object.domainobject;
import java.lang.reflect.Method;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
@@ -111,7 +113,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
void processAuditing(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final DomainObject domainObject = Annotations.getAnnotations(cls, DomainObject.class);
+ final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
final FacetHolder holder = processClassContext.getFacetHolder();
//
@@ -127,7 +129,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
// check for @DomainObject(auditing=....)
AuditableFacet auditableFacet = AuditableFacetForDomainObjectAnnotation
- .create(domainObject, getConfiguration(), holder);
+ .create(domainObjects, getConfiguration(), holder);
// then add
FacetUtil.addFacet(auditableFacet);
@@ -136,7 +138,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
void processPublishing(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final DomainObject domainObject = Annotations.getAnnotations(cls, DomainObject.class);
+ final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
//
@@ -150,7 +152,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
// check from @DomainObject(publishing=...)
PublishedObjectFacet publishedObjectFacet = PublishedObjectFacetForDomainObjectAnnotation
- .create(domainObject, getConfiguration(), facetHolder);
+ .create(domainObjects, getConfiguration(), facetHolder);
// then add
FacetUtil.addFacet(publishedObjectFacet);
@@ -161,37 +163,41 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
final FacetHolder facetHolder = processClassContext.getFacetHolder();
// check from @DomainObject(auditing=...)
- final DomainObject domainObjectAnnot = Annotations.getAnnotations(cls, DomainObject.class);
- Facet facet = createFor(domainObjectAnnot, facetHolder, cls);
+ final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
+ Facet facet = createFor(domainObjects, facetHolder, cls);
// then add
FacetUtil.addFacet(facet);
}
private AutoCompleteFacet createFor(
- final DomainObject domainObject,
+ final List<DomainObject> domainObjects,
final FacetHolder facetHolder,
final Class<?> cls) {
- if(domainObject == null) {
+ if(domainObjects.isEmpty()) {
return null;
}
- final Class<?> repositoryClass = domainObject.autoCompleteRepository();
- if(repositoryClass == Object.class) {
- return null;
- }
- final String actionName = domainObject.autoCompleteAction();
-
- if(!isServiceType(cls, "@DomainObject", repositoryClass)) {
- return null;
- }
- final Method repositoryMethod = findRepositoryMethod(cls, "@DomainObject", repositoryClass, actionName);
- if(repositoryMethod == null) {
- return null;
+ class Annot {
+ private Annot(final DomainObject domainObject) {
+ this.autoCompleteRepository = domainObject.autoCompleteRepository();
+ this.autoCompleteAction = domainObject.autoCompleteAction();
+ }
+ Class<?> autoCompleteRepository;
+ String autoCompleteAction;
+ Method repositoryMethod;
}
- return new AutoCompleteFacetForDomainObjectAnnotation(
- facetHolder, repositoryClass, repositoryMethod, servicesInjector);
+ return domainObjects.stream()
+ .map(Annot::new)
+ .filter(a -> a.autoCompleteRepository != Object.class)
+ .filter(a -> isServiceType(cls, "@DomainObject", a.autoCompleteRepository))
+ .peek(a -> a.repositoryMethod = findRepositoryMethod(cls, "@DomainObject", a.autoCompleteRepository, a.autoCompleteAction))
+ .filter(a -> a.repositoryMethod == null)
+ .findFirst()
+ .map(a -> new AutoCompleteFacetForDomainObjectAnnotation(
+ facetHolder, a.autoCompleteRepository, a.repositoryMethod, servicesInjector))
+ .orElse(null);
}
private boolean isServiceType(
@@ -229,11 +235,11 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
void processBounded(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final DomainObject domainObject = Annotations.getAnnotations(cls, DomainObject.class);
+ final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
// check from @DomainObject(bounded=...)
- Facet facet = ChoicesFacetForDomainObjectAnnotation.create(domainObject, facetHolder, getDeploymentCategory(), getAuthenticationSessionProvider(), persistenceSessionServiceInternal);
+ Facet facet = ChoicesFacetForDomainObjectAnnotation.create(domainObjects, facetHolder, getDeploymentCategory(), getAuthenticationSessionProvider(), persistenceSessionServiceInternal);
// then add
FacetUtil.addFacet(facet);
@@ -241,12 +247,12 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
void processEditing(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final DomainObject domainObject = Annotations.getAnnotations(cls, DomainObject.class);
+ final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
// check from @DomainObject(editing=...)
ImmutableFacet facet = ImmutableFacetForDomainObjectAnnotation
- .create(domainObject, getConfiguration(), facetHolder);
+ .create(domainObjects, getConfiguration(), facetHolder);
// then add
FacetUtil.addFacet(facet);
@@ -254,11 +260,11 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
void processObjectType(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final DomainObject domainObject = Annotations.getAnnotations(cls, DomainObject.class);
+ final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
// check from @DomainObject(objectType=...)
- Facet facet = ObjectSpecIdFacetForDomainObjectAnnotation.create(domainObject, facetHolder);
+ Facet facet = ObjectSpecIdFacetForDomainObjectAnnotation.create(domainObjects, facetHolder);
// else check for @PersistenceCapable(schema=...)
if(facet == null) {
@@ -275,9 +281,9 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
void processNature(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final DomainObject domainObject = Annotations.getAnnotations(cls, DomainObject.class);
+ final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
- if(domainObject == null) {
+ if(domainObjects == null) {
return;
}
@@ -285,21 +291,21 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
final PostConstructMethodCache postConstructMethodCache = this;
final ViewModelFacet recreatableObjectFacet = RecreatableObjectFacetForDomainObjectAnnotation.create(
- domainObject, getSpecificationLoader(), persistenceSessionServiceInternal, servicesInjector,
+ domainObjects, getSpecificationLoader(), persistenceSessionServiceInternal, servicesInjector,
facetHolder, postConstructMethodCache);
if(recreatableObjectFacet != null) {
FacetUtil.addFacet(recreatableObjectFacet);
} else {
- if(domainObject.nature() == Nature.MIXIN) {
- if(!mixinTypeValidator.ensureMixinType(cls)) {
- return;
- }
+ final List<DomainObject> mixinDomainObjects =
+ domainObjects.stream()
+ .filter(domainObject -> domainObject.nature() == Nature.MIXIN)
+ .filter(domainObject -> mixinTypeValidator.ensureMixinType(cls))
+ .collect(Collectors.toList());
- final MixinFacet mixinFacet = MixinFacetForDomainObjectAnnotation.create(domainObject, cls, facetHolder, servicesInjector);
- FacetUtil.addFacet(mixinFacet);
- }
+ final MixinFacet mixinFacet = MixinFacetForDomainObjectAnnotation.create(mixinDomainObjects, cls, facetHolder, servicesInjector);
+ FacetUtil.addFacet(mixinFacet);
}
}
@@ -308,139 +314,146 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
private void processLifecycleEvents(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final DomainObject domainObject = Annotations.getAnnotations(cls, DomainObject.class);
- if(domainObject == null) {
+ final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
+ if(domainObjects == null) {
return;
}
final FacetHolder holder = processClassContext.getFacetHolder();
- processLifecycleEventCreated(domainObject, holder);
- processLifecycleEventLoaded(domainObject, holder);
- processLifecycleEventPersisted(domainObject, holder);
- processLifecycleEventPersisting(domainObject, holder);
- processLifecycleEventRemoving(domainObject, holder);
- processLifecycleEventUpdated(domainObject, holder);
- processLifecycleEventUpdating(domainObject, holder);
+ processLifecycleEventCreated(domainObjects, holder);
+ processLifecycleEventLoaded(domainObjects, holder);
+ processLifecycleEventPersisted(domainObjects, holder);
+ processLifecycleEventPersisting(domainObjects, holder);
+ processLifecycleEventRemoving(domainObjects, holder);
+ processLifecycleEventUpdated(domainObjects, holder);
+ processLifecycleEventUpdating(domainObjects, holder);
}
- private void processLifecycleEventCreated(final DomainObject domainObject, final FacetHolder holder) {
- final Class<? extends ObjectCreatedEvent<?>> lifecycleEvent = domainObject.createdLifecycleEvent();
-
- final CreatedLifecycleEventFacetForDomainObjectAnnotation facet =
- new CreatedLifecycleEventFacetForDomainObjectAnnotation(
- holder, lifecycleEvent, getSpecificationLoader());
-
- if(EventUtil.eventTypeIsPostable(
- facet.getEventType(),
- ObjectCreatedEvent.Noop.class,
- ObjectCreatedEvent.Default.class,
- "isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault",
- getConfiguration())) {
- FacetUtil.addFacet(facet);
- }
+ private void processLifecycleEventCreated(final List<DomainObject> domainObjects, final FacetHolder holder) {
+
+ domainObjects.stream()
+ .map(DomainObject::createdLifecycleEvent)
+ .filter(lifecycleEvent ->
+ EventUtil.eventTypeIsPostable(
+ lifecycleEvent,
+ ObjectCreatedEvent.Noop.class,
+ ObjectCreatedEvent.Default.class,
+ "isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault",
+ getConfiguration())
+ )
+ .findFirst()
+ .map(lifecycleEvent -> new CreatedLifecycleEventFacetForDomainObjectAnnotation(
+ holder, lifecycleEvent, getSpecificationLoader()))
+ .ifPresent(FacetUtil::addFacet);
}
- private void processLifecycleEventLoaded(final DomainObject domainObject, final FacetHolder holder) {
- final Class<? extends ObjectLoadedEvent<?>> lifecycleEvent = domainObject.loadedLifecycleEvent();
-
- final LoadedLifecycleEventFacetForDomainObjectAnnotation facet =
- new LoadedLifecycleEventFacetForDomainObjectAnnotation(
- holder, lifecycleEvent, getSpecificationLoader());
-
- if(EventUtil.eventTypeIsPostable(
- facet.getEventType(),
- ObjectLoadedEvent.Noop.class,
- ObjectLoadedEvent.Default.class,
- "isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault",
- getConfiguration())) {
- FacetUtil.addFacet(facet);
- }
+ private void processLifecycleEventLoaded(final List<DomainObject> domainObjects, final FacetHolder holder) {
+
+ domainObjects.stream()
+ .map(DomainObject::loadedLifecycleEvent)
+ .filter(lifecycleEvent ->
+ EventUtil.eventTypeIsPostable(
+ lifecycleEvent,
+ ObjectLoadedEvent.Noop.class,
+ ObjectLoadedEvent.Default.class,
+ "isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault",
+ getConfiguration())
+ )
+ .findFirst()
+ .map(lifecycleEvent -> new LoadedLifecycleEventFacetForDomainObjectAnnotation(
+ holder, lifecycleEvent, getSpecificationLoader()))
+ .ifPresent(FacetUtil::addFacet);
}
- private void processLifecycleEventPersisting(final DomainObject domainObject, final FacetHolder holder) {
- final Class<? extends ObjectPersistingEvent<?>> lifecycleEvent = domainObject.persistingLifecycleEvent();
-
- final PersistingLifecycleEventFacetForDomainObjectAnnotation facet =
- new PersistingLifecycleEventFacetForDomainObjectAnnotation(
- holder, lifecycleEvent, getSpecificationLoader());
-
- if(EventUtil.eventTypeIsPostable(
- facet.getEventType(),
- ObjectPersistingEvent.Noop.class,
- ObjectPersistingEvent.Default.class,
- "isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault",
- getConfiguration())) {
- FacetUtil.addFacet(facet);
- }
+ private void processLifecycleEventPersisting(final List<DomainObject> domainObjects, final FacetHolder holder) {
+
+ domainObjects.stream()
+ .map(DomainObject::persistingLifecycleEvent)
+ .filter(lifecycleEvent ->
+ EventUtil.eventTypeIsPostable(
+ lifecycleEvent,
+ ObjectPersistingEvent.Noop.class,
+ ObjectPersistingEvent.Default.class,
+ "isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault",
+ getConfiguration())
+ )
+ .findFirst()
+ .map(lifecycleEvent -> new PersistingLifecycleEventFacetForDomainObjectAnnotation(
+ holder, lifecycleEvent, getSpecificationLoader()))
+ .ifPresent(FacetUtil::addFacet);
}
- private void processLifecycleEventPersisted(final DomainObject domainObject, final FacetHolder holder) {
- final Class<? extends ObjectPersistedEvent<?>> lifecycleEvent = domainObject.persistedLifecycleEvent();
-
- final PersistedLifecycleEventFacetForDomainObjectAnnotation facet =
- new PersistedLifecycleEventFacetForDomainObjectAnnotation(
- holder, lifecycleEvent, getSpecificationLoader());
-
- if(EventUtil.eventTypeIsPostable(
- facet.getEventType(),
- ObjectPersistedEvent.Noop.class,
- ObjectPersistedEvent.Default.class,
- "isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault",
- getConfiguration())) {
- FacetUtil.addFacet(facet);
- }
+ private void processLifecycleEventPersisted(final List<DomainObject> domainObjects, final FacetHolder holder) {
+
+ domainObjects.stream()
+ .map(DomainObject::persistedLifecycleEvent)
+ .filter(lifecycleEvent ->
+ EventUtil.eventTypeIsPostable(
+ lifecycleEvent,
+ ObjectPersistedEvent.Noop.class,
+ ObjectPersistedEvent.Default.class,
+ "isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault",
+ getConfiguration())
+ )
+ .findFirst()
+ .map(lifecycleEvent -> new PersistedLifecycleEventFacetForDomainObjectAnnotation(
+ holder, lifecycleEvent, getSpecificationLoader()))
+ .ifPresent(FacetUtil::addFacet);
}
- private void processLifecycleEventRemoving(final DomainObject domainObject, final FacetHolder holder) {
- final Class<? extends ObjectRemovingEvent<?>> lifecycleEvent = domainObject.removingLifecycleEvent();
-
- final RemovingLifecycleEventFacetForDomainObjectAnnotation facet =
- new RemovingLifecycleEventFacetForDomainObjectAnnotation(
- holder, lifecycleEvent, getSpecificationLoader());
-
- if(EventUtil.eventTypeIsPostable(
- facet.getEventType(),
- ObjectRemovingEvent.Noop.class,
- ObjectRemovingEvent.Default.class,
- "isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault",
- getConfiguration())) {
- FacetUtil.addFacet(facet);
- }
+ private void processLifecycleEventRemoving(final List<DomainObject> domainObjects, final FacetHolder holder) {
+
+ domainObjects.stream()
+ .map(DomainObject::removingLifecycleEvent)
+ .filter(lifecycleEvent ->
+ EventUtil.eventTypeIsPostable(
+ lifecycleEvent,
+ ObjectRemovingEvent.Noop.class,
+ ObjectRemovingEvent.Default.class,
+ "isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault",
+ getConfiguration())
+ )
+ .findFirst()
+ .map(lifecycleEvent -> new RemovingLifecycleEventFacetForDomainObjectAnnotation(
+ holder, lifecycleEvent, getSpecificationLoader()))
+ .ifPresent(FacetUtil::addFacet);
}
- private void processLifecycleEventUpdated(final DomainObject domainObject, final FacetHolder holder) {
- final Class<? extends ObjectUpdatedEvent<?>> lifecycleEvent = domainObject.updatedLifecycleEvent();
-
- final UpdatedLifecycleEventFacetForDomainObjectAnnotation facet =
- new UpdatedLifecycleEventFacetForDomainObjectAnnotation(
- holder, lifecycleEvent, getSpecificationLoader());
-
- if(EventUtil.eventTypeIsPostable(
- facet.getEventType(),
- ObjectUpdatedEvent.Noop.class,
- ObjectUpdatedEvent.Default.class,
- "isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault",
- getConfiguration())) {
- FacetUtil.addFacet(facet);
- }
+ private void processLifecycleEventUpdated(final List<DomainObject> domainObjects, final FacetHolder holder) {
+
+ domainObjects.stream()
+ .map(DomainObject::updatedLifecycleEvent)
+ .filter(lifecycleEvent ->
+ EventUtil.eventTypeIsPostable(
+ lifecycleEvent,
+ ObjectUpdatedEvent.Noop.class,
+ ObjectUpdatedEvent.Default.class,
+ "isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault",
+ getConfiguration())
+ )
+ .findFirst()
+ .map(lifecycleEvent -> new UpdatedLifecycleEventFacetForDomainObjectAnnotation(
+ holder, lifecycleEvent, getSpecificationLoader()))
+ .ifPresent(FacetUtil::addFacet);
}
- private void processLifecycleEventUpdating(final DomainObject domainObject, final FacetHolder holder) {
- final Class<? extends ObjectUpdatingEvent<?>> lifecycleEvent = domainObject.updatingLifecycleEvent();
-
- final UpdatingLifecycleEventFacetForDomainObjectAnnotation facet =
- new UpdatingLifecycleEventFacetForDomainObjectAnnotation(
- holder, lifecycleEvent, getSpecificationLoader());
-
- if(EventUtil.eventTypeIsPostable(
- facet.getEventType(),
- ObjectUpdatingEvent.Noop.class,
- ObjectUpdatingEvent.Default.class,
- "isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault",
- getConfiguration())) {
- FacetUtil.addFacet(facet);
- }
+ private void processLifecycleEventUpdating(final List<DomainObject> domainObjects, final FacetHolder holder) {
+
+ domainObjects.stream()
+ .map(DomainObject::updatingLifecycleEvent)
+ .filter(lifecycleEvent ->
+ EventUtil.eventTypeIsPostable(
+ lifecycleEvent,
+ ObjectUpdatingEvent.Noop.class,
+ ObjectUpdatingEvent.Default.class,
+ "isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault",
+ getConfiguration())
+ )
+ .findFirst()
+ .map(lifecycleEvent -> new UpdatingLifecycleEventFacetForDomainObjectAnnotation(
+ holder, lifecycleEvent, getSpecificationLoader()))
+ .ifPresent(FacetUtil::addFacet);
}
// //////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
index e8b8e88..378b7a1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.object.domainobject.auditing;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Auditing;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -30,30 +32,26 @@ import org.apache.isis.core.metamodel.facets.object.audit.AuditableFacetAbstract
public class AuditableFacetForDomainObjectAnnotation extends AuditableFacetAbstract {
public static AuditableFacet create(
- final DomainObject domainObject,
+ final List<DomainObject> domainObjects,
final IsisConfiguration configuration,
final FacetHolder holder) {
- final Auditing auditing = domainObject != null ? domainObject.auditing() : Auditing.AS_CONFIGURED;
- switch (auditing) {
- case AS_CONFIGURED:
-
- final AuditObjectsConfiguration setting = AuditObjectsConfiguration.parse(configuration);
- switch (setting) {
- case NONE:
- return null;
+ return domainObjects
+ .stream()
+ .filter(domainObject -> domainObject.auditing() != Auditing.NOT_SPECIFIED)
+ .findFirst()
+ .map(domainObject -> {
+ switch (domainObject.auditing()) {
+ case DISABLED:
+ return (AuditableFacet)new AuditableFacetForDomainObjectAnnotation(Enablement.DISABLED, holder);
+ case ENABLED:
+ return new AuditableFacetForDomainObjectAnnotation(Enablement.ENABLED, holder);
+ case AS_CONFIGURED:
default:
- return domainObject != null
- ? new AuditableFacetForDomainObjectAnnotationAsConfigured(holder)
- : new AuditableFacetFromConfiguration(holder);
- }
- case DISABLED:
- // explicitly disable
- return new AuditableFacetForDomainObjectAnnotation(Enablement.DISABLED, holder);
- case ENABLED:
- return new AuditableFacetForDomainObjectAnnotation(Enablement.ENABLED, holder);
- }
- return null;
+ return new AuditableFacetForDomainObjectAnnotationAsConfigured(holder);
+ }
+ })
+ .orElse(new AuditableFacetFromConfiguration(holder));
}
protected AuditableFacetForDomainObjectAnnotation(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
index 2bf23f4..129d37d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/choices/ChoicesFacetForDomainObjectAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.object.domainobject.choices;
+import java.util.List;
+
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
@@ -30,7 +32,7 @@ import org.apache.isis.core.metamodel.services.persistsession.PersistenceSession
public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBoundedAbstract {
public static Facet create(
- final DomainObject domainObject,
+ final List<DomainObject> domainObject,
final FacetHolder facetHolder,
final DeploymentCategory deploymentCategory,
final AuthenticationSessionProvider authenticationSessionProvider,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
index f657963..46cd82b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
@@ -19,7 +19,10 @@
package org.apache.isis.core.metamodel.facets.object.domainobject.editing;
+import java.util.List;
+
import com.google.common.base.Strings;
+
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -35,33 +38,39 @@ public class ImmutableFacetForDomainObjectAnnotation extends ImmutableFacetAbstr
private final String reason;
public static ImmutableFacet create(
- final DomainObject domainObject,
+ final List<DomainObject> domainObjects,
final IsisConfiguration configuration,
final FacetHolder holder) {
- final Editing editing = domainObject != null? domainObject.editing() : Editing.AS_CONFIGURED;
- final String disabledReason = domainObject != null? domainObject.editingDisabledReason(): "Disabled";
+ final EditingObjectsConfiguration setting = EditingObjectsConfiguration.parse(configuration);
- switch (editing) {
- case AS_CONFIGURED:
+ return domainObjects.stream()
+ .filter(domainObject -> domainObject.editing() != Editing.NOT_SPECIFIED)
+ .findFirst()
+ .map(domainObject -> {
+ final String disabledReason = domainObject.editingDisabledReason();
+ switch (domainObject.editing()) {
+ case AS_CONFIGURED:
- if(holder.containsDoOpFacet(ImmutableFacet.class)) {
- // do not replace
- return null;
- }
+ if(holder.containsDoOpFacet(ImmutableFacet.class)) {
+ // do not replace
+ return null;
+ }
- final EditingObjectsConfiguration setting = EditingObjectsConfiguration.parse(configuration);
- return setting == EditingObjectsConfiguration.FALSE
- ? domainObject != null
- ? new ImmutableFacetForDomainObjectAnnotationAsConfigured(disabledReason, holder)
- : new ImmutableFacetFromConfiguration(disabledReason, holder)
- : null;
- case DISABLED:
- return new ImmutableFacetForDomainObjectAnnotation(disabledReason, holder);
- case ENABLED:
- return null;
- }
- return null;
+ return setting == EditingObjectsConfiguration.FALSE
+ ? (ImmutableFacet) new ImmutableFacetForDomainObjectAnnotationAsConfigured(disabledReason, holder)
+ : null;
+ case DISABLED:
+ return new ImmutableFacetForDomainObjectAnnotation(disabledReason, holder);
+ case ENABLED:
+ return null;
+ }
+ throw new IllegalStateException("domainObject.editing() not recognised, is " + domainObject.editing());
+ })
+ .orElseGet(() -> setting == EditingObjectsConfiguration.FALSE
+ ? new ImmutableFacetFromConfiguration("Disabled", holder)
+ : null
+ );
}
public ImmutableFacetForDomainObjectAnnotation(final String reason, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForDomainObjectAnnotation.java
index d96c071..7930a9e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/objectspecid/ObjectSpecIdFacetForDomainObjectAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid;
+import java.util.List;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -28,18 +30,15 @@ import org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFac
public class ObjectSpecIdFacetForDomainObjectAnnotation extends ObjectSpecIdFacetAbstract {
public static ObjectSpecIdFacet create(
- final DomainObject domainObject,
+ final List<DomainObject> domainObjects,
final FacetHolder holder) {
- if(domainObject == null) {
- return null;
- }
-
- final String objectType = domainObject.objectType();
- if(Strings.isNullOrEmpty(objectType)) {
- return null;
- }
- return new ObjectSpecIdFacetForDomainObjectAnnotation(objectType, holder);
+ return domainObjects.stream()
+ .map(DomainObject::objectType)
+ .filter(objectType -> !Strings.isNullOrEmpty(objectType))
+ .findFirst()
+ .map(objectType -> new ObjectSpecIdFacetForDomainObjectAnnotation(objectType, holder))
+ .orElse(null);
}
private ObjectSpecIdFacetForDomainObjectAnnotation(final String value,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/publishing/PublishedObjectFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/publishing/PublishedObjectFacetForDomainObjectAnnotation.java
index 5e284e8..2b8b494 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/publishing/PublishedObjectFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/publishing/PublishedObjectFacetForDomainObjectAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.object.domainobject.publishing;
+import java.util.List;
+
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -29,11 +31,11 @@ import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObj
public class PublishedObjectFacetForDomainObjectAnnotation extends PublishedObjectFacetAbstract {
public static PublishedObjectFacet create(
- final DomainObject domainObject,
+ final List<DomainObject> domainObjects,
final IsisConfiguration configuration,
final FacetHolder holder) {
- final Publishing publishing = domainObject != null ? domainObject.publishing() : Publishing.AS_CONFIGURED;
+ final Publishing publishing = domainObjects != null ? domainObjects.publishing() : Publishing.AS_CONFIGURED;
switch (publishing) {
case AS_CONFIGURED:
@@ -43,7 +45,7 @@ public class PublishedObjectFacetForDomainObjectAnnotation extends PublishedObje
case NONE:
return null;
default:
- return domainObject != null
+ return domainObjects != null
? new PublishedObjectFacetForDomainObjectAnnotationAsConfigured(holder)
: new PublishedObjectFacetFromConfiguration(holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
index 2532eaa..3cf4cb8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/recreatable/RecreatableObjectFacetForDomainObjectAnnotation.java
@@ -19,13 +19,15 @@
package org.apache.isis.core.metamodel.facets.object.domainobject.recreatable;
+import java.util.List;
+import java.util.Objects;
+
import org.apache.isis.applib.annotation.DomainObject;
-import org.apache.isis.applib.annotation.Nature;
import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.PostConstructMethodCache;
-import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetDeclarativeInitializingAbstract;
+import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.services.ServicesInjector;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -33,52 +35,52 @@ public class RecreatableObjectFacetForDomainObjectAnnotation extends
RecreatableObjectFacetDeclarativeInitializingAbstract {
public static ViewModelFacet create(
- final DomainObject domainObject,
+ final List<DomainObject> domainObjects,
final SpecificationLoader specificationLoader,
final AdapterManager adapterManager,
final ServicesInjector servicesInjector,
final FacetHolder holder,
final PostConstructMethodCache postConstructMethodCache) {
- if(domainObject == null) {
- return null;
- }
+ return domainObjects.stream()
+ .map(DomainObject::nature)
+ .map(nature -> {
+ switch (nature) {
+ case NOT_SPECIFIED:
+ case JDO_ENTITY:
+ case MIXIN:
+ // not a recreatable object, so no facet
+ return null;
- final Nature nature = domainObject.nature();
- switch (nature)
- {
- case NOT_SPECIFIED:
- case JDO_ENTITY:
- case MIXIN:
- // not a recreatable object, so no facet
- return null;
+ case VIEW_MODEL:
+ final ViewModelFacet existingFacet = holder.getFacet(ViewModelFacet.class);
+ if (existingFacet != null) {
+ if (existingFacet.getArchitecturalLayer() == ArchitecturalLayer.APPLICATION) {
+ // if compatible existing facet, then just ignore
+ return null;
+ }
+ // otherwise, we continue through and add the new facet making the existing one the
+ // underlying. The metamodel validator on RecreatableObjectFacetFactory will then mark the
+ // model as invalid because of incompatible semantics.
+ }
+ return new RecreatableObjectFacetForDomainObjectAnnotation(
+ holder,
+ ArchitecturalLayer.APPLICATION,
+ specificationLoader, adapterManager, servicesInjector, postConstructMethodCache);
- case VIEW_MODEL:
- final ViewModelFacet existingFacet = holder.getFacet(ViewModelFacet.class);
- if (existingFacet != null) {
- if (existingFacet.getArchitecturalLayer() == ArchitecturalLayer.APPLICATION) {
- // if compatible existing facet, then just ignore
- // (otherwise the metamodel
- return null;
+ case EXTERNAL_ENTITY:
+ case INMEMORY_ENTITY:
+ return new RecreatableObjectFacetForDomainObjectAnnotation(
+ holder,
+ ArchitecturalLayer.DOMAIN,
+ specificationLoader, adapterManager, servicesInjector, postConstructMethodCache);
}
- // otherwise, we continue through and add the new facet making the existing one the
- // underlying. The metamodel validator on RecreatableObjectFacetFactory will then mark the
- // model as invalid because of incompatible semantics.
- }
- return new RecreatableObjectFacetForDomainObjectAnnotation(
- holder,
- ArchitecturalLayer.APPLICATION,
- specificationLoader, adapterManager, servicesInjector, postConstructMethodCache);
-
- case EXTERNAL_ENTITY:
- case INMEMORY_ENTITY:
- return new RecreatableObjectFacetForDomainObjectAnnotation(
- holder,
- ArchitecturalLayer.DOMAIN,
- specificationLoader, adapterManager, servicesInjector, postConstructMethodCache);
- }
- // shouldn't happen, the above switch should match all cases.
- throw new IllegalArgumentException("nature of '" + nature + "' not recognized");
+ // shouldn't happen, the above switch should match all cases.
+ throw new IllegalArgumentException("nature of '" + nature + "' not recognized");
+ })
+ .filter(Objects::nonNull)
+ .findFirst()
+ .orElse(null);
}
private RecreatableObjectFacetForDomainObjectAnnotation(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/BookmarkPolicyFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/BookmarkPolicyFacetForDomainObjectLayoutAnnotation.java
index 187d7bf..6719ff3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/BookmarkPolicyFacetForDomainObjectLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/BookmarkPolicyFacetForDomainObjectLayoutAnnotation.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.core.metamodel.facets.object.domainobjectlayout;
-
import java.util.List;
import org.apache.isis.applib.annotation.BookmarkPolicy;
@@ -30,12 +29,15 @@ import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolic
public class BookmarkPolicyFacetForDomainObjectLayoutAnnotation extends BookmarkPolicyFacetAbstract {
- public static BookmarkPolicyFacet create(final List<DomainObjectLayout> domainObjectLayout, final FacetHolder holder) {
- if(domainObjectLayout == null) {
- return null;
- }
- final BookmarkPolicy bookmarkPolicy = domainObjectLayout.bookmarking();
- return bookmarkPolicy != BookmarkPolicy.NEVER ? new BookmarkPolicyFacetForDomainObjectLayoutAnnotation(bookmarkPolicy, holder) : null;
+ public static BookmarkPolicyFacet create(final List<DomainObjectLayout> domainObjectLayouts, final FacetHolder holder) {
+
+
+ return domainObjectLayouts.stream()
+ .map(DomainObjectLayout::bookmarking)
+ .filter(bookmarkPolicy -> bookmarkPolicy != BookmarkPolicy.NEVER)
+ .findFirst()
+ .map(bookmarkPolicy -> new BookmarkPolicyFacetForDomainObjectLayoutAnnotation(bookmarkPolicy, holder))
+ .orElse(null);
}
private BookmarkPolicyFacetForDomainObjectLayoutAnnotation(final BookmarkPolicy bookmarkPolicy, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/BookmarkPolicyFacetForViewModelLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/BookmarkPolicyFacetForViewModelLayoutAnnotation.java
index 25a2f30..51b89c5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/BookmarkPolicyFacetForViewModelLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/BookmarkPolicyFacetForViewModelLayoutAnnotation.java
@@ -30,12 +30,14 @@ import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolic
public class BookmarkPolicyFacetForViewModelLayoutAnnotation extends BookmarkPolicyFacetAbstract {
- public static BookmarkPolicyFacet create(final List<ViewModelLayout> viewModelLayout, final FacetHolder holder) {
- if(viewModelLayout == null) {
- return null;
- }
- final BookmarkPolicy bookmarkPolicy = viewModelLayout.bookmarking();
- return bookmarkPolicy != BookmarkPolicy.NEVER ? new BookmarkPolicyFacetForViewModelLayoutAnnotation(bookmarkPolicy, holder) : null;
+ public static BookmarkPolicyFacet create(final List<ViewModelLayout> viewModelLayouts, final FacetHolder holder) {
+
+ return viewModelLayouts.stream()
+ .map(ViewModelLayout::bookmarking)
+ .filter(bookmarkPolicy -> bookmarkPolicy != BookmarkPolicy.NEVER)
+ .findFirst()
+ .map(bookmarkPolicy -> new BookmarkPolicyFacetForViewModelLayoutAnnotation(bookmarkPolicy, holder))
+ .orElse(null);
}
private BookmarkPolicyFacetForViewModelLayoutAnnotation(final BookmarkPolicy bookmarkPolicy, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFaFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFaFacetForDomainObjectLayoutAnnotation.java
index fddfa5c..57ad67d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFaFacetForDomainObjectLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFaFacetForDomainObjectLayoutAnnotation.java
@@ -29,13 +29,23 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPositi
public class CssClassFaFacetForDomainObjectLayoutAnnotation extends CssClassFaFacetAbstract {
- public static CssClassFaFacet create(final List<DomainObjectLayout> domainObjectLayout, final FacetHolder holder) {
- if (domainObjectLayout == null) {
- return null;
+ public static CssClassFaFacet create(final List<DomainObjectLayout> domainObjectLayouts, final FacetHolder holder) {
+
+ class Annot {
+ private Annot(final DomainObjectLayout domainObjectLayout) {
+ this.cssClassFa = Strings.emptyToNull(domainObjectLayout.cssClassFa());
+ this.cssClassFaPosition = CssClassFaPosition.from(domainObjectLayout.cssClassFaPosition());
+ }
+ String cssClassFa;
+ CssClassFaPosition cssClassFaPosition;
}
- final String cssClassFa = Strings.emptyToNull(domainObjectLayout.cssClassFa());
- final CssClassFaPosition position = CssClassFaPosition.from(domainObjectLayout.cssClassFaPosition());
- return cssClassFa != null ? new CssClassFaFacetForDomainObjectLayoutAnnotation(cssClassFa, position, holder) : null;
+
+ return domainObjectLayouts.stream()
+ .map(Annot::new)
+ .filter(a -> a.cssClassFa != null )
+ .findFirst()
+ .map(a -> new CssClassFaFacetForDomainObjectLayoutAnnotation(a.cssClassFa, a.cssClassFaPosition, holder))
+ .orElse(null);
}
public CssClassFaFacetForDomainObjectLayoutAnnotation(final String value, final CssClassFaPosition position,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetForDomainObjectLayoutAnnotation.java
index 510b4d9..0f29bb0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetForDomainObjectLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetForDomainObjectLayoutAnnotation.java
@@ -17,6 +17,7 @@
package org.apache.isis.core.metamodel.facets.object.domainobjectlayout;
import java.util.List;
+import java.util.Objects;
import com.google.common.base.Strings;
@@ -27,12 +28,17 @@ import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstr
public class CssClassFacetForDomainObjectLayoutAnnotation extends CssClassFacetAbstract {
- public static CssClassFacet create(final List<DomainObjectLayout> domainObjectLayout, final FacetHolder holder) {
- if (domainObjectLayout == null) {
+ public static CssClassFacet create(final List<DomainObjectLayout> domainObjectLayouts, final FacetHolder holder) {
+ if (domainObjectLayouts.isEmpty()) {
return null;
}
- final String cssClass = Strings.emptyToNull(domainObjectLayout.cssClass());
- return cssClass != null ? new CssClassFacetForDomainObjectLayoutAnnotation(cssClass, holder) : null;
+ return domainObjectLayouts.stream()
+ .map(DomainObjectLayout::cssClass)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .map(cssClass -> new CssClassFacetForDomainObjectLayoutAnnotation(cssClass, holder))
+ .findFirst()
+ .orElse(null);
}
private CssClassFacetForDomainObjectLayoutAnnotation(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
index 22c467a..8b0b93b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
@@ -44,27 +44,26 @@ public class CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent ex
private static final Logger LOG = LoggerFactory.getLogger(CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.class);
public static Facet create(
- final List<DomainObjectLayout> domainObjectLayout,
+ final List<DomainObjectLayout> domainObjectLayouts,
final ServicesInjector servicesInjector,
final IsisConfiguration configuration, final FacetHolder facetHolder) {
- if(domainObjectLayout == null) {
- return null;
- }
- final Class<? extends CssClassUiEvent<?>> cssClassUiEventClass = domainObjectLayout.cssClassUiEvent();
-
- if(!EventUtil.eventTypeIsPostable(
- cssClassUiEventClass,
- CssClassUiEvent.Noop.class,
- CssClassUiEvent.Default.class,
- "isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault",
- configuration)) {
- return null;
- }
- final EventBusService eventBusService = servicesInjector.lookupService(EventBusService.class);
+ return domainObjectLayouts.stream()
+ .map(DomainObjectLayout::cssClassUiEvent)
+ .filter(cssClassUiEventClass -> EventUtil.eventTypeIsPostable(
+ cssClassUiEventClass,
+ CssClassUiEvent.Noop.class,
+ CssClassUiEvent.Default.class,
+ "isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault",
+ configuration))
+ .findFirst()
+ .map(cssClassUiEventClass -> {
+ final EventBusService eventBusService = servicesInjector.lookupService(EventBusService.class);
+ return new CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent(
+ cssClassUiEventClass, eventBusService, facetHolder);
+ })
+ .orElse(null);
- return new CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent(
- cssClassUiEventClass, eventBusService, facetHolder);
}
private final Class<? extends CssClassUiEvent<?>> cssClassUiEventClass;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
index b1b8177..cd191e5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
@@ -20,7 +20,6 @@
package org.apache.isis.core.metamodel.facets.object.domainobjectlayout;
import java.util.List;
-import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,10 +48,8 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
final List<DomainObjectLayout> domainObjectLayouts,
final ServicesInjector servicesInjector,
final IsisConfiguration configuration, final FacetHolder facetHolder) {
- if(domainObjectLayouts.isEmpty()) {
- return null;
- }
- final Optional<? extends Class<? extends TitleUiEvent<?>>> titleUiEventClassIfAny = domainObjectLayouts.stream()
+
+ return domainObjectLayouts.stream()
.map(DomainObjectLayout::titleUiEvent)
.filter(titleUiEventClass -> EventUtil.eventTypeIsPostable(
titleUiEventClass,
@@ -60,20 +57,17 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
TitleUiEvent.Default.class,
"isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault",
configuration))
- .findFirst();
-
- if(titleUiEventClassIfAny.isPresent()) {
- final Class<? extends TitleUiEvent<?>> titleUiEventClass = titleUiEventClassIfAny.get();
- final TranslationService translationService = servicesInjector.lookupService(TranslationService.class);
- final ObjectSpecification facetHolderAsSpec = (ObjectSpecification) facetHolder; // bit naughty...
- final String translationContext = facetHolderAsSpec.getCorrespondingClass().getCanonicalName();
- final EventBusService eventBusService = servicesInjector.lookupService(EventBusService.class);
-
- return new TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent(
- titleUiEventClass, translationService, translationContext, eventBusService, facetHolder);
- }
-
- return null;
+ .findFirst()
+ .map(titleUiEventClass -> {
+ final TranslationService translationService = servicesInjector.lookupService(TranslationService.class);
+ final ObjectSpecification facetHolderAsSpec = (ObjectSpecification) facetHolder; // bit naughty...
+ final String translationContext = facetHolderAsSpec.getCorrespondingClass().getCanonicalName();
+ final EventBusService eventBusService = servicesInjector.lookupService(EventBusService.class);
+
+ return new TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent(
+ titleUiEventClass, translationService, translationContext, eventBusService, facetHolder);
+ })
+ .orElse(null);
}
private final Class<? extends TitleUiEvent<?>> titleUiEventClass;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java
index 4cc37a5..894319d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/mixin/MixinFacetForDomainObjectAnnotation.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.object.mixin;
import java.lang.reflect.Constructor;
+import java.util.List;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Nature;
@@ -42,7 +43,7 @@ public class MixinFacetForDomainObjectAnnotation extends MixinFacetAbstract {
}
public static MixinFacet create(
- final DomainObject domainObject,
+ final List<DomainObject> domainObject,
final Class<?> candidateMixinType,
final FacetHolder facetHolder,
final ServicesInjector servicesInjector) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParserUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParserUtil.java
index 3f70174..acc1105 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParserUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/ParserUtil.java
@@ -43,7 +43,7 @@ public final class ParserUtil {
public static Class<? extends Parser<?>> parserOrNull(final Class<?> candidateClass, final String classCandidateName) {
@SuppressWarnings("rawtypes")
final Class type = candidateClass != null ? ClassUtil.implementingClassOrNull(candidateClass.getName(), Parser.class, FacetHolder.class) : null;
- return type != null ? type : ClassUtil.implementingClassOrNull(classCandidateName, Parser.class, FacetHolder.class);
+ return type != null ? type : (Class)ClassUtil.implementingClassOrNull(classCandidateName, Parser.class, FacetHolder.class);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderUtil.java
index f93ebe1..03658a5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderUtil.java
@@ -45,7 +45,8 @@ public final class ValueSemanticsProviderUtil {
public static Class<? extends ValueSemanticsProvider<?>> valueSemanticsProviderOrNull(final Class<?> candidateClass, final String classCandidateName) {
@SuppressWarnings("rawtypes")
final Class clazz = candidateClass != null ? ClassUtil.implementingClassOrNull(candidateClass.getName(), ValueSemanticsProvider.class, FacetHolder.class) : null;
- return clazz != null ? clazz : ClassUtil.implementingClassOrNull(classCandidateName, ValueSemanticsProvider.class, FacetHolder.class);
+ return clazz != null ? clazz : (Class)ClassUtil.implementingClassOrNull(classCandidateName, ValueSemanticsProvider.class, FacetHolder.class);
+
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
index 0023f9f..4ea41a2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
@@ -45,7 +45,7 @@ public class JdoPersistenceCapableAnnotationFacetFactory extends FacetFactoryAbs
return;
}
- final PersistenceCapable annotation = Annotations.getAnnotations(cls, PersistenceCapable.class);
+ final PersistenceCapable annotation = Annotations.getAnnotation(cls, PersistenceCapable.class);
if (annotation == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
index 1ffe8d8..54f9360 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
@@ -62,7 +62,7 @@ public class MandatoryFromJdoColumnAnnotationFacetFactory extends FacetFactoryAb
return;
}
- final Column annotation = Annotations.getAnnotations(processMethodContext.getMethod(), Column.class);
+ final Column annotation = Annotations.getAnnotation(processMethodContext.getMethod(), Column.class);
final FacetedMethod holder = processMethodContext.getFacetHolder();
@@ -82,7 +82,7 @@ public class MandatoryFromJdoColumnAnnotationFacetFactory extends FacetFactoryAb
}
boolean required = whetherRequired(processMethodContext, annotation);
- MandatoryFacet facet = annotation != null
+ MandatoryFacet facet = annotation != null
? new MandatoryFacetDerivedFromJdoColumn(holder, required)
: new MandatoryFacetInferredFromAbsenceOfJdoColumn(holder, required);
--
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.