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 2021/04/15 14:11:03 UTC
[isis] branch master updated: ISIS-2569: do not use
SpecLoader#loadSpecification(Class) - (8)
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 41bc87e ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (8)
41bc87e is described below
commit 41bc87ee19eb817e71a9c3c63c84ef5f1660407c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Apr 15 16:10:47 2021 +0200
ISIS-2569: do not use SpecLoader#loadSpecification(Class) - (8)
... when outside the scope of initial spec loading (its optimized for
initial loading, skips introspecting members)
---
.../apache/isis/core/metamodel/layout/LayoutFacetUtil.java | 3 ++-
.../metamodel/services/grid/GridSystemServiceAbstract.java | 4 ++--
.../services/grid/bootstrap3/GridSystemServiceBS3.java | 2 +-
.../metamodel/services/layout/LayoutServiceDefault.java | 8 +++++---
.../services/metamodel/MetaModelServiceDefault.java | 13 +++++++++----
5 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/LayoutFacetUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/LayoutFacetUtil.java
index ce3741e..8de7dfd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/LayoutFacetUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layout/LayoutFacetUtil.java
@@ -56,6 +56,7 @@ import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.Render
import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.val;
import lombok.experimental.UtilityClass;
@@ -313,7 +314,7 @@ public class LayoutFacetUtil {
@RequiredArgsConstructor(staticName = "of")
public static class MetamodelToGridOverridingVisitor extends Grid.VisitorAdapter {
- private final ObjectSpecification objectSpec;
+ private final @NonNull ObjectSpecification objectSpec;
@Override
public void visit(final ActionLayoutData actionLayoutData) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
index e2ee052..d103359 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridSystemServiceAbstract.java
@@ -177,7 +177,7 @@ implements GridSystemService<G> {
final G fcGrid,
final Class<?> domainClass) {
- val objectSpec = specificationLoader.loadSpecification(domainClass);
+ val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
val oneToOneAssociationById = ObjectMember.mapById(getOneToOneAssociations(objectSpec));
val oneToManyAssociationById = ObjectMember.mapById(getOneToManyAssociations(objectSpec));
@@ -358,7 +358,7 @@ implements GridSystemService<G> {
@Override
public void complete(final G grid, final Class<?> domainClass) {
normalize(grid, domainClass);
- val objectSpec = specificationLoader.loadSpecification(domainClass);
+ val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
grid.visit(MetamodelToGridOverridingVisitor.of(objectSpec));
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
index 00577a8..bed6818 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap3/GridSystemServiceBS3.java
@@ -172,7 +172,7 @@ public class GridSystemServiceBS3 extends GridSystemServiceAbstract<BS3Grid> {
final Class<?> domainClass) {
val bs3Grid = (BS3Grid) grid;
- val objectSpec = specificationLoader.loadSpecification(domainClass);
+ val objectSpec = specificationLoader.specForTypeElseFail(domainClass);
val oneToOneAssociationById = ObjectMember.mapById(getOneToOneAssociations(objectSpec));
val oneToManyAssociationById = ObjectMember.mapById(getOneToManyAssociations(objectSpec));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
index 3867a98..b077bd6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
@@ -70,9 +70,11 @@ public class LayoutServiceDefault implements LayoutService {
protected Grid toGrid(final Class<?> domainClass, final Style style) {
if (style == Style.CURRENT) {
- final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainClass);
- final GridFacet facet = objectSpec.getFacet(GridFacet.class);
- return facet != null? facet.getGrid(null): null;
+
+ return specificationLoader.specForType(domainClass)
+ .flatMap(spec->spec.lookupFacet(GridFacet.class))
+ .map(gridFacet->gridFacet.getGrid(null))
+ .orElse(null);
}
// don't use the grid from the facet, because it will be modified subsequently.
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index f64e9b1..0692fb9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -79,9 +79,11 @@ public class MetaModelServiceDefault implements MetaModelService {
if(domainType == null) {
return null;
}
- final ObjectSpecification objectSpecification = specificationLoader.loadSpecification(domainType);
- final ObjectSpecIdFacet objectSpecIdFacet = objectSpecification.getFacet(ObjectSpecIdFacet.class);
- return objectSpecIdFacet.value();
+
+ return specificationLoader.specForType(domainType)
+ .flatMap(spec->spec.lookupFacet(ObjectSpecIdFacet.class))
+ .map(ObjectSpecIdFacet::value)
+ .orElse(null);
}
@Override
@@ -155,7 +157,10 @@ public class MetaModelServiceDefault implements MetaModelService {
if(domainType == null) {
return null;
}
- final ObjectSpecification objectSpec = specificationLoader.loadSpecification(domainType);
+ final ObjectSpecification objectSpec = specificationLoader.specForType(domainType).orElse(null);
+ if(objectSpec == null) {
+ return BeanSort.UNKNOWN;
+ }
if(objectSpec.isManagedBean()) {
return BeanSort.MANAGED_BEAN_CONTRIBUTING;
}