You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/10/24 12:57:51 UTC
[isis] 01/01: ISIS-2158: multiple simplifications ...
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit fafd77bef1b59a3cf002fba9fa2da645e8ffb9b2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Oct 24 11:28:29 2019 +0200
ISIS-2158: multiple simplifications ...
- code de-duplication
- thread safety for facetholder
- remove MarkerFacet
- remove CachedFacet
- remove MultiTypedFacet
---
.../isis/metamodel/consent/InteractionAdvisor.java | 14 ++++
.../org/apache/isis/metamodel/facetapi/Facet.java | 22 +++++
.../isis/metamodel/facetapi/FacetAbstract.java | 83 +++++++++++++-----
.../isis/metamodel/facetapi/FacetHolder.java | 87 ++++++++++++++-----
.../isis/metamodel/facetapi/FacetHolderImpl.java | 97 +++++++++++++---------
.../apache/isis/metamodel/facetapi/FacetUtil.java | 45 ++--------
.../isis/metamodel/facetapi/MultiTypedFacet.java | 44 ----------
.../metamodel/facets/FacetFactoryAbstract.java | 6 --
.../apache/isis/metamodel/facets/MarkerFacet.java | 26 ------
.../isis/metamodel/facets/MarkerFacetAbstract.java | 32 -------
.../facets/MultipleValueFacetAbstract.java | 32 -------
.../actions/command/CommandFacetAbstract.java | 4 +-
.../facets/actions/homepage/HomePageFacet.java | 4 +-
.../actions/homepage/HomePageFacetAbstract.java | 4 +-
.../actions/prototype/PrototypeFacetAbstract.java | 4 +-
.../actions/publish/PublishedActionFacet.java | 4 +-
.../publish/PublishedActionFacetAbstract.java | 4 +-
.../facets/all/deficiencies/DeficiencyFacet.java | 16 ++++
.../metamodel/facets/all/hide/HiddenFacet.java | 3 +-
.../metamodel/facets/all/named/NamedFacet.java | 4 +-
.../facets/all/named/NamedFacetAbstract.java | 10 +--
.../parented/ParentedCollectionFacetDefault.java | 4 +-
.../facets/members/hidden/HiddenFacetAbstract.java | 21 +----
.../members/order/MemberOrderFacetAbstract.java | 4 +-
.../facets/object/cached/CachedFacet.java | 42 ----------
.../facets/object/cached/CachedFacetAbstract.java | 36 --------
.../facets/object/cached/CachedFacetUtils.java | 32 -------
.../facets/object/defaults/DefaultedFacet.java | 4 +-
.../facets/object/entity/EntityFacet.java | 4 +-
.../impl/ObjectValidPropertiesFacetImpl.java | 2 +-
.../object/parented/ParentedCollectionFacet.java | 4 +-
.../parented/ParentedCollectionFacetAbstract.java | 4 +-
.../publishedobject/PublishedObjectFacet.java | 4 +-
.../PublishedObjectFacetAbstract.java | 4 +-
.../RecreatableObjectFacetAbstract.java | 4 +-
...ObjectFacetDeclarativeInitializingAbstract.java | 2 +-
.../facets/object/value/EqualByContentFacet.java | 8 +-
.../object/value/EqualByContentFacetAbstract.java | 4 +-
.../metamodel/facets/object/value/ValueFacet.java | 5 +-
.../facets/object/value/ValueFacetAbstract.java | 36 ++------
.../facets/object/value/ValueFacetSimple.java | 19 +----
.../value/annotcfg/ValueFacetAnnotation.java | 62 +++++++-------
...ValueFacetAnnotationOrConfigurationFactory.java | 2 +-
.../annotcfg/ValueFacetFromConfiguration.java | 4 +-
.../vsp/ValueFacetUsingSemanticsProvider.java | 4 +-
.../ValueFacetUsingSemanticsProviderFactory.java | 2 +-
.../facets/object/wizard/WizardFacetAbstract.java | 4 +-
.../objectvalue/labelat/LabelAtFacetAbstract.java | 4 +-
.../objectvalue/mandatory/MandatoryFacet.java | 3 +-
.../mandatory/MandatoryFacetAbstract.java | 5 +-
.../multiline/MultiLineFacetAbstract.java | 4 +-
.../objectvalue/regex/RegExFacetAbstract.java | 4 +-
.../propcoll/notpersisted/NotPersistedFacet.java | 4 +-
.../notpersisted/NotPersistedFacetAbstract.java | 4 +-
.../properties/publish/PublishedPropertyFacet.java | 4 +-
.../publish/PublishedPropertyFacetAbstract.java | 5 +-
.../searchable/SearchableFacetAbstract.java | 4 +-
.../spec/feature/OneToOneAssociation.java | 5 --
.../specimpl/ObjectActionContributee.java | 48 +----------
.../specloader/specimpl/ObjectActionDefault.java | 10 ++-
.../specloader/specimpl/ObjectActionMixedIn.java | 12 +--
.../specimpl/ObjectActionParameterAbstract.java | 85 ++-----------------
.../specimpl/ObjectAssociationAbstract.java | 6 ++
.../specloader/specimpl/ObjectMemberAbstract.java | 64 +-------------
.../specimpl/OneToManyAssociationContributee.java | 7 +-
.../specimpl/OneToManyAssociationMixedIn.java | 9 +-
.../specimpl/OneToOneAssociationContributee.java | 8 +-
.../specimpl/OneToOneAssociationDefault.java | 18 +---
.../specimpl/OneToOneAssociationMixedIn.java | 7 +-
...ObjectAssociationAbstractTest_alwaysHidden.java | 2 +-
...doPersistenceCapableAnnotationFacetFactory.java | 2 +-
.../JdoPersistenceCapableFacetAbstract.java | 26 +-----
.../facets/object/version/JdoVersionFacet.java | 4 +-
.../version/JdoVersionFacetFromAnnotation.java | 4 +-
.../prop/notpersistent/JdoNotPersistentFacet.java | 5 +-
.../JdoNotPersistentFacetAbstract.java | 7 +-
.../facets/prop/primarykey/JdoPrimaryKeyFacet.java | 5 +-
.../primarykey/JdoPrimaryKeyFacetAbstract.java | 7 +-
.../runtime/system/ObjectMemberAbstractTest.java | 12 ++-
.../memento/ObjectAdapterMementoDefault.java | 3 +
.../IsisWicketApplication_newPageFactory.java | 6 +-
81 files changed, 435 insertions(+), 834 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/consent/InteractionAdvisor.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/consent/InteractionAdvisor.java
index 60303b4..24bc793 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/consent/InteractionAdvisor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/consent/InteractionAdvisor.java
@@ -20,6 +20,7 @@
package org.apache.isis.metamodel.consent;
import java.util.Map;
+import java.util.function.Consumer;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -80,6 +81,19 @@ public interface InteractionAdvisor {
return false;
}
+ @Override
+ public void addAlias(Class<? extends Facet> alias) {
+ }
+
+ @Override
+ public void forEachAlias(Consumer<Class<? extends Facet>> onAlias) {
+ }
+
+ @Override
+ public boolean hasAlias(Class<? extends Facet> alias) {
+ return false;
+ }
+
};
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/Facet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/Facet.java
index cfa156e..97beef6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/Facet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/Facet.java
@@ -19,6 +19,8 @@
package org.apache.isis.metamodel.facetapi;
+import java.util.function.Consumer;
+
import org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet;
public interface Facet extends FacetWithAttributes {
@@ -94,5 +96,25 @@ public interface Facet extends FacetWithAttributes {
*/
public boolean alwaysReplace();
+ // -- FACET ALIAS SUPPORT
+
+ /**
+ * Add an alias by which the facet can be looked up.
+ * @since 2.0
+ */
+ void addAlias(Class<? extends Facet> alias);
+
+ /**
+ * Traverses all aliases (if any).
+ * @since 2.0
+ */
+ void forEachAlias(Consumer<Class<? extends Facet>> onAlias);
+
+ /**
+ * Whether has an alias by which the facet can be looked up.
+ * @since 2.0
+ */
+ boolean hasAlias(Class<? extends Facet> alias);
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetAbstract.java
index 40cc3e1..33bfb4d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetAbstract.java
@@ -21,7 +21,10 @@ package org.apache.isis.metamodel.facetapi;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
+import java.util.function.Consumer;
+import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.metamodel.MetaModelContext;
@@ -40,6 +43,8 @@ public abstract class FacetAbstract implements Facet, MetaModelContext.Delegatin
private Facet underlyingFacet;
private final Class<? extends Facet> facetType;
+ private Set<Class<? extends Facet>> facetAliasTypes; // lazy init
+
private final boolean derived;
private FacetHolder holder;
@@ -53,14 +58,21 @@ public abstract class FacetAbstract implements Facet, MetaModelContext.Delegatin
private IdentifiedHolder identifiedHolder;
public FacetAbstract(
- final Class<? extends Facet> facetType,
- final FacetHolder holder,
- final Derivation derivation) {
+ Class<? extends Facet> facetType,
+ FacetHolder holder,
+ Derivation derivation) {
this.facetType = requires(facetType, "facetType");
setFacetHolder(holder);
this.derived = (derivation == Derivation.DERIVED);
}
+
+ protected FacetAbstract(
+ Class<? extends Facet> facetType,
+ FacetHolder holder) {
+
+ this(facetType, holder, Derivation.NOT_DERIVED);
+ }
@Override
public final Class<? extends Facet> facetType() {
@@ -99,13 +111,13 @@ public abstract class FacetAbstract implements Facet, MetaModelContext.Delegatin
@Override
public void setUnderlyingFacet(final Facet underlyingFacet) {
if(underlyingFacet != null) {
- if(underlyingFacet instanceof MultiTypedFacet) {
- val multiTypedFacet = (MultiTypedFacet) underlyingFacet;
- val matches = compatible(multiTypedFacet);
- if(!matches) {
- throw new IllegalArgumentException("illegal argument, expected underlying facet (a multi-valued facet) to have equivalent to the facet type (or facet types) of this facet");
- }
- } else {
+// if(underlyingFacet instanceof MultiTypedFacet) {
+// val multiTypedFacet = (MultiTypedFacet) underlyingFacet;
+// val matches = compatible(multiTypedFacet);
+// if(!matches) {
+// throw new IllegalArgumentException("illegal argument, expected underlying facet (a multi-valued facet) to have equivalent to the facet type (or facet types) of this facet");
+// }
+// } else {
val underlyingFacetType = underlyingFacet.facetType();
if(!Objects.equals(underlyingFacetType, facetType)) {
@@ -116,22 +128,22 @@ public abstract class FacetAbstract implements Facet, MetaModelContext.Delegatin
throw _Exceptions.unrecoverable(msg);
}
- }
+ // }
}
this.underlyingFacet = underlyingFacet;
}
- private boolean compatible(final MultiTypedFacet multiTypedFacet) {
-
- if (!(this instanceof MultiTypedFacet)) {
- return multiTypedFacet.containsFacetTypeOf(this.facetType);
- }
-
- val thisAsMultiTyped = (MultiTypedFacet) this;
-
- return thisAsMultiTyped.facetTypes()
- .anyMatch(multiTypedFacet::containsFacetTypeOf);
- }
+// private boolean compatible(final MultiTypedFacet multiTypedFacet) {
+//
+// if (!(this instanceof MultiTypedFacet)) {
+// return multiTypedFacet.containsFacetTypeOf(this.facetType);
+// }
+//
+// val thisAsMultiTyped = (MultiTypedFacet) this;
+//
+// return thisAsMultiTyped.facetTypes()
+// .anyMatch(multiTypedFacet::containsFacetTypeOf);
+// }
/**
* Assume implementation is <i>not</i> a no-op.
@@ -247,5 +259,32 @@ public abstract class FacetAbstract implements Facet, MetaModelContext.Delegatin
public static interface Validating {
}
+ // -- FACET ALIAS SUPPORT
+
+ @Override
+ public void addAlias(Class<? extends Facet> alias) {
+ if(facetAliasTypes==null) {
+ facetAliasTypes = _Sets.newHashSet();
+ }
+ facetAliasTypes.add(alias);
+ }
+
+ @Override
+ public void forEachAlias(Consumer<Class<? extends Facet>> onAlias) {
+ if(facetAliasTypes!=null) {
+ facetAliasTypes.forEach(onAlias);
+ }
+ }
+
+ @Override
+ public boolean hasAlias(Class<? extends Facet> alias) {
+ if(facetAliasTypes==null) {
+ return false;
+ }
+ return facetAliasTypes.contains(alias);
+ }
+
+
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolder.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolder.java
index 031eb5e..02f56e1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolder.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolder.java
@@ -23,6 +23,8 @@ import java.util.stream.Stream;
import org.apache.isis.metamodel.MetaModelContext;
+import lombok.val;
+
/**
* Anything in the metamodel (which also includes peers in the reflector) that
* can be extended.
@@ -50,13 +52,19 @@ public interface FacetHolder {
* Convenience; saves having to {@link #getFacet(Class)} and then check if
* <tt>null</tt> and not a no-op.
*/
- boolean containsDoOpFacet(Class<? extends Facet> facetType);
+ default boolean containsDoOpFacet(Class<? extends Facet> facetType) {
+ val facet = getFacet(facetType);
+ return facet != null && !facet.isNoop();
+ }
/**
* As {@link #containsDoOpFacet(Class)}, which additional requirement that the
* facet is not {@link Facet#isDerived()}.
*/
- boolean containsDoOpNotDerivedFacet(Class<? extends Facet> facetType);
+ default boolean containsDoOpNotDerivedFacet(Class<? extends Facet> facetType) {
+ val facet = getFacet(facetType);
+ return facet != null && !facet.isNoop() && !facet.isDerived();
+ }
Stream<Facet> streamFacets();
@@ -72,33 +80,66 @@ public interface FacetHolder {
void addFacet(Facet facet);
/**
- * Adds the {@link MultiTypedFacet multi-typed facet}, extracting each of
- * its {@link MultiTypedFacet#facetTypes() types} as keys.
- *
- * <p>
- * If there are any facet of the same type, they will be overwritten
- * <i>provided</i> that either the {@link Facet} specifies to
- * {@link Facet#alwaysReplace() always replace} or if the existing
- * {@link Facet} is a {@link Facet#isNoop() no-op}.
- */
- void addMultiTypedFacet(MultiTypedFacet facet);
-
- /**
- * Remove the facet whose type is that reported by {@link Facet#facetType()}
- * .
+ * Replaces any existing facet with the given one, while copying any underlying
+ * facet from the existing to the given one.
+ *
+ * @param facet
+ * @since 2.0
*/
- void removeFacet(Facet facet);
-
+ void addOrReplaceFacet(Facet facet);
+
/**
- * Remove the facet of the specified type.
+ *
+ * @since 2.0
*/
- void removeFacet(Class<? extends Facet> facetType);
-
+ MetaModelContext getMetaModelContext();
/**
- *
+ * For those that implement through delegation.
* @since 2.0
+ *
*/
- MetaModelContext getMetaModelContext();
+ public static interface Delegating extends FacetHolder {
+
+ FacetHolder getFacetHolder();
+
+ @Override
+ default public int getFacetCount() {
+ return getFacetHolder().getFacetCount();
+ }
+
+ @Override
+ default public <T extends Facet> T getFacet(Class<T> cls) {
+ return getFacetHolder().getFacet(cls);
+ }
+
+ @Override
+ default public boolean containsFacet(Class<? extends Facet> facetType) {
+ return getFacetHolder().containsFacet(facetType);
+ }
+
+ @Override
+ default public Stream<Facet> streamFacets() {
+ return getFacetHolder().streamFacets();
+ }
+
+ @Override
+ default public void addFacet(Facet facet) {
+ getFacetHolder().addFacet(facet);
+ }
+
+ @Override
+ default public void addOrReplaceFacet(Facet facet) {
+ getFacetHolder().addOrReplaceFacet(facet);
+ }
+
+ @Override
+ default public MetaModelContext getMetaModelContext() {
+ return getFacetHolder().getMetaModelContext();
+ }
+
+
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolderImpl.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolderImpl.java
index 82e4447..5a3ea55 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolderImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetHolderImpl.java
@@ -20,9 +20,13 @@
package org.apache.isis.metamodel.facetapi;
import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Stream;
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.commons.internal.collections._Sets;
import org.apache.isis.metamodel.MetaModelContext;
import org.apache.isis.metamodel.MetaModelContextAware;
@@ -30,6 +34,7 @@ import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
import lombok.Getter;
import lombok.Setter;
+import lombok.val;
/**
* For base subclasses or, more likely, to help write tests.
@@ -40,66 +45,61 @@ public class FacetHolderImpl implements FacetHolder, MetaModelContextAware {
private MetaModelContext metaModelContext;
private final Map<Class<? extends Facet>, Facet> facetsByClass = new ConcurrentHashMap<>();
+ private final _Lazy<Set<Facet>> snapshot = _Lazy.threadSafe(this::snapshot);
- @Override
- public boolean containsFacet(final Class<? extends Facet> facetType) {
- return facetsByClass.containsKey(facetType);
+ private Set<Facet> snapshot() {
+ val snapshot = _Sets.<Facet>newHashSet();
+ facetsByClass.values().forEach(snapshot::add);
+ return snapshot;
}
-
- @Override
- public boolean containsDoOpFacet(final Class<? extends Facet> facetType) {
- final Facet facet = getFacet(facetType);
- return facet != null && !facet.isNoop();
- }
-
+
@Override
- public boolean containsDoOpNotDerivedFacet(final Class<? extends Facet> facetType) {
- final Facet facet = getFacet(facetType);
- return facet != null && !facet.isNoop() && !facet.isDerived();
+ public boolean containsFacet(Class<? extends Facet> facetType) {
+ return facetsByClass.containsKey(facetType);
}
@Override
- public void addFacet(final Facet facet) {
+ public void addFacet(Facet facet) {
addFacet(facet.facetType(), facet);
}
@Override
- public void addMultiTypedFacet(final MultiTypedFacet mtFacet) {
- mtFacet.facetTypes()
- .forEach(facetType->addFacet(facetType, mtFacet.getFacet(facetType)));
- }
-
- @Override
- public void removeFacet(final Facet facet) {
- FacetUtil.removeFacet(facetsByClass, facet);
- }
-
- @Override
- public void removeFacet(final Class<? extends Facet> facetType) {
- FacetUtil.removeFacet(facetsByClass, facetType);
- }
-
- @Override
- public <T extends Facet> T getFacet(final Class<T> facetType) {
+ public <T extends Facet> T getFacet(Class<T> facetType) {
return uncheckedCast(facetsByClass.get(facetType));
}
@Override
public Stream<Facet> streamFacets() {
- return facetsByClass.values()
- .stream()
- .distinct();
+ synchronized(snapshot) {
+ return snapshot.get().stream(); // consumers should play nice and don't take too long
+ }
}
@Override
public int getFacetCount() {
- return facetsByClass.size();
+ synchronized(snapshot) {
+ return snapshot.get().size();
+ }
+ }
+
+ @Override
+ public void addOrReplaceFacet(Facet facet) {
+
+ Optional.ofNullable(getFacet(facet.facetType()))
+ .filter(each -> facet.getClass() == each.getClass())
+ .ifPresent(existingFacet -> {
+ remove(existingFacet);
+ val underlyingFacet = existingFacet.getUnderlyingFacet();
+ facet.setUnderlyingFacet(underlyingFacet);
+ } );
+
+ addFacet(facet);
}
// -- HELPER
- private void addFacet(final Class<? extends Facet> facetType, final Facet facet) {
- final Facet existingFacet = getFacet(facetType);
+ private void addFacet(Class<? extends Facet> facetType, Facet facet) {
+ val existingFacet = getFacet(facetType);
if (existingFacet == null || existingFacet.isNoop()) {
put(facetType, facet);
return;
@@ -114,8 +114,27 @@ public class FacetHolderImpl implements FacetHolder, MetaModelContextAware {
put(facetType, facet);
}
- private void put(final Class<? extends Facet> facetType, final Facet facet) {
- facetsByClass.put(facetType, facet);
+ private void put(Class<? extends Facet> facetType, Facet facet) {
+ synchronized(snapshot) {
+ snapshot.clear();
+ facetsByClass.put(facetType, facet);
+ facet.forEachAlias(aliasType->facetsByClass.put(aliasType, facet));
+ }
+ }
+
+ private void remove(Facet facet) {
+ synchronized(snapshot) {
+ snapshot.clear();
+ facetsByClass.remove(facet.facetType());
+ // for all the registered aliases that point to the given facet, remove ...
+ facet.forEachAlias(aliasType->{
+ val aliasFor = facetsByClass.get(aliasType);
+ if(facet == aliasFor) {
+ facetsByClass.remove(aliasType);
+ }
+ });
+ }
}
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetUtil.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetUtil.java
index 971aab4..e4d4edb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/FacetUtil.java
@@ -20,34 +20,24 @@
package org.apache.isis.metamodel.facetapi;
import java.util.List;
-import java.util.Map;
-import java.util.Optional;
import java.util.function.BiConsumer;
import org.apache.isis.metamodel.util.snapshot.XmlSchema.ExtensionData;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
import lombok.val;
-
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class FacetUtil {
- private FacetUtil() {
- }
public static void addOrReplaceFacet(final Facet facet) {
if (facet == null) {
return;
}
val facetHolder = facet.getFacetHolder();
-
- Optional.ofNullable(facetHolder.getFacet(facet.facetType()))
- .filter(each -> facet.getClass() == each.getClass())
- .ifPresent(existingFacet -> {
- val underlyingFacet = existingFacet.getUnderlyingFacet();
- facetHolder.removeFacet(existingFacet);
- facet.setUnderlyingFacet(underlyingFacet);
- } );
- facetHolder.addFacet(facet);
+ facetHolder.addOrReplaceFacet(facet);
}
/**
@@ -65,14 +55,6 @@ public final class FacetUtil {
return true;
}
- public static boolean addMultiTypedFacet(final MultiTypedFacet facet) {
- if (facet == null) {
- return false;
- }
- facet.getFacetHolder().addMultiTypedFacet(facet);
- return true;
- }
-
/**
* Attaches each {@link Facet} to its {@link Facet#getFacetHolder() facet
* holder}.
@@ -81,29 +63,12 @@ public final class FacetUtil {
*/
public static boolean addFacets(final List<Facet> facetList) {
boolean addedFacets = false;
- for (final Facet facet : facetList) {
+ for (val facet : facetList) {
addedFacets = addFacet(facet) | addedFacets;
}
return addedFacets;
}
- public static void removeFacet(final Map<Class<? extends Facet>, Facet> facetsByClass, final Facet facet) {
- removeFacet(facetsByClass, facet.facetType());
- }
-
- public static void removeFacet(final Map<Class<? extends Facet>, Facet> facetsByClass, final Class<? extends Facet> facetType) {
- final Facet facet = facetsByClass.get(facetType);
- if (facet == null) {
- return;
- }
- facetsByClass.remove(facetType);
- facet.setFacetHolder(null);
- }
-
- public static void addFacet(final Map<Class<? extends Facet>, Facet> facetsByClass, final Facet facet) {
- facetsByClass.put(facet.facetType(), facet);
- }
-
public static <T extends Facet> ExtensionData<T> getFacetsByType(final FacetHolder facetHolder) {
return new ExtensionData<T>() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/MultiTypedFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/MultiTypedFacet.java
deleted file mode 100644
index 639d8a4..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facetapi/MultiTypedFacet.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.metamodel.facetapi;
-
-import java.util.stream.Stream;
-
-/**
- * A Class that provides multiple facet implementations, either directly or
- * through a delegate.
- *
- * <p>
- * The client of this interface should use {@link #getFacet(Class)} to obtain
- * the facet implementation for each of the {@link #facetTypes() facets types}.
- */
-public interface MultiTypedFacet extends Facet {
-
- /**
- * All of the facet types either implemented or available by this facet
- * implementation.
- *
- */
- public Stream<Class<? extends Facet>> facetTypes();
-
- public <T extends Facet> T getFacet(Class<T> facet);
-
- boolean containsFacetTypeOf(Class<? extends Facet> facetType);
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
index 69c0dbf..f93aa6f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/FacetFactoryAbstract.java
@@ -27,7 +27,6 @@ import org.apache.isis.metamodel.MetaModelContextAware;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetUtil;
import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facetapi.MultiTypedFacet;
import lombok.Getter;
import lombok.Setter;
@@ -67,11 +66,6 @@ implements FacetFactory, MetaModelContextAware, MetaModelContext.Delegating {
FacetUtil.addFacet(facet);
}
- public void addFacet(final MultiTypedFacet facet) {
- FacetUtil.addMultiTypedFacet(facet);
- }
-
-
// -- METHOD UTILITITES
protected static final Class<?>[] NO_PARAMETERS_TYPES = new Class<?>[0];
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MarkerFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MarkerFacet.java
deleted file mode 100644
index b37e2dc..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MarkerFacet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.metamodel.facets;
-
-import org.apache.isis.metamodel.facetapi.Facet;
-
-public interface MarkerFacet extends Facet {
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MarkerFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MarkerFacetAbstract.java
deleted file mode 100644
index c817779..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MarkerFacetAbstract.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.metamodel.facets;
-
-import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetAbstract;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
-
-public abstract class MarkerFacetAbstract extends FacetAbstract implements MarkerFacet {
-
- public MarkerFacetAbstract(final Class<? extends Facet> facetType, final FacetHolder holder) {
- super(facetType, holder, Derivation.NOT_DERIVED);
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MultipleValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MultipleValueFacetAbstract.java
deleted file mode 100644
index 82b3850..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/MultipleValueFacetAbstract.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.metamodel.facets;
-
-import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetAbstract;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
-
-public abstract class MultipleValueFacetAbstract extends FacetAbstract implements MultipleValueFacet {
-
- public MultipleValueFacetAbstract(final Class<? extends Facet> facetType, final FacetHolder holder) {
- super(facetType, holder, Derivation.NOT_DERIVED);
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/command/CommandFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/command/CommandFacetAbstract.java
index 84dcf44..86adae9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/command/CommandFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/command/CommandFacetAbstract.java
@@ -26,10 +26,10 @@ import org.apache.isis.applib.annotation.CommandPersistence;
import org.apache.isis.applib.services.command.CommandDtoProcessor;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class CommandFacetAbstract extends MarkerFacetAbstract implements CommandFacet {
+public abstract class CommandFacetAbstract extends FacetAbstract implements CommandFacet {
public static Class<? extends Facet> type() {
return CommandFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/HomePageFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/HomePageFacet.java
index 2086b24..bc09fc5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/HomePageFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/HomePageFacet.java
@@ -19,7 +19,7 @@
package org.apache.isis.metamodel.facets.actions.homepage;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* Indicates that the (no-arg) action (on a domain service) to be invoked automatically
@@ -29,6 +29,6 @@ import org.apache.isis.metamodel.facets.MarkerFacet;
* In the standard Apache Isis Programming Model, typically corresponds to
* applying the <tt>@HomePage</tt> annotation at the class level.
*/
-public interface HomePageFacet extends MarkerFacet {
+public interface HomePageFacet extends Facet {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/HomePageFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/HomePageFacetAbstract.java
index 27c8f7c..bc1261d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/HomePageFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/homepage/HomePageFacetAbstract.java
@@ -20,10 +20,10 @@
package org.apache.isis.metamodel.facets.actions.homepage;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class HomePageFacetAbstract extends MarkerFacetAbstract implements HomePageFacet {
+public abstract class HomePageFacetAbstract extends FacetAbstract implements HomePageFacet {
public static Class<? extends Facet> type() {
return HomePageFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
index 01ec38e..73dd3c6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/prototype/PrototypeFacetAbstract.java
@@ -24,11 +24,11 @@ import java.util.Map;
import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
import org.apache.isis.commons.internal.environment.DeploymentType;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
import org.apache.isis.metamodel.interactions.VisibilityContext;
-public abstract class PrototypeFacetAbstract extends MarkerFacetAbstract implements PrototypeFacet {
+public abstract class PrototypeFacetAbstract extends FacetAbstract implements PrototypeFacet {
private final DeploymentType deploymentType;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/publish/PublishedActionFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/publish/PublishedActionFacet.java
index dc59caa..08daf32 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/publish/PublishedActionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/publish/PublishedActionFacet.java
@@ -19,12 +19,12 @@
package org.apache.isis.metamodel.facets.actions.publish;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* Indicates that the invocation of action should be published, specifying the means by which a
* canonical event representing this invocation should be created.
*/
-public interface PublishedActionFacet extends MarkerFacet {
+public interface PublishedActionFacet extends Facet {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/publish/PublishedActionFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/publish/PublishedActionFacetAbstract.java
index a63ac28..ddb3092 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/publish/PublishedActionFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/actions/publish/PublishedActionFacetAbstract.java
@@ -20,10 +20,10 @@
package org.apache.isis.metamodel.facets.actions.publish;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class PublishedActionFacetAbstract extends MarkerFacetAbstract implements PublishedActionFacet {
+public abstract class PublishedActionFacetAbstract extends FacetAbstract implements PublishedActionFacet {
public static Class<? extends Facet> type() {
return PublishedActionFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/deficiencies/DeficiencyFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/deficiencies/DeficiencyFacet.java
index 5cd3d07..8c2e506 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/deficiencies/DeficiencyFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/deficiencies/DeficiencyFacet.java
@@ -22,6 +22,7 @@ package org.apache.isis.metamodel.facets.all.deficiencies;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.function.Consumer;
import org.apache.isis.applib.Identifier;
import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -114,5 +115,20 @@ public final class DeficiencyFacet implements Facet {
throw _Exceptions.unsupportedOperation();
}
+ @Override
+ public void addAlias(Class<? extends Facet> alias) {
+ throw _Exceptions.unsupportedOperation();
+ }
+
+ @Override
+ public void forEachAlias(Consumer<Class<? extends Facet>> onAlias) {
+ throw _Exceptions.unsupportedOperation();
+ }
+
+ @Override
+ public boolean hasAlias(Class<? extends Facet> alias) {
+ return false;
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/hide/HiddenFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/hide/HiddenFacet.java
index 7ed577a..09ff099 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/hide/HiddenFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/hide/HiddenFacet.java
@@ -19,14 +19,13 @@
package org.apache.isis.metamodel.facets.all.hide;
-import org.apache.isis.metamodel.facetapi.MultiTypedFacet;
import org.apache.isis.metamodel.facets.WhereValueFacet;
import org.apache.isis.metamodel.interactions.HidingInteractionAdvisor;
/**
* Hide a property, collection or action.
*/
-public interface HiddenFacet extends WhereValueFacet, HidingInteractionAdvisor, MultiTypedFacet {
+public interface HiddenFacet extends WhereValueFacet, HidingInteractionAdvisor {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/named/NamedFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/named/NamedFacet.java
index 576faa5..96a498b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/named/NamedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/named/NamedFacet.java
@@ -19,7 +19,7 @@
package org.apache.isis.metamodel.facets.all.named;
-import org.apache.isis.metamodel.facets.MultipleValueFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* The name of a class, a property, collection, an action or a parameter.
@@ -28,7 +28,7 @@ import org.apache.isis.metamodel.facets.MultipleValueFacet;
* In the standard Apache Isis Programming Model, corresponds to annotating the
* member with <tt>@Named</tt>.
*/
-public interface NamedFacet extends MultipleValueFacet {
+public interface NamedFacet extends Facet {
/**
* @return The name to use as a label for a collection, a property or a parameter
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/named/NamedFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/named/NamedFacetAbstract.java
index 1dbe43d..c2219d8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/named/NamedFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/all/named/NamedFacetAbstract.java
@@ -22,10 +22,10 @@ package org.apache.isis.metamodel.facets.all.named;
import java.util.Map;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MultipleValueFacetAbstract;
-public abstract class NamedFacetAbstract extends MultipleValueFacetAbstract implements NamedFacet {
+public abstract class NamedFacetAbstract extends FacetAbstract implements NamedFacet {
private final String value;
private final boolean escaped;
@@ -34,8 +34,8 @@ public abstract class NamedFacetAbstract extends MultipleValueFacetAbstract impl
return NamedFacet.class;
}
- public NamedFacetAbstract(final String value, final boolean escaped, final FacetHolder holder) {
- super(type(), holder);
+ public NamedFacetAbstract(String value, boolean escaped, FacetHolder holder) {
+ super(type(), holder, Derivation.NOT_DERIVED);
this.value = value;
this.escaped = escaped;
@@ -51,7 +51,7 @@ public abstract class NamedFacetAbstract extends MultipleValueFacetAbstract impl
return escaped;
}
- @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
+ @Override public void appendAttributesTo(Map<String, Object> attributeMap) {
super.appendAttributesTo(attributeMap);
attributeMap.put("value", value);
attributeMap.put("escaped", escaped);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/parented/ParentedCollectionFacetDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/parented/ParentedCollectionFacetDefault.java
index b724b7f..02f8e62 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/parented/ParentedCollectionFacetDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/collections/parented/ParentedCollectionFacetDefault.java
@@ -20,11 +20,11 @@
package org.apache.isis.metamodel.facets.collections.parented;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
import org.apache.isis.metamodel.facets.object.parented.ParentedCollectionFacet;
-public class ParentedCollectionFacetDefault extends MarkerFacetAbstract implements ParentedCollectionFacet {
+public class ParentedCollectionFacetDefault extends FacetAbstract implements ParentedCollectionFacet {
public static Class<? extends Facet> type() {
return ParentedCollectionFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/HiddenFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/HiddenFacetAbstract.java
index 87c1a4b..f49a45f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/HiddenFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/hidden/HiddenFacetAbstract.java
@@ -20,7 +20,6 @@
package org.apache.isis.metamodel.facets.members.hidden;
import java.util.function.Predicate;
-import java.util.stream.Stream;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
@@ -31,8 +30,6 @@ import org.apache.isis.metamodel.facets.all.hide.HiddenFacet;
import org.apache.isis.metamodel.interactions.VisibilityContext;
import org.apache.isis.metamodel.spec.ManagedObject;
-import static org.apache.isis.commons.internal.base._Casts.uncheckedCast;
-
/**
* This implements {@link org.apache.isis.metamodel.facetapi.MultiTypedFacet} so that each concrete implementation
* is added to the eventual {@link org.apache.isis.metamodel.facetapi.FacetHolder} twice: once under
@@ -57,6 +54,7 @@ public abstract class HiddenFacetAbstract extends WhereValueFacetAbstract implem
Where where,
final FacetHolder holder) {
super(facetType, holder, where);
+ super.addAlias(HiddenFacet.class);
}
/**
@@ -64,6 +62,7 @@ public abstract class HiddenFacetAbstract extends WhereValueFacetAbstract implem
*/
public HiddenFacetAbstract(Where where, final FacetHolder holder) {
super(HiddenFacetAbstract.class, holder, where);
+ super.addAlias(HiddenFacet.class);
}
@Override
@@ -77,21 +76,5 @@ public abstract class HiddenFacetAbstract extends WhereValueFacetAbstract implem
*/
protected abstract String hiddenReason(ManagedObject target, Where whereContext);
- @Override
- public Stream<Class<? extends Facet>> facetTypes() {
- return Stream.of(facetType(), HiddenFacet.class);
- }
-
- @Override
- public <T extends Facet> T getFacet(final Class<T> facet) {
- return uncheckedCast(this);
- }
-
- @Override
- public boolean containsFacetTypeOf(final Class<? extends Facet> requiredFacetType) {
- return facetTypes()
- .anyMatch(facetType->facetType == requiredFacetType);
- }
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/order/MemberOrderFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/order/MemberOrderFacetAbstract.java
index 633cba9..241b9e7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/order/MemberOrderFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/order/MemberOrderFacetAbstract.java
@@ -24,11 +24,11 @@ import java.util.Map;
import org.apache.isis.applib.services.i18n.TranslationService;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.IdentifiedHolder;
-import org.apache.isis.metamodel.facets.MultipleValueFacetAbstract;
-public abstract class MemberOrderFacetAbstract extends MultipleValueFacetAbstract implements MemberOrderFacet {
+public abstract class MemberOrderFacetAbstract extends FacetAbstract implements MemberOrderFacet {
public static Class<? extends Facet> type() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacet.java
deleted file mode 100644
index e0c14e5..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacet.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.metamodel.facets.object.cached;
-
-import org.apache.isis.metamodel.facets.MarkerFacet;
-
-/**
- * Whether the instances of this class are cached.
- *
- * <p>
- * In the standard Apache Isis Programming Model, corresponds to annotating the
- * member with <tt>@Cached</tt>.
- *
- * <p>
- * Cached does not necessarily imply immutable. The idea though is that the
- * developer is indicating that the performance cost of obtaining all instances
- * of an instance is low; viewer implementations might be able to exploit this
- * information.
- *
- * <p>
- * Not yet implemented by any viewer.
- */
-public interface CachedFacet extends MarkerFacet {
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacetAbstract.java
deleted file mode 100644
index 869cb6f..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacetAbstract.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.metamodel.facets.object.cached;
-
-import org.apache.isis.metamodel.facetapi.Facet;
-import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-
-public abstract class CachedFacetAbstract extends MarkerFacetAbstract implements CachedFacet {
-
- public static Class<? extends Facet> type() {
- return CachedFacet.class;
- }
-
- public CachedFacetAbstract(final FacetHolder holder) {
- super(type(), holder);
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacetUtils.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacetUtils.java
deleted file mode 100644
index 0066dfe..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/cached/CachedFacetUtils.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.metamodel.facets.object.cached;
-
-import org.apache.isis.metamodel.spec.ObjectSpecification;
-
-public class CachedFacetUtils {
-
- private CachedFacetUtils() {
- }
-
- public static boolean isCached(final ObjectSpecification specification) {
- return specification.getFacet(CachedFacet.class) != null;
- }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/defaults/DefaultedFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/defaults/DefaultedFacet.java
index 6b77ea6..b92c0df 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/defaults/DefaultedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/defaults/DefaultedFacet.java
@@ -20,7 +20,7 @@
package org.apache.isis.metamodel.facets.object.defaults;
import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet;
import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet;
@@ -36,7 +36,7 @@ import org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet
* {@link PropertyDefaultFacet} and {@link ActionDefaultsFacet} from the
* method's return type / parameter types, and copy over.
*/
-public interface DefaultedFacet extends MarkerFacet {
+public interface DefaultedFacet extends Facet {
/**
* The default (as a pojo, not a {@link ObjectAdapter}).
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/entity/EntityFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/entity/EntityFacet.java
index 2336d2d..830e945 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/entity/EntityFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/entity/EntityFacet.java
@@ -19,13 +19,13 @@
package org.apache.isis.metamodel.facets.object.entity;
-import org.apache.isis.metamodel.facetapi.MultiTypedFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* Indicates that this class is managed by a persistence context.
* @since 2.0
*/
-public interface EntityFacet extends MultiTypedFacet {
+public interface EntityFacet extends Facet {
String identifierFor(Object pojo);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/objectvalidprops/impl/ObjectValidPropertiesFacetImpl.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/objectvalidprops/impl/ObjectValidPropertiesFacetImpl.java
index be11b45..e06740f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/objectvalidprops/impl/ObjectValidPropertiesFacetImpl.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/objectvalidprops/impl/ObjectValidPropertiesFacetImpl.java
@@ -53,7 +53,7 @@ public class ObjectValidPropertiesFacetImpl extends ObjectValidPropertiesFacetAb
.filter(property->property.isUsable(adapter, context.getInitiatedBy(), where).isVetoed()) // ignore disabled properties
.forEach(property->{
final OneToOneAssociation otoa = (OneToOneAssociation) property;
- final ManagedObject value = otoa.get2(adapter, context.getInitiatedBy());
+ final ManagedObject value = otoa.get(adapter, context.getInitiatedBy());
if (otoa.isAssociationValid(adapter, value, context.getInitiatedBy()).isVetoed()) {
if (buf.length() > 0) {
buf.append(", ");
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parented/ParentedCollectionFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parented/ParentedCollectionFacet.java
index e80fb50..8aa602d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parented/ParentedCollectionFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parented/ParentedCollectionFacet.java
@@ -22,7 +22,7 @@ package org.apache.isis.metamodel.facets.object.parented;
import java.util.List;
import java.util.Set;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* Indicates that this class is parented, that is, wholly contained within a
@@ -35,6 +35,6 @@ import org.apache.isis.metamodel.facets.MarkerFacet;
* Internal collections are the {@link List}s, {@link Set}s etc that hold references to
* other root entities.
*/
-public interface ParentedCollectionFacet extends MarkerFacet {
+public interface ParentedCollectionFacet extends Facet {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parented/ParentedCollectionFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parented/ParentedCollectionFacetAbstract.java
index 47fb792..37bb554 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parented/ParentedCollectionFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/parented/ParentedCollectionFacetAbstract.java
@@ -20,10 +20,10 @@
package org.apache.isis.metamodel.facets.object.parented;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class ParentedCollectionFacetAbstract extends MarkerFacetAbstract implements ParentedCollectionFacet {
+public abstract class ParentedCollectionFacetAbstract extends FacetAbstract implements ParentedCollectionFacet {
public static Class<? extends Facet> type() {
return ParentedCollectionFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/publishedobject/PublishedObjectFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/publishedobject/PublishedObjectFacet.java
index 774f9ee..c79680d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/publishedobject/PublishedObjectFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/publishedobject/PublishedObjectFacet.java
@@ -19,12 +19,12 @@
package org.apache.isis.metamodel.facets.object.publishedobject;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* Indicates that changes to an object's properties are to be published has, specifying the means by which
* a canonical event representing these changes should be created.
*/
-public interface PublishedObjectFacet extends MarkerFacet {
+public interface PublishedObjectFacet extends Facet {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/publishedobject/PublishedObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/publishedobject/PublishedObjectFacetAbstract.java
index cd08b33..4a07715 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/publishedobject/PublishedObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/publishedobject/PublishedObjectFacetAbstract.java
@@ -20,10 +20,10 @@
package org.apache.isis.metamodel.facets.object.publishedobject;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class PublishedObjectFacetAbstract extends MarkerFacetAbstract implements PublishedObjectFacet {
+public abstract class PublishedObjectFacetAbstract extends FacetAbstract implements PublishedObjectFacet {
public static Class<? extends Facet> type() {
return PublishedObjectFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
index e519131..c31d7da 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetAbstract.java
@@ -25,13 +25,13 @@ import java.util.Map;
import org.apache.isis.applib.ViewModel;
import org.apache.isis.metamodel.commons.MethodExtensions;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
import org.apache.isis.metamodel.facets.PostConstructMethodCache;
import org.apache.isis.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault;
-public abstract class RecreatableObjectFacetAbstract extends MarkerFacetAbstract implements ViewModelFacet {
+public abstract class RecreatableObjectFacetAbstract extends FacetAbstract implements ViewModelFacet {
private final PostConstructMethodCache postConstructMethodCache;
private final ViewModelFacet.RecreationMechanism recreationMechanism;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
index 3d40258..adbf342 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/recreatable/RecreatableObjectFacetDeclarativeInitializingAbstract.java
@@ -109,7 +109,7 @@ extends RecreatableObjectFacetAbstract {
.filter(property->!property.isNotPersisted())
.forEach(property->{
final ManagedObject propertyValue =
- property.get2(ownerAdapter, InteractionInitiatedBy.FRAMEWORK);
+ property.get(ownerAdapter, InteractionInitiatedBy.FRAMEWORK);
if(propertyValue != null) {
memento.put(property.getId(), propertyValue.getPojo());
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/EqualByContentFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/EqualByContentFacet.java
index 9cc30ad..2966387 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/EqualByContentFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/EqualByContentFacet.java
@@ -19,19 +19,15 @@
package org.apache.isis.metamodel.facets.object.value;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facets.object.immutable.ImmutableFacet;
/**
* Indicates that the instances of this class are equal-by-content.
*
- * <p>
- * In the standard Apache Isis Programming Model, typically corresponds to
- * applying the <tt>@EqualByContent</tt> annotation at the class level.
- *
* @see ImmutableFacet
* @see ValueFacet
*/
-public interface EqualByContentFacet extends MarkerFacet {
+public interface EqualByContentFacet extends Facet {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/EqualByContentFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/EqualByContentFacetAbstract.java
index dc93487..48d1e2b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/EqualByContentFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/EqualByContentFacetAbstract.java
@@ -20,10 +20,10 @@
package org.apache.isis.metamodel.facets.object.value;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class EqualByContentFacetAbstract extends MarkerFacetAbstract implements EqualByContentFacet {
+public abstract class EqualByContentFacetAbstract extends FacetAbstract implements EqualByContentFacet {
public static Class<? extends Facet> type() {
return EqualByContentFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacet.java
index 25424f6..9c34a62 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacet.java
@@ -19,8 +19,7 @@
package org.apache.isis.metamodel.facets.object.value;
-import org.apache.isis.metamodel.facetapi.MultiTypedFacet;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* Indicates that this class has value semantics.
@@ -31,6 +30,6 @@ import org.apache.isis.metamodel.facets.MarkerFacet;
* convenient term for a number of mostly optional semantics all of which are
* defined elsewhere.
*/
-public interface ValueFacet extends MarkerFacet, MultiTypedFacet {
+public interface ValueFacet extends Facet {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacetAbstract.java
index a820955..88907a5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacetAbstract.java
@@ -19,23 +19,22 @@
package org.apache.isis.metamodel.facets.object.value;
-import java.util.stream.Stream;
-
import org.apache.isis.applib.adapters.DefaultsProvider;
import org.apache.isis.applib.adapters.EncoderDecoder;
import org.apache.isis.applib.adapters.Parser;
import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.metamodel.commons.ClassExtensions;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facetapi.FacetHolderImpl;
-import org.apache.isis.metamodel.facets.MultipleValueFacetAbstract;
import org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;
import org.apache.isis.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder;
import org.apache.isis.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser;
import org.apache.isis.metamodel.facets.object.title.parser.TitleFacetUsingParser;
-public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract implements ValueFacet {
+import lombok.val;
+
+public abstract class ValueFacetAbstract extends FacetAbstract implements ValueFacet {
public static Class<? extends Facet> type() {
return ValueFacet.class;
@@ -51,9 +50,6 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
new Class<?>[] { FacetHolder.class/*, ServiceInjector.class*/ }, new Object[] { holder });
}
- // to look after the facets (since MultiTyped)
- private final FacetHolder facetHolder = new FacetHolderImpl();
-
private final ValueSemanticsProvider<?> semanticsProvider;
public enum AddFacetsIfInvalidStrategy {
@@ -82,7 +78,7 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
final AddFacetsIfInvalidStrategy addFacetsIfInvalid,
final FacetHolder holder) {
- super(type(), holder);
+ super(type(), holder, Derivation.NOT_DERIVED);
this.semanticsProvider = semanticsProvider;
@@ -102,6 +98,8 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
// but have the
// facets themselves reference this value's holder.
+ val facetHolder = super.getFacetHolder();
+
facetHolder.addFacet((Facet) this); // add just ValueFacet.class
// initially.
@@ -153,24 +151,4 @@ public abstract class ValueFacetAbstract extends MultipleValueFacetAbstract impl
return this.semanticsProvider != null;
}
- // /////////////////////////////
- // MultiTypedFacet impl
- // /////////////////////////////
-
- @Override
- public Stream<Class<? extends Facet>> facetTypes() {
- return facetHolder.streamFacets()
- .map(Facet::facetType);
- }
-
- @Override
- public <T extends Facet> T getFacet(final Class<T> facetType) {
- return facetHolder.getFacet(facetType);
- }
-
- @Override
- public boolean containsFacetTypeOf(final Class<? extends Facet> requiredFacetType) {
- return facetHolder.containsFacet(requiredFacetType);
- }
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacetSimple.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacetSimple.java
index 502f069..48280ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacetSimple.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/ValueFacetSimple.java
@@ -19,9 +19,6 @@
package org.apache.isis.metamodel.facets.object.value;
-import java.util.Arrays;
-import java.util.stream.Stream;
-
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -32,22 +29,8 @@ public class ValueFacetSimple extends FacetAbstract implements ValueFacet {
return ValueFacet.class;
}
- public ValueFacetSimple(final FacetHolder holder) {
+ public ValueFacetSimple(FacetHolder holder) {
super(type(), holder, Derivation.NOT_DERIVED);
}
- @Override
- public Stream<Class<? extends Facet>> facetTypes() {
- return Arrays.stream(new Class[]{ValueFacet.class});
- }
-
- @Override
- public <T extends Facet> T getFacet(final Class<T> facet) {
- return (T)this;
- }
-
- @Override
- public boolean containsFacetTypeOf(final Class<? extends Facet> facetType) {
- return facetType == ValueFacet.class;
- }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetAnnotation.java
index b11f480..8710c70 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetAnnotation.java
@@ -28,7 +28,40 @@ import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderU
public class ValueFacetAnnotation extends ValueFacetAbstract {
- private static String semanticsProviderName(final IsisConfiguration config, final Class<?> annotatedClass) {
+ public ValueFacetAnnotation(
+ IsisConfiguration config,
+ Class<?> annotatedClass,
+ FacetHolder holder) {
+
+ this(
+ semanticsProviderName(config, annotatedClass),
+ semanticsProviderClass(annotatedClass),
+ holder);
+ }
+
+ /**
+ * Always valid, even if the specified semanticsProviderName might have been
+ * wrong.
+ */
+ @Override
+ public boolean isValid() {
+ return true;
+ }
+
+ // -- HELPER
+
+ private ValueFacetAnnotation(
+ String candidateSemanticsProviderName,
+ Class<?> candidateSemanticsProviderClass,
+ FacetHolder holder) {
+
+ super(ValueSemanticsProviderUtil
+ .valueSemanticsProviderOrNull(candidateSemanticsProviderClass, candidateSemanticsProviderName),
+ AddFacetsIfInvalidStrategy.DO_ADD,
+ holder);
+ }
+
+ private static String semanticsProviderName(IsisConfiguration config, Class<?> annotatedClass) {
final Value annotation = annotatedClass.getAnnotation(Value.class);
final String semanticsProviderName = annotation.semanticsProviderName();
@@ -44,32 +77,5 @@ public class ValueFacetAnnotation extends ValueFacetAbstract {
return annotation.semanticsProviderClass();
}
- public ValueFacetAnnotation(
- final IsisConfiguration config,
- final Class<?> annotatedClass,
- final FacetHolder holder) {
-
- this(semanticsProviderName(config, annotatedClass),
- semanticsProviderClass(annotatedClass), holder);
- }
-
- private ValueFacetAnnotation(
- final String candidateSemanticsProviderName,
- final Class<?> candidateSemanticsProviderClass,
- final FacetHolder holder) {
-
- super(ValueSemanticsProviderUtil
- .valueSemanticsProviderOrNull(candidateSemanticsProviderClass, candidateSemanticsProviderName),
- AddFacetsIfInvalidStrategy.DO_ADD, holder);
- }
-
- /**
- * Always valid, even if the specified semanticsProviderName might have been
- * wrong.
- */
- @Override
- public boolean isValid() {
- return true;
- }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
index 30fcd9f..5073cd1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetAnnotationOrConfigurationFactory.java
@@ -75,7 +75,7 @@ public class ValueFacetAnnotationOrConfigurationFactory extends FacetFactoryAbst
@Override
public void process(final ProcessClassContext processClassContext) {
- FacetUtil.addMultiTypedFacet(create(processClassContext.getCls(), processClassContext.getFacetHolder()));
+ FacetUtil.addFacet(create(processClassContext.getCls(), processClassContext.getFacetHolder()));
}
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetFromConfiguration.java
index d3a61d5..383d24a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/annotcfg/ValueFacetFromConfiguration.java
@@ -26,8 +26,8 @@ import org.apache.isis.metamodel.facets.object.value.vsp.ValueSemanticsProviderU
public class ValueFacetFromConfiguration extends ValueFacetAbstract {
public ValueFacetFromConfiguration(
- final String candidateSemanticsProviderName,
- final FacetHolder holder) {
+ String candidateSemanticsProviderName,
+ FacetHolder holder) {
super(
ValueSemanticsProviderUtil.valueSemanticsProviderOrNull(null, candidateSemanticsProviderName),
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProvider.java
index f8f2372..070aa99 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProvider.java
@@ -27,8 +27,8 @@ import org.apache.isis.metamodel.facets.object.value.ValueFacetAbstract;
public class ValueFacetUsingSemanticsProvider extends ValueFacetAbstract {
public ValueFacetUsingSemanticsProvider(
- final ValueSemanticsProvider<?> adapter,
- final Facet underlyingValueTypeFacet) {
+ ValueSemanticsProvider<?> adapter,
+ Facet underlyingValueTypeFacet) {
super(adapter, AddFacetsIfInvalidStrategy.DO_ADD, underlyingValueTypeFacet.getFacetHolder());
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
index 1354d23..d495640 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueFacetUsingSemanticsProviderFactory.java
@@ -34,7 +34,7 @@ public abstract class ValueFacetUsingSemanticsProviderFactory<T> extends FacetFa
protected void addFacets(final ValueSemanticsProviderAndFacetAbstract<T> adapter) {
final ValueFacetUsingSemanticsProvider facet =
new ValueFacetUsingSemanticsProvider(adapter, adapter);
- FacetUtil.addMultiTypedFacet(facet);
+ FacetUtil.addFacet(facet);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/wizard/WizardFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/wizard/WizardFacetAbstract.java
index f2be2c2..fd82195 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/wizard/WizardFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/wizard/WizardFacetAbstract.java
@@ -20,10 +20,10 @@
package org.apache.isis.metamodel.facets.object.wizard;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class WizardFacetAbstract extends MarkerFacetAbstract implements WizardFacet {
+public abstract class WizardFacetAbstract extends FacetAbstract implements WizardFacet {
public static Class<? extends Facet> type() {
return WizardFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/labelat/LabelAtFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/labelat/LabelAtFacetAbstract.java
index 0eac4eb..2c50737 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/labelat/LabelAtFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/labelat/LabelAtFacetAbstract.java
@@ -23,10 +23,10 @@ import java.util.Map;
import org.apache.isis.applib.annotation.LabelPosition;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MultipleValueFacetAbstract;
-public abstract class LabelAtFacetAbstract extends MultipleValueFacetAbstract implements LabelAtFacet {
+public abstract class LabelAtFacetAbstract extends FacetAbstract implements LabelAtFacet {
public static Class<? extends Facet> type() {
return LabelAtFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/mandatory/MandatoryFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/mandatory/MandatoryFacet.java
index c77aa91..95f3f42 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/mandatory/MandatoryFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/mandatory/MandatoryFacet.java
@@ -21,7 +21,6 @@ package org.apache.isis.metamodel.facets.objectvalue.mandatory;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacet;
import org.apache.isis.metamodel.interactions.ValidatingInteractionAdvisor;
import org.apache.isis.metamodel.spec.ManagedObject;
@@ -37,7 +36,7 @@ import org.apache.isis.metamodel.spec.ManagedObject;
* In the standard Apache Isis Programming Model, specify mandatory by
* <i>omitting</i> the <tt>@Optional</tt> annotation.
*/
-public interface MandatoryFacet extends MarkerFacet, ValidatingInteractionAdvisor {
+public interface MandatoryFacet extends Facet, ValidatingInteractionAdvisor {
/**
* Whether this value is required but has not been provided (and is
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
index 6323a02..91ccd3a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java
@@ -23,10 +23,9 @@ import java.util.Map;
import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
import org.apache.isis.metamodel.facets.all.named.NamedFacet;
import org.apache.isis.metamodel.interactions.ActionArgValidityContext;
import org.apache.isis.metamodel.interactions.PropertyModifyContext;
@@ -36,7 +35,7 @@ import org.apache.isis.metamodel.spec.ManagedObject;
import lombok.val;
-public abstract class MandatoryFacetAbstract extends MarkerFacetAbstract implements MandatoryFacet {
+public abstract class MandatoryFacetAbstract extends FacetAbstract implements MandatoryFacet {
public static Class<? extends Facet> type() {
return MandatoryFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/multiline/MultiLineFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/multiline/MultiLineFacetAbstract.java
index 2dbf9b4..b363613 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/multiline/MultiLineFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/multiline/MultiLineFacetAbstract.java
@@ -22,10 +22,10 @@ package org.apache.isis.metamodel.facets.objectvalue.multiline;
import java.util.Map;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MultipleValueFacetAbstract;
-public abstract class MultiLineFacetAbstract extends MultipleValueFacetAbstract implements MultiLineFacet {
+public abstract class MultiLineFacetAbstract extends FacetAbstract implements MultiLineFacet {
public static Class<? extends Facet> type() {
return MultiLineFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
index 64aeeb9..76574aa 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/objectvalue/regex/RegExFacetAbstract.java
@@ -23,13 +23,13 @@ import javax.validation.constraints.Pattern;
import org.apache.isis.applib.services.wrapper.events.ValidityEvent;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MultipleValueFacetAbstract;
import org.apache.isis.metamodel.interactions.ProposedHolder;
import org.apache.isis.metamodel.interactions.ValidityContext;
import org.apache.isis.metamodel.spec.ManagedObject;
-public abstract class RegExFacetAbstract extends MultipleValueFacetAbstract implements RegExFacet {
+public abstract class RegExFacetAbstract extends FacetAbstract implements RegExFacet {
public static Class<? extends Facet> type() {
return RegExFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/propcoll/notpersisted/NotPersistedFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/propcoll/notpersisted/NotPersistedFacet.java
index 7e35c75..4f9c636 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/propcoll/notpersisted/NotPersistedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/propcoll/notpersisted/NotPersistedFacet.java
@@ -19,7 +19,7 @@
package org.apache.isis.metamodel.facets.propcoll.notpersisted;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* Indicates that a property or a collection shouldn't be persisted.
@@ -33,6 +33,6 @@ import org.apache.isis.metamodel.facets.MarkerFacet;
*
* @see http://mail-archives.apache.org/mod_mbox/incubator-isis-dev/201010.mbox/%3C4CB2FA43.7030206@nakedobjects.org%3E
*/
-public interface NotPersistedFacet extends MarkerFacet {
+public interface NotPersistedFacet extends Facet {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/propcoll/notpersisted/NotPersistedFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/propcoll/notpersisted/NotPersistedFacetAbstract.java
index d911497..380ddaf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/propcoll/notpersisted/NotPersistedFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/propcoll/notpersisted/NotPersistedFacetAbstract.java
@@ -20,10 +20,10 @@
package org.apache.isis.metamodel.facets.propcoll.notpersisted;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class NotPersistedFacetAbstract extends MarkerFacetAbstract implements NotPersistedFacet {
+public abstract class NotPersistedFacetAbstract extends FacetAbstract implements NotPersistedFacet {
public static Class<? extends Facet> type() {
return NotPersistedFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/publish/PublishedPropertyFacet.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/publish/PublishedPropertyFacet.java
index 6a37384..1b5261f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/publish/PublishedPropertyFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/publish/PublishedPropertyFacet.java
@@ -19,11 +19,11 @@
package org.apache.isis.metamodel.facets.properties.publish;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
* Indicates that the editing of the property should be published.
*/
-public interface PublishedPropertyFacet extends MarkerFacet {
+public interface PublishedPropertyFacet extends Facet {
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/publish/PublishedPropertyFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/publish/PublishedPropertyFacetAbstract.java
index 8fc14a4..4ba6fb0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/publish/PublishedPropertyFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/publish/PublishedPropertyFacetAbstract.java
@@ -20,10 +20,11 @@
package org.apache.isis.metamodel.facets.properties.publish;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class PublishedPropertyFacetAbstract extends MarkerFacetAbstract
+public abstract class PublishedPropertyFacetAbstract
+extends FacetAbstract
implements PublishedPropertyFacet {
public static Class<? extends Facet> type() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/searchable/SearchableFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/searchable/SearchableFacetAbstract.java
index 27ff64b..61ae5b2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/searchable/SearchableFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/properties/searchable/SearchableFacetAbstract.java
@@ -20,10 +20,10 @@
package org.apache.isis.metamodel.facets.properties.searchable;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MultipleValueFacetAbstract;
-public abstract class SearchableFacetAbstract extends MultipleValueFacetAbstract implements SearchableFacet {
+public abstract class SearchableFacetAbstract extends FacetAbstract implements SearchableFacet {
public static Class<? extends Facet> type() {
return SearchableFacet.class;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/OneToOneAssociation.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/OneToOneAssociation.java
index e33e7b2..61d14b9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/OneToOneAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/spec/feature/OneToOneAssociation.java
@@ -50,9 +50,4 @@ public interface OneToOneAssociation extends ObjectAssociation, OneToOneFeature,
final InteractionInitiatedBy interactionInitiatedBy);
- //FIXME[ISIS-1976] only temporary for refactoring - remove
- @Deprecated
- ManagedObject get2(ManagedObject adapter, InteractionInitiatedBy initiatedBy);
-
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
index 97385ce..972cfcb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionContributee.java
@@ -20,19 +20,16 @@ package org.apache.isis.metamodel.specloader.specimpl;
import java.util.Arrays;
import java.util.List;
-import java.util.stream.Stream;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.metamodel.consent.Consent;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.FacetHolderImpl;
import org.apache.isis.metamodel.facetapi.FacetUtil;
import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facetapi.MultiTypedFacet;
import org.apache.isis.metamodel.facets.FacetedMethodParameter;
import org.apache.isis.metamodel.interactions.InteractionUtils;
import org.apache.isis.metamodel.interactions.UsabilityContext;
@@ -227,51 +224,10 @@ public class ObjectActionContributee extends ObjectActionDefault implements Cont
// //////////////////////////////////////
@Override
- public int getFacetCount() {
- return facetHolder.getFacetCount();
+ public FacetHolder getFacetHolder() {
+ return facetHolder;
}
- @Override
- public <T extends Facet> T getFacet(Class<T> cls) {
- return facetHolder.getFacet(cls);
- }
-
- @Override
- public boolean containsFacet(Class<? extends Facet> facetType) {
- return facetHolder.containsFacet(facetType);
- }
-
- @Override
- public boolean containsDoOpFacet(java.lang.Class<? extends Facet> facetType) {
- return facetHolder.containsDoOpFacet(facetType);
- }
-
- @Override
- public Stream<Facet> streamFacets() {
- return facetHolder.streamFacets();
- }
-
- @Override
- public void addFacet(Facet facet) {
- facetHolder.addFacet(facet);
- }
-
- @Override
- public void addMultiTypedFacet(MultiTypedFacet facet) {
- facetHolder.addMultiTypedFacet(facet);
- }
-
- @Override
- public void removeFacet(Facet facet) {
- facetHolder.removeFacet(facet);
- }
-
- @Override
- public void removeFacet(Class<? extends Facet> facetType) {
- facetHolder.removeFacet(facetType);
- }
-
-
// //////////////////////////////////////
/* (non-Javadoc)
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
index d3f7d93..1320f78 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionDefault.java
@@ -83,8 +83,6 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
*/
List<ObjectActionParameter> parameters;
-
-
// -- constructors
public ObjectActionDefault(
@@ -92,8 +90,6 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
super(facetedMethod, FeatureType.ACTION);
}
-
-
// -- ReturnType, OnType, Actions (set)
/**
* Always returns <tt>null</tt>.
@@ -695,4 +691,10 @@ public class ObjectActionDefault extends ObjectMemberAbstract implements ObjectA
return sb.toString();
}
+
+ @Override
+ public FacetHolder getFacetHolder() {
+ return super.getFacetedMethod();
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionMixedIn.java
index d6117e5..b22a1a0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionMixedIn.java
@@ -43,6 +43,8 @@ import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.spec.feature.ObjectAction;
import org.apache.isis.metamodel.spec.feature.ObjectActionParameter;
+import lombok.Getter;
+
public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInMember {
/**
@@ -63,6 +65,7 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
/**
* Hold facets rather than delegate to the mixin action
*/
+ @Getter(onMethod = @__(@Override))
private final FacetHolder facetHolder = new FacetHolderImpl();
/**
@@ -92,7 +95,7 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
if(_Strings.isNullOrEmpty(name) || name.equalsIgnoreCase(mixinMethodName)) {
String memberName = determineNameFrom(mixinAction);
- super.addFacet(new NamedFacetInferred(memberName, facetHolder));
+ this.addFacet(new NamedFacetInferred(memberName, facetHolder));
}
// calculate the identifier
@@ -237,13 +240,6 @@ public class ObjectActionMixedIn extends ObjectActionDefault implements MixedInM
interactionInitiatedBy);
}
- // -- facetHolder
- @Override
- protected FacetHolder getFacetHolder() {
- return facetHolder;
- }
-
-
/* (non-Javadoc)
* @see org.apache.isis.metamodel.specloader.specimpl.ObjectMemberAbstract#getIdentifier()
*/
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 271e70d..093a395 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -22,7 +22,6 @@ package org.apache.isis.metamodel.specloader.specimpl;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
-import java.util.stream.Stream;
import org.apache.isis.applib.Identifier;
import org.apache.isis.commons.internal.collections._Lists;
@@ -38,10 +37,8 @@ import org.apache.isis.metamodel.consent.Consent;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.metamodel.consent.InteractionResult;
import org.apache.isis.metamodel.consent.InteractionResultSet;
-import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facetapi.MultiTypedFacet;
import org.apache.isis.metamodel.facets.TypedHolder;
import org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet;
import org.apache.isis.metamodel.facets.all.named.NamedFacet;
@@ -65,7 +62,10 @@ import org.apache.isis.metamodel.spec.feature.ObjectAction;
import org.apache.isis.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.metamodel.specloader.SpecificationLoader;
-public abstract class ObjectActionParameterAbstract implements ObjectActionParameter {
+import static org.apache.isis.commons.internal.base._With.requires;
+
+public abstract class ObjectActionParameterAbstract
+implements ObjectActionParameter, FacetHolder.Delegating {
private final FeatureType featureType;
private final int number;
@@ -77,10 +77,11 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
final int number,
final ObjectActionDefault objectAction,
final TypedHolder peer) {
+
this.featureType = featureType;
this.number = number;
this.parentAction = objectAction;
- this.peer = peer;
+ this.peer = requires(peer, "peer");
}
@Override
@@ -215,81 +216,11 @@ public abstract class ObjectActionParameterAbstract implements ObjectActionParam
// -- FacetHolder
- protected FacetHolder getFacetHolder() {
- return peer;
- }
-
- @Override
- public boolean containsFacet(final Class<? extends Facet> facetType) {
- final FacetHolder facetHolder = getFacetHolder();
- return facetHolder != null && facetHolder.containsFacet(facetType);
- }
-
- @Override
- public boolean containsDoOpFacet(final Class<? extends Facet> facetType) {
- final FacetHolder facetHolder = getFacetHolder();
- return facetHolder != null && facetHolder.containsDoOpFacet(facetType);
- }
-
- @Override
- public boolean containsDoOpNotDerivedFacet(final Class<? extends Facet> facetType) {
- final FacetHolder facetHolder = getFacetHolder();
- return facetHolder != null && facetHolder.containsDoOpNotDerivedFacet(facetType);
- }
-
-
- @Override
- public <T extends Facet> T getFacet(final Class<T> cls) {
- final FacetHolder facetHolder = getFacetHolder();
- return facetHolder != null ? facetHolder.getFacet(cls) : null;
- }
-
- @Override
- public int getFacetCount() {
- final FacetHolder facetHolder = getFacetHolder();
- return facetHolder != null ? facetHolder.getFacetCount() : 0;
- }
-
- @Override
- public Stream<Facet> streamFacets() {
- final FacetHolder facetHolder = getFacetHolder();
- return facetHolder != null ? facetHolder.streamFacets() : Stream.of();
- }
-
- @Override
- public void addFacet(final Facet facet) {
- final FacetHolder facetHolder = getFacetHolder();
- if (facetHolder != null) {
- facetHolder.addFacet(facet);
- }
- }
-
- @Override
- public void addMultiTypedFacet(final MultiTypedFacet facet) {
- final FacetHolder facetHolder = getFacetHolder();
- if (facetHolder != null) {
- facetHolder.addMultiTypedFacet(facet);
- }
- }
-
- @Override
- public void removeFacet(final Facet facet) {
- final FacetHolder facetHolder = getFacetHolder();
- if (facetHolder != null) {
- facetHolder.removeFacet(facet);
- }
- }
-
@Override
- public void removeFacet(final Class<? extends Facet> facetType) {
- final FacetHolder facetHolder = getFacetHolder();
- if (facetHolder != null) {
- facetHolder.removeFacet(facetType);
- }
+ public FacetHolder getFacetHolder() {
+ return peer;
}
-
-
// -- AutoComplete
@Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
index d64e11d..62533e5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
@@ -20,6 +20,7 @@
package org.apache.isis.metamodel.specloader.specimpl;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.FeatureType;
import org.apache.isis.metamodel.facets.FacetedMethod;
import org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
@@ -45,6 +46,11 @@ public abstract class ObjectAssociationAbstract extends ObjectMemberAbstract imp
}
this.specification = specification;
}
+
+ @Override
+ public FacetHolder getFacetHolder() {
+ return getFacetedMethod();
+ }
@Override
public ObjectSpecification getOnType() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectMemberAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectMemberAbstract.java
index e9b19b2..406d689 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectMemberAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/ObjectMemberAbstract.java
@@ -20,7 +20,6 @@
package org.apache.isis.metamodel.specloader.specimpl;
import java.util.Objects;
-import java.util.stream.Stream;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.annotation.Where;
@@ -28,6 +27,7 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.command.Command;
import org.apache.isis.applib.services.command.CommandContext;
import org.apache.isis.metamodel.MetaModelContext;
+import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.commons.StringExtensions;
import org.apache.isis.metamodel.consent.Consent;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
@@ -35,7 +35,6 @@ import org.apache.isis.metamodel.consent.InteractionResult;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.FeatureType;
-import org.apache.isis.metamodel.facetapi.MultiTypedFacet;
import org.apache.isis.metamodel.facets.FacetedMethod;
import org.apache.isis.metamodel.facets.actions.action.invocation.CommandUtil;
import org.apache.isis.metamodel.facets.actions.command.CommandFacet;
@@ -61,7 +60,8 @@ import org.apache.isis.schema.utils.CommandDtoUtils;
import lombok.val;
-public abstract class ObjectMemberAbstract implements ObjectMember, MetaModelContext.Delegating {
+public abstract class ObjectMemberAbstract
+implements ObjectMember, MetaModelContext.Delegating, FacetHolder.Delegating {
protected ObjectSpecification specificationOf(final Class<?> type) {
return type != null
@@ -104,8 +104,6 @@ public abstract class ObjectMemberAbstract implements ObjectMember, MetaModelCon
return featureType;
}
-
-
// -- Facets
/**
@@ -115,62 +113,6 @@ public abstract class ObjectMemberAbstract implements ObjectMember, MetaModelCon
return facetedMethod;
}
- protected FacetHolder getFacetHolder() {
- return getFacetedMethod();
- }
-
- @Override
- public boolean containsFacet(final Class<? extends Facet> facetType) {
- return getFacetHolder().containsFacet(facetType);
- }
-
- @Override
- public boolean containsDoOpFacet(final Class<? extends Facet> facetType) {
- return getFacetHolder().containsDoOpFacet(facetType);
- }
-
- @Override
- public boolean containsDoOpNotDerivedFacet(final Class<? extends Facet> facetType) {
- return getFacetHolder().containsDoOpNotDerivedFacet(facetType);
- }
-
- @Override
- public <T extends Facet> T getFacet(final Class<T> cls) {
- return getFacetHolder().getFacet(cls);
- }
-
- @Override
- public int getFacetCount() {
- return getFacetHolder().getFacetCount();
- }
-
- @Override
- public Stream<Facet> streamFacets() {
- return getFacetHolder().streamFacets();
- }
-
- @Override
- public void addFacet(final Facet facet) {
- getFacetHolder().addFacet(facet);
- }
-
- @Override
- public void addMultiTypedFacet(final MultiTypedFacet facet) {
- getFacetHolder().addMultiTypedFacet(facet);
- }
-
- @Override
- public void removeFacet(final Facet facet) {
- getFacetHolder().removeFacet(facet);
- }
-
- @Override
- public void removeFacet(final Class<? extends Facet> facetType) {
- getFacetHolder().removeFacet(facetType);
- }
-
-
-
// -- Name, Description, Help (convenience for facets)
/**
* Return the default label for this member. This is based on the name of
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
index 92c2fe1..c107f6e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationContributee.java
@@ -41,6 +41,7 @@ import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.spec.feature.ObjectAction;
+import lombok.Getter;
import lombok.val;
public class OneToManyAssociationContributee
@@ -54,6 +55,7 @@ extends OneToManyAssociationDefault implements ContributeeMember {
* Hold facets rather than delegate to the contributed action (different types might
* use layout metadata to position the contributee in different ways)
*/
+ @Getter(onMethod = @__(@Override))
private final FacetHolder facetHolder = new FacetHolderImpl();
private final Identifier identifier;
@@ -170,11 +172,6 @@ extends OneToManyAssociationDefault implements ContributeeMember {
// -- FacetHolder
- @Override
- protected FacetHolder getFacetHolder() {
- return facetHolder;
- }
-
private ManagedObject getServiceAdapter() {
return getObjectAdapterProvider().adapterForBean(serviceBean);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
index 100429d..e30f36a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToManyAssociationMixedIn.java
@@ -42,6 +42,7 @@ import org.apache.isis.metamodel.services.publishing.PublishingServiceInternal;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecification;
+import lombok.Getter;
import lombok.val;
public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault implements MixedInMember {
@@ -66,6 +67,7 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
* Hold facets rather than delegate to the mixin action (different types might use layout metadata to position
* the mixin in different ways)
*/
+ @Getter(onMethod = @__(@Override))
private final FacetHolder facetHolder = new FacetHolderImpl();
private final Identifier identifier;
@@ -198,13 +200,6 @@ public class OneToManyAssociationMixedIn extends OneToManyAssociationDefault imp
return InteractionUtils.isUsableResult(this, ic).createConsent();
}
- // -- FacetHolder
-
- @Override
- protected FacetHolder getFacetHolder() {
- return facetHolder;
- }
-
@Override
public ObjectSpecification getOnType() {
return mixedInType;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
index 2f1c3af..73dba87 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationContributee.java
@@ -41,6 +41,8 @@ import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecification;
import org.apache.isis.metamodel.spec.feature.ObjectAction;
+import lombok.Getter;
+
public class OneToOneAssociationContributee extends OneToOneAssociationDefault implements ContributeeMember {
private final ManagedBeanAdapter serviceBean;
@@ -50,6 +52,7 @@ public class OneToOneAssociationContributee extends OneToOneAssociationDefault i
* Hold facets rather than delegate to the contributed action (different types might
* use layout metadata to position the contributee in different ways)
*/
+ @Getter(onMethod = @__(@Override))
private final FacetHolder facetHolder = new FacetHolderImpl();
private final Identifier identifier;
@@ -152,11 +155,6 @@ public class OneToOneAssociationContributee extends OneToOneAssociationDefault i
return InteractionUtils.isUsableResult(this, ic).createConsent();
}
- @Override
- protected FacetHolder getFacetHolder() {
- return facetHolder;
- }
-
private ObjectAdapter getServiceAdapter() {
return getObjectAdapterProvider().adapterForBean(serviceBean);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index 61406c1..df16063 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -31,6 +31,7 @@ import org.apache.isis.metamodel.commons.ToString;
import org.apache.isis.metamodel.consent.Consent;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.metamodel.consent.InteractionResult;
+import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.FeatureType;
import org.apache.isis.metamodel.facets.FacetedMethod;
import org.apache.isis.metamodel.facets.actions.action.invocation.CommandUtil;
@@ -153,23 +154,6 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
return getObjectAdapterProvider().adapterFor(referencedPojo);
}
-
- @Override
- public ManagedObject get2(
- ManagedObject ownerAdapter,
- InteractionInitiatedBy interactionInitiatedBy) {
-
- final PropertyOrCollectionAccessorFacet facet = getFacet(PropertyOrCollectionAccessorFacet.class);
- final Object referencedPojo =
- facet.getProperty(ownerAdapter, interactionInitiatedBy);
-
- if (referencedPojo == null) {
- return null;
- }
-
- return getObjectAdapterProvider().adapterFor(referencedPojo);
- }
-
@Override
public boolean isEmpty(final ManagedObject ownerAdapter, final InteractionInitiatedBy interactionInitiatedBy) {
return get(ownerAdapter, interactionInitiatedBy) == null;
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
index 59657f1..38b9b56 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/specloader/specimpl/OneToOneAssociationMixedIn.java
@@ -40,6 +40,7 @@ import org.apache.isis.metamodel.services.publishing.PublishingServiceInternal;
import org.apache.isis.metamodel.spec.ManagedObject;
import org.apache.isis.metamodel.spec.ObjectSpecification;
+import lombok.Getter;
import lombok.val;
public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault implements MixedInMember {
@@ -64,6 +65,7 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
* Hold facets rather than delegate to the contributed action (different types might
* use layout metadata to position the contributee in different ways)
*/
+ @Getter(onMethod = @__(@Override))
private final FacetHolder facetHolder = new FacetHolderImpl();
private final Identifier identifier;
@@ -185,11 +187,6 @@ public class OneToOneAssociationMixedIn extends OneToOneAssociationDefault imple
}
@Override
- protected FacetHolder getFacetHolder() {
- return facetHolder;
- }
-
- @Override
public ObjectSpecification getOnType() {
return mixedInType;
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index c9fa27d..841f9f6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -231,6 +231,6 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
return noop;
}
};
- FacetUtil.addMultiTypedFacet(facet);
+ FacetUtil.addFacet(facet);
}
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
index 20ed75d..039f470 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableAnnotationFacetFactory.java
@@ -66,7 +66,7 @@ implements ObjectSpecIdFacetFactory {
final IdentityType annotationIdentityType = annotation.identityType();
- FacetUtil.addMultiTypedFacet(new JdoPersistenceCapableFacetAnnotation(
+ FacetUtil.addFacet(new JdoPersistenceCapableFacetAnnotation(
annotationSchemaAttribute,
annotationTableAttribute, annotationIdentityType, processClassContext.getFacetHolder()));
return;
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAbstract.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAbstract.java
index cac0712..72dcd6a 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAbstract.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/persistencecapable/JdoPersistenceCapableFacetAbstract.java
@@ -18,14 +18,10 @@
*/
package org.apache.isis.jdo.metamodel.facets.object.persistencecapable;
-import java.util.List;
import java.util.Map;
-import java.util.stream.Stream;
import javax.jdo.annotations.IdentityType;
-import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.metamodel.facetapi.Facet;
import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -53,6 +49,7 @@ implements JdoPersistenceCapableFacet {
this.schema = schemaName;
this.table = tableOrTypeName;
this.identityType = identityType;
+ super.addAlias(EntityFacet.class);
}
@Override
@@ -76,25 +73,4 @@ implements JdoPersistenceCapableFacet {
attributeMap.put("identityType", identityType);
}
- private final static List<Class<? extends Facet>> types =
- _Lists.of(JdoPersistenceCapableFacetAbstract.type(), EntityFacet.class);
-
-
- @Override
- public Stream<Class<? extends Facet>> facetTypes() {
- return types.stream();
- }
-
- @Override
- public <T extends Facet> T getFacet(Class<T> facetType) {
- return containsFacetTypeOf(facetType)
- ? _Casts.uncheckedCast(this)
- : null;
- }
-
- @Override
- public boolean containsFacetTypeOf(Class<? extends Facet> facetType) {
- return types.contains(facetType);
- }
-
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/version/JdoVersionFacet.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/version/JdoVersionFacet.java
index db1d634..73afd6b 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/version/JdoVersionFacet.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/version/JdoVersionFacet.java
@@ -18,8 +18,8 @@
*/
package org.apache.isis.jdo.metamodel.facets.object.version;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.facetapi.Facet;
-public interface JdoVersionFacet extends MarkerFacet {
+public interface JdoVersionFacet extends Facet {
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/version/JdoVersionFacetFromAnnotation.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/version/JdoVersionFacetFromAnnotation.java
index 699778c..d079cf3 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/version/JdoVersionFacetFromAnnotation.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/object/version/JdoVersionFacetFromAnnotation.java
@@ -18,10 +18,10 @@
*/
package org.apache.isis.jdo.metamodel.facets.object.version;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public class JdoVersionFacetFromAnnotation extends MarkerFacetAbstract implements JdoVersionFacet {
+public class JdoVersionFacetFromAnnotation extends FacetAbstract implements JdoVersionFacet {
public JdoVersionFacetFromAnnotation(FacetHolder holder) {
super(JdoVersionFacet.class, holder);
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
index 4726044..0b354ee 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacet.java
@@ -20,7 +20,8 @@ package org.apache.isis.jdo.metamodel.facets.prop.notpersistent;
import javax.jdo.annotations.PrimaryKey;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.adapter.oid.Oid;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
@@ -29,6 +30,6 @@ import org.apache.isis.metamodel.facets.MarkerFacet;
* The JDO {@link PrimaryKey} annotation is used internally the JDO object store to
* create the {@link Oid}.
*/
-public interface JdoNotPersistentFacet extends MarkerFacet {
+public interface JdoNotPersistentFacet extends Facet {
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetAbstract.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetAbstract.java
index f754a78..6f71207 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetAbstract.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/notpersistent/JdoNotPersistentFacetAbstract.java
@@ -19,12 +19,13 @@
package org.apache.isis.jdo.metamodel.facets.prop.notpersistent;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class JdoNotPersistentFacetAbstract extends MarkerFacetAbstract implements
-JdoNotPersistentFacet {
+public abstract class JdoNotPersistentFacetAbstract
+extends FacetAbstract
+implements JdoNotPersistentFacet {
public static Class<? extends Facet> type() {
return JdoNotPersistentFacet.class;
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacet.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacet.java
index c429e3d..9ca84e0 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacet.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacet.java
@@ -20,7 +20,8 @@ package org.apache.isis.jdo.metamodel.facets.prop.primarykey;
import javax.jdo.annotations.PrimaryKey;
-import org.apache.isis.metamodel.facets.MarkerFacet;
+import org.apache.isis.metamodel.adapter.oid.Oid;
+import org.apache.isis.metamodel.facetapi.Facet;
/**
@@ -29,6 +30,6 @@ import org.apache.isis.metamodel.facets.MarkerFacet;
* The JDO {@link PrimaryKey} annotation is used internally the JDO object store to
* create the {@link Oid}.
*/
-public interface JdoPrimaryKeyFacet extends MarkerFacet {
+public interface JdoPrimaryKeyFacet extends Facet {
}
diff --git a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacetAbstract.java b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacetAbstract.java
index 913d96b..85e9e1d 100644
--- a/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacetAbstract.java
+++ b/core/plugins/jdo/common/src/main/java/org/apache/isis/jdo/metamodel/facets/prop/primarykey/JdoPrimaryKeyFacetAbstract.java
@@ -19,12 +19,13 @@
package org.apache.isis.jdo.metamodel.facets.prop.primarykey;
import org.apache.isis.metamodel.facetapi.Facet;
+import org.apache.isis.metamodel.facetapi.FacetAbstract;
import org.apache.isis.metamodel.facetapi.FacetHolder;
-import org.apache.isis.metamodel.facets.MarkerFacetAbstract;
-public abstract class JdoPrimaryKeyFacetAbstract extends MarkerFacetAbstract implements
-JdoPrimaryKeyFacet {
+public abstract class JdoPrimaryKeyFacetAbstract
+extends FacetAbstract
+implements JdoPrimaryKeyFacet {
public static Class<? extends Facet> type() {
return JdoPrimaryKeyFacet.class;
diff --git a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
index ad0ec81..00f16bc 100644
--- a/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
+++ b/core/plugins/jdo/datanucleus-5/src/test/java/org/apache/isis/runtime/system/ObjectMemberAbstractTest.java
@@ -33,6 +33,7 @@ import org.apache.isis.metamodel.adapter.ObjectAdapter;
import org.apache.isis.metamodel.adapter.oid.Oid.Factory;
import org.apache.isis.metamodel.consent.Consent;
import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.metamodel.facetapi.FacetHolder;
import org.apache.isis.metamodel.facetapi.FeatureType;
import org.apache.isis.metamodel.facets.FacetedMethod;
import org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacetAbstract;
@@ -158,7 +159,7 @@ public class ObjectMemberAbstractTest {
@Test
public void testVisibleWhenHiddenFacetSetToAlways() {
testMember.addFacet(new HideForContextFacetNone(testMember));
- testMember.addMultiTypedFacet(new HiddenFacetAbstract(Where.ANYWHERE, testMember) {
+ testMember.addFacet(new HiddenFacetAbstract(Where.ANYWHERE, testMember) {
@Override
public String hiddenReason(final ManagedObject target, final Where whereContext) {
return null;
@@ -171,7 +172,7 @@ public class ObjectMemberAbstractTest {
@Test
public void testVisibleWhenHiddenFacetSet() {
testMember.addFacet(new HideForContextFacetNone(testMember));
- testMember.addMultiTypedFacet(new HiddenFacetAbstractImpl(Where.ANYWHERE, testMember){});
+ testMember.addFacet(new HiddenFacetAbstractImpl(Where.ANYWHERE, testMember){});
final Consent visible = testMember.isVisible(transientAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE);
assertFalse(visible.isAllowed());
@@ -179,7 +180,7 @@ public class ObjectMemberAbstractTest {
@Test
public void testVisibleDeclaratively() {
- testMember.addMultiTypedFacet(new HiddenFacetAbstractAlwaysEverywhere(testMember) {});
+ testMember.addFacet(new HiddenFacetAbstractAlwaysEverywhere(testMember) {});
assertFalse(testMember.isVisible(persistentAdapter, InteractionInitiatedBy.USER, Where.ANYWHERE).isAllowed());
}
@@ -237,6 +238,11 @@ class ObjectMemberAbstractImpl extends ObjectMemberAbstract {
return firstName;
}
}
+
+ @Override
+ public FacetHolder getFacetHolder() {
+ return getFacetedMethod();
+ }
protected ObjectMemberAbstractImpl(MetaModelContext mmc, final String id) {
super(FacetedMethod.createForProperty(Customer.class, "firstName"), FeatureType.PROPERTY);
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
index f7731a3..afaa4c4 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoDefault.java
@@ -459,6 +459,9 @@ public class ObjectAdapterMementoDefault implements Serializable {
this.cardinality = Cardinality.SCALAR;
this.persistentOidStr = rootOid.enString();
+
+ requires(persistentOidStr, "persistentOidStr");
+
this.bookmark = rootOid.asBookmark();
this.objectSpecId = rootOid.getObjectSpecId();
this.recreateStrategy = RecreateStrategy.LOOKUP;
diff --git a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication_newPageFactory.java b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication_newPageFactory.java
index a3023d7..37c1759 100644
--- a/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication_newPageFactory.java
+++ b/core/viewer-wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication_newPageFactory.java
@@ -30,7 +30,11 @@ import lombok.RequiredArgsConstructor;
/**
*
- * Initializes new pages with the common-context.
+ * Uses Wicket's default page factory, except for {@link EntityPage}s which require special instantiation:
+ * <p>
+ * Constructor
+ * {@link EntityPage#EntityPage(org.apache.isis.webapp.context.IsisWebAppCommonContext, PageParameters)}
+ * needs the common-context as argument.
*
* @since 2.0
*