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 2019/10/03 21:42:49 UTC
[isis] branch v2 updated: ISIS-2158: migrating to new _Annotation
API, starting with ...
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/v2 by this push:
new 1c085be ISIS-2158: migrating to new _Annotation API, starting with ...
1c085be is described below
commit 1c085beac2d5a6333a39c30116b86e4540f5afd3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Oct 3 23:42:40 2019 +0200
ISIS-2158: migrating to new _Annotation API, starting with ...
- @DomainObject(auditing=...)
- @DomainObject(publishing=...)
---
.../DomainObjectAnnotationFacetFactory.java | 30 +++++++------
.../AuditableFacetForDomainObjectAnnotation.java | 26 ++----------
...lishedObjectFacetForDomainObjectAnnotation.java | 49 +++++++++++-----------
.../specloader/SpecificationCacheDefault.java | 8 ++--
4 files changed, 49 insertions(+), 64 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
index e75f3d8..fd8fc2e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java
@@ -27,8 +27,10 @@ import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.annotation.Auditing;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.Publishing;
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,6 +43,7 @@ import org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent;
import org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent;
import org.apache.isis.applib.services.HasUniqueId;
import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.commons.internal.reflection._Annotations;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.FacetUtil;
@@ -85,6 +88,8 @@ import org.apache.isis.metamodel.specloader.validator.MetaModelValidatorVisiting
import org.apache.isis.metamodel.specloader.validator.ValidationFailures;
import org.apache.isis.metamodel.util.EventUtil;
+import lombok.val;
+
public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFacetFactory {
@@ -120,10 +125,9 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
void processAuditing(final ProcessClassContext processClassContext) {
- final Class<?> cls = processClassContext.getCls();
- final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
- final FacetHolder holder = processClassContext.getFacetHolder();
-
+ val cls = processClassContext.getCls();
+ val facetHolder = processClassContext.getFacetHolder();
+
//
// this rule originally implemented only in AuditableFacetFromConfigurationFactory
// but think should apply in general
@@ -134,10 +138,10 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
return;
}
-
// check for @DomainObject(auditing=....)
- AuditableFacet auditableFacet = AuditableFacetForDomainObjectAnnotation
- .create(domainObjects, getConfiguration(), holder);
+ val auditing = _Annotations.getEnum("auditing", cls, DomainObject.class, Auditing.class);
+ val auditableFacet = AuditableFacetForDomainObjectAnnotation
+ .create(auditing, getConfiguration(), facetHolder);
// then add
FacetUtil.addFacet(auditableFacet);
@@ -145,9 +149,8 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
void processPublishing(final ProcessClassContext processClassContext) {
- final Class<?> cls = processClassContext.getCls();
- final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
- final FacetHolder facetHolder = processClassContext.getFacetHolder();
+ val cls = processClassContext.getCls();
+ val facetHolder = processClassContext.getFacetHolder();
//
// this rule inspired by a similar rule for auditing, see above
@@ -159,8 +162,9 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
}
// check from @DomainObject(publishing=...)
- PublishedObjectFacet publishedObjectFacet = PublishedObjectFacetForDomainObjectAnnotation
- .create(domainObjects, getConfiguration(), facetHolder);
+ val publishing = _Annotations.getEnum("publishing", cls, DomainObject.class, Publishing.class);
+ val publishedObjectFacet = PublishedObjectFacetForDomainObjectAnnotation
+ .create(publishing, getConfiguration(), facetHolder);
// then add
FacetUtil.addFacet(publishedObjectFacet);
@@ -170,7 +174,7 @@ implements MetaModelValidatorRefiner, PostConstructMethodCache, ObjectSpecIdFace
final Class<?> cls = processClassContext.getCls();
final FacetHolder facetHolder = processClassContext.getFacetHolder();
- // check from @DomainObject(auditing=...)
+ // check from @DomainObject(autoCompleteRepository=...)
final List<DomainObject> domainObjects = Annotations.getAnnotations(cls, DomainObject.class);
Facet facet = createFor(domainObjects, facetHolder, cls);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
index d43b9fd..67a7924 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/auditing/AuditableFacetForDomainObjectAnnotation.java
@@ -19,12 +19,9 @@
package org.apache.isis.metamodel.facets.object.domainobject.auditing;
-import java.util.List;
-
-import javax.annotation.Nullable;
+import java.util.Optional;
import org.apache.isis.applib.annotation.Auditing;
-import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.config.IsisConfiguration;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -36,26 +33,11 @@ import lombok.val;
public class AuditableFacetForDomainObjectAnnotation extends AuditableFacetAbstract {
public static AuditableFacet create(
- List<DomainObject> domainObjectAnnotations,
- IsisConfiguration configuration,
- FacetHolder holder) {
-
- val domainObjectAnnotation = domainObjectAnnotations.stream()
- .filter(doAnnot -> doAnnot.auditing() != Auditing.NOT_SPECIFIED)
- .findFirst()
- .orElse(null);
-
- return create(domainObjectAnnotation, configuration, holder);
- }
-
- private static AuditableFacet create(
- @Nullable DomainObject domainObjectAnnotation,
+ Optional<Auditing> auditingIfAny,
IsisConfiguration configuration,
FacetHolder holder) {
- val auditing = domainObjectAnnotation != null
- ? domainObjectAnnotation.auditing()
- : Auditing.AS_CONFIGURED;
+ val auditing = auditingIfAny.orElse(Auditing.AS_CONFIGURED);
switch (auditing) {
case AS_CONFIGURED:
@@ -65,7 +47,7 @@ public class AuditableFacetForDomainObjectAnnotation extends AuditableFacetAbstr
case NONE:
return null;
default:
- return domainObjectAnnotation != null
+ return auditingIfAny.isPresent()
? new AuditableFacetForDomainObjectAnnotationAsConfigured(holder)
: new AuditableFacetFromConfiguration(holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/publishing/PublishedObjectFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/publishing/PublishedObjectFacetForDomainObjectAnnotation.java
index d46ab24..e3f6971 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/publishing/PublishedObjectFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/publishing/PublishedObjectFacetForDomainObjectAnnotation.java
@@ -19,9 +19,8 @@
package org.apache.isis.metamodel.facets.object.domainobject.publishing;
-import java.util.List;
+import java.util.Optional;
-import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.config.IsisConfiguration;
@@ -32,34 +31,34 @@ import org.apache.isis.metamodel.facets.object.publishedobject.PublishedObjectFa
public class PublishedObjectFacetForDomainObjectAnnotation extends PublishedObjectFacetAbstract {
public static PublishedObjectFacet create(
- final List<DomainObject> domainObjects,
+ final Optional<Publishing> publishingIfAny,
final IsisConfiguration configuration,
final FacetHolder holder) {
final PublishObjectsConfiguration setting = configuration.getServices().getPublish().getObjects();
- return domainObjects.stream()
- .map(DomainObject::publishing)
- .filter(publishing -> publishing != Publishing.NOT_SPECIFIED)
- .findFirst()
- .map(publishing -> {
- switch (publishing) {
- case AS_CONFIGURED:
- return setting == PublishObjectsConfiguration.NONE
- ? null
- : (PublishedObjectFacet)new PublishedObjectFacetForDomainObjectAnnotationAsConfigured(holder)
- ;
- case DISABLED:
- return null;
- case ENABLED:
- return new PublishedObjectFacetForDomainObjectAnnotation(holder);
- case NOT_SPECIFIED:
- throw _Exceptions.unexpectedCodeReach(); // case filtered out above
- }
- throw new IllegalStateException("domainObject.publishing() not recognised, is " + publishing);
+
+ return
+ publishingIfAny.map(publishing -> {
+ switch (publishing) {
+ case AS_CONFIGURED:
+ return setting == PublishObjectsConfiguration.NONE
+ ? null
+ : (PublishedObjectFacet)new PublishedObjectFacetForDomainObjectAnnotationAsConfigured(holder)
+ ;
+ case DISABLED:
+ return null;
+ case ENABLED:
+ return new PublishedObjectFacetForDomainObjectAnnotation(holder);
+ case NOT_SPECIFIED:
+ throw _Exceptions.unexpectedCodeReach(); // case filtered out above
+ }
+ throw new IllegalStateException("domainObject.publishing() not recognised, is " + publishing);
- }).orElseGet(() -> setting == PublishObjectsConfiguration.NONE
- ? null
- : new PublishedObjectFacetFromConfiguration(holder));
+ })
+ .orElseGet(() -> setting == PublishObjectsConfiguration.NONE
+ ? null
+ : new PublishedObjectFacetFromConfiguration(holder));
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationCacheDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationCacheDefault.java
index bc574e3..66aa7c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationCacheDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/SpecificationCacheDefault.java
@@ -37,13 +37,13 @@ class SpecificationCacheDefault<T extends ObjectSpecification> {
private final Map<String, T> specByClassName = _Maps.newHashMap();
private final Map<ObjectSpecId, String> classNameBySpecId = _Maps.newHashMap();
- public T get(final String className) {
+ public T get(String className) {
return specByClassName.get(className);
}
public T computeIfAbsent(
- final String className,
- final Function<? super String, T> mappingFunction) {
+ String className,
+ Function<? super String, T> mappingFunction) {
T spec = specByClassName.get(className);
if(spec==null) {
@@ -66,7 +66,7 @@ class SpecificationCacheDefault<T extends ObjectSpecification> {
}
public T getByObjectType(final ObjectSpecId objectSpecID) {
- final String className = classNameBySpecId.get(objectSpecID);
+ val className = classNameBySpecId.get(objectSpecID);
return className != null ? specByClassName.get(className) : null;
}