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/11/30 13:30:15 UTC
[isis] branch master updated: ISIS-2903: adds reg. test for Jaxb viewmodel w/ JDO entities embedded
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 be4bb91 ISIS-2903: adds reg. test for Jaxb viewmodel w/ JDO entities embedded
be4bb91 is described below
commit be4bb91bfb92bc906fb99ebaaa11b0c915c88845
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Nov 30 14:30:01 2021 +0100
ISIS-2903: adds reg. test for Jaxb viewmodel w/ JDO entities embedded
---
.../applib/jaxb/PersistentEntitiesAdapter.java | 8 +-
.../isis/applib/jaxb/PersistentEntityAdapter.java | 4 +-
.../isis/applib/services/jaxb/JaxbService.java | 19 +++--
...ableObjectFacetForXmlRootElementAnnotation.java | 25 +++---
.../runtimeservices/jaxb/JaxbServiceDefault.java | 46 +++++++----
.../viewmodels/jaxbrefentity/JaxbRefEntity.java | 4 +-
.../testdomain/persistence/jdo/JdoJaxbTest.java | 94 +++++++++++++++++++++
.../isis/testdomain/jdo/JdoInventoryJaxbVm.java | 95 ++++++++++++++++++++++
...entNegotiationServiceForRestfulObjectsV1_0.java | 6 +-
9 files changed, 253 insertions(+), 48 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
index 571eb21..5f58816 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntitiesAdapter.java
@@ -35,14 +35,14 @@ import lombok.val;
/**
* @since 2.0 {@index}
*/
-public class PersistentEntitiesAdapter extends XmlAdapter<OidsDto, List<Object>> {
+public class PersistentEntitiesAdapter extends XmlAdapter<OidsDto, Iterable<Object>> {
@Inject @Getter(AccessLevel.PROTECTED)
private BookmarkService bookmarkService;
@Override
public List<Object> unmarshal(final OidsDto oidsDto) {
-
+ System.err.printf("unmarshal[] %s%n", oidsDto);
List<Object> domainObjects = new ArrayList<>();
for (val oidDto : oidsDto.getOid()) {
val bookmark = Bookmark.forOidDto(oidDto);
@@ -53,8 +53,8 @@ public class PersistentEntitiesAdapter extends XmlAdapter<OidsDto, List<Object>>
}
@Override
- public OidsDto marshal(final List<Object> domainObjects) {
-
+ public OidsDto marshal(final Iterable<Object> domainObjects) {
+ System.err.printf("marshal[] %s%n", domainObjects);
if(domainObjects == null) {
return null;
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
index 6745a11..602453e 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/jaxb/PersistentEntityAdapter.java
@@ -34,14 +34,14 @@ public class PersistentEntityAdapter extends XmlAdapter<OidDto, Object> {
@Override
public Object unmarshal(final OidDto oidDto) throws Exception {
-
+ System.err.printf("unmarshal %s%n", oidDto);
val bookmark = Bookmark.forOidDto(oidDto);
return bookmarkService.lookup(bookmark).orElse(null);
}
@Override
public OidDto marshal(final Object domainObject) throws Exception {
-
+ System.err.printf("marshal %s%n", domainObject);
if(domainObject == null) {
return null;
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java b/api/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
index 9fffedb..d4e9ee0 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/jaxb/JaxbService.java
@@ -22,12 +22,13 @@ import java.io.StringReader;
import java.io.StringWriter;
import java.util.Map;
-import org.springframework.lang.Nullable;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
+import org.springframework.lang.Nullable;
+
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.resources._Xml;
@@ -57,8 +58,8 @@ public interface JaxbService {
* @param xml
*/
default Object fromXml(
- JAXBContext jaxbContext,
- String xml) {
+ final JAXBContext jaxbContext,
+ final String xml) {
return fromXml(jaxbContext, xml, null);
}
@@ -78,7 +79,7 @@ public interface JaxbService {
/**
* Unmarshalls the XML to the specified domain class.
*/
- default <T> T fromXml(Class<T> domainClass, String xml) {
+ default <T> T fromXml(final Class<T> domainClass, final String xml) {
return fromXml(domainClass, xml, null);
}
@@ -96,7 +97,7 @@ public interface JaxbService {
* Marshalls the object into XML (using a {@link JAXBContext} for the
* object's class).
*/
- default String toXml(Object domainObject) {
+ default String toXml(final Object domainObject) {
return toXml(domainObject, null);
}
@@ -133,7 +134,7 @@ public interface JaxbService {
@Override
@SneakyThrows
@Nullable
- public Object fromXml(
+ public final Object fromXml(
final @NonNull JAXBContext jaxbContext,
final @Nullable String xml,
final @Nullable Map<String, Object> unmarshallerProperties) {
@@ -147,7 +148,7 @@ public interface JaxbService {
@Override
@SneakyThrows
@Nullable
- public <T> T fromXml(
+ public final <T> T fromXml(
final @NonNull Class<T> domainClass,
final @Nullable String xml,
final @Nullable Map<String, Object> unmarshallerProperties) {
@@ -162,7 +163,7 @@ public interface JaxbService {
@Override
@SneakyThrows
- public String toXml(
+ public final String toXml(
final @NonNull Object domainObject,
final @Nullable Map<String, Object> marshallerProperties) {
@@ -241,7 +242,7 @@ public interface JaxbService {
@Override
@SneakyThrows
- public Map<String, String> toXsd(
+ public final Map<String, String> toXsd(
final @NonNull Object domainObject,
final @NonNull IsisSchemas isisSchemas) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
index 1b01e3b..63729df 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/recreatable/RecreatableObjectFacetForXmlRootElementAnnotation.java
@@ -23,10 +23,11 @@ import org.apache.isis.applib.services.urlencoding.UrlEncodingService;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.HasPostConstructMethodCache;
+import lombok.Getter;
+
public class RecreatableObjectFacetForXmlRootElementAnnotation
extends RecreatableObjectFacetAbstract {
-
public RecreatableObjectFacetForXmlRootElementAnnotation(
final FacetHolder holder,
final HasPostConstructMethodCache postConstructMethodCache) {
@@ -36,30 +37,28 @@ extends RecreatableObjectFacetAbstract {
@Override
protected Object doInstantiate(final Class<?> viewModelClass, final String mementoStr) {
-
final String xmlStr = getUrlEncodingService().decodeToString(mementoStr);
final Object viewModelPojo = getJaxbService().fromXml(viewModelClass, xmlStr);
-
return viewModelPojo;
}
@Override
- public String memento(final Object pojo) {
-
- final String xml = getJaxbService().toXml(pojo);
+ public String memento(final Object vmPojo) {
+ final String xml = getJaxbService().toXml(vmPojo);
final String encoded = getUrlEncodingService().encodeString(xml);
-
+ //FIXME[ISIS-2903] gets called about 4 times per same object, why?
+ //System.err.printf("%s%n", encoded);
return encoded;
}
// -- DEPENDENCIES
- private JaxbService getJaxbService() {
- return getServiceRegistry().lookupServiceElseFail(JaxbService.class);
- }
+ @Getter(lazy=true)
+ private final JaxbService jaxbService =
+ getServiceRegistry().lookupServiceElseFail(JaxbService.class);
- private UrlEncodingService getUrlEncodingService() {
- return getServiceRegistry().lookupServiceElseFail(UrlEncodingService.class);
- }
+ @Getter(lazy=true)
+ private final UrlEncodingService urlEncodingService =
+ getServiceRegistry().lookupServiceElseFail(UrlEncodingService.class);
}
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/jaxb/JaxbServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/jaxb/JaxbServiceDefault.java
index 794018c..74cd48a 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/jaxb/JaxbServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/jaxb/JaxbServiceDefault.java
@@ -18,10 +18,20 @@
*/
package org.apache.isis.core.runtimeservices.jaxb;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-import lombok.SneakyThrows;
-import lombok.val;
+import java.util.Map;
+
+import javax.annotation.Priority;
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.domain.DomainObjectList;
import org.apache.isis.applib.jaxb.PersistentEntitiesAdapter;
@@ -32,18 +42,11 @@ import org.apache.isis.commons.internal.context._Context;
import org.apache.isis.commons.internal.resources._Xml;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Service;
-import javax.annotation.Priority;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import java.util.Map;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.val;
@Service
@Named("isis.runtimeservices.JaxbServiceDefault")
@@ -53,7 +56,7 @@ import java.util.Map;
public class JaxbServiceDefault extends Simple {
private final ServiceInjector serviceInjector;
- private final SpecificationLoader specificationLoader;
+ private final SpecificationLoader specLoader;
@Override @SneakyThrows
protected JAXBContext jaxbContextForObject(final @NonNull Object domainObject) {
@@ -61,7 +64,7 @@ public class JaxbServiceDefault extends Simple {
val domainClass = domainObject.getClass();
val domainObjectList = (DomainObjectList) domainObject;
try {
- val elementType = specificationLoader
+ val elementType = specLoader
.specForType(_Context.loadClass(domainObjectList.getElementTypeFqcn()))
.map(ObjectSpecification::getCorrespondingClass)
.orElse(null);
@@ -106,6 +109,15 @@ public class JaxbServiceDefault extends Simple {
@Override
protected void configure(final Marshaller marshaller) {
+
+//debug
+// marshaller.setListener(new Marshaller.Listener() {
+// @Override
+// public void beforeMarshal(final Object source) {
+// System.err.printf("beforeMarshal %s%n", source);
+// }
+// });
+
marshaller.setAdapter(PersistentEntityAdapter.class,
serviceInjector.injectServicesInto(new PersistentEntityAdapter()));
marshaller.setAdapter(PersistentEntitiesAdapter.class,
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/jaxbrefentity/JaxbRefEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/jaxbrefentity/JaxbRefEntity.java
index a968316..03925e8 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/jaxbrefentity/JaxbRefEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/nature/viewmodels/jaxbrefentity/JaxbRefEntity.java
@@ -18,6 +18,8 @@
*/
package demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity;
+import java.util.Objects;
+
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.annotation.ObjectSupport;
import org.apache.isis.applib.annotation.Property;
@@ -38,7 +40,7 @@ implements
@ObjectSupport
public String title() {
- return getName();
+ return Objects.requireNonNull(getName(), "most likely a serialization or re-attach issue");
}
@Property
diff --git a/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoJaxbTest.java b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoJaxbTest.java
new file mode 100644
index 0000000..e0bfa74
--- /dev/null
+++ b/regressiontests/stable-persistence-jdo/src/test/java/org/apache/isis/testdomain/persistence/jdo/JdoJaxbTest.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.testdomain.persistence.jdo;
+
+import java.sql.SQLException;
+
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.transaction.annotation.Transactional;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.applib.services.jaxb.JaxbService;
+import org.apache.isis.core.config.presets.IsisPresets;
+import org.apache.isis.testdomain.conf.Configuration_usingJdo;
+import org.apache.isis.testdomain.jdo.JdoInventoryJaxbVm;
+import org.apache.isis.testing.integtestsupport.applib.IsisIntegrationTestAbstract;
+
+import static org.apache.isis.testdomain.persistence.jdo._TestFixtures.setUp3Books;
+
+import lombok.val;
+
+@SpringBootTest(
+ classes = {
+ Configuration_usingJdo.class,
+ })
+@TestPropertySource(IsisPresets.UseLog4j2Test)
+@Transactional
+class JdoJaxbTest extends IsisIntegrationTestAbstract {
+
+ @Inject private JaxbService jaxbService;
+ @Inject private BookmarkService bookmarkService;
+
+ private JdoInventoryJaxbVm inventoryJaxbVm;
+
+ @BeforeEach
+ void setUp() throws SQLException {
+ setUp3Books(repositoryService);
+ inventoryJaxbVm = factoryService.viewModel(new JdoInventoryJaxbVm());
+ }
+
+ @Test
+ void inventoryJaxbVm_shouldRoundtripProperly() {
+
+ // assert injection worked initially
+ assertEquals("JdoInventoryJaxbVm; 3 products", inventoryJaxbVm.title());
+
+ val books = inventoryJaxbVm.listBooks();
+ val favoriteBook = books.get(0);
+ assertEquals(3, books.size());
+ inventoryJaxbVm.setName("bookstore");
+ inventoryJaxbVm.setBooks(books);
+ inventoryJaxbVm.setFavoriteBook(favoriteBook);
+
+ // round-trip
+ val xml = jaxbService.toXml(inventoryJaxbVm);
+ System.err.printf("%s%n", xml);
+ val recoveredVm =
+ serviceInjector.injectServicesInto(
+ jaxbService.fromXml(JdoInventoryJaxbVm.class, xml));
+
+ assertEquals("JdoInventoryJaxbVm; 3 products", recoveredVm.title());
+ assertEquals("bookstore", recoveredVm.getName());
+ assertEquals(3, recoveredVm.getBooks().size());
+ assertEquals(favoriteBook.getName(), recoveredVm.getFavoriteBook().getName());
+
+ assertEquals(
+ bookmarkService.bookmarkFor(favoriteBook),
+ bookmarkService.bookmarkFor(recoveredVm.getFavoriteBook()));
+
+ }
+
+}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/JdoInventoryJaxbVm.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/JdoInventoryJaxbVm.java
new file mode 100644
index 0000000..771e98e
--- /dev/null
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/JdoInventoryJaxbVm.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.testdomain.jdo;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Collection;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.ObjectSupport;
+import org.apache.isis.applib.annotation.Optionality;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.jaxb.PersistentEntitiesAdapter;
+import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.testdomain.jdo.entities.JdoBook;
+import org.apache.isis.testdomain.jdo.entities.JdoProduct;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@XmlRootElement(name = "root")
+@XmlType(
+ propOrder = {"name", "favoriteBook", "books"}
+)
+@XmlAccessorType(XmlAccessType.FIELD)
+@DomainObject(
+ nature=Nature.VIEW_MODEL
+ , logicalTypeName = "testdomain.jdo.JdoInventoryJaxbVm"
+)
+public class JdoInventoryJaxbVm {
+
+ @XmlTransient @Inject
+ private RepositoryService repository;
+
+ @ObjectSupport public String title() {
+ return String.format("JdoInventoryJaxbVm; %d products", listProducts().size());
+ }
+
+ @Property(editing = Editing.ENABLED)
+ @Getter @Setter
+ @XmlElement
+ private String name;
+
+ @Action
+ public List<JdoProduct> listProducts() {
+ return repository.allInstances(JdoProduct.class);
+ }
+
+ @Action
+ public List<JdoBook> listBooks() {
+ return repository.allInstances(JdoBook.class);
+ }
+
+ @Getter @Setter
+ @Property(editing = Editing.ENABLED, optionality = Optionality.OPTIONAL)
+ @XmlElement(required = false)
+ @XmlJavaTypeAdapter(PersistentEntityAdapter.class)
+ private JdoBook favoriteBook = null;
+
+ @Getter @Setter
+ @Collection
+ @XmlElement(name = "book")
+ @XmlJavaTypeAdapter(PersistentEntitiesAdapter.class)
+ private java.util.Collection<JdoBook> books = new ArrayList<>();
+
+}
\ No newline at end of file
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
index ff1e841..c9141a9 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/service/conneg/ContentNegotiationServiceForRestfulObjectsV1_0.java
@@ -212,9 +212,11 @@ implements ContentNegotiationService {
final ObjectSpecification actionOwnerSpec = actionOwnerSpecFrom(objectAndActionInvocation);
final String actionId = actionIdFrom(objectAndActionInvocation);
final String actionArguments = actionArgumentsFrom(objectAndActionInvocation);
- final DomainObjectList list = domainObjectListFrom(collectionAdapters, elementSpec, actionOwnerSpec, actionId, actionArguments);
+ final DomainObjectList list = domainObjectListFrom(
+ collectionAdapters, elementSpec, actionOwnerSpec, actionId, actionArguments);
- val listAdapter = ManagedObject.lazy(resourceContext.getMetaModelContext().getSpecificationLoader(), list);
+ val listAdapter = ManagedObject.lazy(
+ resourceContext.getMetaModelContext().getSpecificationLoader(), list);
return responseBuilder(
buildResponse(
resourceContext,