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/05/21 08:30:48 UTC
[isis] branch master updated: ISIS-2684: fixes for
DomainTypeReprRenderer.addMembers:
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 bb1a9c1 ISIS-2684: fixes for DomainTypeReprRenderer.addMembers:
bb1a9c1 is described below
commit bb1a9c12c78462acba0b95c16e8a7a7f9bfcfc20
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri May 21 10:30:31 2021 +0200
ISIS-2684: fixes for DomainTypeReprRenderer.addMembers:
- json repr is a map not a list
- collections were rendered as Rel.PROPERTY
- associations had no mixins included
---
.../core/metamodel/spec/feature/ObjectFeature.java | 4 ++
.../domaintypes/DomainTypeReprRenderer.java | 49 ++++++++++++----------
2 files changed, 31 insertions(+), 22 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectFeature.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectFeature.java
index c09e2de..61e660d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectFeature.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectFeature.java
@@ -19,6 +19,7 @@
package org.apache.isis.core.metamodel.spec.feature;
+import org.apache.isis.applib.Identifier;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -38,6 +39,9 @@ public interface ObjectFeature extends Specification {
* Returns the identifier of the member, which must not change. This should
* be all camel-case with no spaces: so if the member is called 'Return
* Date' then a suitable id would be 'returnDate'.
+ * @implNote for {@link ObjectMember}(s) this is a shortcut for
+ * {@link ObjectMember#getIdentifier()}.getMemberName()
+ * @see Identifier#getMemberName()
*/
String getId();
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
index f06d1e4..c230c67 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domaintypes/DomainTypeReprRenderer.java
@@ -23,8 +23,6 @@ import com.fasterxml.jackson.databind.node.NullNode;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.feature.MixedIn;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.isis.viewer.restfulobjects.applib.Rel;
import org.apache.isis.viewer.restfulobjects.applib.RepresentationType;
@@ -91,28 +89,35 @@ public class DomainTypeReprRenderer extends ReprRendererAbstract<DomainTypeReprR
}
private void addMembers() {
- final JsonRepresentation membersList = JsonRepresentation.newArray();
- representation.mapPut("members", membersList);
-
- objectSpecification.streamAssociations(MixedIn.EXCLUDED)
- .forEach(association->{
- if (association.isOneToOneAssociation()) {
- final OneToOneAssociation property = (OneToOneAssociation) association;
- final LinkBuilder linkBuilder = PropertyDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.PROPERTY, objectSpecification, property);
- membersList.arrayAdd(linkBuilder.build());
- } else if (association.isOneToManyAssociation()) {
- final OneToManyAssociation collection = (OneToManyAssociation) association;
- final LinkBuilder linkBuilder = CollectionDescriptionReprRenderer.newLinkToBuilder(getResourceContext(), Rel.PROPERTY, objectSpecification, collection);
- membersList.arrayAdd(linkBuilder.build());
- }
- });
+ final JsonRepresentation membersMap = JsonRepresentation.newMap();
+ representation.mapPut("members", membersMap);
+
+ objectSpecification.streamProperties(MixedIn.INCLUDED)
+ .forEach(property->
+ membersMap.mapPut(
+ property.getId(),
+ PropertyDescriptionReprRenderer
+ .newLinkToBuilder(getResourceContext(), Rel.PROPERTY, objectSpecification, property)
+ .build())
+ );
+
+ objectSpecification.streamCollections(MixedIn.INCLUDED)
+ .forEach(collection->
+ membersMap.mapPut(
+ collection.getId(),
+ CollectionDescriptionReprRenderer
+ .newLinkToBuilder(getResourceContext(), Rel.COLLECTION, objectSpecification, collection)
+ .build())
+ );
objectSpecification.streamAnyActions(MixedIn.INCLUDED)
- .forEach(action->{
- final LinkBuilder linkBuilder = ActionDescriptionReprRenderer
- .newLinkToBuilder(getResourceContext(), Rel.ACTION, objectSpecification, action);
- membersList.arrayAdd(linkBuilder.build());
- });
+ .forEach(action->
+ membersMap.mapPut(
+ action.getId(),
+ ActionDescriptionReprRenderer
+ .newLinkToBuilder(getResourceContext(), Rel.ACTION, objectSpecification, action)
+ .build())
+ );
}