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 2022/04/07 13:17:01 UTC
[isis] branch master updated: ISIS-2994: fixes for prev. commits
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 7fd7f8343f ISIS-2994: fixes for prev. commits
7fd7f8343f is described below
commit 7fd7f8343f8fb7766c36aa4095fd898b12846e72
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 7 15:16:52 2022 +0200
ISIS-2994: fixes for prev. commits
---
.../core/metamodel/spec/ObjectSpecification.java | 3 ++-
.../org/apache/isis/core/metamodel/util/Facets.java | 4 ++--
.../core/runtimeservices/memento/_ObjectMemento.java | 15 +++++++++------
.../sitemap/SitemapServiceDefault.java | 6 ++----
.../handlers/DomainObjectInvocationHandler.java | 7 ++-----
.../domainobjects/ObjectPropertyReprRenderer.java | 20 ++++++++++----------
.../viewer/wicket/model/util/PageParameterUtils.java | 12 ++++++------
7 files changed, 33 insertions(+), 34 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index 58e09a4dcb..13b501de40 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -352,7 +352,8 @@ extends
* In effect, means has got {@link ValueFacet}.
*/
default boolean isValue() {
- return getBeanSort().isValue();
+ return getBeanSort().isValue()
+ || containsFacet(ValueFacet.class);
}
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
index 12c0213eff..752ae0ef2b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
@@ -381,7 +381,7 @@ public final class Facets {
final ObjectSpecification objectSpec,
final Class<X> requiredType) {
return objectSpec.lookupFacet(ValueFacet.class)
- .filter(valueFacet->valueFacet.getValueClass().equals(requiredType))
+ .filter(valueFacet->requiredType.isAssignableFrom(valueFacet.getValueClass()))
.flatMap(ValueFacet::selectDefaultSemantics);
}
@@ -390,7 +390,7 @@ public final class Facets {
final ObjectSpecification objectSpec,
final Class<X> requiredType) {
return objectSpec.lookupFacet(ValueFacet.class)
- .filter(valueFacet->valueFacet.getValueClass().equals(requiredType))
+ .filter(valueFacet->requiredType.isAssignableFrom(valueFacet.getValueClass()))
.map(valueFacet->(ValueSerializer<X>)valueFacet);
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
index c920649534..e7a9958df2 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMemento.java
@@ -32,6 +32,7 @@ import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.applib.services.bookmark.Oid;
import org.apache.isis.applib.services.hint.HintIdProvider;
+import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
import org.apache.isis.commons.internal.exceptions._Exceptions;
@@ -42,6 +43,7 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.util.Facets;
import lombok.AccessLevel;
import lombok.Getter;
@@ -179,14 +181,14 @@ final class _ObjectMemento implements HasLogicalType, Serializable {
final _ObjectMemento memento,
final MetaModelContext mmc) {
- val valueFacet = mmc.getSpecificationLoader()
+ val valueSerializer = mmc.getSpecificationLoader()
.specForLogicalType(memento.logicalType)
- .map(spec->spec.getFacet(ValueFacet.class))
+ .flatMap(spec->Facets.valueSerializer(spec, spec.getCorrespondingClass()))
.orElseThrow(()->_Exceptions.unrecoverableFormatted(
"logical type %s is expected to have a ValueFacet", memento.logicalType));
return mmc.getObjectManager().adapt(
- valueFacet.fromEncodedString(Format.JSON, memento.encodableValue));
+ valueSerializer.fromEncodedString(Format.JSON, memento.encodableValue));
}
@Override
@@ -454,10 +456,11 @@ final class _ObjectMemento implements HasLogicalType, Serializable {
return;
}
- val valueFacet = spec.getFacet(ValueFacet.class);
- val isEncodable = valueFacet != null;
+ val valueSerializer = Facets.valueSerializer(spec, spec.getCorrespondingClass())
+ .orElse(null);
+ val isEncodable = valueSerializer != null;
if (isEncodable) {
- encodableValue = valueFacet.toEncodedString(Format.JSON, adapter.getPojo());
+ encodableValue = valueSerializer.toEncodedString(Format.JSON, _Casts.uncheckedCast(adapter.getPojo()));
recreateStrategy = RecreateStrategy.VALUE;
return;
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
index 6aa760c2a6..ebf9041085 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/sitemap/SitemapServiceDefault.java
@@ -42,10 +42,10 @@ import org.apache.isis.applib.services.menu.MenuBarsService;
import org.apache.isis.applib.services.sitemap.SitemapService;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.base._Strings;
-import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
import org.apache.isis.core.metamodel.spec.ActionScope;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.metamodel.util.Facets;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -183,10 +183,8 @@ public class SitemapServiceDefault implements SitemapService {
private Grid toGrid(final Class<?> domainClass, final Style style) {
if (style == Style.CURRENT) {
-
return specificationLoader.specForType(domainClass)
- .flatMap(spec->spec.lookupFacet(GridFacet.class))
- .map(gridFacet->gridFacet.getGrid(null))
+ .flatMap(Facets::bootstrapGrid)
.orElse(null);
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
index e2cacd6f8c..63a018a20e 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/wrapper/handlers/DomainObjectInvocationHandler.java
@@ -51,7 +51,6 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facets.ImperativeFacet;
import org.apache.isis.core.metamodel.facets.ImperativeFacet.Intent;
import org.apache.isis.core.metamodel.facets.object.entity.EntityFacet;
-import org.apache.isis.core.metamodel.facets.object.mixin.MixinFacet;
import org.apache.isis.core.metamodel.interactions.managed.ActionInteractionHead;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -64,6 +63,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.metamodel.specloader.specimpl.MixedInMember;
+import org.apache.isis.core.metamodel.util.Facets;
import lombok.SneakyThrows;
import lombok.val;
@@ -221,10 +221,7 @@ extends DelegatingInvocationHandlerDefault<T> {
val objectAction = (ObjectAction) objectMember;
-
- val mixinFacet = targetSpec.getFacet(MixinFacet.class);
- if(mixinFacet != null) {
-
+ if(Facets.mixinIsPresent(targetSpec)) {
if (mixeeAdapter == null) {
throw _Exceptions.illegalState(
"Missing the required mixeeAdapter for action '%s'",
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index a9d4527528..2de8f6ceb2 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -81,16 +81,16 @@ extends AbstractObjectMemberReprRenderer<OneToOneAssociation> {
// ///////////////////////////////////////////////////
private Object addValue(final LinkFollowSpecs linkFollower) {
- val valueAdapterIfAny2 = objectMember.get(objectAdapter, getInteractionInitiatedBy());
+ val valueAdapterIfAny = objectMember.get(objectAdapter, getInteractionInitiatedBy());
// use the runtime type if we have a value, otherwise fallback to the compile time type of the member
- val valueAdapter = ManagedObjects.isSpecified(valueAdapterIfAny2)
- ? valueAdapterIfAny2
+ val valueAdapter = ManagedObjects.isSpecified(valueAdapterIfAny)
+ ? valueAdapterIfAny
: ManagedObject.empty(objectMember.getElementType());
val spec = valueAdapter.getSpecification();
- if (Facets.valueIsPresent(objectAdapter.getSpecification())) {
+ if (Facets.valueIsPresent(spec)) {
String format = null;
final Class<?> valueType = spec.getCorrespondingClass();
if(valueType == java.math.BigDecimal.class) {
@@ -115,18 +115,18 @@ extends AbstractObjectMemberReprRenderer<OneToOneAssociation> {
resourceContext.suppressMemberExtensions());
}
- final boolean eagerlyRender =
- (Facets.defaultViewIsTable(objectMember)
- && resourceContext.canEagerlyRender(valueAdapter))
- || (linkFollower != null
- && !linkFollower.isTerminated());
-
if(valueAdapter.getPojo() == null) {
final NullNode value = NullNode.getInstance();
representation.mapPut("value", value);
return value;
}
+ final boolean eagerlyRender =
+ (Facets.defaultViewIsTable(objectMember)
+ && resourceContext.canEagerlyRender(valueAdapter))
+ || (linkFollower != null
+ && !linkFollower.isTerminated());
+
final String title = valueAdapter.getTitle();
final LinkBuilder valueLinkBuilder = DomainObjectReprRenderer
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/PageParameterUtils.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/PageParameterUtils.java
index 92fff493f5..963ebec891 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/PageParameterUtils.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/util/PageParameterUtils.java
@@ -33,10 +33,10 @@ import org.springframework.lang.Nullable;
import org.apache.isis.applib.Identifier;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.facets.object.value.ValueSerializer;
+import org.apache.isis.core.metamodel.facets.object.value.ValueSerializer.Format;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -213,8 +213,8 @@ public class PageParameterUtils {
final ObjectSpecification objSpec = adapter.getSpecification();
if(objSpec.isValue()) {
- val valueFacet = objSpec.getFacet(ValueFacet.class);
- return valueFacet.toEncodedString(ValueSerializer.Format.JSON, adapter.getPojo());
+ return Facets.valueSerializerElseFail(objSpec, objSpec.getCorrespondingClass())
+ .toEncodedString(Format.JSON, _Casts.uncheckedCast(adapter.getPojo()));
}
return ManagedObjects.stringify(adapter).orElse(null);
@@ -229,9 +229,9 @@ public class PageParameterUtils {
}
if(objSpec.isValue()) {
- val valueFacet = objSpec.getFacet(ValueFacet.class);
return ManagedObject.of(objSpec,
- valueFacet.fromEncodedString(ValueSerializer.Format.JSON, encoded));
+ Facets.valueSerializerElseFail(objSpec, objSpec.getCorrespondingClass())
+ .fromEncodedString(Format.JSON, encoded));
}
try {