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 <d...@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(); + } }