You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/10/23 17:48:08 UTC
[isis] 01/01: ISIS-2019: adds guards for missing facets
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch v2
in repository https://gitbox.apache.org/repos/asf/isis.git
commit fd3b782ee09d271bb4c458a28a055ab611e348cd
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Oct 23 18:47:39 2018 +0100
ISIS-2019: adds guards for missing facets
if missing TypeOfFacet or CollectionSemantcsFacet when invoking a collection mixin
---
.../apache/isis/core/metamodel/specloader/SpecificationLoader.java | 2 +-
.../metamodel/specloader/specimpl/OneToManyAssociationDefault.java | 3 ++-
.../conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java | 7 ++++++-
3 files changed, 9 insertions(+), 3 deletions(-)
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 3ef0654..878f3eb 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
@@ -576,7 +576,7 @@ public class SpecificationLoader implements ApplicationScopedComponent {
* </p>
*/
@Programmatic
- public Collection<ObjectSpecification> allSpecifications() {
+ public List<ObjectSpecification> allSpecifications() {
return _Lists.newArrayList(allCachedSpecifications());
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index 90691bb..7acfbd9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -68,7 +68,8 @@ public class OneToManyAssociationDefault extends ObjectAssociationAbstract imple
@Override
public CollectionSemantics getCollectionSemantics() {
- return getFacet(CollectionSemanticsFacet.class).value();
+ final CollectionSemanticsFacet facet = getFacet(CollectionSemanticsFacet.class);
+ return facet != null ? facet.value() : CollectionSemantics.OTHER_IMPLEMENTATION;
}
diff --git a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index 21ad5a6..ad82bda 100644
--- a/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++ b/core/viewer-restfulobjects-rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -38,6 +38,8 @@ import org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet;
import org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
import org.apache.isis.viewer.restfulobjects.applib.client.RestfulResponse;
@@ -314,7 +316,7 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
private ObjectSpecification elementSpecFrom(final ObjectAndActionInvocation objectAndActionInvocation) {
final TypeOfFacet typeOfFacet = objectAndActionInvocation.getAction().getFacet(TypeOfFacet.class);
- return typeOfFacet.valueSpec();
+ return typeOfFacet != null ? typeOfFacet.valueSpec() : getSpecificationLoader().loadSpecification(Object.class) ;
}
private Collection<ObjectAdapter> objectAdaptersFrom(final ObjectAndActionInvocation objectAndActionInvocation) {
@@ -411,6 +413,9 @@ public class ContentNegotiationServiceForRestfulObjectsV1_0 implements ContentNe
return true;
}
+ private SpecificationLoader getSpecificationLoader() {
+ return IsisContext.getSpecificationLoader();
+ }
}