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 12:33:06 UTC
[isis] branch dev/2.0.0/ISIS-1632-meta-annotations updated:
ISIS-1632 ,
ISIS-1763: converts some more 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
The following commit(s) were added to refs/heads/dev/2.0.0/ISIS-1632-meta-annotations by this push:
new a9291fb ISIS-1632 , ISIS-1763: converts some more facet factories to handle Lists of annotations (WORK IN PROGRESS, CODE STILL DOES NOT COMPILE)
a9291fb is described below
commit a9291fbc10a3fa8f7c75d3f24410aa321931ada7
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Oct 27 13:32:55 2017 +0100
ISIS-1632 , ISIS-1763: converts some more facet factories to handle Lists of annotations (WORK IN PROGRESS, CODE STILL DOES NOT COMPILE)
---
.../apache/isis/applib/annotation/Bounding.java | 28 ++++++++
.../isis/applib/annotation/CommandReification.java | 7 +-
.../isis/applib/annotation/DomainObject.java | 7 +-
.../action/ActionAnnotationFacetFactory.java | 39 +++++------
.../action/bulk/BulkFacetForActionAnnotation.java | 4 +-
.../command/CommandFacetForActionAnnotation.java | 76 ++++++++++++++--------
.../hidden/HiddenFacetForActionAnnotation.java | 4 +-
.../PrototypeFacetForActionAnnotation.java | 13 ++--
.../PublishedActionFacetForActionAnnotation.java | 69 +++++++++++++-------
.../ActionSemanticsFacetForActionAnnotation.java | 4 +-
.../layout/CollectionLayoutFacetFactory.java | 40 ++++--------
...CssClassFacetForCollectionLayoutAnnotation.java | 18 +++--
...aultViewFacetForCollectionLayoutAnnotation.java | 4 +-
...cribedAsFacetForCollectionLayoutAnnotation.java | 18 +++--
.../HiddenFacetForCollectionLayoutAnnotation.java | 17 +++--
.../NamedFacetForCollectionLayoutAnnotation.java | 17 +++--
.../PagedFacetForCollectionLayoutAnnotation.java | 4 +-
...SortedByFacetForCollectionLayoutAnnotation.java | 4 +-
.../order/annotprop/MemberOrderFacetFactory.java | 2 +-
.../ChoicesFacetForDomainObjectAnnotation.java | 22 ++++---
...ObjectSpecIdFacetForDomainObjectAnnotation.java | 4 +-
...lishedObjectFacetForDomainObjectAnnotation.java | 39 ++++++-----
.../CssClassFacetForViewModelLayoutAnnotation.java | 16 +++--
...ibedAsFacetForDomainObjectLayoutAnnotation.java | 18 +++--
...scribedAsFacetForViewModelLayoutAnnotation.java | 16 +++--
.../PagedFacetForDomainObjectLayoutAnnotation.java | 13 ++--
...bleFacetAnnotationElseConfigurationFactory.java | 2 +-
.../annotprop/MemberGroupLayoutFacetFactory.java | 2 +-
.../mixin/MixinFacetForDomainObjectAnnotation.java | 38 ++++++-----
...bleFacetAnnotationElseConfigurationFactory.java | 2 +-
...DerivedFromJdoColumnAnnotationFacetFactory.java | 2 +-
31 files changed, 338 insertions(+), 211 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Bounding.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Bounding.java
new file mode 100644
index 0000000..fc33caa
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Bounding.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * Whether the set of instances of a domain object is bounded or not.
+ */
+public enum Bounding {
+ BOUNDED,
+ UNBOUNDED,
+ NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/CommandReification.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/CommandReification.java
index 03769b0..8128e63 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/CommandReification.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/CommandReification.java
@@ -43,5 +43,10 @@ public enum CommandReification {
/**
* Do not handle the action as a command, irrespective of any configuration settings.
*/
- 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/DomainObject.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
index afee19d..e509b34 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainObject.java
@@ -96,8 +96,13 @@ public @interface DomainObject {
* <p>
* Takes precedence over auto-complete.
* </p>
+ *
+ * <p>
+ * Note: this replaces bounded=true|false prior to v2.x
+ * </p>
+ *
*/
- boolean bounded() default false;
+ Bounding bounding() default Bounding.NOT_SPECIFIED;
// //////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
index 8e51ac6..6d41b6a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactory.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.actions.action;
import java.lang.reflect.Method;
+import java.util.List;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.services.HasTransactionId;
@@ -100,7 +101,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
//
// Set up ActionDomainEventFacet, which will act as the hiding/disabling/validating advisor
//
- final Action action = Annotations.getAnnotations(actionMethod, Action.class);
+ final List<Action> actions = Annotations.getAnnotations(actionMethod, Action.class);
final Class<? extends ActionDomainEvent<?>> actionDomainEventType;
final ActionDomainEventFacetAbstract actionDomainEventFacet;
@@ -108,8 +109,8 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
// search for @Action(domainEvent=...)
- if(action != null) {
- actionDomainEventType = action.domainEvent();
+ if(actions != null) {
+ actionDomainEventType = actions.domainEvent();
actionDomainEventFacet = new ActionDomainEventFacetForActionAnnotation(
actionDomainEventType, servicesInjector, getSpecificationLoader(), holder);
} else
@@ -131,7 +132,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
// emit the appropriate domain event and then delegate onto the underlying
final ActionInvocationFacetForDomainEventAbstract actionInvocationFacet;
- if (action != null) {
+ if (actions != null) {
actionInvocationFacet = new ActionInvocationFacetForDomainEventFromActionAnnotation(
actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
servicesInjector
@@ -156,8 +157,8 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
final FacetHolder holder = processMethodContext.getFacetHolder();
// search for @Action(hidden=...)
- final Action action = Annotations.getAnnotations(method, Action.class);
- HiddenFacet facet = HiddenFacetForActionAnnotation.create(action, holder);
+ final List<Action> actions = Annotations.getAnnotations(method, Action.class);
+ HiddenFacet facet = HiddenFacetForActionAnnotation.create(actions, holder);
FacetUtil.addFacet(facet);
}
@@ -166,8 +167,8 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
final FacetHolder holder = processMethodContext.getFacetHolder();
// search for @Action(restrictTo=...)
- final Action action = Annotations.getAnnotations(method, Action.class);
- PrototypeFacet facet = PrototypeFacetForActionAnnotation.create(action, holder,
+ final List<Action> actions = Annotations.getAnnotations(method, Action.class);
+ PrototypeFacet facet = PrototypeFacetForActionAnnotation.create(actions, holder,
getDeploymentCategory());
FacetUtil.addFacet(facet);
@@ -178,9 +179,9 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
final FacetHolder holder = processMethodContext.getFacetHolder();
// check for @Action(semantics=...)
- final Action action = Annotations.getAnnotations(method, Action.class);
+ final List<Action> actions = Annotations.getAnnotations(method, Action.class);
ActionSemanticsFacet facet =
- ActionSemanticsFacetForActionAnnotation.create(action, holder);
+ ActionSemanticsFacetForActionAnnotation.create(actions, holder);
// else fallback
if(facet == null) {
@@ -192,11 +193,11 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
void processBulk(final ProcessMethodContext processMethodContext) {
final Method method = processMethodContext.getMethod();
- final Action action = Annotations.getAnnotations(method, Action.class);
+ final List<Action> actions = Annotations.getAnnotations(method, Action.class);
final FacetHolder holder = processMethodContext.getFacetHolder();
// check for @Action(invokeOn=...)
- BulkFacet facet = BulkFacetForActionAnnotation.create(action, holder);
+ BulkFacet facet = BulkFacetForActionAnnotation.create(actions, holder);
// fallback
if(facet == null) {
@@ -210,7 +211,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
final Class<?> cls = processMethodContext.getCls();
final Method method = processMethodContext.getMethod();
- final Action action = Annotations.getAnnotations(method, Action.class);
+ final List<Action> actions = Annotations.getAnnotations(method, Action.class);
final FacetedMethod facetHolder = processMethodContext.getFacetHolder();
final FacetHolder holder = facetHolder;
@@ -225,7 +226,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
}
// check for @Action(command=...)
- CommandFacet commandFacet = CommandFacetForActionAnnotation.create(action, getConfiguration(), holder);
+ CommandFacet commandFacet = CommandFacetForActionAnnotation.create(actions, getConfiguration(), holder);
FacetUtil.addFacet(commandFacet);
}
@@ -233,7 +234,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
void processPublishing(final ProcessMethodContext processMethodContext) {
final Method method = processMethodContext.getMethod();
- final Action action = Annotations.getAnnotations(method, Action.class);
+ final List<Action> actions = Annotations.getAnnotations(method, Action.class);
final FacetHolder holder = processMethodContext.getFacetHolder();
//
@@ -247,7 +248,7 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
}
// check for @Action(publishing=...)
- PublishedActionFacet facet = PublishedActionFacetForActionAnnotation.create(action, getConfiguration(), holder);
+ PublishedActionFacet facet = PublishedActionFacetForActionAnnotation.create(actions, getConfiguration(), holder);
FacetUtil.addFacet(facet);
}
@@ -264,9 +265,9 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
// check for @Action(typeOf=...)
TypeOfFacet typeOfFacet = null;
- final Action action = Annotations.getAnnotations(method, Action.class);
- if (action != null) {
- final Class<?> typeOf = action.typeOf();
+ final List<Action> actions = Annotations.getAnnotations(method, Action.class);
+ if (actions != null) {
+ final Class<?> typeOf = actions.typeOf();
if(typeOf != null && typeOf != Object.class) {
typeOfFacet = new TypeOfFacetForActionAnnotation(typeOf, getSpecificationLoader(), holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/bulk/BulkFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/bulk/BulkFacetForActionAnnotation.java
index b9ac18e..931199d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/bulk/BulkFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/bulk/BulkFacetForActionAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.action.bulk;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.InvokeOn;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacetAbstract;
public class BulkFacetForActionAnnotation extends BulkFacetAbstract {
- public static BulkFacet create(final Action action, final FacetHolder holder) {
+ public static BulkFacet create(final List<Action> action, final FacetHolder holder) {
if(action == null) {
return null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/command/CommandFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/command/CommandFacetForActionAnnotation.java
index 287cf07..499b411 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/command/CommandFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/command/CommandFacetForActionAnnotation.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.core.metamodel.facets.actions.action.command;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.CommandExecuteIn;
import org.apache.isis.applib.annotation.CommandPersistence;
@@ -31,46 +33,68 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
public class CommandFacetForActionAnnotation extends CommandFacetAbstract {
public static CommandFacet create(
- final Action action,
+ final List<Action> actions,
final IsisConfiguration configuration,
final FacetHolder holder) {
- final CommandReification command = action != null ? action.command() : CommandReification.AS_CONFIGURED;
- final CommandPersistence commandPersistence = action != null ? action.commandPersistence() : CommandPersistence.PERSISTED;
- final CommandExecuteIn commandExecuteIn = action != null? action.commandExecuteIn() : CommandExecuteIn.FOREGROUND;
+ final CommandActionsConfiguration setting = CommandActionsConfiguration.parse(configuration);
+
+ return actions.stream()
+ .filter(action -> action.command() != CommandReification.NOT_SPECIFIED)
+ .findFirst()
+ .map(action -> {
- final CommandPersistence persistence = commandPersistence;
- final CommandExecuteIn executeIn = commandExecuteIn;
+ final CommandReification command = action.command();
+ final CommandPersistence persistence = action.commandPersistence();
+ final CommandExecuteIn executeIn = action.commandExecuteIn();
- switch (command) {
- case AS_CONFIGURED:
- final CommandActionsConfiguration setting = CommandActionsConfiguration.parse(configuration);
- switch (setting) {
+ switch (command) {
+ case AS_CONFIGURED:
+ switch (setting) {
+ case NONE:
+ return null;
+ case IGNORE_SAFE:
+ if (hasSafeSemantics(holder)) {
+ return null;
+ }
+ // else fall through
+ default:
+ return (CommandFacet)new CommandFacetForActionAnnotationAsConfigured(
+ persistence, executeIn, Enablement.ENABLED, holder);
+ }
+ case DISABLED:
+ return null;
+ case ENABLED:
+ return new CommandFacetForActionAnnotation(persistence, executeIn, Enablement.ENABLED, holder);
+ }
+ throw new IllegalStateException("command '" + command + "' not recognised");
+ })
+ .orElseGet(() -> {
+ switch (setting) {
case NONE:
return null;
case IGNORE_SAFE:
- final ActionSemanticsFacet actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class);
- if(actionSemanticsFacet == null) {
- throw new IllegalStateException("Require ActionSemanticsFacet in order to process");
- }
- if(actionSemanticsFacet.value().isSafeInNature()) {
- return null;
+ if (hasSafeSemantics(holder)) {
+ return null;
}
// else fall through
default:
- return action != null
- ? new CommandFacetForActionAnnotationAsConfigured(persistence, executeIn, Enablement.ENABLED, holder)
- : CommandFacetFromConfiguration.create(holder);
- }
- case DISABLED:
- return null;
- case ENABLED:
- return new CommandFacetForActionAnnotation(persistence, executeIn, Enablement.ENABLED, holder);
- }
+ return CommandFacetFromConfiguration.create(holder);
+ }
- return null;
+ });
}
+ private static boolean hasSafeSemantics(final FacetHolder holder) {
+ final ActionSemanticsFacet actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class);
+ if(actionSemanticsFacet == null) {
+ throw new IllegalStateException("Require ActionSemanticsFacet in order to process");
+ }
+ if(actionSemanticsFacet.value().isSafeInNature()) {
+ return true;
+ }
+ return false;
+ }
CommandFacetForActionAnnotation(
final CommandPersistence persistence,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
index 61c2477..fbe55f5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/hidden/HiddenFacetForActionAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.action.hidden;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -29,7 +31,7 @@ import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
public class HiddenFacetForActionAnnotation extends HiddenFacetAbstract {
public static HiddenFacet create(
- final Action action,
+ final List<Action> action,
final FacetHolder holder) {
if (action == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
index edf8d79..00f4d9f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/prototype/PrototypeFacetForActionAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.action.prototype;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.RestrictTo;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
@@ -29,13 +31,16 @@ import org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacetAbs
public class PrototypeFacetForActionAnnotation extends PrototypeFacetAbstract {
public static PrototypeFacet create(
- final Action action,
+ final List<Action> actions,
final FacetHolder holder,
final DeploymentCategory deploymentCategory) {
- return action == null || action.restrictTo() == RestrictTo.NO_RESTRICTIONS
- ? null
- : new PrototypeFacetForActionAnnotation(holder, deploymentCategory);
+ return actions.stream()
+ .map(Action::restrictTo)
+ .filter(restrictTo -> restrictTo == RestrictTo.PROTOTYPING)
+ .findFirst()
+ .map(restrictTo -> new PrototypeFacetForActionAnnotation(holder, deploymentCategory))
+ .orElse(null);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/publishing/PublishedActionFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/publishing/PublishedActionFacetForActionAnnotation.java
index 9ea448e..13fd010 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/publishing/PublishedActionFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/publishing/PublishedActionFacetForActionAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.action.publishing;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -30,44 +32,63 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
public class PublishedActionFacetForActionAnnotation extends PublishedActionFacetAbstract {
public static PublishedActionFacet create(
- final Action action,
+ final List<Action> actions,
final IsisConfiguration configuration,
final FacetHolder holder) {
- final Publishing publishing = action != null ? action.publishing() : Publishing.AS_CONFIGURED;
+ final PublishActionsConfiguration setting = PublishActionsConfiguration.parse(configuration);
- switch (publishing) {
- case AS_CONFIGURED:
+ return actions.stream()
+ .map(Action::publishing)
+ .filter(publishing -> publishing != Publishing.NOT_SPECIFIED)
+ .findFirst()
+ .map(publishing -> {
+ switch (publishing) {
+ case AS_CONFIGURED:
- final PublishActionsConfiguration setting = PublishActionsConfiguration.parse(configuration);
- switch (setting) {
+ switch (setting) {
+ case NONE:
+ return null;
+ case IGNORE_SAFE:
+ if (hasSafeSemantics(holder)) {
+ return null;
+ }
+ // else fall through
+ default:
+ return (PublishedActionFacet)new PublishedActionFacetForActionAnnotationAsConfigured(holder);
+ }
+ case DISABLED:
+ return null;
+ case ENABLED:
+ return new PublishedActionFacetForActionAnnotation(holder);
+ }
+ throw new IllegalStateException("publishing '" + publishing + "' not recognised");
+ })
+ .orElseGet(() -> {
+ switch (setting) {
case NONE:
return null;
case IGNORE_SAFE:
- final ActionSemanticsFacet actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class);
- if(actionSemanticsFacet == null) {
- throw new IllegalStateException("Require ActionSemanticsFacet in order to process");
- }
-
- if(actionSemanticsFacet.value().isSafeInNature()) {
- return null;
+ if (hasSafeSemantics(holder)) {
+ return null;
}
// else fall through
default:
- return action != null
- ? new PublishedActionFacetForActionAnnotationAsConfigured(holder)
- : new PublishedActionFacetFromConfiguration(holder);
- }
- case DISABLED:
- return null;
- case ENABLED:
- return new PublishedActionFacetForActionAnnotation(holder);
- }
- return null;
+ return new PublishedActionFacetFromConfiguration(holder);
+ }
+ });
}
+ private static boolean hasSafeSemantics(final FacetHolder holder) {
+ final ActionSemanticsFacet actionSemanticsFacet = holder.getFacet(ActionSemanticsFacet.class);
+ if(actionSemanticsFacet == null) {
+ throw new IllegalStateException("Require ActionSemanticsFacet in order to process");
+ }
+
+ return actionSemanticsFacet.value().isSafeInNature();
+ }
- public PublishedActionFacetForActionAnnotation(
+ PublishedActionFacetForActionAnnotation(
final FacetHolder holder) {
super(holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java
index 01b1204..6f7bd16 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/action/semantics/ActionSemanticsFacetForActionAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.action.semantics;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -28,7 +30,7 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
public class ActionSemanticsFacetForActionAnnotation extends ActionSemanticsFacetAbstract {
public static ActionSemanticsFacet create(
- final Action action,
+ final List<Action> action,
final FacetHolder holder) {
if(action == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
index 090c9cb..b04599e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
+import java.util.List;
import java.util.Properties;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -48,62 +49,43 @@ public class CollectionLayoutFacetFactory extends FacetFactoryAbstract implement
final FacetHolder holder = processMethodContext.getFacetHolder();
Properties properties = null;
- final CollectionLayout collectionLayout = Annotations.getAnnotations(processMethodContext.getMethod(), CollectionLayout.class);
+ final List<CollectionLayout> collectionLayouts = Annotations.getAnnotations(processMethodContext.getMethod(), CollectionLayout.class);
// cssClass
- CssClassFacet cssClassFacet = null;
- if(cssClassFacet == null) {
- cssClassFacet = CssClassFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
+ CssClassFacet cssClassFacet = CssClassFacetForCollectionLayoutAnnotation.create(collectionLayouts, holder);
FacetUtil.addFacet(cssClassFacet);
// describedAs
- DescribedAsFacet describedAsFacet = null;
- if(describedAsFacet == null) {
- describedAsFacet = DescribedAsFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
+ DescribedAsFacet describedAsFacet =
+ DescribedAsFacetForCollectionLayoutAnnotation.create(collectionLayouts, holder);
FacetUtil.addFacet(describedAsFacet);
// hidden
- HiddenFacet hiddenFacet = null;
- if(hiddenFacet == null) {
- hiddenFacet = HiddenFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
+ HiddenFacet hiddenFacet = HiddenFacetForCollectionLayoutAnnotation.create(collectionLayouts, holder);
FacetUtil.addFacet(hiddenFacet);
// defaultView
- DefaultViewFacet defaultViewFacet = null;
- if(defaultViewFacet == null) {
- defaultViewFacet = DefaultViewFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
+ DefaultViewFacet defaultViewFacet =
+ DefaultViewFacetForCollectionLayoutAnnotation.create(collectionLayouts, holder);
FacetUtil.addFacet(defaultViewFacet);
// named
- NamedFacet namedFacet = null;
- if(namedFacet == null) {
- namedFacet = NamedFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
+ NamedFacet namedFacet = NamedFacetForCollectionLayoutAnnotation.create(collectionLayouts, holder);
FacetUtil.addFacet(namedFacet);
// paged
- PagedFacet pagedFacet = null;
- if(pagedFacet == null) {
- pagedFacet = PagedFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
+ PagedFacet pagedFacet = PagedFacetForCollectionLayoutAnnotation.create(collectionLayouts, holder);
FacetUtil.addFacet(pagedFacet);
// sortedBy
- SortedByFacet sortedByFacet = null;
- if(sortedByFacet == null) {
- sortedByFacet = SortedByFacetForCollectionLayoutAnnotation.create(collectionLayout, holder);
- }
+ SortedByFacet sortedByFacet = SortedByFacetForCollectionLayoutAnnotation.create(collectionLayouts, holder);
FacetUtil.addFacet(sortedByFacet);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionLayoutAnnotation.java
index 8fd55ef..3aeac3d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CssClassFacetForCollectionLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
+import java.util.List;
+import java.util.Objects;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +30,15 @@ import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstr
public class CssClassFacetForCollectionLayoutAnnotation extends CssClassFacetAbstract {
- public static CssClassFacet create(CollectionLayout collectionLayout, FacetHolder holder) {
- if(collectionLayout == null) {
- return null;
- }
- final String cssClass = Strings.emptyToNull(collectionLayout.cssClass());
- return cssClass != null ? new CssClassFacetForCollectionLayoutAnnotation(cssClass, holder) : null;
+ public static CssClassFacet create(List<CollectionLayout> collectionLayouts, FacetHolder holder) {
+
+ return collectionLayouts.stream()
+ .map(CollectionLayout::cssClass)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(cssClass -> new CssClassFacetForCollectionLayoutAnnotation(cssClass, holder))
+ .orElse(null);
}
private CssClassFacetForCollectionLayoutAnnotation(String value, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionLayoutAnnotation.java
index 63c55d1..2a5aee4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DefaultViewFacetForCollectionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
+import java.util.List;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.CollectionLayout;
@@ -32,7 +34,7 @@ public class DefaultViewFacetForCollectionLayoutAnnotation extends DefaultViewFa
super(value, holder);
}
- public static DefaultViewFacet create(CollectionLayout collectionLayout, FacetHolder holder) {
+ public static DefaultViewFacet create(List<CollectionLayout> collectionLayout, FacetHolder holder) {
if (collectionLayout == null) {
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionLayoutAnnotation.java
index dbbd728..f492803 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/DescribedAsFacetForCollectionLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
+import java.util.List;
+import java.util.Objects;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +30,15 @@ import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbs
public class DescribedAsFacetForCollectionLayoutAnnotation extends DescribedAsFacetAbstract {
- public static DescribedAsFacet create(CollectionLayout collectionLayout, FacetHolder holder) {
- if(collectionLayout == null) {
- return null;
- }
- final String describedAs = Strings.emptyToNull(collectionLayout.describedAs());
- return describedAs != null ? new DescribedAsFacetForCollectionLayoutAnnotation(describedAs, holder) : null;
+ public static DescribedAsFacet create(List<CollectionLayout> collectionLayouts, FacetHolder holder) {
+
+ return collectionLayouts.stream()
+ .map(CollectionLayout::describedAs)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(describedAs -> new DescribedAsFacetForCollectionLayoutAnnotation(describedAs, holder))
+ .orElse(null);
}
private DescribedAsFacetForCollectionLayoutAnnotation(String value, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
index 787c095..713712b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/HiddenFacetForCollectionLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
+import java.util.List;
+import java.util.Objects;
+
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -28,12 +31,14 @@ import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
public class HiddenFacetForCollectionLayoutAnnotation extends HiddenFacetAbstract {
- public static HiddenFacet create(final CollectionLayout collectionLayout, final FacetHolder holder) {
- if (collectionLayout == null) {
- return null;
- }
- final Where where = collectionLayout.hidden();
- return where != null && where != Where.NOT_SPECIFIED ? new HiddenFacetForCollectionLayoutAnnotation(where, holder) : null;
+ public static HiddenFacet create(final List<CollectionLayout> collectionLayouts, final FacetHolder holder) {
+ return collectionLayouts.stream()
+ .map(CollectionLayout::hidden)
+ .filter(Objects::nonNull)
+ .filter(where -> where != Where.NOT_SPECIFIED)
+ .findFirst()
+ .map(where -> new HiddenFacetForCollectionLayoutAnnotation(where, holder))
+ .orElse(null);
}
private HiddenFacetForCollectionLayoutAnnotation(final Where where, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
index a3b0070..a7c71dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/NamedFacetForCollectionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
+import java.util.List;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +29,15 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
public class NamedFacetForCollectionLayoutAnnotation extends NamedFacetAbstract {
- public static NamedFacet create(CollectionLayout collectionLayout, FacetHolder holder) {
- if(collectionLayout == null) {
- return null;
- }
- final String named = Strings.emptyToNull(collectionLayout.named());
- return named != null ? new NamedFacetForCollectionLayoutAnnotation(named, collectionLayout.namedEscaped(), holder) : null;
+ public static NamedFacet create(List<CollectionLayout> collectionLayouts, FacetHolder holder) {
+
+ return collectionLayouts.stream()
+ .filter(collectionLayout -> Strings.emptyToNull(collectionLayout.named()) != null)
+ .findFirst()
+ .map(collectionLayout ->
+ new NamedFacetForCollectionLayoutAnnotation(
+ collectionLayout.named(), collectionLayout.namedEscaped(), holder))
+ .orElse(null);
}
private NamedFacetForCollectionLayoutAnnotation(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java
index b558e16..b9b114d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
@@ -26,7 +28,7 @@ import org.apache.isis.core.metamodel.facets.object.paged.PagedFacetAbstract;
public class PagedFacetForCollectionLayoutAnnotation extends PagedFacetAbstract {
- public static PagedFacet create(CollectionLayout collectionLayout, FacetHolder holder) {
+ public static PagedFacet create(List<CollectionLayout> collectionLayout, FacetHolder holder) {
if(collectionLayout == null) {
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java
index e988062..63c2f6d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java
@@ -20,6 +20,8 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
import java.util.Comparator;
+import java.util.List;
+
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacet;
@@ -27,7 +29,7 @@ import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacetA
public class SortedByFacetForCollectionLayoutAnnotation extends SortedByFacetAbstract {
- public static SortedByFacet create(CollectionLayout collectionLayout, FacetHolder holder) {
+ public static SortedByFacet create(List<CollectionLayout> collectionLayout, FacetHolder holder) {
if(collectionLayout == null) {
return null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
index 7c2a303..207c5d2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/order/annotprop/MemberOrderFacetFactory.java
@@ -49,7 +49,7 @@ public class MemberOrderFacetFactory extends FacetFactoryAbstract implements Con
}
private MemberOrderFacet createFromAnnotationIfPossible(final ProcessMethodContext processMethodContext) {
- final MemberOrder annotation = Annotations.getAnnotations(processMethodContext.getMethod(), MemberOrder.class);
+ final MemberOrder annotation = Annotations.getAnnotation(processMethodContext.getMethod(), MemberOrder.class);
if (annotation != null) {
return new MemberOrderFacetAnnotation(
annotation.name(),
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 129d37d..5082254 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
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.object.domainobject.choices;
import java.util.List;
+import org.apache.isis.applib.annotation.Bounding;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
@@ -32,21 +33,22 @@ import org.apache.isis.core.metamodel.services.persistsession.PersistenceSession
public class ChoicesFacetForDomainObjectAnnotation extends ChoicesFacetFromBoundedAbstract {
public static Facet create(
- final List<DomainObject> domainObject,
+ final List<DomainObject> domainObjects,
final FacetHolder facetHolder,
final DeploymentCategory deploymentCategory,
final AuthenticationSessionProvider authenticationSessionProvider,
final PersistenceSessionServiceInternal persistenceSessionServiceInternal) {
- if(domainObject == null) {
- return null;
- }
-
- final boolean bounded = domainObject.bounded();
- return bounded
- ? new ChoicesFacetForDomainObjectAnnotation(
- facetHolder, deploymentCategory, authenticationSessionProvider, persistenceSessionServiceInternal)
- : null;
+ return domainObjects.stream()
+ .map(DomainObject::bounding)
+ .filter(bounding -> bounding != Bounding.NOT_SPECIFIED)
+ .findFirst()
+ .map(bounding -> bounding == Bounding.BOUNDED
+ ? new ChoicesFacetForDomainObjectAnnotation(
+ facetHolder, deploymentCategory,
+ authenticationSessionProvider, persistenceSessionServiceInternal)
+ : null
+ ).orElse(null);
}
private ChoicesFacetForDomainObjectAnnotation(
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 7930a9e..45f0214 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
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid;
import java.util.List;
+import java.util.Objects;
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.DomainObject;
@@ -35,7 +36,8 @@ public class ObjectSpecIdFacetForDomainObjectAnnotation extends ObjectSpecIdFace
return domainObjects.stream()
.map(DomainObject::objectType)
- .filter(objectType -> !Strings.isNullOrEmpty(objectType))
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
.findFirst()
.map(objectType -> new ObjectSpecIdFacetForDomainObjectAnnotation(objectType, holder))
.orElse(null);
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 2b8b494..94816e7 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
@@ -35,26 +35,29 @@ public class PublishedObjectFacetForDomainObjectAnnotation extends PublishedObje
final IsisConfiguration configuration,
final FacetHolder holder) {
- final Publishing publishing = domainObjects != null ? domainObjects.publishing() : Publishing.AS_CONFIGURED;
+ final PublishObjectsConfiguration setting = PublishObjectsConfiguration.parse(configuration);
- switch (publishing) {
- case AS_CONFIGURED:
-
- final PublishObjectsConfiguration setting = PublishObjectsConfiguration.parse(configuration);
- switch (setting) {
- case NONE:
+ return domainObjects.stream()
+ .map(DomainObject::publishing)
+ .filter(publishing -> publishing != Publishing.NOT_SPECIFIED)
+ .findFirst()
+ .map(publishing -> {
+ switch (publishing) {
+ case AS_CONFIGURED:
+ return setting == PublishObjectsConfiguration.NONE
+ ? (PublishedObjectFacet)new PublishedObjectFacetForDomainObjectAnnotationAsConfigured(holder)
+ : null;
+ case DISABLED:
return null;
- default:
- return domainObjects != null
- ? new PublishedObjectFacetForDomainObjectAnnotationAsConfigured(holder)
- : new PublishedObjectFacetFromConfiguration(holder);
- }
- case DISABLED:
- return null;
- case ENABLED:
- return new PublishedObjectFacetForDomainObjectAnnotation(holder);
- }
- return null;
+ case ENABLED:
+ return new PublishedObjectFacetForDomainObjectAnnotation(holder);
+ }
+ throw new IllegalStateException("domainObject.publishing() not recognised, is " + publishing);
+
+ }).orElseGet(() -> setting == PublishObjectsConfiguration.NONE
+ ? null
+ : new PublishedObjectFacetFromConfiguration(holder));
+
}
PublishedObjectFacetForDomainObjectAnnotation(final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetForViewModelLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetForViewModelLayoutAnnotation.java
index be518e7..22932ce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetForViewModelLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFacetForViewModelLayoutAnnotation.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,15 @@ import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstr
public class CssClassFacetForViewModelLayoutAnnotation extends CssClassFacetAbstract {
- public static CssClassFacet create(final List<ViewModelLayout> viewModelLayout, final FacetHolder holder) {
- if (viewModelLayout == null) {
- return null;
- }
- final String cssClass = Strings.emptyToNull(viewModelLayout.cssClass());
- return cssClass != null ? new CssClassFacetForViewModelLayoutAnnotation(cssClass, holder) : null;
+ public static CssClassFacet create(final List<ViewModelLayout> viewModelLayouts, final FacetHolder holder) {
+
+ return viewModelLayouts.stream()
+ .map(ViewModelLayout::cssClass)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(cssClass -> new CssClassFacetForViewModelLayoutAnnotation(cssClass, holder))
+ .orElse(null);
}
private CssClassFacetForViewModelLayoutAnnotation(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DescribedAsFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DescribedAsFacetForDomainObjectLayoutAnnotation.java
index 0e53e20..e040642 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DescribedAsFacetForDomainObjectLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DescribedAsFacetForDomainObjectLayoutAnnotation.java
@@ -18,10 +18,11 @@
*/
package org.apache.isis.core.metamodel.facets.object.domainobjectlayout;
-
import java.util.List;
+import java.util.Objects;
import com.google.common.base.Strings;
+
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet;
@@ -30,12 +31,15 @@ import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbs
public class DescribedAsFacetForDomainObjectLayoutAnnotation extends DescribedAsFacetAbstract {
- public static DescribedAsFacet create(final List<DomainObjectLayout> domainObjectLayout, final FacetHolder holder) {
- if(domainObjectLayout == null) {
- return null;
- }
- final String describedAs = Strings.emptyToNull(domainObjectLayout.describedAs());
- return describedAs != null ? new DescribedAsFacetForDomainObjectLayoutAnnotation(describedAs, holder) : null;
+ public static DescribedAsFacet create(final List<DomainObjectLayout> domainObjectLayouts, final FacetHolder holder) {
+
+ return domainObjectLayouts.stream()
+ .map(DomainObjectLayout::describedAs)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(describedAs -> new DescribedAsFacetForDomainObjectLayoutAnnotation(describedAs, holder))
+ .orElse(null);
}
private DescribedAsFacetForDomainObjectLayoutAnnotation(final String value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DescribedAsFacetForViewModelLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DescribedAsFacetForViewModelLayoutAnnotation.java
index 57999e9..4e526e3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DescribedAsFacetForViewModelLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DescribedAsFacetForViewModelLayoutAnnotation.java
@@ -20,6 +20,7 @@ package org.apache.isis.core.metamodel.facets.object.domainobjectlayout;
import java.util.List;
+import java.util.Objects;
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.ViewModelLayout;
@@ -30,12 +31,15 @@ import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbs
public class DescribedAsFacetForViewModelLayoutAnnotation extends DescribedAsFacetAbstract {
- public static DescribedAsFacet create(final List<ViewModelLayout> viewModelLayout, final FacetHolder holder) {
- if(viewModelLayout == null) {
- return null;
- }
- final String describedAs = Strings.emptyToNull(viewModelLayout.describedAs());
- return describedAs != null ? new DescribedAsFacetForViewModelLayoutAnnotation(describedAs, holder) : null;
+ public static DescribedAsFacet create(final List<ViewModelLayout> viewModelLayouts, final FacetHolder holder) {
+
+ return viewModelLayouts.stream()
+ .map(ViewModelLayout::describedAs)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(describedAs -> new DescribedAsFacetForViewModelLayoutAnnotation(describedAs, holder))
+ .orElse(null);
}
private DescribedAsFacetForViewModelLayoutAnnotation(final String value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java
index 07ba4d3..84df88c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java
@@ -29,12 +29,13 @@ import org.apache.isis.core.metamodel.facets.object.paged.PagedFacetAbstract;
public class PagedFacetForDomainObjectLayoutAnnotation extends PagedFacetAbstract {
- public static PagedFacet create(final List<DomainObjectLayout> domainObjectLayout, final FacetHolder holder) {
- if(domainObjectLayout == null) {
- return null;
- }
- final int paged = domainObjectLayout.paged();
- return paged > 1 ? new PagedFacetForDomainObjectLayoutAnnotation(paged, holder) : null;
+ public static PagedFacet create(final List<DomainObjectLayout> domainObjectLayouts, final FacetHolder holder) {
+ return domainObjectLayouts.stream()
+ .map(DomainObjectLayout::paged)
+ .filter(paged -> paged > 1)
+ .findFirst()
+ .map(paged -> new PagedFacetForDomainObjectLayoutAnnotation(paged, holder))
+ .orElse(null);
}
private PagedFacetForDomainObjectLayoutAnnotation(final int value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
index caed1d4..d918960 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/encodeable/annotcfg/EncodableFacetAnnotationElseConfigurationFactory.java
@@ -52,7 +52,7 @@ public class EncodableFacetAnnotationElseConfigurationFactory extends FacetFacto
private EncodableFacet create(final Class<?> cls, final FacetHolder holder) {
// create from annotation, if present
- final Encodable annotation = Annotations.getAnnotations(cls, Encodable.class);
+ final Encodable annotation = Annotations.getAnnotation(cls, Encodable.class);
if (annotation != null) {
final EncodableFacetAnnotation facet = new EncodableFacetAnnotation(cls, holder, servicesInjector);
if (facet.isValid()) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/membergroups/annotprop/MemberGroupLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/membergroups/annotprop/MemberGroupLayoutFacetFactory.java
index 025699d..0b46def 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/membergroups/annotprop/MemberGroupLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/membergroups/annotprop/MemberGroupLayoutFacetFactory.java
@@ -57,7 +57,7 @@ public class MemberGroupLayoutFacetFactory extends FacetFactoryAbstract implemen
final Class<?> cls = processClassContext.getCls();
- final MemberGroupLayout mglAnnot = Annotations.getAnnotations(cls, MemberGroupLayout.class);
+ final MemberGroupLayout mglAnnot = Annotations.getAnnotation(cls, MemberGroupLayout.class);
if (mglAnnot != null) {
return new MemberGroupLayoutFacetAnnotation(mglAnnot, holder);
}
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 894319d..a0443ae 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
@@ -43,27 +43,29 @@ public class MixinFacetForDomainObjectAnnotation extends MixinFacetAbstract {
}
public static MixinFacet create(
- final List<DomainObject> domainObject,
+ final List<DomainObject> domainObjects,
final Class<?> candidateMixinType,
final FacetHolder facetHolder,
final ServicesInjector servicesInjector) {
- if(domainObject == null) {
- return null;
- }
- if(domainObject.nature() != Nature.MIXIN) {
- return null;
- }
- final Constructor<?>[] constructors = candidateMixinType.getConstructors();
- for (Constructor<?> constructor : constructors) {
- final Class<?>[] constructorTypes = constructor.getParameterTypes();
- if(constructorTypes.length != 1) {
- continue;
- }
- final Class<?> constructorType = constructorTypes[0];
- return new MixinFacetForDomainObjectAnnotation(candidateMixinType, domainObject.mixinMethod(), constructorType, facetHolder,
- servicesInjector);
- }
- return null;
+ return domainObjects.stream()
+ .filter(domainObject -> domainObject.nature() == Nature.MIXIN)
+ .findFirst()
+ .map(domainObject -> {
+ final Constructor<?>[] constructors = candidateMixinType.getConstructors();
+ for (Constructor<?> constructor : constructors) {
+ final Class<?>[] constructorTypes = constructor.getParameterTypes();
+ if(constructorTypes.length != 1) {
+ continue;
+ }
+ final Class<?> constructorType = constructorTypes[0];
+ return new MixinFacetForDomainObjectAnnotation(
+ candidateMixinType, domainObject.mixinMethod(), constructorType, facetHolder,
+ servicesInjector);
+ }
+ // else
+ return null;
+ })
+ .orElse(null);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
index e3a0460..d663152 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/parseable/annotcfg/ParseableFacetAnnotationElseConfigurationFactory.java
@@ -46,7 +46,7 @@ public class ParseableFacetAnnotationElseConfigurationFactory extends FacetFacto
}
private ParseableFacetAbstract create(final Class<?> cls, final FacetHolder holder) {
- final Parseable annotation = Annotations.getAnnotations(cls, Parseable.class);
+ final Parseable annotation = Annotations.getAnnotation(cls, Parseable.class);
// create from annotation, if present
if (annotation != null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
index e1a5aa2..33190a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactory.java
@@ -65,7 +65,7 @@ public class BigDecimalDerivedFromJdoColumnAnnotationFacetFactory extends FacetF
BigDecimalValueFacet existingFacet = (BigDecimalValueFacet) holder.getFacet(BigDecimalValueFacet.class);
- final Column jdoColumnAnnotation = Annotations.getAnnotations(processMethodContext.getMethod(), Column.class);
+ final Column jdoColumnAnnotation = Annotations.getAnnotation(processMethodContext.getMethod(), Column.class);
if (jdoColumnAnnotation == null) {
if(existingFacet != null && !existingFacet.isNoop()) {
--
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].