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) {