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/05/31 06:54:52 UTC
[isis] branch master updated: ISIS-3063: adds REST endpoint test using a JAXB VM
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 68be19a3f4 ISIS-3063: adds REST endpoint test using a JAXB VM
68be19a3f4 is described below
commit 68be19a3f445246acf9a2c65c08bd9b4cd84882d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue May 31 08:54:47 2022 +0200
ISIS-3063: adds REST endpoint test using a JAXB VM
---
.../core/metamodel/context/MetaModelContext.java | 5 ++++-
.../isis/testdomain/rest/RestServiceTest.java | 21 +++++++++++++++++++++
.../isis/testdomain/jdo/JdoInventoryResource.java | 15 +++++++++++++++
.../testdomain/util/rest/RestEndpointService.java | 14 ++++++++++++++
.../viewer/resources/_DomainResourceHelper.java | 6 ------
5 files changed, 54 insertions(+), 7 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
index 9dcf4e2185..3bf2024b06 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContext.java
@@ -113,7 +113,10 @@ public interface MetaModelContext {
/**
* Recovers an object (graph) from given {@code bookmark}.
- * Also resolves injection-points for the result.
+ * <p>
+ * Resolves injection-points for the result.
+ * <p>
+ * Supports alias lookup.
*/
default Optional<ManagedObject> loadObject(final @Nullable Bookmark bookmark) {
if(bookmark==null) {
diff --git a/regressiontests/stable-rest/src/test/java/org/apache/isis/testdomain/rest/RestServiceTest.java b/regressiontests/stable-rest/src/test/java/org/apache/isis/testdomain/rest/RestServiceTest.java
index a0ebedcc99..96142f429e 100644
--- a/regressiontests/stable-rest/src/test/java/org/apache/isis/testdomain/rest/RestServiceTest.java
+++ b/regressiontests/stable-rest/src/test/java/org/apache/isis/testdomain/rest/RestServiceTest.java
@@ -34,6 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
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.testdomain.jdo.entities.JdoBook;
import org.apache.isis.testdomain.util.rest.RestEndpointService;
import org.apache.isis.viewer.restfulobjects.jaxrsresteasy4.IsisModuleViewerRestfulObjectsJaxrsResteasy4;
@@ -152,6 +153,26 @@ class RestServiceTest {
}
+ @Test
+ void inventoryAsJaxbVm_viaRestEndpoint() {
+
+ assertTrue(restService.getPort()>0);
+
+ val useRequestDebugLogging = false;
+ val restfulClient = restService.newClient(useRequestDebugLogging);
+
+ val digest = restService.getInventoryAsJaxbVm(restfulClient)
+ .ifFailure(Assertions::fail);
+
+ final JdoInventoryJaxbVm inventoryAsJaxbVm = digest.getValue().orElseThrow();
+
+ assertNotNull(inventoryAsJaxbVm);
+ assertEquals("Bookstore", inventoryAsJaxbVm.getName());
+
+ //TODO test whether we can call an action eg. listBooks() on the VM via REST
+
+ }
+
@Test
void httpSessionInfo() {
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/JdoInventoryResource.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/JdoInventoryResource.java
index 5844564557..676c48aa5a 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/JdoInventoryResource.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/jdo/JdoInventoryResource.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.NatureOfService;
import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.applib.services.factory.FactoryService;
import org.apache.isis.applib.services.repository.RepositoryService;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.collections._Lists;
@@ -53,6 +54,7 @@ import lombok.val;
public class JdoInventoryResource {
final RepositoryService repository;
+ final FactoryService factoryService;
@Action
public List<JdoProduct> listProducts() {
@@ -150,5 +152,18 @@ public class JdoInventoryResource {
return books;
}
+ @Action
+ public JdoInventoryJaxbVm inventoryAsJaxbVm() {
+ val inventoryJaxbVm = factoryService.viewModel(new JdoInventoryJaxbVm());
+ val books = _NullSafe.isEmpty(inventoryJaxbVm.listBooks())
+ ? multipleBooks(3)
+ : inventoryJaxbVm.listBooks();
+ if(_NullSafe.size(books)>0) {
+ inventoryJaxbVm.setName("Bookstore");
+ inventoryJaxbVm.setBooks(books);
+ inventoryJaxbVm.setFavoriteBook(books.get(0));
+ }
+ return inventoryJaxbVm;
+ }
}
diff --git a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/util/rest/RestEndpointService.java b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/util/rest/RestEndpointService.java
index 4f27e1a3b5..ec86fa5858 100644
--- a/regressiontests/stable/src/main/java/org/apache/isis/testdomain/util/rest/RestEndpointService.java
+++ b/regressiontests/stable/src/main/java/org/apache/isis/testdomain/util/rest/RestEndpointService.java
@@ -33,6 +33,7 @@ import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.functional.Try;
import org.apache.isis.core.config.RestEasyConfiguration;
import org.apache.isis.core.config.viewer.web.WebAppContextPath;
+import org.apache.isis.testdomain.jdo.JdoInventoryJaxbVm;
import org.apache.isis.testdomain.jdo.entities.JdoBook;
import org.apache.isis.testdomain.ldap.LdapConstants;
import org.apache.isis.testdomain.util.dto.BookDto;
@@ -200,6 +201,19 @@ public class RestEndpointService {
return digest;
}
+ public Try<JdoInventoryJaxbVm> getInventoryAsJaxbVm(final RestfulClient client) {
+
+ val request = newInvocationBuilder(client,
+ INVENTORY_RESOURCE + "/actions/inventoryAsJaxbVm/invoke");
+ val args = client.arguments()
+ .build();
+
+ val response = request.post(args);
+ val digest = client.digest(response, JdoInventoryJaxbVm.class);
+
+ return digest;
+ }
+
public Try<String> getHttpSessionInfo(final RestfulClient client) {
diff --git a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/_DomainResourceHelper.java b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/_DomainResourceHelper.java
index 4d08aefb93..5fa2466151 100644
--- a/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/_DomainResourceHelper.java
+++ b/viewers/restfulobjects/viewer/src/main/java/org/apache/isis/viewer/restfulobjects/viewer/resources/_DomainResourceHelper.java
@@ -64,12 +64,6 @@ class _DomainResourceHelper {
return new _DomainResourceHelper(resourceContext, objectAdapter, new DomainObjectLinkTo());
}
-// public static _DomainResourceHelper ofServiceResource(
-// final IResourceContext resourceContext,
-// final ManagedObject objectAdapter) {
-// return new _DomainResourceHelper(resourceContext, objectAdapter, new DomainServiceLinkTo());
-// }
-
public static _DomainResourceHelper ofServiceResource(
final IResourceContext resourceContext,
final String serviceIdOrAlias) {