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/01/28 08:30:13 UTC
[isis] branch master updated: ISIS-2948: respond w/ 404, when logical-type-name to type resolution fails
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 2056e7a ISIS-2948: respond w/ 404, when logical-type-name to type resolution fails
2056e7a is described below
commit 2056e7ac7920c6758604766feaaf7fdc149c21b2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Jan 28 09:26:07 2022 +0100
ISIS-2948: respond w/ 404, when logical-type-name to type resolution
fails
---
.../apache/isis/core/metamodel/specloader/SpecificationLoader.java | 6 ++++++
.../viewer/resources/DomainTypeResourceServerside.java | 4 ++++
2 files changed, 10 insertions(+)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
index a54d242..f8d1321 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoader.java
@@ -24,6 +24,7 @@ import java.util.function.Consumer;
import org.springframework.lang.Nullable;
import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.annotation.LogicalTypeName;
import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.collections.Can;
@@ -147,6 +148,11 @@ public interface SpecificationLoader {
// -- SUPPORT FOR LOOKUP BY LOGICAL TYPE NAME
+ /**
+ * The lookup may also fail (result with null), when there is no concrete or abstract resolvable type,
+ * that matches given {@code logicalTypeName}. Eg. when using {@link LogicalTypeName} on an interface,
+ * while overriding with a different logical-type-name on the concrete or abstract type.
+ */
@Nullable
default ObjectSpecification loadSpecification(
final @Nullable String logicalTypeName,
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
index 74c87b7..00dc92c 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/DomainTypeResourceServerside.java
@@ -126,6 +126,10 @@ implements DomainTypeResource {
RepresentationType.DOMAIN_TYPE, Where.ANYWHERE, RepresentationService.Intent.NOT_APPLICABLE);
val objectSpec = getSpecificationLoader().specForLogicalTypeName(domainType).orElse(null);
+ if(objectSpec==null) {
+ throw _EndpointLogging.error(log, "GET /domain-types/{}", domainType,
+ RestfulObjectsApplicationException.create(HttpStatusCode.NOT_FOUND));
+ }
val renderer = new DomainTypeReprRenderer(resourceContext, null, JsonRepresentation.newMap());
renderer.with(objectSpec).includesSelf();