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/30 14:52:49 UTC
[isis] branch dev/2.0.0/ISIS-1632-meta-annotations updated:
ISIS-1632: converts facet factories to support meta annotations ... code
now compiles
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 a965887 ISIS-1632: converts facet factories to support meta annotations ... code now compiles
a965887 is described below
commit a965887aeaaad8ca42e733aa8300053b2e659d80
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Oct 30 14:52:21 2017 +0000
ISIS-1632: converts facet factories to support meta annotations ... code now compiles
but haven't tried unit tests yet, let alone integ tests etc..
Also:
- removed support for boolean flags in annotations, replaced with enums. Need to review to ensure is complete.
---
.../org/apache/isis/applib/annotation/Action.java | 8 +-
.../isis/applib/annotation/ActionLayout.java | 9 ++-
.../isis/applib/annotation/BookmarkPolicy.java | 7 +-
.../apache/isis/applib/annotation/Collection.java | 11 +--
.../apache/isis/applib/annotation/Contributed.java | 8 +-
.../isis/applib/annotation/DomainObject.java | 2 +-
.../isis/applib/annotation/DomainObjectLayout.java | 2 +-
.../applib/annotation/DomainServiceLayout.java | 5 +-
.../apache/isis/applib/annotation/InvokeOn.java | 7 +-
.../isis/applib/annotation/LabelPosition.java | 7 +-
.../{InvokeOn.java => MementoSerialization.java} | 25 +++---
.../apache/isis/applib/annotation/Optionality.java | 7 +-
.../apache/isis/applib/annotation/PromptStyle.java | 7 +-
.../apache/isis/applib/annotation/Property.java | 12 +--
.../isis/applib/annotation/PropertyLayout.java | 13 ++-
.../{BookmarkPolicy.java => RenderDayPolicy.java} | 22 +++---
.../{BookmarkPolicy.java => Repainting.java} | 22 +++---
.../apache/isis/applib/annotation/SemanticsOf.java | 7 +-
.../isis/applib/annotation/ViewModelLayout.java | 2 +-
.../layout/component/PropertyLayoutData.java | 44 +++++++++--
...ropertyLayoutData_renderedAsDayBefore_Test.java | 75 ++++++++++++++++++
.../component/PropertyLayoutData_repaint_Test.java | 75 ++++++++++++++++++
.../action/ActionAnnotationFacetFactory.java | 48 ++++++-----
.../action/bulk/BulkFacetForActionAnnotation.java | 20 +++--
.../hidden/HiddenFacetForActionAnnotation.java | 17 ++--
.../ActionSemanticsFacetForActionAnnotation.java | 21 ++---
.../actions/layout/ActionLayoutFacetFactory.java | 22 +++---
...tionPositionFacetForActionLayoutAnnotation.java | 17 ++--
...okmarkPolicyFacetForActionLayoutAnnotation.java | 28 +++++--
.../CssClassFaFacetForActionLayoutAnnotation.java | 24 ++++--
.../CssClassFacetForActionLayoutAnnotation.java | 20 +++--
.../DescribedAsFacetForActionLayoutAnnotation.java | 18 +++--
.../HiddenFacetForActionLayoutAnnotation.java | 18 +++--
.../NamedFacetForActionLayoutAnnotation.java | 20 +++--
...tContributedFacetForActionLayoutAnnotation.java | 24 +++---
.../PromptStyleFacetForActionLayoutAnnotation.java | 63 ++++++++-------
.../CollectionAnnotationFacetFactory.java | 60 +++++++-------
.../DisabledFacetForCollectionAnnotation.java | 41 +++++-----
.../hidden/HiddenFacetForCollectionAnnotation.java | 20 +++--
.../NotPersistedFacetForCollectionAnnotation.java | 30 ++++---
...fFacetOnCollectionFromCollectionAnnotation.java | 24 +++---
...aultViewFacetForCollectionLayoutAnnotation.java | 19 +++--
.../PagedFacetForCollectionLayoutAnnotation.java | 16 ++--
...SortedByFacetForCollectionLayoutAnnotation.java | 24 +++---
.../jaxb/JaxbXmlJavaTypeAdapterFacetFactory.java | 4 +-
.../DomainObjectAnnotationFacetFactory.java | 4 +-
...ssClassFaFacetForViewModelLayoutAnnotation.java | 22 ++++--
...sClassFacetForDomainObjectLayoutAnnotation.java | 3 -
...mainObjectLayoutAnnotationUsingIconUiEvent.java | 41 +++++-----
.../NamedFacetForDomainObjectLayoutAnnotation.java | 18 +++--
.../NamedFacetForViewModelLayoutAnnotation.java | 23 ++++--
.../PluralFacetForViewModelLayoutAnnotation.java | 15 ++--
...ainObjectLayoutAnnotationUsingTitleUiEvent.java | 4 +-
.../DomainServiceFacetAnnotationFactory.java | 2 +-
.../DomainServiceLayoutFacetFactory.java | 28 ++++---
...NamedFacetForDomainServiceLayoutAnnotation.java | 20 +++--
...ValueFacetAnnotationOrConfigurationFactory.java | 2 +-
.../MustSatisfySpecificationFacetAbstract.java | 4 +-
.../property/PropertyAnnotationFacetFactory.java | 92 ++++++++++------------
.../command/CommandFacetForPropertyAnnotation.java | 59 ++++++++------
.../DisabledFacetForPropertyAnnotation.java | 50 ++++++------
.../FileAcceptFacetForPropertyAnnotation.java | 22 +++---
.../hidden/HiddenFacetForPropertyAnnotation.java | 24 +++---
.../MandatoryFacetForPropertyAnnotation.java | 38 +++++----
.../MaxLengthFacetForPropertyAnnotation.java | 17 ++--
...sfySpecificationFacetForPropertyAnnotation.java | 32 ++++----
.../NotPersistedFacetForPropertyAnnotation.java | 21 +++--
...ublishedPropertyFacetForPropertyAnnotation.java | 53 ++++++++-----
.../RegExFacetForPatternAnnotationOnProperty.java | 21 ++---
.../regex/RegExFacetForPropertyAnnotation.java | 22 +++---
.../CssClassFacetForPropertyLayoutAnnotation.java | 20 +++--
...escribedAsFacetForPropertyLayoutAnnotation.java | 20 +++--
.../HiddenFacetForPropertyLayoutAnnotation.java | 18 +++--
.../LabelAtFacetForPropertyLayoutAnnotation.java | 18 +++--
.../MultiLineFacetForPropertyLayoutAnnotation.java | 17 ++--
.../NamedFacetForPropertyLayoutAnnotation.java | 18 +++--
...romptStyleFacetForPropertyLayoutAnnotation.java | 69 ++++++++--------
.../propertylayout/PropertyLayoutFacetFactory.java | 45 +++++------
...edAdjustedFacetForPropertyLayoutAnnotation.java | 27 +++++--
...icalLengthFacetForPropertyLayoutAnnotation.java | 18 +++--
...UnchangingFacetForPropertyLayoutAnnotation.java | 30 +++++--
...JdoDatastoreIdentityAnnotationFacetFactory.java | 2 +-
.../JdoDiscriminatorAnnotationFacetFactory.java | 2 +-
.../query/JdoQueryAnnotationFacetFactory.java | 4 +-
.../JdoPrimaryKeyAnnotationFacetFactory.java | 2 +-
...stedAnnotationOnCollectionFacetFactoryTest.java | 3 +-
...oicesFacetFromBoundedAnnotationFactoryTest.java | 3 +-
.../DomainObjectAnnotationFacetFactoryTest.java | 5 +-
...romptStyleFacetFromPropertyAnnotation_Test.java | 14 ++--
...sistedAnnotationOnPropertyFacetFactoryTest.java | 3 +-
.../PropertyAnnotationFacetFactoryTest.java | 5 +-
...acetForPropertyLayoutAnnotationFactoryTest.java | 6 +-
...acetForPropertyLayoutAnnotationFactoryTest.java | 9 ++-
...ionParameterAbstractTest_getId_and_getName.java | 8 +-
.../scenarios/DomainServiceProviderMockery.java | 3 +-
95 files changed, 1210 insertions(+), 771 deletions(-)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Action.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
index 11ab9f8..822c4d7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Action.java
@@ -93,7 +93,7 @@ public @interface Action {
* {@link SemanticsOf#IDEMPOTENT idempotent} or
* {@link SemanticsOf#NON_IDEMPOTENT non-idempotent}.
*/
- SemanticsOf semantics() default SemanticsOf.NON_IDEMPOTENT;
+ SemanticsOf semantics() default SemanticsOf.NOT_SPECIFIED;
// //////////////////////////////////////
@@ -116,7 +116,7 @@ public @interface Action {
* Has no meaning if annotated on an action of a domain service.
* </p>
*/
- InvokeOn invokeOn() default InvokeOn.OBJECT_ONLY;
+ InvokeOn invokeOn() default InvokeOn.NOT_SPECIFIED;
// //////////////////////////////////////
@@ -151,11 +151,11 @@ public @interface Action {
* Whether the action invocation should be published.
*
* <p>
- * Requires that an implementation of the {@link org.apache.isis.applib.services.publish.PublishingService}
+ * Requires that an implementation of the {@link org.apache.isis.applib.services.publish.PublisherService}
* or {@link org.apache.isis.applib.services.publish.PublisherService} is registered with the framework.
* </p>
*/
- Publishing publishing() default Publishing.AS_CONFIGURED;
+ Publishing publishing() default Publishing.NOT_SPECIFIED;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
index 67f54b1..d55fb33 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
@@ -45,7 +45,7 @@ public @interface ActionLayout {
* identically).
* </p>
*/
- BookmarkPolicy bookmarking() default BookmarkPolicy.NEVER;
+ BookmarkPolicy bookmarking() default BookmarkPolicy.NOT_SPECIFIED;
// //////////////////////////////////////
@@ -112,7 +112,7 @@ public @interface ActionLayout {
* Ignored if the action has not been associated with a property.
* </p>
*/
- Position position() default Position.BELOW;
+ Position position() default Position.NOT_SPECIFIED;
@XmlType(
namespace = "http://isis.apache.org/applib/layout/component"
@@ -121,7 +121,8 @@ public @interface ActionLayout {
BELOW,
RIGHT,
PANEL,
- PANEL_DROPDOWN
+ PANEL_DROPDOWN,
+ NOT_SPECIFIED
}
/**
@@ -142,7 +143,7 @@ public @interface ActionLayout {
* Has no meaning for actions of domain entities.
* </p>
*/
- Contributed contributed() default Contributed.AS_BOTH;
+ Contributed contributed() default Contributed.NOT_SPECIFIED;
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
index 70e810e..143e41c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
@@ -36,5 +36,10 @@ public enum BookmarkPolicy {
/**
* An unimportant entity that should never be bookmarked.
*/
- NEVER
+ NEVER,
+ /**
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
+ */
+ NOT_SPECIFIED
}
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
index a9085b0..36b9fca 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Collection.java
@@ -70,7 +70,7 @@ public @interface Collection {
/**
* Indicates when the collection is not visible to the user.
*/
- Where hidden() default Where.NOWHERE;
+ Where hidden() default Where.NOT_SPECIFIED;
// //////////////////////////////////////
@@ -82,7 +82,7 @@ public @interface Collection {
* Note that non-editable objects can nevertheless have actions invoked upon them.
* </p>
*/
- Editing editing() default Editing.AS_CONFIGURED;
+ Editing editing() default Editing.NOT_SPECIFIED;
/**
* If {@link #editing()} is set to {@link Editing#DISABLED},
@@ -95,13 +95,14 @@ public @interface Collection {
/**
- * Indicates that the collection should be excluded from snapshots.
+ * Indicates whether the collecion should be included or excluded from mementos.
*
* <p>
- * To ensure that the collection is actually not persisted in the objectstore, also annotate with {@link NotPersistent}.
+ * To ensure that the collection is actually not persisted in the objectstore, also annotate with the JDO annotation {@link NotPersistent}.
* </p>
*/
- boolean notPersisted() default false;
+ MementoSerialization mementoSerialization() default MementoSerialization.NOT_SPECIFIED;
+
// //////////////////////////////////////
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java
index f0f39b3..476bfd3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Contributed.java
@@ -46,6 +46,10 @@ public enum Contributed {
/**
* The action is not contributed as either an action or as an association.
*/
- AS_NEITHER;
-
+ AS_NEITHER,
+ /**
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
+ */
+ NOT_SPECIFIED
}
\ No newline at end of file
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 e509b34..849ecb1 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
@@ -48,7 +48,7 @@ public @interface DomainObject {
* registered with the framework.
* </p>
*/
- Auditing auditing() default Auditing.AS_CONFIGURED;
+ Auditing auditing() default Auditing.NOT_SPECIFIED;
// //////////////////////////////////////
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
index 377efdf..d0ffd85 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
@@ -141,6 +141,6 @@ s */
/**
* Whether (and how) this domain object can be bookmarked in the UI.
*/
- BookmarkPolicy bookmarking() default BookmarkPolicy.NEVER;
+ BookmarkPolicy bookmarking() default BookmarkPolicy.NOT_SPECIFIED;
}
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainServiceLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainServiceLayout.java
index d79d007..576b0eb 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainServiceLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/DomainServiceLayout.java
@@ -45,13 +45,14 @@ public @interface DomainServiceLayout {
public enum MenuBar {
PRIMARY,
SECONDARY,
- TERTIARY
+ TERTIARY,
+ NOT_SPECIFIED
}
/**
* The menubar in which the menu that holds this service's actions should reside.
*/
- MenuBar menuBar() default MenuBar.PRIMARY;
+ MenuBar menuBar() default MenuBar.NOT_SPECIFIED;
/**
* Number in Dewey Decimal format representing the order.
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokeOn.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokeOn.java
index bdab88d..8e17153 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokeOn.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokeOn.java
@@ -41,6 +41,11 @@ public enum InvokeOn {
* Corresponds to (the deprecated) <code>@Bulk(appliesTo=BULK_ONLY)</code> annotation.
* </p>
*/
- COLLECTION_ONLY;
+ COLLECTION_ONLY,
+ /**
+ * 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/LabelPosition.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
index 102aa36..e443c4a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/LabelPosition.java
@@ -39,5 +39,10 @@ public enum LabelPosition {
*/
RIGHT,
TOP,
- NONE
+ NONE,
+ /**
+ * 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/InvokeOn.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/MementoSerialization.java
similarity index 58%
copy from core/applib/src/main/java/org/apache/isis/applib/annotation/InvokeOn.java
copy to core/applib/src/main/java/org/apache/isis/applib/annotation/MementoSerialization.java
index bdab88d..9f79818 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokeOn.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/MementoSerialization.java
@@ -19,28 +19,25 @@
package org.apache.isis.applib.annotation;
/**
- * Whether an action can be invoked on a single object and/or on many objects in a collection.
+ * Whether the property or collection is included if the domain object is serialized into a memento.
*/
-public enum InvokeOn {
+public enum MementoSerialization {
/**
- * The action can only be invoked on a single object. This is the default.
+ * Property or collection is included in any mementos.
+ * This is the fallback/default if not explicitly excluded.
*/
- OBJECT_ONLY,
+ INCLUDED,
/**
- * The action can be invoked either on a single object or on a collection of objects (each in turn).
+ * Property or collection's state is excluded from any mementos.
*
* <p>
- * Corresponds to (the deprecated) <code>@Bulk(appliesTo=BULK_AND_REGULAR)</code> annotation.
+ * Corresponds to <tt>@Property(notPersisted=true)</tt> or <tt>@Collection(notPersisted=true)</tt> prior to Isis 2.x
* </p>
*/
- OBJECT_AND_COLLECTION,
+ EXCLUDED,
/**
- * The action is intended to be invoked only on a collection of objects (each in turn).
- *
- * <p>
- * Corresponds to (the deprecated) <code>@Bulk(appliesTo=BULK_ONLY)</code> annotation.
- * </p>
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
*/
- COLLECTION_ONLY;
-
+ NOT_SPECIFIED
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Optionality.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Optionality.java
index d1edccb..e3efad5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Optionality.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Optionality.java
@@ -53,5 +53,10 @@ public enum Optionality {
* is unable to do so.
* </p>
*/
- MANDATORY
+ MANDATORY,
+ /**
+ * 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/PromptStyle.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/PromptStyle.java
index 175c763..57cf057 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/PromptStyle.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/PromptStyle.java
@@ -62,7 +62,12 @@ public enum PromptStyle {
* </p>
*
*/
- INLINE_AS_IF_EDIT;
+ INLINE_AS_IF_EDIT,
+ /**
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
+ */
+ NOT_SPECIFIED;
public boolean isDialog() { return this == DIALOG; }
public boolean isInline() { return this == INLINE; }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/Property.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
index e7bd6fb..77081a1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Property.java
@@ -74,7 +74,7 @@ public @interface Property {
/**
* Indicates where the property is not visible to the user.
*/
- Where hidden() default Where.NOWHERE;
+ Where hidden() default Where.NOT_SPECIFIED;
@@ -102,7 +102,7 @@ public @interface Property {
/**
* Whether the property edit should be reified into a {@link org.apache.isis.applib.services.command.Command} object.
*/
- CommandReification command() default CommandReification.AS_CONFIGURED;
+ CommandReification command() default CommandReification.NOT_SPECIFIED;
/**
* How the {@link org.apache.isis.applib.services.command.Command Command} object provided by the
@@ -131,7 +131,7 @@ public @interface Property {
* or {@link org.apache.isis.applib.services.publish.PublisherService} is registered with the framework.
* </p>
*/
- Publishing publishing() default Publishing.AS_CONFIGURED;
+ Publishing publishing() default Publishing.NOT_SPECIFIED;
@@ -163,13 +163,13 @@ public @interface Property {
// //////////////////////////////////////
/**
- * Indicates that the property should be excluded from snapshots.
+ * Indicates whether the property should be included or excluded from mementos.
*
* <p>
- * To ensure that the property is actually not persisted in the objectstore, also annotate with {@link NotPersistent}.
+ * To ensure that the property is actually not persisted in the objectstore, also annotate with the JDO annotation {@link NotPersistent}.
* </p>
*/
- boolean notPersisted() default false;
+ MementoSerialization mementoSerialization() default MementoSerialization.NOT_SPECIFIED;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
index d719648..36edb5e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/PropertyLayout.java
@@ -54,7 +54,7 @@ public @interface PropertyLayout {
* If not specified, the default depends upon the property value's datatype.
* </p>
*/
- LabelPosition labelPosition() default LabelPosition.LEFT;
+ LabelPosition labelPosition() default LabelPosition.NOT_SPECIFIED;
/**
* For string properties (and parameters), render as a text area over specified number of lines.
@@ -74,7 +74,7 @@ public @interface PropertyLayout {
/**
* How the properties of this domain object are be edited, either {@link PromptStyle#DIALOG dialog} or {@link PromptStyle#INLINE inline}.
*/
- PromptStyle promptStyle() default PromptStyle.AS_CONFIGURED;
+ PromptStyle promptStyle() default PromptStyle.NOT_SPECIFIED;
/**
* For date properties (and parameters) only, instructs the viewer that the date should be rendered as one day
@@ -101,8 +101,7 @@ public @interface PropertyLayout {
* In the domain object, itself, however, the value stored is 1-jun-2013.
* </p>
*/
- boolean renderedAsDayBefore() default false;
-
+ RenderDayPolicy renderDay() default RenderDayPolicy.NOT_SPECIFIED;
/**
* The typical entry length of a field, use to determine the optimum width for display
@@ -114,8 +113,8 @@ public @interface PropertyLayout {
* do change.
*
* <p>
- * Setting this attribute to <tt>true</tt> is used as a hint to the viewer to not redraw the property
- * after an AJAX update of some other property/ies of the object have changed.
+ * Setting this attribute to <tt>RepaintPolicy.NO_REPAINT</tt> is used as a hint to the viewer to not repaint
+ * the property after an AJAX update of some other property/ies of the object have changed.
* This is primarily for performance, eg can improve the user experience when rendering PDFs/blobs.
* </p>
*
@@ -131,7 +130,7 @@ public @interface PropertyLayout {
* within the framework than simply a hint for rendering.
* </p>
*/
- boolean unchanging() default false;
+ Repainting repainting() default Repainting.NOT_SPECIFIED;
}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/RenderDayPolicy.java
similarity index 74%
copy from core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
copy to core/applib/src/main/java/org/apache/isis/applib/annotation/RenderDayPolicy.java
index 70e810e..ba5201c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/RenderDayPolicy.java
@@ -16,25 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.isis.applib.annotation;
import javax.xml.bind.annotation.XmlType;
+/**
+ * How to render days.
+ */
@XmlType(
namespace = "http://isis.apache.org/applib/layout/component"
)
-public enum BookmarkPolicy {
- /**
- * Can be bookmarked, and is a top-level 'root' (or parent) bookmark.
- */
- AS_ROOT,
+public enum RenderDayPolicy {
+ AS_DAY,
/**
- * Can be bookmarked, but only as a child or some other parent/root bookmark
+ * Equivalent to <tt>@PropertyLayout(renderAsDayBefore=true)</tt> prior to Isis 2.x
*/
- AS_CHILD,
+ AS_DAY_BEFORE,
/**
- * An unimportant entity that should never be bookmarked.
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
*/
- NEVER
-}
\ No newline at end of file
+ NOT_SPECIFIED;
+}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/Repainting.java
similarity index 72%
copy from core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
copy to core/applib/src/main/java/org/apache/isis/applib/annotation/Repainting.java
index 70e810e..ea05fec 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/BookmarkPolicy.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/Repainting.java
@@ -16,25 +16,25 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.isis.applib.annotation;
import javax.xml.bind.annotation.XmlType;
+/**
+ * Whether a component is unchanging and so does not require repainting.
+ */
@XmlType(
namespace = "http://isis.apache.org/applib/layout/component"
)
-public enum BookmarkPolicy {
- /**
- * Can be bookmarked, and is a top-level 'root' (or parent) bookmark.
- */
- AS_ROOT,
+public enum Repainting {
+ REPAINT,
/**
- * Can be bookmarked, but only as a child or some other parent/root bookmark
+ * Equivalent to <tt>@PropertyLayout(unchanging=true)</tt> prior to Isis 2.x
*/
- AS_CHILD,
+ NO_REPAINT,
/**
- * An unimportant entity that should never be bookmarked.
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
*/
- NEVER
-}
\ No newline at end of file
+ NOT_SPECIFIED
+}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
index e834736..fcf1a08 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/SemanticsOf.java
@@ -66,7 +66,12 @@ public enum SemanticsOf {
* <p>
* An example is increasing the quantity of a line item in an Order by 1.
*/
- NON_IDEMPOTENT_ARE_YOU_SURE;
+ NON_IDEMPOTENT_ARE_YOU_SURE,
+ /**
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
+ */
+ NOT_SPECIFIED;
public String getFriendlyName() {
return Enums.getFriendlyNameOf(this);
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/ViewModelLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/ViewModelLayout.java
index 5f2daff..1514201 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/ViewModelLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/ViewModelLayout.java
@@ -120,6 +120,6 @@ public @interface ViewModelLayout {
/**
* Whether (and how) this domain object can be bookmarked in the UI.
*/
- BookmarkPolicy bookmarking() default BookmarkPolicy.NEVER;
+ BookmarkPolicy bookmarking() default BookmarkPolicy.NOT_SPECIFIED;
}
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
index 3e6cad5..5eb4e46 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/PropertyLayoutData.java
@@ -31,6 +31,8 @@ import com.google.common.collect.Lists;
import org.apache.isis.applib.annotation.LabelPosition;
import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.RenderDayPolicy;
+import org.apache.isis.applib.annotation.Repainting;
import org.apache.isis.applib.annotation.Where;
/**
@@ -186,15 +188,31 @@ public class PropertyLayoutData
- private Boolean renderedAsDayBefore;
-
+ /**
+ * @deprecated - use {@link #getRenderDay()} instead.
+ */
+ @Deprecated
@XmlAttribute(required = false)
public Boolean getRenderedAsDayBefore() {
- return renderedAsDayBefore;
+ return getRenderDay() != null ? getRenderDay() == RenderDayPolicy.AS_DAY_BEFORE : null;
}
public void setRenderedAsDayBefore(Boolean renderedAsDayBefore) {
- this.renderedAsDayBefore = renderedAsDayBefore;
+ if(getRenderDay() == null && renderedAsDayBefore != null) {
+ setRenderDay(renderedAsDayBefore ? RenderDayPolicy.AS_DAY_BEFORE : RenderDayPolicy.AS_DAY);
+ }
+ }
+
+
+ private RenderDayPolicy renderDay;
+
+ @XmlAttribute(required = false)
+ public RenderDayPolicy getRenderDay() {
+ return renderDay;
+ }
+
+ public void setRenderDay(final RenderDayPolicy renderDay) {
+ this.renderDay = renderDay;
}
@@ -210,18 +228,28 @@ public class PropertyLayoutData
}
- private Boolean unchanging;
-
@XmlAttribute(required = false)
public Boolean getUnchanging() {
- return unchanging;
+ return getRepainting() != null ? getRepainting() == Repainting.NO_REPAINT : null;
}
public void setUnchanging(Boolean unchanging) {
- this.unchanging = unchanging;
+ if(getRepainting() == null && unchanging != null) {
+ setRepainting(unchanging ? Repainting.NO_REPAINT : Repainting.REPAINT);
+ }
}
+ private Repainting repainting;
+
+ @XmlAttribute(required = false)
+ public Repainting getRepainting() {
+ return repainting;
+ }
+
+ public void setRepainting(final Repainting repainting) {
+ this.repainting = repainting;
+ }
private List<ActionLayoutData> actions = Lists.newArrayList();
diff --git a/core/applib/src/test/java/org/apache/isis/applib/layout/component/PropertyLayoutData_renderedAsDayBefore_Test.java b/core/applib/src/test/java/org/apache/isis/applib/layout/component/PropertyLayoutData_renderedAsDayBefore_Test.java
new file mode 100644
index 0000000..3c19cca
--- /dev/null
+++ b/core/applib/src/test/java/org/apache/isis/applib/layout/component/PropertyLayoutData_renderedAsDayBefore_Test.java
@@ -0,0 +1,75 @@
+package org.apache.isis.applib.layout.component;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.apache.isis.applib.annotation.RenderDayPolicy;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+public class PropertyLayoutData_renderedAsDayBefore_Test {
+
+ PropertyLayoutData data;
+ @Before
+ public void setUp() throws Exception {
+ data = new PropertyLayoutData();
+
+ assertThat(data.getRenderedAsDayBefore(), is(nullValue()));
+ assertThat(data.getRenderDay(), is(nullValue()));
+ }
+
+ @Test
+ public void derive_from_setRenderedAsDayBefore_TRUE_when_null() throws Exception {
+
+ // when
+ data.setRenderedAsDayBefore(true);
+
+ // then
+ assertThat(data.getRenderDay(), is(RenderDayPolicy.AS_DAY_BEFORE));
+ assertThat(data.getRenderedAsDayBefore(), is(true));
+
+ }
+
+ @Test
+ public void derive_from_setRenderedAsDayBefore_FALSE_when_null() throws Exception {
+
+ // when
+ data.setRenderedAsDayBefore(false);
+
+ // then
+ assertThat(data.getRenderDay(), is(RenderDayPolicy.AS_DAY));
+ assertThat(data.getRenderedAsDayBefore(), is(false));
+
+ }
+
+ @Test
+ public void ignore_from_setRenderedAsDayBefore_once_set_to_DAY_BEFORE() throws Exception {
+
+ // given
+ data.setRenderDay(RenderDayPolicy.AS_DAY_BEFORE);
+
+ // when
+ data.setRenderedAsDayBefore(false);
+
+ // then (ignored)
+ assertThat(data.getRenderDay(), is(RenderDayPolicy.AS_DAY_BEFORE));
+ assertThat(data.getRenderedAsDayBefore(), is(true));
+ }
+
+ @Test
+ public void ignore_from_setRenderedAsDayBefore_once_set_to_DAY() throws Exception {
+
+ // given
+ data.setRenderDay(RenderDayPolicy.AS_DAY);
+
+ // when
+ data.setRenderedAsDayBefore(true);
+
+ // then (ignored)
+ assertThat(data.getRenderDay(), is(RenderDayPolicy.AS_DAY));
+ assertThat(data.getRenderedAsDayBefore(), is(false));
+ }
+
+}
\ No newline at end of file
diff --git a/core/applib/src/test/java/org/apache/isis/applib/layout/component/PropertyLayoutData_repaint_Test.java b/core/applib/src/test/java/org/apache/isis/applib/layout/component/PropertyLayoutData_repaint_Test.java
new file mode 100644
index 0000000..c9883dd
--- /dev/null
+++ b/core/applib/src/test/java/org/apache/isis/applib/layout/component/PropertyLayoutData_repaint_Test.java
@@ -0,0 +1,75 @@
+package org.apache.isis.applib.layout.component;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import org.apache.isis.applib.annotation.Repainting;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+public class PropertyLayoutData_repaint_Test {
+
+ PropertyLayoutData data;
+ @Before
+ public void setUp() throws Exception {
+ data = new PropertyLayoutData();
+
+ assertThat(data.getUnchanging(), is(nullValue()));
+ assertThat(data.getRepainting(), is(nullValue()));
+ }
+
+ @Test
+ public void derive_from_setUnchanging_TRUE_when_null() throws Exception {
+
+ // when
+ data.setUnchanging(true);
+
+ // then
+ assertThat(data.getRepainting(), is(Repainting.NO_REPAINT));
+ assertThat(data.getUnchanging(), is(true));
+
+ }
+
+ @Test
+ public void derive_from_setUnchanging_FALSE_when_null() throws Exception {
+
+ // when
+ data.setUnchanging(false);
+
+ // then
+ assertThat(data.getRepainting(), is(Repainting.REPAINT));
+ assertThat(data.getUnchanging(), is(false));
+
+ }
+
+ @Test
+ public void ignore_from_setUnchanging_once_set_to_NO_REPAINT() throws Exception {
+
+ // given
+ data.setRepainting(Repainting.NO_REPAINT);
+
+ // when
+ data.setUnchanging(false);
+
+ // then (ignored)
+ assertThat(data.getRepainting(), is(Repainting.NO_REPAINT));
+ assertThat(data.getUnchanging(), is(true));
+ }
+
+ @Test
+ public void ignore_from_setUnchanging_once_set_to_REPAINT() throws Exception {
+
+ // given
+ data.setRepainting(Repainting.REPAINT);
+
+ // when
+ data.setUnchanging(true);
+
+ // then (ignored)
+ assertThat(data.getRepainting(), is(Repainting.REPAINT));
+ assertThat(data.getUnchanging(), is(false));
+ }
+
+}
\ No newline at end of file
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 6d41b6a..8d59844 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
@@ -102,24 +102,21 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
// Set up ActionDomainEventFacet, which will act as the hiding/disabling/validating advisor
//
final List<Action> actions = Annotations.getAnnotations(actionMethod, Action.class);
- final Class<? extends ActionDomainEvent<?>> actionDomainEventType;
- final ActionDomainEventFacetAbstract actionDomainEventFacet;
+ // search for @Action(domainEvent=...), else use the default event type
+ final ActionDomainEventFacetAbstract actionDomainEventFacet =
+ actions.stream()
+ .map(Action::domainEvent)
+ .filter(domainEvent -> domainEvent != ActionDomainEvent.Default.class)
+ .findFirst()
+ .map(domainEvent ->
+ (ActionDomainEventFacetAbstract) new ActionDomainEventFacetForActionAnnotation(
+ domainEvent, servicesInjector, getSpecificationLoader(), holder))
+ .orElse(
+ new ActionDomainEventFacetDefault(
+ ActionDomainEvent.Default.class, servicesInjector, getSpecificationLoader(), holder)
+ );
-
-
- // search for @Action(domainEvent=...)
- if(actions != null) {
- actionDomainEventType = actions.domainEvent();
- actionDomainEventFacet = new ActionDomainEventFacetForActionAnnotation(
- actionDomainEventType, servicesInjector, getSpecificationLoader(), holder);
- } else
- // else use default event type
- {
- actionDomainEventType = ActionDomainEvent.Default.class;
- actionDomainEventFacet = new ActionDomainEventFacetDefault(
- actionDomainEventType, servicesInjector, getSpecificationLoader(), holder);
- }
if(EventUtil.eventTypeIsPostable(
actionDomainEventFacet.getEventType(),
ActionDomainEvent.Noop.class,
@@ -132,16 +129,16 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
// emit the appropriate domain event and then delegate onto the underlying
final ActionInvocationFacetForDomainEventAbstract actionInvocationFacet;
- if (actions != null) {
+ if (actionDomainEventFacet instanceof ActionDomainEventFacetForActionAnnotation) {
actionInvocationFacet = new ActionInvocationFacetForDomainEventFromActionAnnotation(
- actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
+ actionDomainEventFacet.getEventType(), actionMethod, typeSpec, returnSpec, holder,
servicesInjector
);
} else
// default
{
actionInvocationFacet = new ActionInvocationFacetForDomainEventFromDefault(
- actionDomainEventType, actionMethod, typeSpec, returnSpec, holder,
+ actionDomainEventFacet.getEventType(), actionMethod, typeSpec, returnSpec, holder,
servicesInjector
);
}
@@ -264,14 +261,13 @@ public class ActionAnnotationFacetFactory extends FacetFactoryAbstract {
}
// check for @Action(typeOf=...)
- TypeOfFacet typeOfFacet = null;
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);
- }
- }
+ TypeOfFacet typeOfFacet = actions.stream()
+ .map(Action::typeOf)
+ .filter(typeOf -> typeOf != null && typeOf != Object.class)
+ .findFirst()
+ .map(typeOf -> new TypeOfFacetForActionAnnotation(typeOf, getSpecificationLoader(), holder))
+ .orElse(null);
// infer from return type
if(typeOfFacet == null) {
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 931199d..07c159d 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
@@ -29,18 +29,16 @@ import org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacetAbstract;
public class BulkFacetForActionAnnotation extends BulkFacetAbstract {
- public static BulkFacet create(final List<Action> action, final FacetHolder holder) {
-
- if(action == null) {
- return null;
- }
-
- final InvokeOn invokeOn = action.invokeOn();
- if(invokeOn == null) {
- return null;
- }
+ public static BulkFacet create(
+ final List<Action> actions,
+ final FacetHolder holder) {
- return new BulkFacetForActionAnnotation(invokeOn, holder);
+ return actions.stream()
+ .map(Action::invokeOn)
+ .filter(invokeOn -> invokeOn != null && invokeOn != InvokeOn.NOT_SPECIFIED)
+ .findFirst()
+ .map(invokeOn -> new BulkFacetForActionAnnotation(invokeOn, holder))
+ .orElse(null);
}
private BulkFacetForActionAnnotation(
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 fbe55f5..f83cd3a 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
@@ -31,18 +31,15 @@ import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
public class HiddenFacetForActionAnnotation extends HiddenFacetAbstract {
public static HiddenFacet create(
- final List<Action> action,
+ final List<Action> actions,
final FacetHolder holder) {
- if (action == null) {
- return null;
- }
-
- final Where where = action.hidden();
- if (where != null && where != Where.NOT_SPECIFIED) {
- return new HiddenFacetForActionAnnotation(where, holder);
- }
- return null;
+ return actions.stream()
+ .map(Action::hidden)
+ .filter(where -> where != null && where != Where.NOT_SPECIFIED)
+ .findFirst()
+ .map(where -> new HiddenFacetForActionAnnotation(where, holder))
+ .orElse(null);
}
private HiddenFacetForActionAnnotation(final Where where, final FacetHolder 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 6f7bd16..e4b5ba5 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
@@ -30,21 +30,16 @@ import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFa
public class ActionSemanticsFacetForActionAnnotation extends ActionSemanticsFacetAbstract {
public static ActionSemanticsFacet create(
- final List<Action> action,
+ final List<Action> actions,
final FacetHolder holder) {
- if(action == null) {
- return null;
- }
-
- final SemanticsOf semantics = action.semantics();
- if(action.semantics() == null) {
- // don't think this can happen, therefore will return a facet with the default, ie NON_IDEMPOTENT
- return null;
- }
-
- return new ActionSemanticsFacetForActionAnnotation(
- semantics, holder);
+ return actions.stream()
+ .map(Action::semantics)
+ .filter(semanticsOf -> semanticsOf != SemanticsOf.NOT_SPECIFIED)
+ .findFirst()
+ .map(semanticsOf ->
+ (ActionSemanticsFacet)new ActionSemanticsFacetForActionAnnotation(semanticsOf, holder))
+ .orElse(new ActionSemanticsFacetForActionAnnotation(SemanticsOf.NON_IDEMPOTENT, holder));
}
private ActionSemanticsFacetForActionAnnotation(SemanticsOf of, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
index 88cb77d..015f7a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -52,49 +54,49 @@ public class ActionLayoutFacetFactory extends FacetFactoryAbstract implements Co
final FacetHolder holder = processMethodContext.getFacetHolder();
- final ActionLayout actionLayout = Annotations.getAnnotations(processMethodContext.getMethod(), ActionLayout.class);
+ final List<ActionLayout> actionLayouts = Annotations.getAnnotations(processMethodContext.getMethod(), ActionLayout.class);
// bookmarkable
BookmarkPolicyFacet bookmarkableFacet = BookmarkPolicyFacetForActionLayoutAnnotation
- .create(actionLayout, holder);
+ .create(actionLayouts, holder);
FacetUtil.addFacet(bookmarkableFacet);
// cssClass
- CssClassFacet cssClassFacet = CssClassFacetForActionLayoutAnnotation.create(actionLayout, holder);
+ CssClassFacet cssClassFacet = CssClassFacetForActionLayoutAnnotation.create(actionLayouts, holder);
FacetUtil.addFacet(cssClassFacet);
// cssClassFa
- CssClassFaFacet cssClassFaFacet = CssClassFaFacetForActionLayoutAnnotation.create(actionLayout, holder);
+ CssClassFaFacet cssClassFaFacet = CssClassFaFacetForActionLayoutAnnotation.create(actionLayouts, holder);
FacetUtil.addFacet(cssClassFaFacet);
// describedAs
- DescribedAsFacet describedAsFacet = DescribedAsFacetForActionLayoutAnnotation.create(actionLayout, holder);
+ DescribedAsFacet describedAsFacet = DescribedAsFacetForActionLayoutAnnotation.create(actionLayouts, holder);
FacetUtil.addFacet(describedAsFacet);
// hidden
- HiddenFacet hiddenFacet = HiddenFacetForActionLayoutAnnotation.create(actionLayout, holder);
+ HiddenFacet hiddenFacet = HiddenFacetForActionLayoutAnnotation.create(actionLayouts, holder);
FacetUtil.addFacet(hiddenFacet);
// named
- NamedFacet namedFacet = NamedFacetForActionLayoutAnnotation.create(actionLayout, holder);
+ NamedFacet namedFacet = NamedFacetForActionLayoutAnnotation.create(actionLayouts, holder);
FacetUtil.addFacet(namedFacet);
// promptStyle
PromptStyleFacet promptStyleFacet = PromptStyleFacetForActionLayoutAnnotation
- .create(actionLayout, getConfiguration(), holder);
+ .create(actionLayouts, getConfiguration(), holder);
FacetUtil.addFacet(promptStyleFacet);
// position
ActionPositionFacet actionPositionFacet = ActionPositionFacetForActionLayoutAnnotation
- .create(actionLayout, holder);
+ .create(actionLayouts, holder);
if(actionPositionFacet == null) {
actionPositionFacet = new ActionPositionFacetFallback(holder);
}
@@ -104,7 +106,7 @@ public class ActionLayoutFacetFactory extends FacetFactoryAbstract implements Co
// contributing
if (isContributingServiceOrMixinObject(processMethodContext)) {
NotContributedFacet notContributedFacet = NotContributedFacetForActionLayoutAnnotation
- .create(actionLayout, holder);
+ .create(actionLayouts, holder);
FacetUtil.addFacet(notContributedFacet);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionLayoutAnnotation.java
index 21e97c7..f60d8d4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionPositionFacetForActionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet;
@@ -26,12 +28,15 @@ import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFace
public class ActionPositionFacetForActionLayoutAnnotation extends ActionPositionFacetAbstract {
- public static ActionPositionFacet create(ActionLayout actionLayout, FacetHolder holder) {
- if(actionLayout == null) {
- return null;
- }
- final ActionLayout.Position position = actionLayout.position();
- return position != null ? new ActionPositionFacetForActionLayoutAnnotation(position, holder) : null;
+ public static ActionPositionFacet create(
+ final List<ActionLayout> actionLayouts, final FacetHolder holder) {
+
+ return actionLayouts.stream()
+ .map(ActionLayout::position)
+ .filter(position -> position != ActionLayout.Position.NOT_SPECIFIED)
+ .findFirst()
+ .map(position -> new ActionPositionFacetForActionLayoutAnnotation(position, holder))
+ .orElse(null);
}
private ActionPositionFacetForActionLayoutAnnotation(final ActionLayout.Position position, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionLayoutAnnotation.java
index 1a9f573..56caf9f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/BookmarkPolicyFacetForActionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.BookmarkPolicy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +29,26 @@ import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolic
public class BookmarkPolicyFacetForActionLayoutAnnotation extends BookmarkPolicyFacetAbstract {
- public static BookmarkPolicyFacet create(final ActionLayout actionLayout, final FacetHolder holder) {
- if (actionLayout == null) {
- return null;
- }
- final BookmarkPolicy bookmarkPolicy = actionLayout.bookmarking();
- return bookmarkPolicy != null && bookmarkPolicy != BookmarkPolicy.NEVER ? new BookmarkPolicyFacetForActionLayoutAnnotation(bookmarkPolicy, holder) : null;
+ public static BookmarkPolicyFacet create(
+ final List<ActionLayout> actionLayouts,
+ final FacetHolder holder) {
+
+ return actionLayouts.stream()
+ .map(ActionLayout::bookmarking)
+ .filter(bookmarkPolicy -> bookmarkPolicy != BookmarkPolicy.NOT_SPECIFIED)
+ .findFirst()
+ .map(bookmarkPolicy -> {
+ switch (bookmarkPolicy){
+ case AS_ROOT:
+ case AS_CHILD:
+ return new BookmarkPolicyFacetForActionLayoutAnnotation(bookmarkPolicy, holder);
+ case NEVER:
+ return null;
+ }
+ throw new IllegalStateException("bookmarkPolicy '" + bookmarkPolicy + "' not recognised");
+ }
+ )
+ .orElse(null);
}
private BookmarkPolicyFacetForActionLayoutAnnotation(final BookmarkPolicy bookmarkPolicy, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java
index 3b04e02..cb9b3c5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFaFacetForActionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.ActionLayout;
@@ -29,13 +31,23 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPositi
public class CssClassFaFacetForActionLayoutAnnotation extends CssClassFaFacetAbstract {
- public static CssClassFaFacet create(final ActionLayout actionLayout, final FacetHolder holder) {
- if(actionLayout == null) {
- return null;
+ public static CssClassFaFacet create(final List<ActionLayout> actionLayouts, final FacetHolder holder) {
+
+ class Annot {
+ private Annot(final ActionLayout actionLayout) {
+ this.cssClassFa = Strings.emptyToNull(actionLayout.cssClassFa());
+ this.cssClassFaPosition = CssClassFaPosition.from(actionLayout.cssClassFaPosition());
+ }
+ String cssClassFa;
+ CssClassFaPosition cssClassFaPosition;
}
- final String cssClassFa = Strings.emptyToNull(actionLayout.cssClassFa());
- CssClassFaPosition cssClassFaPosition = CssClassFaPosition.from(actionLayout.cssClassFaPosition());
- return cssClassFa != null ? new CssClassFaFacetForActionLayoutAnnotation(cssClassFa, cssClassFaPosition, holder) : null;
+
+ return actionLayouts.stream()
+ .map(Annot::new)
+ .filter(a -> a.cssClassFa != null )
+ .findFirst()
+ .map(a -> new CssClassFaFacetForActionLayoutAnnotation(a.cssClassFa, a.cssClassFaPosition, holder))
+ .orElse(null);
}
private CssClassFaFacetForActionLayoutAnnotation(final String value, final CssClassFaPosition position, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionLayoutAnnotation.java
index c355d55..dbaf691 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/CssClassFacetForActionLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+import java.util.Objects;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +30,17 @@ import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstr
public class CssClassFacetForActionLayoutAnnotation extends CssClassFacetAbstract {
- public static CssClassFacet create(ActionLayout actionLayout, FacetHolder holder) {
- if(actionLayout == null) {
- return null;
- }
- final String cssClass = Strings.emptyToNull(actionLayout.cssClass());
- return cssClass != null ? new CssClassFacetForActionLayoutAnnotation(cssClass, holder) : null;
+ public static CssClassFacet create(
+ final List<ActionLayout> actionLayouts,
+ final FacetHolder holder) {
+
+ return actionLayouts.stream()
+ .map(ActionLayout::cssClass)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(cssClass -> new CssClassFacetForActionLayoutAnnotation(cssClass, holder))
+ .orElse(null);
}
private CssClassFacetForActionLayoutAnnotation(String value, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionLayoutAnnotation.java
index b28c1e6..2146920 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/DescribedAsFacetForActionLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+import java.util.Objects;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +30,15 @@ import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbs
public class DescribedAsFacetForActionLayoutAnnotation extends DescribedAsFacetAbstract {
- public static DescribedAsFacet create(ActionLayout actionLayout, FacetHolder holder) {
- if(actionLayout == null) {
- return null;
- }
- final String describedAs = Strings.emptyToNull(actionLayout.describedAs());
- return describedAs != null ? new DescribedAsFacetForActionLayoutAnnotation(describedAs, holder) : null;
+ public static DescribedAsFacet create(List<ActionLayout> actionLayouts, FacetHolder holder) {
+
+ return actionLayouts.stream()
+ .map(ActionLayout::describedAs)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(describedAs -> new DescribedAsFacetForActionLayoutAnnotation(describedAs, holder))
+ .orElse(null);
}
private DescribedAsFacetForActionLayoutAnnotation(String value, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
index 48f8a53..a5d28d7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/HiddenFacetForActionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -28,12 +30,16 @@ import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
public class HiddenFacetForActionLayoutAnnotation extends HiddenFacetAbstract {
- public static HiddenFacet create(final ActionLayout actionLayout, final FacetHolder holder) {
- if (actionLayout == null) {
- return null;
- }
- final Where where = actionLayout.hidden();
- return where != null && where != Where.NOT_SPECIFIED ? new HiddenFacetForActionLayoutAnnotation(where, holder) : null;
+ public static HiddenFacet create(
+ final List<ActionLayout> actionLayouts,
+ final FacetHolder holder) {
+
+ return actionLayouts.stream()
+ .map(ActionLayout::hidden)
+ .filter(where -> where != null && where != Where.NOT_SPECIFIED)
+ .findFirst()
+ .map(where -> new HiddenFacetForActionLayoutAnnotation(where, holder))
+ .orElse(null);
}
private HiddenFacetForActionLayoutAnnotation(final Where where, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
index 6a36efb..7f74cab 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NamedFacetForActionLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+import java.util.Objects;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +30,17 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
public class NamedFacetForActionLayoutAnnotation extends NamedFacetAbstract {
- public static NamedFacet create(final ActionLayout actionLayout, final FacetHolder holder) {
- if(actionLayout == null) {
- return null;
- }
- final String named = Strings.emptyToNull(actionLayout.named());
- return named != null ? new NamedFacetForActionLayoutAnnotation(named, holder) : null;
+ public static NamedFacet create(
+ final List<ActionLayout> actionLayouts,
+ final FacetHolder holder) {
+
+ return actionLayouts.stream()
+ .map(ActionLayout::named)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(named -> new NamedFacetForActionLayoutAnnotation(named, holder))
+ .orElse(null);
}
private NamedFacetForActionLayoutAnnotation(final String value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NotContributedFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NotContributedFacetForActionLayoutAnnotation.java
index 2309da4..17cf9f5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NotContributedFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/NotContributedFacetForActionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.Contributed;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -29,16 +31,18 @@ import org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContribut
public class NotContributedFacetForActionLayoutAnnotation extends NotContributedFacetAbstract {
public static NotContributedFacet create(
- final ActionLayout actionLayout, final FacetHolder holder) {
- if(actionLayout == null) {
- return null;
- }
- final Contributed contributed = actionLayout.contributed();
- final NotContributedAs as = NotContributedAs.notFrom(contributed);
- if(as == null) {
- return null;
- }
- return new NotContributedFacetForActionLayoutAnnotation(as, contributed, holder);
+ final List<ActionLayout> actionLayouts,
+ final FacetHolder holder) {
+
+ return actionLayouts.stream()
+ .map(ActionLayout::contributed)
+ .filter(contributed -> contributed != Contributed.NOT_SPECIFIED)
+ .findFirst()
+ .map(contributed -> {
+ NotContributedAs as = NotContributedAs.notFrom(contributed);
+ return new NotContributedFacetForActionLayoutAnnotation(as, contributed, holder);
+ })
+ .orElse(null);
}
private NotContributedFacetForActionLayoutAnnotation(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/PromptStyleFacetForActionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/PromptStyleFacetForActionLayoutAnnotation.java
index ca2b238..d0750f8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/PromptStyleFacetForActionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/PromptStyleFacetForActionLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.actions.layout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -27,7 +29,6 @@ import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleConfi
import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet;
import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAbstract;
import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured;
-import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline;
public class PromptStyleFacetForActionLayoutAnnotation extends PromptStyleFacetAbstract {
@@ -39,48 +40,46 @@ public class PromptStyleFacetForActionLayoutAnnotation extends PromptStyleFacetA
}
public static PromptStyleFacet create(
- final ActionLayout actionLayout,
+ final List<ActionLayout> actionLayouts,
final IsisConfiguration configuration,
final FacetHolder holder) {
- PromptStyle promptStyle = actionLayout != null? actionLayout.promptStyle() : null;
-
- if(promptStyle == null) {
- if (holder.containsDoOpNotDerivedFacet(PromptStyleFacet.class)) {
- // do not replace
- return null;
- }
+ return actionLayouts.stream()
+ .map(ActionLayout::promptStyle)
+ .filter(promptStyle -> promptStyle != PromptStyle.NOT_SPECIFIED)
+ .findFirst()
+ .map(promptStyle -> {
- return new PromptStyleFacetFallBackToInline(holder);
- } else {
+ switch (promptStyle) {
+ case DIALOG:
+ case INLINE:
+ case INLINE_AS_IF_EDIT:
+ return new PromptStyleFacetForActionLayoutAnnotation(promptStyle, holder);
- switch (promptStyle) {
- case DIALOG:
- case INLINE:
- case INLINE_AS_IF_EDIT:
- return new PromptStyleFacetForActionLayoutAnnotation(promptStyle, holder);
+ case AS_CONFIGURED:
- case AS_CONFIGURED:
-
- // do not replace
- if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
- return null;
- }
+ // do not replace
+ if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
+ return null;
+ }
- promptStyle = PromptStyleConfiguration.parse(configuration);
- return new PromptStyleFacetAsConfigured(promptStyle, holder);
+ promptStyle = PromptStyleConfiguration.parse(configuration);
+ return new PromptStyleFacetAsConfigured(promptStyle, holder);
- default:
- // do not replace
- if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
- return null;
}
+ throw new IllegalStateException("promptStyle '" + promptStyle + "' not recognised");
+ })
+ .orElseGet(() -> {
+ // do not replace
+ if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
+ return null;
+ }
- promptStyle = PromptStyleConfiguration.parse(configuration);
- return new PromptStyleFacetAsConfigured(promptStyle, holder);
- }
- }
+ PromptStyle promptStyle = PromptStyleConfiguration.parse(configuration);
+ return new PromptStyleFacetAsConfigured(promptStyle, holder);
+ }
+ );
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
index 7f8f730..a182b77 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactory.java
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
+import java.util.List;
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
@@ -85,28 +86,25 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
//
// Set up CollectionDomainEventFacet, which will act as the hiding/disabling/validating advisor
//
- final Collection collection = Annotations.getAnnotations(method, Collection.class);
- final Class<? extends CollectionDomainEvent<?, ?>> collectionDomainEventType;
-
- final CollectionDomainEventFacetAbstract collectionDomainEventFacet;
-
+ final List<Collection> collections = Annotations.getAnnotations(method, Collection.class);
// search for @Collection(domainEvent=...)
- if(collection != null) {
- collectionDomainEventType = collection.domainEvent();
- collectionDomainEventFacet = new CollectionDomainEventFacetForCollectionAnnotation(
- collectionDomainEventType, servicesInjector, getSpecificationLoader(), holder);
-
- } else
- // else use default event type
- {
- collectionDomainEventType = CollectionDomainEvent.Default.class;
- collectionDomainEventFacet = new CollectionDomainEventFacetDefault(
- collectionDomainEventType, servicesInjector, getSpecificationLoader(), holder);
- }
+ final CollectionDomainEventFacetAbstract collectionDomainEventFacet = collections.stream()
+ .map(Collection::domainEvent)
+ .filter(domainEvent -> domainEvent != CollectionDomainEvent.Default.class)
+ .findFirst()
+ .map(domainEvent ->
+ (CollectionDomainEventFacetAbstract)
+ new CollectionDomainEventFacetForCollectionAnnotation(
+ domainEvent, servicesInjector, getSpecificationLoader(), holder))
+ .orElse(
+ new CollectionDomainEventFacetDefault(
+ CollectionDomainEvent.Default.class, servicesInjector, getSpecificationLoader(), holder)
+ );
if(!CollectionDomainEvent.Noop.class.isAssignableFrom(collectionDomainEventFacet.getEventType())) {
FacetUtil.addFacet(collectionDomainEventFacet);
}
+
if(EventUtil.eventTypeIsPostable(
collectionDomainEventFacet.getEventType(),
CollectionDomainEvent.Noop.class,
@@ -128,14 +126,14 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
// one of these facets to be created.
final CollectionAddToFacetForDomainEventFromAbstract replacementFacet;
- if(collection != null) {
+ if(collectionDomainEventFacet instanceof CollectionDomainEventFacetForCollectionAnnotation) {
replacementFacet = new CollectionAddToFacetForDomainEventFromCollectionAnnotation(
- collectionDomainEventType, getterFacet, collectionAddToFacet, collectionDomainEventFacet, holder, servicesInjector);
+ collectionDomainEventFacet.getEventType(), getterFacet, collectionAddToFacet, collectionDomainEventFacet, holder, servicesInjector);
} else
// default
{
replacementFacet = new CollectionAddToFacetForDomainEventFromDefault(
- collectionDomainEventType, getterFacet, collectionAddToFacet, collectionDomainEventFacet, holder, servicesInjector);
+ collectionDomainEventFacet.getEventType(), getterFacet, collectionAddToFacet, collectionDomainEventFacet, holder, servicesInjector);
}
FacetUtil.addFacet(replacementFacet);
}
@@ -146,12 +144,12 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
final CollectionRemoveFromFacetForDomainEventFromAbstract replacementFacet;
- if(collection != null) {
- replacementFacet = new CollectionRemoveFromFacetForDomainEventFromCollectionAnnotation(collectionDomainEventType, getterFacet, collectionRemoveFromFacet, collectionDomainEventFacet, servicesInjector, holder);
+ if(collectionDomainEventFacet instanceof CollectionDomainEventFacetForCollectionAnnotation) {
+ replacementFacet = new CollectionRemoveFromFacetForDomainEventFromCollectionAnnotation(collectionDomainEventFacet.getEventType(), getterFacet, collectionRemoveFromFacet, collectionDomainEventFacet, servicesInjector, holder);
} else
// default
{
- replacementFacet = new CollectionRemoveFromFacetForDomainEventFromDefault(collectionDomainEventType, getterFacet, collectionRemoveFromFacet, collectionDomainEventFacet, servicesInjector, holder);
+ replacementFacet = new CollectionRemoveFromFacetForDomainEventFromDefault(collectionDomainEventFacet.getEventType(), getterFacet, collectionRemoveFromFacet, collectionDomainEventFacet, servicesInjector, holder);
}
FacetUtil.addFacet(replacementFacet);
}
@@ -163,8 +161,8 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
final FacetHolder holder = processMethodContext.getFacetHolder();
// check for @Collection(hidden=...)
- final Collection collection = Annotations.getAnnotations(method, Collection.class);
- HiddenFacet facet = HiddenFacetForCollectionAnnotation.create(collection, holder);
+ final List<Collection> collections = Annotations.getAnnotations(method, Collection.class);
+ HiddenFacet facet = HiddenFacetForCollectionAnnotation.create(collections, holder);
FacetUtil.addFacet(facet);
}
@@ -174,8 +172,8 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
final FacetHolder holder = processMethodContext.getFacetHolder();
// check for @Collection(editing=...)
- final Collection collection = Annotations.getAnnotations(method, Collection.class);
- DisabledFacet facet = DisabledFacetForCollectionAnnotation.create(collection, holder);
+ final List<Collection> collections = Annotations.getAnnotations(method, Collection.class);
+ DisabledFacet facet = DisabledFacetForCollectionAnnotation.create(collections, holder);
FacetUtil.addFacet(facet);
}
@@ -185,8 +183,8 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
final FacetHolder holder = processMethodContext.getFacetHolder();
// search for @Collection(notPersisted=...)
- final Collection collection = Annotations.getAnnotations(method, Collection.class);
- NotPersistedFacet facet = NotPersistedFacetForCollectionAnnotation.create(collection, holder);
+ final List<Collection> collections = Annotations.getAnnotations(method, Collection.class);
+ NotPersistedFacet facet = NotPersistedFacetForCollectionAnnotation.create(collections, holder);
FacetUtil.addFacet(facet);
}
@@ -203,9 +201,9 @@ public class CollectionAnnotationFacetFactory extends FacetFactoryAbstract {
}
// check for @Collection(typeOf=...)
- final Collection collection = Annotations.getAnnotations(method, Collection.class);
+ final List<Collection> collections = Annotations.getAnnotations(method, Collection.class);
TypeOfFacet facet = TypeOfFacetOnCollectionFromCollectionAnnotation
- .create(collection, facetHolder, getSpecificationLoader());
+ .create(collections, facetHolder, getSpecificationLoader());
// else infer from return type
if(facet == null) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java
index c2ea273..a229f86 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/disabled/DisabledFacetForCollectionAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.collections.collection.disabled;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.applib.annotation.Where;
@@ -29,31 +31,34 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstr
public class DisabledFacetForCollectionAnnotation extends DisabledFacetAbstractImpl {
public static DisabledFacet create(
- final Collection collection,
+ final List<Collection> collections,
final FacetHolder holder) {
- if (collection == null) {
- return null;
- }
+ return collections.stream()
+ .filter(collection -> collection.editing() != Editing.NOT_SPECIFIED)
+ .findFirst()
+ .map(collection -> {
+ final Editing editing = collection.editing();
+ final String disabledReason = collection.editingDisabledReason();
- final Editing editing = collection.editing();
- final String disabledReason = collection.editingDisabledReason();
+ switch (editing) {
+ case AS_CONFIGURED:
- switch (editing) {
- case AS_CONFIGURED:
+ // nothing needs to be done here; the DomainObjectFactory (processing @DomainObject annotation)
+ // will install an ImmutableFacetForDomainObjectAnnotation on the domain object and then a
+ // DisabledFacetOnCollectionDerivedFromImmutable facet will be installed.
- // nothing needs to be done here; the DomainObjectFactory (processing @DomainObject annotation)
- // will install an ImmutableFacetForDomainObjectAnnotation on the domain object and then a
- // DisabledFacetOnCollectionDerivedFromImmutable facet will be installed.
+ return null;
- return null;
+ case DISABLED:
+ return (DisabledFacet)new DisabledFacetForCollectionAnnotation(disabledReason, holder);
- case DISABLED:
- return new DisabledFacetForCollectionAnnotation(disabledReason, holder);
- case ENABLED:
- return null;
- }
- return null;
+ case ENABLED:
+ return null;
+ }
+ throw new IllegalStateException("editing '" + editing + "' not recognised");
+ })
+ .orElse(null);
}
private DisabledFacetForCollectionAnnotation(final String reason, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
index 7fc16f0..0f57725 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/hidden/HiddenFacetForCollectionAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.collections.collection.hidden;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -29,19 +31,15 @@ import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
public class HiddenFacetForCollectionAnnotation extends HiddenFacetAbstract {
public static HiddenFacet create(
- final Collection collection,
+ final List<Collection> collections,
final FacetHolder holder) {
- if (collection == null) {
- return null;
- }
-
- final Where where = collection.hidden();
- if (where != null && where != Where.NOT_SPECIFIED) {
- return new HiddenFacetForCollectionAnnotation(where, holder);
- }
-
- return null;
+ return collections.stream()
+ .map(Collection::hidden)
+ .filter(where -> where != null && where != Where.NOT_SPECIFIED)
+ .findFirst()
+ .map(where -> new HiddenFacetForCollectionAnnotation(where, holder))
+ .orElse(null);
}
private HiddenFacetForCollectionAnnotation(final Where where, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/notpersisted/NotPersistedFacetForCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/notpersisted/NotPersistedFacetForCollectionAnnotation.java
index ce4e888..b016553 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/notpersisted/NotPersistedFacetForCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/notpersisted/NotPersistedFacetForCollectionAnnotation.java
@@ -19,8 +19,10 @@
package org.apache.isis.core.metamodel.facets.collections.collection.notpersisted;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Collection;
-import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.annotation.MementoSerialization;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacetAbstract;
@@ -32,18 +34,22 @@ public class NotPersistedFacetForCollectionAnnotation extends NotPersistedFacetA
}
public static NotPersistedFacet create(
- final Collection collection,
+ final List<Collection> collections,
final FacetHolder holder) {
- if (collection == null) {
- return null;
- }
-
- final boolean notPersisted = collection.notPersisted();
- final boolean persisted = !notPersisted;
- if(persisted) {
- return null;
- }
- return new NotPersistedFacetForCollectionAnnotation(holder);
+ return collections.stream()
+ .map(Collection::mementoSerialization)
+ .filter(mementoSerialization -> mementoSerialization != MementoSerialization.NOT_SPECIFIED)
+ .findFirst()
+ .map(mementoSerialization -> {
+ switch (mementoSerialization) {
+ case INCLUDED:
+ return null;
+ case EXCLUDED:
+ return new NotPersistedFacetForCollectionAnnotation(holder);
+ }
+ throw new IllegalStateException("mementoSerialization '" + mementoSerialization + "' not recognized");
+ })
+ .orElse(null);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java
index 853422c..ebc16e9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/collection/typeof/TypeOfFacetOnCollectionFromCollectionAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.collections.collection.typeof;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Collection;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
@@ -27,15 +29,19 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
public class TypeOfFacetOnCollectionFromCollectionAnnotation extends TypeOfFacetAbstract {
- public static TypeOfFacetOnCollectionFromCollectionAnnotation create(final Collection annotation, final FacetedMethod facetHolder, final SpecificationLoader specificationLoader) {
- if(annotation == null) {
- return null;
- }
- final Class<?> typeOfClass = annotation.typeOf();
- if(typeOfClass == Object.class) {
- return null;
- }
- return new TypeOfFacetOnCollectionFromCollectionAnnotation(typeOfClass, facetHolder, specificationLoader);
+ public static TypeOfFacetOnCollectionFromCollectionAnnotation create(
+ final List<Collection> collections,
+ final FacetedMethod facetHolder,
+ final SpecificationLoader specificationLoader) {
+
+
+ return collections.stream()
+ .map(Collection::typeOf)
+ .filter(typeOf -> typeOf != Object.class)
+ .findFirst()
+ .map(typeOf ->
+ new TypeOfFacetOnCollectionFromCollectionAnnotation(typeOf, facetHolder, specificationLoader))
+ .orElse(null);
}
private TypeOfFacetOnCollectionFromCollectionAnnotation(final Class<?> type, final FacetHolder holder, final SpecificationLoader specificationLookup) {
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 2a5aee4..de17ed5 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
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.collections.layout;
import java.util.List;
+import java.util.Objects;
import com.google.common.base.Strings;
@@ -34,12 +35,16 @@ public class DefaultViewFacetForCollectionLayoutAnnotation extends DefaultViewFa
super(value, holder);
}
- public static DefaultViewFacet create(List<CollectionLayout> collectionLayout, FacetHolder holder) {
- if (collectionLayout == null) {
- return null;
- }
-
- final String defaultView = Strings.emptyToNull(collectionLayout.defaultView());
- return defaultView != null ? new DefaultViewFacetForCollectionLayoutAnnotation(defaultView, holder) : null;
+ public static DefaultViewFacet create(
+ final List<CollectionLayout> collectionLayouts,
+ final FacetHolder holder) {
+
+ return collectionLayouts.stream()
+ .map(CollectionLayout::defaultView)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(defaultView -> new DefaultViewFacetForCollectionLayoutAnnotation(defaultView, holder))
+ .orElse(null);
}
}
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 b9b114d..cdeabbb 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
@@ -28,12 +28,16 @@ import org.apache.isis.core.metamodel.facets.object.paged.PagedFacetAbstract;
public class PagedFacetForCollectionLayoutAnnotation extends PagedFacetAbstract {
- public static PagedFacet create(List<CollectionLayout> collectionLayout, FacetHolder holder) {
- if(collectionLayout == null) {
- return null;
- }
- final int paged = collectionLayout.paged();
- return paged != -1 ? new PagedFacetForCollectionLayoutAnnotation(paged, holder) : null;
+ public static PagedFacet create(
+ final List<CollectionLayout> collectionLayouts,
+ final FacetHolder holder) {
+
+ return collectionLayouts.stream()
+ .map(CollectionLayout::paged)
+ .filter(paged -> paged != -1)
+ .findFirst()
+ .map(paged -> new PagedFacetForCollectionLayoutAnnotation(paged, holder))
+ .orElse(null);
}
private PagedFacetForCollectionLayoutAnnotation(int paged, FacetHolder holder) {
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 63c2f6d..47e457b 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
@@ -29,16 +29,20 @@ import org.apache.isis.core.metamodel.facets.collections.sortedby.SortedByFacetA
public class SortedByFacetForCollectionLayoutAnnotation extends SortedByFacetAbstract {
- public static SortedByFacet create(List<CollectionLayout> collectionLayout, FacetHolder holder) {
- if(collectionLayout == null) {
- return null;
- }
- final Class sortedBy = collectionLayout.sortedBy();
- if(sortedBy == Comparator.class) {
- return null;
- }
-
- return sortedBy != null ? new SortedByFacetForCollectionLayoutAnnotation(sortedBy, holder) : null;
+ public static SortedByFacet create(
+ final List<CollectionLayout> collectionLayouts,
+ final FacetHolder holder) {
+
+ return collectionLayouts.stream()
+ .map(CollectionLayout::sortedBy)
+ .filter(sortedBy -> sortedBy != Comparator.class)
+ .filter(Comparator.class::isAssignableFrom)
+ .findFirst()
+ .map(sortedBy -> {
+ Class<? extends Comparator<?>> sortedByForceGenerics = sortedBy;
+ return new SortedByFacetForCollectionLayoutAnnotation(sortedByForceGenerics, holder);
+ })
+ .orElse(null);
}
private SortedByFacetForCollectionLayoutAnnotation(Class<? extends Comparator<?>> sortedBy, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/JaxbXmlJavaTypeAdapterFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/JaxbXmlJavaTypeAdapterFacetFactory.java
index 1095016..64112aa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/JaxbXmlJavaTypeAdapterFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/jaxb/JaxbXmlJavaTypeAdapterFacetFactory.java
@@ -82,7 +82,7 @@ public class JaxbXmlJavaTypeAdapterFacetFactory extends FacetFactoryAbstract
public void process(final ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final XmlJavaTypeAdapter annotation = Annotations.getAnnotations(cls, XmlJavaTypeAdapter.class);
+ final XmlJavaTypeAdapter annotation = Annotations.getAnnotation(cls, XmlJavaTypeAdapter.class);
if(annotation == null) {
return;
}
@@ -99,7 +99,7 @@ public class JaxbXmlJavaTypeAdapterFacetFactory extends FacetFactoryAbstract
final Method method = processMethodContext.getMethod();
- final XmlJavaTypeAdapter annotation = Annotations.getAnnotations(method, XmlJavaTypeAdapter.class);
+ final XmlJavaTypeAdapter annotation = Annotations.getAnnotation(method, XmlJavaTypeAdapter.class);
if(annotation == null) {
return;
}
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 429106e..c5b2810 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
@@ -179,7 +179,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
}
class Annot {
- private Annot(final DomainObject domainObject) {
+ Annot(final DomainObject domainObject) {
this.autoCompleteRepository = domainObject.autoCompleteRepository();
this.autoCompleteAction = domainObject.autoCompleteAction();
}
@@ -189,7 +189,7 @@ public class DomainObjectAnnotationFacetFactory extends FacetFactoryAbstract
}
return domainObjects.stream()
- .map(Annot::new)
+ .map(domainObject -> new Annot(domainObject))
.filter(a -> a.autoCompleteRepository != Object.class)
.filter(a -> isServiceType(cls, "@DomainObject", a.autoCompleteRepository))
.peek(a -> a.repositoryMethod = findRepositoryMethod(cls, "@DomainObject", a.autoCompleteRepository, a.autoCompleteAction))
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFaFacetForViewModelLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFaFacetForViewModelLayoutAnnotation.java
index 8389c88..f324be0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFaFacetForViewModelLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/CssClassFaFacetForViewModelLayoutAnnotation.java
@@ -28,13 +28,23 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPositi
public class CssClassFaFacetForViewModelLayoutAnnotation extends CssClassFaFacetAbstract {
- public static CssClassFaFacet create(final List<ViewModelLayout> viewModelLayout, final FacetHolder holder) {
- if (viewModelLayout == null) {
- return null;
+ public static CssClassFaFacet create(final List<ViewModelLayout> viewModelLayouts, final FacetHolder holder) {
+
+ class Annot {
+ private Annot(final ViewModelLayout viewModelLayout) {
+ this.cssClassFa = Strings.emptyToNull(viewModelLayout.cssClassFa());
+ this.cssClassFaPosition = CssClassFaPosition.from(viewModelLayout.cssClassFaPosition());
+ }
+ String cssClassFa;
+ CssClassFaPosition cssClassFaPosition;
}
- final String cssClassFa = Strings.emptyToNull(viewModelLayout.cssClassFa());
- final CssClassFaPosition position = CssClassFaPosition.from(viewModelLayout.cssClassFaPosition());
- return cssClassFa != null ? new CssClassFaFacetForViewModelLayoutAnnotation(cssClassFa, position, holder) : null;
+
+ return viewModelLayouts.stream()
+ .map(Annot::new)
+ .filter(a -> a.cssClassFa != null )
+ .findFirst()
+ .map(a -> new CssClassFaFacetForViewModelLayoutAnnotation(a.cssClassFa, a.cssClassFaPosition, holder))
+ .orElse(null);
}
public CssClassFaFacetForViewModelLayoutAnnotation(final String value, 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 0f29bb0..1dd69a2 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
@@ -29,9 +29,6 @@ import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstr
public class CssClassFacetForDomainObjectLayoutAnnotation extends CssClassFacetAbstract {
public static CssClassFacet create(final List<DomainObjectLayout> domainObjectLayouts, final FacetHolder holder) {
- if (domainObjectLayouts.isEmpty()) {
- return null;
- }
return domainObjectLayouts.stream()
.map(DomainObjectLayout::cssClass)
.map(Strings::emptyToNull)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
index 0193844..0167e34 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
@@ -42,27 +42,28 @@ public class IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent extends Ic
private static final Logger LOG = LoggerFactory.getLogger(IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.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 IconUiEvent<?>> iconUiEventClass = domainObjectLayout.iconUiEvent();
-
- if(!EventUtil.eventTypeIsPostable(
- iconUiEventClass,
- IconUiEvent.Noop.class,
- IconUiEvent.Default.class,
- "isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault",
- configuration)) {
- return null;
- }
-
- final EventBusService eventBusService = servicesInjector.lookupService(EventBusService.class);
-
- return new IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent(
- iconUiEventClass, eventBusService, facetHolder);
+ final IsisConfiguration configuration,
+ final FacetHolder facetHolder) {
+
+ return domainObjectLayouts.stream()
+ .map(DomainObjectLayout::iconUiEvent)
+ .filter(iconUiEvent -> EventUtil.eventTypeIsPostable(
+ iconUiEvent,
+ IconUiEvent.Noop.class,
+ IconUiEvent.Default.class,
+ "isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault",
+ configuration))
+ .findFirst()
+ .map(iconUiEvent -> {
+
+ final EventBusService eventBusService = servicesInjector.lookupService(EventBusService.class);
+
+ return new IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent(
+ iconUiEvent, eventBusService, facetHolder);
+ })
+ .orElse(null);
}
private final Class<? extends IconUiEvent<?>> iconUiEventClass;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/NamedFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/NamedFacetForDomainObjectLayoutAnnotation.java
index c4350b6..00b0693 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/NamedFacetForDomainObjectLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/NamedFacetForDomainObjectLayoutAnnotation.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.DomainObjectLayout;
@@ -30,12 +31,17 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
public class NamedFacetForDomainObjectLayoutAnnotation extends NamedFacetAbstract {
- public static NamedFacet create(final List<DomainObjectLayout> domainObjectLayout, final FacetHolder holder) {
- if(domainObjectLayout == null) {
- return null;
- }
- final String named = Strings.emptyToNull(domainObjectLayout.named());
- return named != null ? new NamedFacetForDomainObjectLayoutAnnotation(named, holder) : null;
+ public static NamedFacet create(
+ final List<DomainObjectLayout> domainObjectLayouts,
+ final FacetHolder holder) {
+
+ return domainObjectLayouts.stream()
+ .map(DomainObjectLayout::named)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(named -> new NamedFacetForDomainObjectLayoutAnnotation(named, holder))
+ .orElse(null);
}
private NamedFacetForDomainObjectLayoutAnnotation(final String value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/NamedFacetForViewModelLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/NamedFacetForViewModelLayoutAnnotation.java
index 89e9210..04e2b9a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/NamedFacetForViewModelLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/NamedFacetForViewModelLayoutAnnotation.java
@@ -18,24 +18,31 @@
*/
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.DomainServiceLayout;
import org.apache.isis.applib.annotation.ViewModelLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
-
+import org.apache.isis.core.metamodel.facets.object.domainservicelayout.NamedFacetForDomainServiceLayoutAnnotation;
public class NamedFacetForViewModelLayoutAnnotation extends NamedFacetAbstract {
- public static NamedFacet create(final List<ViewModelLayout> viewModelLayout, final FacetHolder holder) {
- if(viewModelLayout == null) {
- return null;
- }
- final String named = Strings.emptyToNull(viewModelLayout.named());
- return named != null ? new NamedFacetForViewModelLayoutAnnotation(named, holder) : null;
+ public static NamedFacet create(
+ final List<ViewModelLayout> viewModelLayouts,
+ final FacetHolder holder) {
+
+ return viewModelLayouts.stream()
+ .map(ViewModelLayout::named)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(named -> new NamedFacetForViewModelLayoutAnnotation(named, holder))
+ .orElse(null);
}
private NamedFacetForViewModelLayoutAnnotation(final String value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PluralFacetForViewModelLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PluralFacetForViewModelLayoutAnnotation.java
index e73efe2..15d3623 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PluralFacetForViewModelLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PluralFacetForViewModelLayoutAnnotation.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,14 @@ import org.apache.isis.core.metamodel.facets.object.plural.PluralFacetAbstract;
public class PluralFacetForViewModelLayoutAnnotation extends PluralFacetAbstract {
- public static PluralFacet create(final List<ViewModelLayout> viewModelLayout, final FacetHolder holder) {
- if(viewModelLayout == null) {
- return null;
- }
- final String plural = Strings.emptyToNull(viewModelLayout.plural());
- return plural != null ? new PluralFacetForViewModelLayoutAnnotation(plural, holder) : null;
+ public static PluralFacet create(final List<ViewModelLayout> viewModelLayouts, final FacetHolder holder) {
+ return viewModelLayouts.stream()
+ .map(ViewModelLayout::plural)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(plural -> new PluralFacetForViewModelLayoutAnnotation(plural, holder))
+ .orElse(null);
}
private PluralFacetForViewModelLayoutAnnotation(final String value, final FacetHolder holder) {
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 cd191e5..40f792f 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
@@ -51,8 +51,8 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
return domainObjectLayouts.stream()
.map(DomainObjectLayout::titleUiEvent)
- .filter(titleUiEventClass -> EventUtil.eventTypeIsPostable(
- titleUiEventClass,
+ .filter(titleUiEvent -> EventUtil.eventTypeIsPostable(
+ titleUiEvent,
TitleUiEvent.Noop.class,
TitleUiEvent.Default.class,
"isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault",
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
index 684745c..cdbbce1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservice/annotation/DomainServiceFacetAnnotationFactory.java
@@ -60,7 +60,7 @@ public class DomainServiceFacetAnnotationFactory extends FacetFactoryAbstract im
@Override
public void process(ProcessClassContext processClassContext) {
final Class<?> cls = processClassContext.getCls();
- final DomainService annotation = Annotations.getAnnotations(cls, DomainService.class);
+ final DomainService annotation = Annotations.getAnnotation(cls, DomainService.class);
if (annotation == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/DomainServiceLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/DomainServiceLayoutFacetFactory.java
index 7187780..6ddfc35 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/DomainServiceLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/DomainServiceLayoutFacetFactory.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.object.domainservicelayout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.DomainServiceLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -41,10 +43,10 @@ public class DomainServiceLayoutFacetFactory extends FacetFactoryAbstract {
final FacetHolder facetHolder = processClassContext.getFacetHolder();
- final DomainService domainService = Annotations.getAnnotations(cls, DomainService.class);
- final DomainServiceLayout domainServiceLayout = Annotations.getAnnotations(cls, DomainServiceLayout.class);
+ final DomainService domainService = Annotations.getAnnotation(cls, DomainService.class);
+ final List<DomainServiceLayout> domainServiceLayouts = Annotations.getAnnotations(cls, DomainServiceLayout.class);
- if (domainService == null && domainServiceLayout == null) {
+ if (domainService == null && domainServiceLayouts == null) {
return;
}
@@ -52,23 +54,27 @@ public class DomainServiceLayoutFacetFactory extends FacetFactoryAbstract {
domainService != null && !domainService.menuOrder().equals("" + (Integer.MAX_VALUE - 100))
? domainService.menuOrder()
: null;
- final String domainServiceLayoutMenuOrder =
- domainServiceLayout != null && !domainServiceLayout.menuOrder().equals("" + (Integer.MAX_VALUE - 100))
- ? domainServiceLayout.menuOrder()
- : null;
+ final String domainServiceLayoutMenuOrder =domainServiceLayouts.stream()
+ .map(DomainServiceLayout::menuOrder)
+ .filter(menuOrder -> !menuOrder.equals("" + (Integer.MAX_VALUE - 100)))
+ .findFirst()
+ .orElse(null);
+
final String menuOrder = coalesce(domainServiceLayoutMenuOrder, domainServiceMenuOrder);
DomainServiceLayout.MenuBar menuBar =
- domainServiceLayout != null
- ? domainServiceLayout.menuBar()
- : DomainServiceLayout.MenuBar.PRIMARY;
+ domainServiceLayouts.stream()
+ .map(DomainServiceLayout::menuBar)
+ .filter(mb -> mb != DomainServiceLayout.MenuBar.NOT_SPECIFIED)
+ .findFirst()
+ .orElse(DomainServiceLayout.MenuBar.PRIMARY);
FacetUtil.addFacet(
new DomainServiceLayoutFacetAnnotation(
facetHolder,
menuBar, menuOrder));
- FacetUtil.addFacet(NamedFacetForDomainServiceLayoutAnnotation.create(domainServiceLayout, facetHolder));
+ FacetUtil.addFacet(NamedFacetForDomainServiceLayoutAnnotation.create(domainServiceLayouts, facetHolder));
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
index b769a95..7a82d5c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainservicelayout/NamedFacetForDomainServiceLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.object.domainservicelayout;
+import java.util.List;
+import java.util.Objects;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.DomainServiceLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -28,12 +31,17 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
public class NamedFacetForDomainServiceLayoutAnnotation extends NamedFacetAbstract {
- public static NamedFacet create(final DomainServiceLayout domainServiceLayout, final FacetHolder holder) {
- if(domainServiceLayout == null) {
- return null;
- }
- final String named = Strings.emptyToNull(domainServiceLayout.named());
- return named != null ? new NamedFacetForDomainServiceLayoutAnnotation(named, holder) : null;
+ public static NamedFacet create(
+ final List<DomainServiceLayout> domainServiceLayouts,
+ final FacetHolder holder) {
+
+ return domainServiceLayouts.stream()
+ .map(DomainServiceLayout::named)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(named -> new NamedFacetForDomainServiceLayoutAnnotation(named, holder))
+ .orElse(null);
}
private NamedFacetForDomainServiceLayoutAnnotation(String value, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
index c4c8877..ed73cd8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
@@ -84,7 +84,7 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
private ValueFacet create(final Class<?> cls, final FacetHolder holder) {
// create from annotation, if present
- final Value annotation = Annotations.getAnnotations(cls, Value.class);
+ final Value annotation = Annotations.getAnnotation(cls, Value.class);
if (annotation != null) {
final ValueFacetAnnotation facet = new ValueFacetAnnotation(cls, holder, servicesInjector);
if (facet.isValid()) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
index 773caa0..c2f013e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/mustsatisfyspec/MustSatisfySpecificationFacetAbstract.java
@@ -97,9 +97,7 @@ public abstract class MustSatisfySpecificationFacetAbstract extends FacetAbstrac
}
try {
return (Specification) value.newInstance();
- } catch (final InstantiationException e) {
- return null;
- } catch (final IllegalAccessException e) {
+ } catch (final InstantiationException | IllegalAccessException e) {
return null;
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
index 3b1cc62..a405e95 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactory.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.properties.property;
import java.lang.reflect.Method;
+import java.util.List;
import javax.annotation.Nullable;
import javax.validation.constraints.Pattern;
@@ -62,8 +63,8 @@ import org.apache.isis.core.metamodel.facets.properties.property.modify.Property
import org.apache.isis.core.metamodel.facets.properties.property.mustsatisfy.MustSatisfySpecificationFacetForPropertyAnnotation;
import org.apache.isis.core.metamodel.facets.properties.property.notpersisted.NotPersistedFacetForPropertyAnnotation;
import org.apache.isis.core.metamodel.facets.properties.property.publishing.PublishedPropertyFacetForPropertyAnnotation;
-import org.apache.isis.core.metamodel.facets.properties.property.regex.RegExFacetForPropertyAnnotation;
import org.apache.isis.core.metamodel.facets.properties.property.regex.RegExFacetForPatternAnnotationOnProperty;
+import org.apache.isis.core.metamodel.facets.properties.property.regex.RegExFacetForPropertyAnnotation;
import org.apache.isis.core.metamodel.facets.properties.publish.PublishedPropertyFacet;
import org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet;
import org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacet;
@@ -109,25 +110,18 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
//
// Set up PropertyDomainEventFacet, which will act as the hiding/disabling/validating advisor
//
- final Property property = Annotations.getAnnotations(method, Property.class);
- final Class<? extends PropertyDomainEvent<?, ?>> propertyDomainEventType;
-
- final PropertyDomainEventFacetAbstract propertyDomainEventFacet;
-
-
- // search for @Property(domainEvent=...)
- if(property != null) {
- propertyDomainEventType = property.domainEvent();
- propertyDomainEventFacet = new PropertyDomainEventFacetForPropertyAnnotation(
- propertyDomainEventType, getterFacet, servicesInjector, getSpecificationLoader(), holder);
-
- } else
- // else use default event type
- {
- propertyDomainEventType = PropertyDomainEvent.Default.class;
- propertyDomainEventFacet = new PropertyDomainEventFacetDefault(
- propertyDomainEventType, getterFacet, servicesInjector, getSpecificationLoader(), holder);
- }
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
+
+ // search for @Property(domainEvent=...), else use default event type
+ final PropertyDomainEventFacetAbstract propertyDomainEventFacet = properties.stream()
+ .map(Property::domainEvent)
+ .filter(domainEvent -> domainEvent != PropertyDomainEvent.Default.class)
+ .findFirst()
+ .map(domainEvent -> (PropertyDomainEventFacetAbstract) new PropertyDomainEventFacetForPropertyAnnotation(
+ domainEvent, getterFacet, servicesInjector, getSpecificationLoader(), holder))
+ .orElse(new PropertyDomainEventFacetDefault(
+ PropertyDomainEvent.Default.class, getterFacet, servicesInjector, getSpecificationLoader(),
+ holder));
if(EventUtil.eventTypeIsPostable(
propertyDomainEventFacet.getEventType(),
@@ -149,14 +143,14 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
// the current setter facet will end up as the underlying facet
final PropertySetterFacet replacementFacet;
- if(property != null) {
+ if(propertyDomainEventFacet instanceof PropertyDomainEventFacetForPropertyAnnotation) {
replacementFacet = new PropertySetterFacetForDomainEventFromPropertyAnnotation(
- propertyDomainEventType, getterFacet, setterFacet, propertyDomainEventFacet, holder, servicesInjector);
+ propertyDomainEventFacet.getEventType(), getterFacet, setterFacet, propertyDomainEventFacet, holder, servicesInjector);
} else
// default
{
replacementFacet = new PropertySetterFacetForDomainEventFromDefault(
- propertyDomainEventType, getterFacet, setterFacet, propertyDomainEventFacet, holder, servicesInjector);
+ propertyDomainEventFacet.getEventType(), getterFacet, setterFacet, propertyDomainEventFacet, holder, servicesInjector);
}
FacetUtil.addFacet(replacementFacet);
}
@@ -166,14 +160,14 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
// the current clear facet will end up as the underlying facet
final PropertyClearFacet replacementFacet;
- if(property != null) {
+ if(propertyDomainEventFacet instanceof PropertyDomainEventFacetForPropertyAnnotation) {
replacementFacet = new PropertyClearFacetForDomainEventFromPropertyAnnotation(
- propertyDomainEventType, getterFacet, clearFacet, propertyDomainEventFacet, holder, servicesInjector);
+ propertyDomainEventFacet.getEventType(), getterFacet, clearFacet, propertyDomainEventFacet, holder, servicesInjector);
} else
// default
{
replacementFacet = new PropertyClearFacetForDomainEventFromDefault(
- propertyDomainEventType, getterFacet, clearFacet, propertyDomainEventFacet, holder, servicesInjector);
+ propertyDomainEventFacet.getEventType(), getterFacet, clearFacet, propertyDomainEventFacet, holder, servicesInjector);
}
FacetUtil.addFacet(replacementFacet);
}
@@ -185,8 +179,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final FacetHolder holder = processMethodContext.getFacetHolder();
// search for @Property(hidden=...)
- final Property property = Annotations.getAnnotations(method, Property.class);
- HiddenFacet facet = HiddenFacetForPropertyAnnotation.create(property, holder);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
+ HiddenFacet facet = HiddenFacetForPropertyAnnotation.create(properties, holder);
FacetUtil.addFacet(facet);
}
@@ -196,8 +190,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final FacetHolder holder = processMethodContext.getFacetHolder();
// search for @Property(editing=...)
- final Property property = Annotations.getAnnotations(method, Property.class);
- DisabledFacet facet = DisabledFacetForPropertyAnnotation.create(property, holder);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
+ DisabledFacet facet = DisabledFacetForPropertyAnnotation.create(properties, holder);
FacetUtil.addFacet(facet);
}
@@ -206,7 +200,7 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final Class<?> cls = processMethodContext.getCls();
final Method method = processMethodContext.getMethod();
- final Property property = Annotations.getAnnotations(method, Property.class);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
final FacetedMethod facetHolder = processMethodContext.getFacetHolder();
final FacetHolder holder = facetHolder;
@@ -221,7 +215,7 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
}
// check for @Property(command=...)
- final CommandFacet commandFacet = CommandFacetForPropertyAnnotation.create(property, getConfiguration(), holder);
+ final CommandFacet commandFacet = CommandFacetForPropertyAnnotation.create(properties, getConfiguration(), holder);
FacetUtil.addFacet(commandFacet);
}
@@ -229,7 +223,7 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
void processPublishing(final ProcessMethodContext processMethodContext) {
final Method method = processMethodContext.getMethod();
- final Property property = Annotations.getAnnotations(method, Property.class);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
final FacetHolder holder = processMethodContext.getFacetHolder();
//
@@ -244,7 +238,7 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
// check for @Property(publishing=...)
final PublishedPropertyFacet facet = PublishedPropertyFacetForPropertyAnnotation
- .create(property, getConfiguration(), holder);
+ .create(properties, getConfiguration(), holder);
FacetUtil.addFacet(facet);
}
@@ -256,8 +250,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final FacetHolder holder = processMethodContext.getFacetHolder();
// search for @Property(maxLength=...)
- final Property property = Annotations.getAnnotations(method, Property.class);
- MaxLengthFacet facet = MaxLengthFacetForPropertyAnnotation.create(property, holder);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
+ MaxLengthFacet facet = MaxLengthFacetForPropertyAnnotation.create(properties, holder);
FacetUtil.addFacet(facet);
}
@@ -267,8 +261,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final FacetHolder holder = processMethodContext.getFacetHolder();
// search for @Property(mustSatisfy=...)
- final Property property = Annotations.getAnnotations(method, Property.class);
- Facet facet = MustSatisfySpecificationFacetForPropertyAnnotation.create(property, holder, servicesInjector);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
+ Facet facet = MustSatisfySpecificationFacetForPropertyAnnotation.create(properties, holder, servicesInjector);
FacetUtil.addFacet(facet);
}
@@ -278,8 +272,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final FacetHolder holder = processMethodContext.getFacetHolder();
// search for @Property(notPersisted=...)
- final Property property = Annotations.getAnnotations(method, Property.class);
- NotPersistedFacet facet = NotPersistedFacetForPropertyAnnotation.create(property, holder);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
+ NotPersistedFacet facet = NotPersistedFacetForPropertyAnnotation.create(properties, holder);
FacetUtil.addFacet(facet);
}
@@ -291,7 +285,7 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final FacetHolder holder = processMethodContext.getFacetHolder();
// check for @Nullable
- final Nullable nullableAnnotation = Annotations.getAnnotations(method, Nullable.class);
+ final Nullable nullableAnnotation = Annotations.getAnnotation(method, Nullable.class);
final MandatoryFacet facet2 =
MandatoryFacetInvertedByNullableAnnotationOnProperty.create(nullableAnnotation, method, holder);
FacetUtil.addFacet(facet2);
@@ -299,8 +293,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
facet2, "Conflicting @Nullable with other optionality annotation");
// search for @Property(optional=...)
- final Property property = Annotations.getAnnotations(method, Property.class);
- final MandatoryFacet facet3 = MandatoryFacetForPropertyAnnotation.create(property, method, holder);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
+ final MandatoryFacet facet3 = MandatoryFacetForPropertyAnnotation.create(properties, method, holder);
FacetUtil.addFacet(facet3);
conflictingOptionalityValidator.flagIfConflict(
facet3, "Conflicting Property#optionality with other optionality annotation");
@@ -313,13 +307,13 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
final Class<?> returnType = processMethodContext.getMethod().getReturnType();
// check for @Pattern first
- final Pattern annotation = Annotations.getAnnotations(processMethodContext.getMethod(), Pattern.class);
- RegExFacet facet = RegExFacetForPatternAnnotationOnProperty.create(annotation, returnType, holder);
+ final List<Pattern> patterns = Annotations.getAnnotations(processMethodContext.getMethod(), Pattern.class);
+ RegExFacet facet = RegExFacetForPatternAnnotationOnProperty.create(patterns, returnType, holder);
// else search for @Property(pattern=...)
- final Property property = Annotations.getAnnotations(method, Property.class);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
if (facet == null) {
- facet = RegExFacetForPropertyAnnotation.create(property, returnType, holder);
+ facet = RegExFacetForPropertyAnnotation.create(properties, returnType, holder);
}
FacetUtil.addFacet(facet);
@@ -332,8 +326,8 @@ public class PropertyAnnotationFacetFactory extends FacetFactoryAbstract impleme
// else search for @Property(maxLength=...)
- final Property property = Annotations.getAnnotations(method, Property.class);
- FileAcceptFacet facet = FileAcceptFacetForPropertyAnnotation.create(property, holder);
+ final List<Property> properties = Annotations.getAnnotations(method, Property.class);
+ FileAcceptFacet facet = FileAcceptFacetForPropertyAnnotation.create(properties, holder);
FacetUtil.addFacet(facet);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/command/CommandFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/command/CommandFacetForPropertyAnnotation.java
index f7523b4..28c5902 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/command/CommandFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/command/CommandFacetForPropertyAnnotation.java
@@ -18,6 +18,8 @@
*/
package org.apache.isis.core.metamodel.facets.properties.property.command;
+import java.util.List;
+
import org.apache.isis.applib.annotation.CommandExecuteIn;
import org.apache.isis.applib.annotation.CommandPersistence;
import org.apache.isis.applib.annotation.CommandReification;
@@ -31,35 +33,44 @@ import org.apache.isis.core.metamodel.facets.actions.command.CommandFacetAbstrac
public class CommandFacetForPropertyAnnotation extends CommandFacetAbstract {
public static CommandFacet create(
- final Property property,
+ final List<Property> properties,
final IsisConfiguration configuration,
final FacetHolder holder) {
- final CommandReification command = property != null ? property.command() : CommandReification.AS_CONFIGURED;
- final CommandPersistence commandPersistence = property != null ? property.commandPersistence() : CommandPersistence.PERSISTED;
- final CommandExecuteIn commandExecuteIn = property != null? property.commandExecuteIn() : CommandExecuteIn.FOREGROUND;
-
- final CommandPersistence persistence = commandPersistence;
- final CommandExecuteIn executeIn = commandExecuteIn;
+ final CommandPropertiesConfiguration setting = CommandPropertiesConfiguration.parse(configuration);
- switch (command) {
- case AS_CONFIGURED:
- final CommandPropertiesConfiguration setting = CommandPropertiesConfiguration.parse(configuration);
- switch (setting) {
- case NONE:
- return null;
- default:
- return property != null
- ? new CommandFacetForPropertyAnnotationAsConfigured(persistence, executeIn, Enablement.ENABLED, holder)
- : CommandFacetFromConfiguration.create(holder);
- }
- case DISABLED:
- return null;
- case ENABLED:
- return new CommandFacetForPropertyAnnotation(persistence, executeIn, Enablement.ENABLED, holder);
- }
+ return properties.stream()
+ .filter(property -> property.command() != CommandReification.NOT_SPECIFIED)
+ .findFirst()
+ .map(property -> {
+ final CommandReification command = property.command();
+ final CommandPersistence commandPersistence = property.commandPersistence();
+ final CommandExecuteIn commandExecuteIn = property.commandExecuteIn();
- return null;
+ switch (command) {
+ case AS_CONFIGURED:
+ switch (setting) {
+ case NONE:
+ return null;
+ default:
+ return (CommandFacet)new CommandFacetForPropertyAnnotationAsConfigured(commandPersistence,
+ commandExecuteIn, Enablement.ENABLED, holder);
+ }
+ case DISABLED:
+ return null;
+ case ENABLED:
+ return new CommandFacetForPropertyAnnotation(commandPersistence, commandExecuteIn, Enablement.ENABLED, holder);
+ }
+ throw new IllegalStateException("command '" + command + "' not recognised");
+ })
+ .orElseGet(() -> {
+ switch (setting) {
+ case NONE:
+ return null;
+ default:
+ return CommandFacetFromConfiguration.create(holder);
+ }
+ });
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
index 147fbb4..fecd07c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/disabled/DisabledFacetForPropertyAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.properties.property.disabled;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Editing;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Where;
@@ -28,30 +30,30 @@ import org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacetAbstr
public class DisabledFacetForPropertyAnnotation extends DisabledFacetAbstractImpl {
- public static DisabledFacet create(final Property property, final FacetHolder holder) {
-
- if (property == null) {
- return null;
- }
-
- final Editing editing = property.editing();
-
- switch (editing) {
- case AS_CONFIGURED:
-
- // nothing needs to be done here; the DomainObjectFactory (processing @DomainObject annotation)
- // will install an ImmutableFacetForDomainObjectAnnotation on the domain object and then a
- // DisabledFacetOnPropertyDerivedFromImmutable facet will be installed.
-
- return null;
-
- case DISABLED:
- final String disabledReason = property.editingDisabledReason();
- return new DisabledFacetForPropertyAnnotation(disabledReason, holder);
- case ENABLED:
- return new DisabledFacetForPropertyAnnotationInvertedSemantics(holder);
- }
- return null;
+ public static DisabledFacet create(final List<Property> properties, final FacetHolder holder) {
+
+ return properties.stream()
+ .filter(property -> property.editing() != Editing.NOT_SPECIFIED)
+ .findFirst()
+ .map(property -> {
+ switch (property.editing()) {
+ case AS_CONFIGURED:
+
+ // nothing needs to be done here; the DomainObjectFactory (processing @DomainObject annotation)
+ // will install an ImmutableFacetForDomainObjectAnnotation on the domain object and then a
+ // DisabledFacetOnPropertyDerivedFromImmutable facet will be installed.
+
+ return null;
+
+ case DISABLED:
+ final String disabledReason = property.editingDisabledReason();
+ return new DisabledFacetForPropertyAnnotation(disabledReason, holder);
+ case ENABLED:
+ return new DisabledFacetForPropertyAnnotationInvertedSemantics(holder);
+ }
+ return null;
+ })
+ .orElse(null);
}
private DisabledFacetForPropertyAnnotation(final String reason, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/fileaccept/FileAcceptFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/fileaccept/FileAcceptFacetForPropertyAnnotation.java
index 231955e..9399c29 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/fileaccept/FileAcceptFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/fileaccept/FileAcceptFacetForPropertyAnnotation.java
@@ -19,6 +19,11 @@
package org.apache.isis.core.metamodel.facets.properties.property.fileaccept;
+import java.util.List;
+import java.util.Objects;
+
+import com.google.common.base.Strings;
+
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.fileaccept.FileAcceptFacet;
@@ -27,17 +32,16 @@ import org.apache.isis.core.metamodel.facets.objectvalue.fileaccept.FileAcceptFa
public class FileAcceptFacetForPropertyAnnotation extends FileAcceptFacetAbstract {
public static FileAcceptFacet create(
- final Property property,
+ final List<Property> properties,
final FacetHolder holder) {
- if (property == null) {
- return null;
- }
-
- final String fileAccept = property.fileAccept();
- return !"".equals(fileAccept)
- ? new FileAcceptFacetForPropertyAnnotation(fileAccept, holder)
- : null;
+ return properties.stream()
+ .map(Property::fileAccept)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(fileAccept -> new FileAcceptFacetForPropertyAnnotation(fileAccept, holder))
+ .orElse(null);
}
private FileAcceptFacetForPropertyAnnotation(final String value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
index 0b9ea1e..502dff3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/hidden/HiddenFacetForPropertyAnnotation.java
@@ -19,27 +19,29 @@
package org.apache.isis.core.metamodel.facets.properties.property.hidden;
+import java.util.List;
+
+import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation;
import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
public class HiddenFacetForPropertyAnnotation extends HiddenFacetAbstract {
- public static HiddenFacet create(final Property property, final FacetHolder holder) {
-
- if (property == null) {
- return null;
- }
-
- final Where where = property.hidden();
- if (where != null && where != Where.NOT_SPECIFIED) {
- return new HiddenFacetForPropertyAnnotation(where, holder);
- }
+ public static HiddenFacet create(
+ final List<Property> properties,
+ final FacetHolder holder) {
- return null;
+ return properties.stream()
+ .map(Property::hidden)
+ .filter(where -> where != null && where != Where.NOT_SPECIFIED)
+ .findFirst()
+ .map(where -> new HiddenFacetForPropertyAnnotation(where, holder))
+ .orElse(null);
}
private HiddenFacetForPropertyAnnotation(final Where where, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetForPropertyAnnotation.java
index 8e81f4e..7f6c562 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mandatory/MandatoryFacetForPropertyAnnotation.java
@@ -20,6 +20,8 @@
package org.apache.isis.core.metamodel.facets.properties.property.mandatory;
import java.lang.reflect.Method;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Optionality;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -33,31 +35,33 @@ public abstract class MandatoryFacetForPropertyAnnotation extends MandatoryFacet
}
public static MandatoryFacet create(
- final Property property,
+ final List<Property> properties,
final Method method,
final FacetHolder holder) {
- if (property == null) {
- return null;
- }
-
final Class<?> returnType = method.getReturnType();
if (returnType.isPrimitive()) {
return new MandatoryFacetForPropertyAnnotation.Primitive(holder);
}
- final Optionality optionality = property.optionality();
- switch (optionality) {
- case DEFAULT:
- // do nothing here; instead will rely on MandatoryFromJdoColumnAnnotationFacetFactory to perform
- // the remaining processing
- return null;
- case MANDATORY:
- return new MandatoryFacetForPropertyAnnotation.Required(holder);
- case OPTIONAL:
- return new MandatoryFacetForPropertyAnnotation.Optional(holder);
- }
- return null;
+ return properties.stream()
+ .map(Property::optionality)
+ .filter(optionality -> optionality != Optionality.NOT_SPECIFIED)
+ .findFirst()
+ .map(optionality -> {
+ switch (optionality) {
+ case DEFAULT:
+ // do nothing here; instead will rely on MandatoryFromJdoColumnAnnotationFacetFactory to perform
+ // the remaining processing
+ return null;
+ case MANDATORY:
+ return new MandatoryFacetForPropertyAnnotation.Required(holder);
+ case OPTIONAL:
+ return new MandatoryFacetForPropertyAnnotation.Optional(holder);
+ }
+ throw new IllegalStateException("optionality '" + optionality + "' not recognised");
+ })
+ .orElse(null);
}
public static class Primitive extends MandatoryFacetForPropertyAnnotation {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/maxlength/MaxLengthFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/maxlength/MaxLengthFacetForPropertyAnnotation.java
index 6716c0f..2111570 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/maxlength/MaxLengthFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/maxlength/MaxLengthFacetForPropertyAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.properties.property.maxlength;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
@@ -27,16 +29,15 @@ import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacetAb
public class MaxLengthFacetForPropertyAnnotation extends MaxLengthFacetAbstract {
public static MaxLengthFacet create(
- final Property property,
+ final List<Property> properties,
final FacetHolder holder) {
- if (property == null) {
- return null;
- }
- final int maxLength = property.maxLength();
- return maxLength != -1
- ? new MaxLengthFacetForPropertyAnnotation(maxLength, holder)
- : null;
+ return properties.stream()
+ .map(Property::maxLength)
+ .filter(maxLength -> maxLength != -1)
+ .findFirst()
+ .map(maxLength -> new MaxLengthFacetForPropertyAnnotation(maxLength, holder))
+ .orElse(null);
}
private MaxLengthFacetForPropertyAnnotation(final int value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java
index 40c10fd..fa4be84 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/mustsatisfy/MustSatisfySpecificationFacetForPropertyAnnotation.java
@@ -19,8 +19,11 @@
package org.apache.isis.core.metamodel.facets.properties.property.mustsatisfy;
+import java.util.Arrays;
import java.util.List;
-import com.google.common.collect.Lists;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.spec.Specification;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -31,23 +34,22 @@ import org.apache.isis.core.metamodel.services.ServicesInjector;
public class MustSatisfySpecificationFacetForPropertyAnnotation extends MustSatisfySpecificationFacetAbstract {
public static Facet create(
- final Property property,
+ final List<Property> properties,
final FacetHolder holder,
final ServicesInjector servicesInjector) {
- if (property == null) {
- return null;
- }
-
- final Class<?>[] values = property.mustSatisfy();
- final List<Specification> specifications = Lists.newArrayList();
- for (final Class<?> value : values) {
- final Specification specification = newSpecificationElseNull(value);
- if (specification != null) {
- specifications.add(specification);
- }
- }
- return specifications.size() > 0 ? new MustSatisfySpecificationFacetForPropertyAnnotation(specifications, holder, servicesInjector) : null;
+ List<Specification> specifications = properties.stream()
+ .map(Property::mustSatisfy)
+ .flatMap(classes ->
+ Arrays.stream(classes)
+ .map(MustSatisfySpecificationFacetAbstract::newSpecificationElseNull)
+ .filter(Objects::nonNull)
+ )
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+ return specifications.size() > 0
+ ? new MustSatisfySpecificationFacetForPropertyAnnotation(specifications, holder, servicesInjector)
+ : null;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/notpersisted/NotPersistedFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/notpersisted/NotPersistedFacetForPropertyAnnotation.java
index bd7d87b..faa6b36 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/notpersisted/NotPersistedFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/notpersisted/NotPersistedFacetForPropertyAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.properties.property.notpersisted;
+import java.util.List;
+
+import org.apache.isis.applib.annotation.MementoSerialization;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
@@ -31,18 +34,14 @@ public class NotPersistedFacetForPropertyAnnotation extends NotPersistedFacetAbs
}
public static NotPersistedFacet create(
- final Property property,
+ final List<Property> properties,
final FacetHolder holder) {
- if (property == null) {
- return null;
- }
-
- final boolean notPersisted = property.notPersisted();
- final boolean persisted = !notPersisted;
- if(persisted) {
- return null;
- }
- return new NotPersistedFacetForPropertyAnnotation(holder);
+ return properties.stream()
+ .map(Property::mementoSerialization)
+ .filter(mementoSerialization -> mementoSerialization == MementoSerialization.EXCLUDED)
+ .findFirst()
+ .map(mementoSerialization -> new NotPersistedFacetForPropertyAnnotation(holder))
+ .orElse(null);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/publishing/PublishedPropertyFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/publishing/PublishedPropertyFacetForPropertyAnnotation.java
index d8b19a7..7d00aa7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/publishing/PublishedPropertyFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/publishing/PublishedPropertyFacetForPropertyAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.properties.property.publishing;
+import java.util.List;
+
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -29,29 +31,44 @@ import org.apache.isis.core.metamodel.facets.properties.publish.PublishedPropert
public class PublishedPropertyFacetForPropertyAnnotation extends PublishedPropertyFacetAbstract {
public static PublishedPropertyFacet create(
- final Property property,
+ final List<Property> properties,
final IsisConfiguration configuration,
final FacetHolder holder) {
- final Publishing publishing = property != null ? property.publishing() : Publishing.AS_CONFIGURED;
+ final PublishPropertiesConfiguration setting = PublishPropertiesConfiguration.parse(configuration);
+
+ return properties.stream()
+ .map(Property::publishing)
+ .filter(publishing -> publishing != Publishing.NOT_SPECIFIED)
+ .findFirst()
+ .map(publishing -> {
- switch (publishing) {
- case AS_CONFIGURED:
- final PublishPropertiesConfiguration setting = PublishPropertiesConfiguration.parse(configuration);
- switch (setting) {
- case NONE:
+ switch (publishing) {
+ case AS_CONFIGURED:
+ switch (setting) {
+ case NONE:
+ return null;
+ default:
+ return (PublishedPropertyFacet)
+ new PublishedPropertyFacetForPropertyAnnotationAsConfigured(holder);
+ }
+ case DISABLED:
+ return null;
+ case ENABLED:
+ return new PublishedPropertyFacetForPropertyAnnotation(holder);
+ }
return null;
- default:
- return property != null
- ? new PublishedPropertyFacetForPropertyAnnotationAsConfigured(holder)
- : new PublishedPropertyFacetFromConfiguration(holder);
- }
- case DISABLED:
- return null;
- case ENABLED:
- return new PublishedPropertyFacetForPropertyAnnotation(holder);
- }
- return null;
+
+ })
+ .orElseGet(() -> {
+ switch (setting) {
+ case NONE:
+ return null;
+ default:
+ return new PublishedPropertyFacetFromConfiguration(holder);
+ }
+ });
+
}
public PublishedPropertyFacetForPropertyAnnotation(final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPatternAnnotationOnProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPatternAnnotationOnProperty.java
index 4db36e6..c2363da 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPatternAnnotationOnProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPatternAnnotationOnProperty.java
@@ -19,8 +19,11 @@
package org.apache.isis.core.metamodel.facets.properties.property.regex;
+import java.util.List;
import java.util.regex.Pattern;
+import com.google.common.base.Strings;
+
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.Annotations;
import org.apache.isis.core.metamodel.facets.objectvalue.regex.RegExFacet;
@@ -31,21 +34,19 @@ public class RegExFacetForPatternAnnotationOnProperty extends RegExFacetAbstract
private final Pattern pattern;
public static RegExFacet create(
- final javax.validation.constraints.Pattern annotation, final Class<?> returnType, final FacetHolder holder) {
-
- if(annotation == null) {
- return null;
- }
+ final List<javax.validation.constraints.Pattern> patterns, final Class<?> returnType, final FacetHolder holder) {
if (!Annotations.isString(returnType)) {
return null;
}
- final String regexp = annotation.regexp();
- final javax.validation.constraints.Pattern.Flag[] flags = annotation.flags();
- final String message = annotation.message();
-
- return new RegExFacetForPatternAnnotationOnProperty(regexp, flags, message, holder);
+ return patterns.stream()
+ .filter(pattern -> Strings.emptyToNull(pattern.regexp()) != null)
+ .findFirst()
+ .map(pattern ->
+ new RegExFacetForPatternAnnotationOnProperty(
+ pattern.regexp(), pattern.flags(), pattern.message(), holder))
+ .orElse(null);
}
private RegExFacetForPatternAnnotationOnProperty(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java
index fe5637e..297e72f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/property/regex/RegExFacetForPropertyAnnotation.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.properties.property.regex;
+import java.util.List;
import java.util.regex.Pattern;
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.Property;
@@ -32,27 +33,22 @@ public class RegExFacetForPropertyAnnotation extends RegExFacetAbstract {
private final Pattern pattern;
public static RegExFacet create(
- final Property annotation,
+ final List<Property> properties,
final Class<?> returnType,
final FacetHolder holder) {
- if (annotation == null) {
- return null;
- }
-
if (!Annotations.isString(returnType)) {
return null;
}
- final String pattern = annotation.regexPattern();
- if(Strings.isNullOrEmpty(pattern)) {
- return null;
- }
-
- final String replacement = annotation.regexPatternReplacement();
- final int patternFlags = annotation.regexPatternFlags();
+ return properties.stream()
+ .filter(property -> Strings.emptyToNull(property.regexPattern()) != null)
+ .findFirst()
+ .map(property -> new RegExFacetForPropertyAnnotation(
+ property.regexPattern(), property.regexPatternFlags(), holder,
+ property.regexPatternReplacement()))
+ .orElse(null);
- return new RegExFacetForPropertyAnnotation(pattern, patternFlags, holder, replacement);
}
private RegExFacetForPropertyAnnotation(final String pattern, final int patternFlags, final FacetHolder holder, final String replacement) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyLayoutAnnotation.java
index a4984b6..6c4c5f5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/CssClassFacetForPropertyLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+import java.util.Objects;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +30,17 @@ import org.apache.isis.core.metamodel.facets.members.cssclass.CssClassFacetAbstr
public class CssClassFacetForPropertyLayoutAnnotation extends CssClassFacetAbstract {
- public static CssClassFacet create(PropertyLayout propertyLayout, FacetHolder holder) {
- if(propertyLayout == null) {
- return null;
- }
- final String cssClass = Strings.emptyToNull(propertyLayout.cssClass());
- return cssClass != null ? new CssClassFacetForPropertyLayoutAnnotation(cssClass, holder) : null;
+ public static CssClassFacet create(
+ final List<PropertyLayout> propertyLayouts,
+ final FacetHolder holder) {
+
+ return propertyLayouts.stream()
+ .map(PropertyLayout::cssClass)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(cssClass -> new CssClassFacetForPropertyLayoutAnnotation(cssClass, holder))
+ .orElse(null);
}
private CssClassFacetForPropertyLayoutAnnotation(String value, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyLayoutAnnotation.java
index 7a2b062..24e3742 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/DescribedAsFacetForPropertyLayoutAnnotation.java
@@ -19,6 +19,9 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+import java.util.Objects;
+
import com.google.common.base.Strings;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +30,17 @@ import org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacetAbs
public class DescribedAsFacetForPropertyLayoutAnnotation extends DescribedAsFacetAbstract {
- public static DescribedAsFacet create(PropertyLayout propertyLayout, FacetHolder holder) {
- if(propertyLayout == null) {
- return null;
- }
- final String describedAs = Strings.emptyToNull(propertyLayout.describedAs());
- return describedAs != null ? new DescribedAsFacetForPropertyLayoutAnnotation(describedAs, holder) : null;
+ public static DescribedAsFacet create(
+ final List<PropertyLayout> propertyLayouts,
+ final FacetHolder holder) {
+
+ return propertyLayouts.stream()
+ .map(PropertyLayout::describedAs)
+ .map(Strings::emptyToNull)
+ .filter(Objects::nonNull)
+ .findFirst()
+ .map(describedAs -> new DescribedAsFacetForPropertyLayoutAnnotation(describedAs, holder))
+ .orElse(null);
}
private DescribedAsFacetForPropertyLayoutAnnotation(String value, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
index 307ef7e..ccc77a6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/HiddenFacetForPropertyLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -28,12 +30,16 @@ import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
public class HiddenFacetForPropertyLayoutAnnotation extends HiddenFacetAbstract {
- public static HiddenFacet create(final PropertyLayout propertyLayout, final FacetHolder holder) {
- if (propertyLayout == null) {
- return null;
- }
- final Where where = propertyLayout.hidden();
- return where != null && where != Where.NOT_SPECIFIED ? new HiddenFacetForPropertyLayoutAnnotation(where, holder) : null;
+ public static HiddenFacet create(
+ final List<PropertyLayout> propertyLayouts,
+ final FacetHolder holder) {
+
+ return propertyLayouts.stream()
+ .map(PropertyLayout::hidden)
+ .filter(where -> where != null && where != Where.NOT_SPECIFIED)
+ .findFirst()
+ .map(where -> new HiddenFacetForPropertyLayoutAnnotation(where, holder))
+ .orElse(null);
}
private HiddenFacetForPropertyLayoutAnnotation(final Where where, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyLayoutAnnotation.java
index c35bd8c..ee94231 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.LabelPosition;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -27,12 +29,16 @@ import org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacetAbs
public class LabelAtFacetForPropertyLayoutAnnotation extends LabelAtFacetAbstract {
- public static LabelAtFacet create(final PropertyLayout propertyLayout, FacetHolder holder) {
- if (propertyLayout == null) {
- return null;
- }
- final LabelPosition labelPosition = propertyLayout.labelPosition();
- return labelPosition != null ? new LabelAtFacetForPropertyLayoutAnnotation(labelPosition, holder) : null;
+ public static LabelAtFacet create(
+ final List<PropertyLayout> propertyLayouts,
+ final FacetHolder holder) {
+
+ return propertyLayouts.stream()
+ .map(PropertyLayout::labelPosition)
+ .filter(labelPosition -> labelPosition != LabelPosition.NOT_SPECIFIED)
+ .findFirst()
+ .map(labelPosition -> new LabelAtFacetForPropertyLayoutAnnotation(labelPosition, holder))
+ .orElse(null);
}
private LabelAtFacetForPropertyLayoutAnnotation(final LabelPosition value, final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyLayoutAnnotation.java
index 0e6582d..b7b31f0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/MultiLineFacetForPropertyLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFacet;
@@ -26,12 +28,15 @@ import org.apache.isis.core.metamodel.facets.objectvalue.multiline.MultiLineFace
public class MultiLineFacetForPropertyLayoutAnnotation extends MultiLineFacetAbstract {
- public static MultiLineFacet create(PropertyLayout propertyLayout, FacetHolder holder) {
- if(propertyLayout == null) {
- return null;
- }
- final int multiLine = propertyLayout.multiLine();
- return multiLine > 1 ? new MultiLineFacetForPropertyLayoutAnnotation(multiLine, false, holder) : null;
+ public static MultiLineFacet create(
+ final List<PropertyLayout> propertyLayouts, final FacetHolder holder) {
+
+ return propertyLayouts.stream()
+ .map(PropertyLayout::multiLine)
+ .filter(multiLine -> multiLine > 1)
+ .findFirst()
+ .map(multiLine -> new MultiLineFacetForPropertyLayoutAnnotation(multiLine, false, holder))
+ .orElse(null);
}
private MultiLineFacetForPropertyLayoutAnnotation(int numberOfLines, boolean preventWrapping, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotation.java
index 8fef193..ec395f4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotation.java
@@ -19,7 +19,10 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+
import com.google.common.base.Strings;
+
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
@@ -27,12 +30,15 @@ import org.apache.isis.core.metamodel.facets.all.named.NamedFacetAbstract;
public class NamedFacetForPropertyLayoutAnnotation extends NamedFacetAbstract {
- public static NamedFacet create(PropertyLayout propertyLayout, FacetHolder holder) {
- if(propertyLayout == null) {
- return null;
- }
- final String named = Strings.emptyToNull(propertyLayout.named());
- return named != null ? new NamedFacetForPropertyLayoutAnnotation(named, propertyLayout.namedEscaped(), holder) : null;
+ public static NamedFacet create(
+ final List<PropertyLayout> propertyLayouts,
+ final FacetHolder holder) {
+ return propertyLayouts.stream()
+ .filter(propertyLayout -> Strings.emptyToNull(propertyLayout.named()) != null)
+ .findFirst()
+ .map(propertyLayout -> new NamedFacetForPropertyLayoutAnnotation(
+ propertyLayout.named(), propertyLayout.namedEscaped(), holder))
+ .orElse(null);
}
private NamedFacetForPropertyLayoutAnnotation(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/PromptStyleFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/PromptStyleFacetForPropertyLayoutAnnotation.java
index c9b965c..7892d25 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/PromptStyleFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/PromptStyleFacetForPropertyLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.PromptStyle;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.commons.config.IsisConfiguration;
@@ -27,7 +29,6 @@ import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleConfi
import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet;
import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAbstract;
import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured;
-import org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline;
public class PromptStyleFacetForPropertyLayoutAnnotation extends PromptStyleFacetAbstract {
@@ -39,50 +40,46 @@ public class PromptStyleFacetForPropertyLayoutAnnotation extends PromptStyleFace
}
public static PromptStyleFacet create(
- final PropertyLayout propertyLayout,
+ final List<PropertyLayout> propertyLayouts,
final IsisConfiguration configuration,
final FacetHolder holder) {
- PromptStyle promptStyle = propertyLayout != null? propertyLayout.promptStyle() : null;
+ return propertyLayouts.stream()
+ .map(PropertyLayout::promptStyle)
+ .filter(promptStyle -> promptStyle != PromptStyle.NOT_SPECIFIED)
+ .findFirst()
+ .map(promptStyle -> {
- if(promptStyle == null) {
- if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
- // do not replace
- return null;
- }
+ switch (promptStyle) {
+ case DIALOG:
+ case INLINE:
+ return new PromptStyleFacetForPropertyLayoutAnnotation(promptStyle, holder);
+ case INLINE_AS_IF_EDIT:
+ return new PromptStyleFacetForPropertyLayoutAnnotation(PromptStyle.INLINE, holder);
- return new PromptStyleFacetFallBackToInline(holder);
- } else {
+ case AS_CONFIGURED:
- switch (promptStyle) {
- case DIALOG:
- case INLINE:
- return new PromptStyleFacetForPropertyLayoutAnnotation(promptStyle, holder);
- case INLINE_AS_IF_EDIT:
- return new PromptStyleFacetForPropertyLayoutAnnotation(PromptStyle.INLINE, holder);
+ // do not replace
+ if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
+ return null;
+ }
- case AS_CONFIGURED:
+ promptStyle = PromptStyleConfiguration.parse(configuration);
+ return new PromptStyleFacetAsConfigured(promptStyle, holder);
- // do not replace
- if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
- return null;
}
-
- promptStyle = PromptStyleConfiguration.parse(configuration);
- return new PromptStyleFacetAsConfigured(promptStyle, holder);
-
- default:
-
- // do not replace
- if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
- return null;
- }
-
- promptStyle = PromptStyleConfiguration.parse(configuration);
- return new PromptStyleFacetAsConfigured(promptStyle, holder);
- }
- }
-
+ throw new IllegalStateException("promptStyle '" + promptStyle + "' not recognised");
+ })
+ .orElseGet(() -> {
+
+ // do not replace
+ if (holder.containsDoOpFacet(PromptStyleFacet.class)) {
+ return null;
+ }
+
+ PromptStyle promptStyle = PromptStyleConfiguration.parse(configuration);
+ return new PromptStyleFacetAsConfigured(promptStyle, holder);
+ });
}
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/PropertyLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/PropertyLayoutFacetFactory.java
index 45f2bc3..6884548 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/PropertyLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/PropertyLayoutFacetFactory.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
import java.lang.reflect.Method;
+import java.util.List;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -50,73 +51,73 @@ public class PropertyLayoutFacetFactory extends FacetFactoryAbstract implements
public void process(final ProcessMethodContext processMethodContext) {
final FacetHolder holder = facetHolderFrom(processMethodContext);
- final PropertyLayout propertyLayout = propertyLayoutAnnotationFrom(processMethodContext);
+ final List<PropertyLayout> propertyLayouts = propertyLayoutsFrom(processMethodContext);
- processCssClass(holder, propertyLayout);
+ processCssClass(holder, propertyLayouts);
- processDescribedAs(holder, propertyLayout);
+ processDescribedAs(holder, propertyLayouts);
- processPromptStyle(holder, propertyLayout);
+ processPromptStyle(holder, propertyLayouts);
- processHidden(holder, propertyLayout);
+ processHidden(holder, propertyLayouts);
- processLabelAt(holder, propertyLayout);
+ processLabelAt(holder, propertyLayouts);
- processMultiLine(holder, propertyLayout);
+ processMultiLine(holder, propertyLayouts);
- processNamed(holder, propertyLayout);
+ processNamed(holder, propertyLayouts);
- processRenderedAdjusted(holder, propertyLayout);
+ processRenderedAdjusted(holder, propertyLayouts);
- processTypicalLength(holder, propertyLayout);
+ processTypicalLength(holder, propertyLayouts);
- processUnchanging(holder, propertyLayout);
+ processUnchanging(holder, propertyLayouts);
}
- void processCssClass(final FacetHolder holder, final PropertyLayout propertyLayout) {
+ void processCssClass(final FacetHolder holder, final List<PropertyLayout> propertyLayout) {
CssClassFacet cssClassFacet = CssClassFacetForPropertyLayoutAnnotation.create(propertyLayout, holder);
FacetUtil.addFacet(cssClassFacet);
}
void processDescribedAs(
final FacetHolder holder,
- final PropertyLayout propertyLayout) {
+ final List<PropertyLayout> propertyLayout) {
DescribedAsFacet describedAsFacet = DescribedAsFacetForPropertyLayoutAnnotation.create(propertyLayout, holder);
FacetUtil.addFacet(describedAsFacet);
}
- void processPromptStyle(final FacetHolder holder, final PropertyLayout propertyLayout) {
+ void processPromptStyle(final FacetHolder holder, final List<PropertyLayout> propertyLayout) {
PromptStyleFacet promptStyleFacet = PromptStyleFacetForPropertyLayoutAnnotation
.create(propertyLayout, getConfiguration(), holder);
FacetUtil.addFacet(promptStyleFacet);
}
- void processHidden(final FacetHolder holder, final PropertyLayout propertyLayout) {
+ void processHidden(final FacetHolder holder, final List<PropertyLayout> propertyLayout) {
HiddenFacet hiddenFacet = HiddenFacetForPropertyLayoutAnnotation.create(propertyLayout, holder);
FacetUtil.addFacet(hiddenFacet);
}
void processLabelAt(
final FacetHolder holder,
- final PropertyLayout propertyLayout) {
+ final List<PropertyLayout> propertyLayout) {
LabelAtFacet labelAtFacet = LabelAtFacetForPropertyLayoutAnnotation.create(propertyLayout, holder);
FacetUtil.addFacet(labelAtFacet);
}
- void processMultiLine(final FacetHolder holder, final PropertyLayout propertyLayout) {
+ void processMultiLine(final FacetHolder holder, final List<PropertyLayout> propertyLayout) {
MultiLineFacet multiLineFacet = MultiLineFacetForPropertyLayoutAnnotation.create(propertyLayout, holder);
FacetUtil.addFacet(multiLineFacet);
}
- void processNamed(final FacetHolder holder, final PropertyLayout propertyLayout) {
+ void processNamed(final FacetHolder holder, final List<PropertyLayout> propertyLayout) {
NamedFacet namedFacet = NamedFacetForPropertyLayoutAnnotation.create(propertyLayout, holder);
FacetUtil.addFacet(namedFacet);
}
void processRenderedAdjusted(
final FacetHolder holder,
- final PropertyLayout propertyLayout) {
+ final List<PropertyLayout> propertyLayout) {
RenderedAdjustedFacet renderedAdjustedFacet = RenderedAdjustedFacetForPropertyLayoutAnnotation
.create(propertyLayout, holder);
FacetUtil.addFacet(renderedAdjustedFacet);
@@ -124,7 +125,7 @@ public class PropertyLayoutFacetFactory extends FacetFactoryAbstract implements
void processTypicalLength(
final FacetHolder holder,
- final PropertyLayout propertyLayout) {
+ final List<PropertyLayout> propertyLayout) {
TypicalLengthFacet typicalLengthFacet = TypicalLengthFacetForPropertyLayoutAnnotation
.create(propertyLayout, holder);
FacetUtil.addFacet(typicalLengthFacet);
@@ -132,7 +133,7 @@ public class PropertyLayoutFacetFactory extends FacetFactoryAbstract implements
void processUnchanging(
final FacetHolder holder,
- final PropertyLayout propertyLayout) {
+ final List<PropertyLayout> propertyLayout) {
UnchangingFacet unchangingFacet = UnchangingFacetForPropertyLayoutAnnotation.create(propertyLayout, holder);
FacetUtil.addFacet(unchangingFacet);
}
@@ -188,7 +189,7 @@ public class PropertyLayoutFacetFactory extends FacetFactoryAbstract implements
return processMethodContext.getFacetHolder();
}
- PropertyLayout propertyLayoutAnnotationFrom(final ProcessMethodContext processMethodContext) {
+ List<PropertyLayout> propertyLayoutsFrom(final ProcessMethodContext processMethodContext) {
final Method method = processMethodContext.getMethod();
return Annotations.getAnnotations(method, PropertyLayout.class);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyLayoutAnnotation.java
index bb3f0fb..c23643b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/RenderedAdjustedFacetForPropertyLayoutAnnotation.java
@@ -19,19 +19,34 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.RenderDayPolicy;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacetAbstract;
public class RenderedAdjustedFacetForPropertyLayoutAnnotation extends RenderedAdjustedFacetAbstract {
- public static RenderedAdjustedFacet create(PropertyLayout propertyLayout, FacetHolder holder) {
- if(propertyLayout == null) {
- return null;
- }
- final boolean renderedAsDayBefore = propertyLayout.renderedAsDayBefore();
- return renderedAsDayBefore ? new RenderedAdjustedFacetForPropertyLayoutAnnotation(holder) : null;
+ public static RenderedAdjustedFacet create(
+ final List<PropertyLayout> propertyLayouts,
+ final FacetHolder holder) {
+
+ return propertyLayouts.stream()
+ .map(PropertyLayout::renderDay)
+ .filter(renderDay -> renderDay != RenderDayPolicy.NOT_SPECIFIED)
+ .findFirst()
+ .map(renderDay -> {
+ switch (renderDay) {
+ case AS_DAY:
+ return null;
+ case AS_DAY_BEFORE:
+ return new RenderedAdjustedFacetForPropertyLayoutAnnotation(holder);
+ }
+ throw new IllegalStateException("renderDay '" + renderDay + "' not recognised");
+ })
+ .orElse(null);
}
public static final int ADJUST_BY = -1;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyLayoutAnnotation.java
index 8d50e35..ccb23ac 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/TypicalLengthFacetForPropertyLayoutAnnotation.java
@@ -19,6 +19,8 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
@@ -26,12 +28,16 @@ import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengt
public class TypicalLengthFacetForPropertyLayoutAnnotation extends TypicalLengthFacetAbstract {
- public static TypicalLengthFacet create(PropertyLayout propertyLayout, FacetHolder holder) {
- if(propertyLayout == null) {
- return null;
- }
- final int typicalLength = propertyLayout.typicalLength();
- return typicalLength != -1 ? new TypicalLengthFacetForPropertyLayoutAnnotation(typicalLength, holder) : null;
+ public static TypicalLengthFacet create(
+ final List<PropertyLayout> propertyLayouts,
+ final FacetHolder holder) {
+
+ return propertyLayouts.stream()
+ .map(PropertyLayout::typicalLength)
+ .filter(typicalLength -> typicalLength != -1)
+ .findFirst()
+ .map(typicalLength -> new TypicalLengthFacetForPropertyLayoutAnnotation(typicalLength, holder))
+ .orElse(null);
}
private final int typicalLength;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/UnchangingFacetForPropertyLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/UnchangingFacetForPropertyLayoutAnnotation.java
index f9f5142..0458a11 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/UnchangingFacetForPropertyLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/UnchangingFacetForPropertyLayoutAnnotation.java
@@ -19,19 +19,37 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
+import java.util.List;
+
import org.apache.isis.applib.annotation.PropertyLayout;
+import org.apache.isis.applib.annotation.Repainting;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet;
import org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacetAbstract;
public class UnchangingFacetForPropertyLayoutAnnotation extends UnchangingFacetAbstract {
- public static UnchangingFacet create(PropertyLayout propertyLayout, FacetHolder holder) {
- if(propertyLayout == null) {
- return null;
- }
- final boolean isUnchanging = propertyLayout.unchanging();
- return new UnchangingFacetForPropertyLayoutAnnotation(isUnchanging, holder);
+ public static UnchangingFacet create(
+ final List<PropertyLayout> propertyLayouts,
+ final FacetHolder holder) {
+
+ return propertyLayouts.stream()
+ .map(PropertyLayout::repainting)
+ .filter(repainting -> repainting != Repainting.NOT_SPECIFIED)
+ .findFirst()
+ .map(repainting -> {
+ boolean unchanging;
+ switch (repainting) {
+ case REPAINT:
+ unchanging = false;
+ return new UnchangingFacetForPropertyLayoutAnnotation(unchanging, holder);
+ case NO_REPAINT:
+ unchanging = true;
+ return new UnchangingFacetForPropertyLayoutAnnotation(unchanging, holder);
+ }
+ throw new IllegalStateException("repainting '" + repainting + "' not recognised");
+ })
+ .orElse(null);
}
private UnchangingFacetForPropertyLayoutAnnotation(final boolean unchanging, FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityAnnotationFacetFactory.java
index a3af30a..6dea94d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/datastoreidentity/JdoDatastoreIdentityAnnotationFacetFactory.java
@@ -43,7 +43,7 @@ public class JdoDatastoreIdentityAnnotationFacetFactory extends FacetFactoryAbst
return;
}
- final DatastoreIdentity annotation = Annotations.getAnnotations(cls, DatastoreIdentity.class);
+ final DatastoreIdentity annotation = Annotations.getAnnotation(cls, DatastoreIdentity.class);
if (annotation == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
index c24aaa5..303f24c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/discriminator/JdoDiscriminatorAnnotationFacetFactory.java
@@ -46,7 +46,7 @@ public class JdoDiscriminatorAnnotationFacetFactory extends FacetFactoryAbstract
return;
}
- final Discriminator annotation = Annotations.getAnnotations(processClassContext.getCls(), Discriminator.class);
+ final Discriminator annotation = Annotations.getAnnotation(processClassContext.getCls(), Discriminator.class);
if (annotation == null) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/query/JdoQueryAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/query/JdoQueryAnnotationFacetFactory.java
index a81796e..e08d788 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/query/JdoQueryAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/object/query/JdoQueryAnnotationFacetFactory.java
@@ -62,7 +62,7 @@ public class JdoQueryAnnotationFacetFactory extends FacetFactoryAbstract impleme
return;
}
- final Queries namedQueriesAnnotation = Annotations.getAnnotations(cls, Queries.class);
+ final Queries namedQueriesAnnotation = Annotations.getAnnotation(cls, Queries.class);
final FacetHolder facetHolder = processClassContext.getFacetHolder();
if (namedQueriesAnnotation != null) {
@@ -71,7 +71,7 @@ public class JdoQueryAnnotationFacetFactory extends FacetFactoryAbstract impleme
return;
}
- final Query namedQueryAnnotation = Annotations.getAnnotations(cls, Query.class);
+ final Query namedQueryAnnotation = Annotations.getAnnotation(cls, Query.class);
if (namedQueryAnnotation != null) {
FacetUtil.addFacet(new JdoQueryFacetAnnotation(
namedQueryAnnotation, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyAnnotationFacetFactory.java
index 3cf8034..980043a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/objectstore/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyAnnotationFacetFactory.java
@@ -42,7 +42,7 @@ public class JdoPrimaryKeyAnnotationFacetFactory extends FacetFactoryAbstract {
return;
}
- final PrimaryKey annotation = Annotations.getAnnotations(processMethodContext.getMethod(), PrimaryKey.class);
+ final PrimaryKey annotation = Annotations.getAnnotation(processMethodContext.getMethod(), PrimaryKey.class);
if (annotation == null) {
return;
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/NotPersistedAnnotationOnCollectionFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/NotPersistedAnnotationOnCollectionFacetFactoryTest.java
index ba5ada1..cc6ad70 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/NotPersistedAnnotationOnCollectionFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/NotPersistedAnnotationOnCollectionFacetFactoryTest.java
@@ -22,6 +22,7 @@ package org.apache.isis.core.metamodel.facets.collections.collection;
import java.lang.reflect.Method;
import java.util.Collection;
+import org.apache.isis.applib.annotation.MementoSerialization;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
@@ -43,7 +44,7 @@ public class NotPersistedAnnotationOnCollectionFacetFactoryTest extends Abstract
}
class Customer {
@SuppressWarnings("unused")
- @org.apache.isis.applib.annotation.Collection(notPersisted = true)
+ @org.apache.isis.applib.annotation.Collection(mementoSerialization = MementoSerialization.EXCLUDED)
public Collection<Order> getOrders() {
return null;
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
index 6016cfb..dafdb4b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/ChoicesFacetFromBoundedAnnotationFactoryTest.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.facets.object.domainobject;
+import org.apache.isis.applib.annotation.Bounding;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
@@ -45,7 +46,7 @@ public class ChoicesFacetFromBoundedAnnotationFactoryTest extends AbstractFacetF
}
public void testBoundedAnnotationPickedUpOnClass() {
- @DomainObject(bounded = true)
+ @DomainObject(bounding = Bounding.BOUNDED)
class Customer {
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 7b0eed4..78d1e06 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -27,6 +27,7 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.apache.isis.applib.annotation.Bounding;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.services.HasTransactionId;
import org.apache.isis.core.metamodel.facetapi.Facet;
@@ -482,11 +483,11 @@ public class DomainObjectAnnotationFacetFactoryTest extends AbstractFacetFactory
public static class Bounded extends DomainObjectAnnotationFacetFactoryTest {
- @DomainObject(bounded = true)
+ @DomainObject(bounding = Bounding.BOUNDED)
class CustomerWithDomainObjectAndBoundedSetToTrue {
}
- @DomainObject(bounded = false)
+ @DomainObject(bounding = Bounding.UNBOUNDED)
class CustomerWithDomainObjectAndBoundedSetToFalse {
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/promptstyle/PromptStyleFacetFromPropertyAnnotation_Test.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/promptstyle/PromptStyleFacetFromPropertyAnnotation_Test.java
index a9e5e04..e878863 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/promptstyle/PromptStyleFacetFromPropertyAnnotation_Test.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/promptstyle/PromptStyleFacetFromPropertyAnnotation_Test.java
@@ -16,6 +16,8 @@
*/
package org.apache.isis.core.metamodel.facets.properties.promptstyle;
+import java.util.Collections;
+
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
@@ -65,7 +67,7 @@ public class PromptStyleFacetFromPropertyAnnotation_Test {
}});
PromptStyleFacet facet = PromptStyleFacetForPropertyLayoutAnnotation
- .create(mockPropertyLayout, mockConfiguration, mockFacetHolder);
+ .create(Collections.singletonList(mockPropertyLayout), mockConfiguration, mockFacetHolder);
Assert.assertThat(facet, is((Matcher) anInstanceOf(PromptStyleFacetForPropertyLayoutAnnotation.class)));
Assert.assertThat(facet.value(), is(PromptStyle.DIALOG));
@@ -83,7 +85,7 @@ public class PromptStyleFacetFromPropertyAnnotation_Test {
PromptStyleFacet facet = PromptStyleFacetForPropertyLayoutAnnotation
- .create(mockPropertyLayout, mockConfiguration, mockFacetHolder);
+ .create(Collections.singletonList(mockPropertyLayout), mockConfiguration, mockFacetHolder);
Assert.assertThat(facet, is((Matcher) anInstanceOf(PromptStyleFacetForPropertyLayoutAnnotation.class)));
Assert.assertThat(facet.value(), is(PromptStyle.INLINE));
@@ -104,7 +106,7 @@ public class PromptStyleFacetFromPropertyAnnotation_Test {
}});
PromptStyleFacet facet = PromptStyleFacetForPropertyLayoutAnnotation
- .create(mockPropertyLayout, mockConfiguration, mockFacetHolder);
+ .create(Collections.singletonList(mockPropertyLayout), mockConfiguration, mockFacetHolder);
Assert.assertThat(facet, is((Matcher) anInstanceOf(PromptStyleFacetAsConfigured.class)));
Assert.assertThat(facet.value(), is(PromptStyle.INLINE));
@@ -124,7 +126,7 @@ public class PromptStyleFacetFromPropertyAnnotation_Test {
}});
PromptStyleFacet facet = PromptStyleFacetForPropertyLayoutAnnotation
- .create(mockPropertyLayout, mockConfiguration, mockFacetHolder);
+ .create(Collections.singletonList(mockPropertyLayout), mockConfiguration, mockFacetHolder);
Assert.assertThat(facet, is(nullValue()));
}
@@ -143,7 +145,7 @@ public class PromptStyleFacetFromPropertyAnnotation_Test {
}});
PromptStyleFacet facet = PromptStyleFacetForPropertyLayoutAnnotation
- .create(mockPropertyLayout, mockConfiguration, mockFacetHolder);
+ .create(Collections.singletonList(mockPropertyLayout), mockConfiguration, mockFacetHolder);
Assert.assertThat(facet.value(), is(PromptStyle.INLINE));
Assert.assertThat(facet, is((Matcher) anInstanceOf(PromptStyleFacetFallBackToInline.class)));
@@ -163,7 +165,7 @@ public class PromptStyleFacetFromPropertyAnnotation_Test {
}});
PromptStyleFacet facet = PromptStyleFacetForPropertyLayoutAnnotation
- .create(mockPropertyLayout, mockConfiguration, mockFacetHolder);
+ .create(Collections.singletonList(mockPropertyLayout), mockConfiguration, mockFacetHolder);
Assert.assertThat(facet, is(nullValue()));
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/NotPersistedAnnotationOnPropertyFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/NotPersistedAnnotationOnPropertyFacetFactoryTest.java
index 7931928..816dc16 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/NotPersistedAnnotationOnPropertyFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/NotPersistedAnnotationOnPropertyFacetFactoryTest.java
@@ -21,6 +21,7 @@ package org.apache.isis.core.metamodel.facets.properties.property;
import java.lang.reflect.Method;
+import org.apache.isis.applib.annotation.MementoSerialization;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
@@ -41,7 +42,7 @@ public class NotPersistedAnnotationOnPropertyFacetFactoryTest extends AbstractFa
class Customer {
@SuppressWarnings("unused")
- @Property(notPersisted = true)
+ @Property(mementoSerialization = MementoSerialization.EXCLUDED)
public String getFirstName() {
return null;
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index f181d7a..963913b 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -29,6 +29,7 @@ import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+import org.apache.isis.applib.annotation.MementoSerialization;
import org.apache.isis.applib.annotation.Optionality;
import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Where;
@@ -537,9 +538,7 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
public void withAnnotation() {
class Customer {
- @Property(
- notPersisted = true
- )
+ @Property(mementoSerialization = MementoSerialization.EXCLUDED)
public String getName() {
return null;
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyLayoutAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyLayoutAnnotationFactoryTest.java
index 0350c83..a177648 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyLayoutAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/LabelAtFacetForPropertyLayoutAnnotationFactoryTest.java
@@ -20,7 +20,7 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
import java.lang.reflect.Method;
-import java.util.Properties;
+import java.util.List;
import org.apache.isis.applib.annotation.LabelPosition;
import org.apache.isis.applib.annotation.PropertyLayout;
@@ -55,9 +55,9 @@ public class LabelAtFacetForPropertyLayoutAnnotationFactoryTest extends Abstract
// when
final FacetHolder holder = facetFactory.facetHolderFrom(processMethodContext);
- final PropertyLayout propertyLayout = facetFactory.propertyLayoutAnnotationFrom(processMethodContext);
+ final List<PropertyLayout> propertyLayouts = facetFactory.propertyLayoutsFrom(processMethodContext);
- facetFactory.processLabelAt(holder, propertyLayout);
+ facetFactory.processLabelAt(holder, propertyLayouts);
// then
final Facet facet = facetedMethod.getFacet(LabelAtFacet.class);
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotationFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotationFactoryTest.java
index ff6022b..d45ff07 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotationFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/propertylayout/NamedFacetForPropertyLayoutAnnotationFactoryTest.java
@@ -20,6 +20,7 @@
package org.apache.isis.core.metamodel.facets.properties.propertylayout;
import java.lang.reflect.Method;
+import java.util.List;
import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -52,9 +53,9 @@ public class NamedFacetForPropertyLayoutAnnotationFactoryTest extends AbstractFa
methodRemover, facetedMethod);
final FacetHolder holder = facetFactory.facetHolderFrom(processMethodContext);
- final PropertyLayout propertyLayout = facetFactory.propertyLayoutAnnotationFrom(processMethodContext);
+ final List<PropertyLayout> propertyLayouts = facetFactory.propertyLayoutsFrom(processMethodContext);
- facetFactory.processNamed(holder, propertyLayout);
+ facetFactory.processNamed(holder, propertyLayouts);
// then
final NamedFacet facet = facetedMethod.getFacet(NamedFacet.class);
@@ -81,9 +82,9 @@ public class NamedFacetForPropertyLayoutAnnotationFactoryTest extends AbstractFa
methodRemover, facetedMethod);
final FacetHolder holder = facetFactory.facetHolderFrom(processMethodContext);
- final PropertyLayout propertyLayout = facetFactory.propertyLayoutAnnotationFrom(processMethodContext);
+ final List<PropertyLayout> propertyLayouts = facetFactory.propertyLayoutsFrom(processMethodContext);
- facetFactory.processNamed(holder, propertyLayout);
+ facetFactory.processNamed(holder, propertyLayouts);
// then
final NamedFacet facet = facetedMethod.getFacet(NamedFacet.class);
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
index c5b46ec..1f3fcc3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstractTest_getId_and_getName.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.specloader.specimpl;
+import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import org.jmock.Expectations;
@@ -27,7 +28,6 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-import com.google.common.base.Predicate;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -164,7 +164,7 @@ public class ObjectActionParameterAbstractTest_getId_and_getName {
one(actionParamPeer).getFacet(NamedFacet.class);
will(returnValue(null));
- one(parentAction).getParameters((Predicate<ObjectActionParameter>) with(anything()));
+ one(parentAction).getParameters((Predicate<ObjectActionParameter>) with(Expectations.<Predicate>anything()));
will(returnValue(Lists.newArrayList(objectActionParameter)));
}
});
@@ -183,7 +183,7 @@ public class ObjectActionParameterAbstractTest_getId_and_getName {
one(actionParamPeer).getFacet(NamedFacet.class);
will(returnValue(null));
- one(parentAction).getParameters((Predicate<ObjectActionParameter>) with(anything()));
+ one(parentAction).getParameters(with(Expectations.<Predicate>anything()));
will(returnValue(Lists.newArrayList(stubObjectActionParameterString, objectActionParameter, stubObjectActionParameterString2)));
}
});
@@ -202,7 +202,7 @@ public class ObjectActionParameterAbstractTest_getId_and_getName {
one(actionParamPeer).getFacet(NamedFacet.class);
will(returnValue(null));
- one(parentAction).getParameters((Predicate<ObjectActionParameter>) with(anything()));
+ one(parentAction).getParameters(with(Expectations.<Predicate>anything()));
will(returnValue(Lists.newArrayList(stubObjectActionParameterString, objectActionParameter, stubObjectActionParameterString2)));
}
});
diff --git a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
index 65e8c41..9814a84 100644
--- a/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
+++ b/core/specsupport/src/main/java/org/apache/isis/core/specsupport/scenarios/DomainServiceProviderMockery.java
@@ -27,7 +27,6 @@ import org.jmock.Mockery;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
-import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.core.unittestsupport.jmocking.JavassistImposteriser;
@@ -84,7 +83,7 @@ class DomainServiceProviderMockery implements DomainServiceProvider {
mockRepositoryService = (RepositoryService) mock;
context.checking(new Expectations() {
{
- allowing(mockRepositoryService).persist(with(anything()));
+ allowing(mockRepositoryService).persist(with(Expectations.<T>anything()));
}
});
}
--
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].