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 c1b4364049 ISIS-3277: convert RO artifacts to Java Modules (except 
jaxrsresteasay)
c1b4364049 is described below

commit c1b43640492f67a2f2945efaf26c788b354e9fab
Author: Andi Huber <[email protected]>
AuthorDate: Tue Nov 15 08:11:35 2022 +0100

    ISIS-3277: convert RO artifacts to Java Modules (except jaxrsresteasay)
    
    - jaxrsresteasay won't work as of resteasy 5.0.0-final
    
    module ... reads package org.jboss.resteasy.concurrent from both
    resteasy.core and resteasy.core.spi
---
 commons/pom.xml                                    |  8 ++--
 core/metamodel/src/main/java/module-info.java      | 10 +++-
 .../context/MetaModelContext_usingSpring.java      |  7 ++-
 .../applib/src/main/java/module-info.java          | 43 +++++++++++++++++
 .../client/src/main/java/module-info.java          | 34 +++++++------
 viewers/restfulobjects/jaxrs-resteasy/pom.xml      |  4 ++
 .../webmodule/WebModuleJaxrsResteasy.java          |  7 +--
 .../rendering/src/main/java/module-info.java       | 54 +++++++++++++++++++++
 .../domainobjects/DomainObjectReprRenderer.java    |  3 +-
 .../domainobjects/DomainServiceLinkTo.java         |  3 +-
 .../service/swagger/SwaggerServiceMenu.java        |  2 +-
 .../service/swagger/internal/Generation.java       | 25 ++++------
 .../viewer/src/main/java/module-info.java          | 55 ++++++++++++++++++++++
 13 files changed, 205 insertions(+), 50 deletions(-)

diff --git a/commons/pom.xml b/commons/pom.xml
index ef87ee7808..e4453878f3 100644
--- a/commons/pom.xml
+++ b/commons/pom.xml
@@ -69,10 +69,10 @@
                </dependency>
                
                <!-- provides @Nullable that's required by Spring 5.x (as 
Spring is on the module path) -->
-               <dependency>
-                       <groupId>com.google.code.findbugs</groupId>
-                       <artifactId>jsr305</artifactId>
-               </dependency>
+<!--           <dependency>-->
+<!--                   <groupId>com.google.code.findbugs</groupId>-->
+<!--                   <artifactId>jsr305</artifactId>-->
+<!--           </dependency>-->
 
                <dependency>
                        <groupId>com.fasterxml.jackson.core</groupId>
diff --git a/core/metamodel/src/main/java/module-info.java 
b/core/metamodel/src/main/java/module-info.java
index b7c0eb204a..2a00891b9c 100644
--- a/core/metamodel/src/main/java/module-info.java
+++ b/core/metamodel/src/main/java/module-info.java
@@ -36,6 +36,7 @@ open module org.apache.causeway.core.metamodel {
     exports org.apache.causeway.core.metamodel.facets.all.i8n.imperative;
     exports org.apache.causeway.core.metamodel.facets.all.i8n.staatic;
     exports org.apache.causeway.core.metamodel.facets.all.named;
+    exports org.apache.causeway.core.metamodel.facets.collections;
     exports org.apache.causeway.core.metamodel.facets.members.cssclass;
     exports 
org.apache.causeway.core.metamodel.facets.members.cssclassfa.annotprop;
     exports org.apache.causeway.core.metamodel.facets.members.cssclassfa;
@@ -53,12 +54,16 @@ open module org.apache.causeway.core.metamodel {
     exports org.apache.causeway.core.metamodel.facets.object.viewmodel;
     exports org.apache.causeway.core.metamodel.facets.objectvalue.labelat;
     exports 
org.apache.causeway.core.metamodel.facets.properties.property.modify;
+    exports org.apache.causeway.core.metamodel.facets.properties.update.clear;
+    exports org.apache.causeway.core.metamodel.facets.properties.update.modify;
     exports org.apache.causeway.core.metamodel.facets.value.semantics;
 
     exports org.apache.causeway.core.metamodel.interactions;
     exports org.apache.causeway.core.metamodel.interactions.managed;
     exports org.apache.causeway.core.metamodel.interactions.managed.nonscalar;
 
+    exports org.apache.causeway.core.metamodel.methods;
+
     exports org.apache.causeway.core.metamodel.object;
     exports org.apache.causeway.core.metamodel.objectmanager.memento;
     exports org.apache.causeway.core.metamodel.objectmanager;
@@ -92,7 +97,10 @@ open module org.apache.causeway.core.metamodel {
     exports org.apache.causeway.core.metamodel.specloader
         to org.apache.causeway.core.runtimeservices,
         //TODO probably don't expose SpecificationLoader to viewers
-        org.apache.causeway.viewer.wicket.model, 
org.apache.causeway.viewer.wicket.ui,
+        org.apache.causeway.viewer.restfulobjects.rendering,
+        org.apache.causeway.viewer.restfulobjects.viewer,
+        org.apache.causeway.viewer.wicket.model,
+        org.apache.causeway.viewer.wicket.ui,
         org.apache.causeway.incubator.viewer.graphql.viewer;
 
     exports org.apache.causeway.core.metamodel.specloader.validator;
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext_usingSpring.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext_usingSpring.java
index 7e7ed9a656..87e2cb59cd 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext_usingSpring.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/context/MetaModelContext_usingSpring.java
@@ -49,7 +49,6 @@ import 
org.apache.causeway.core.metamodel.execution.MemberExecutorService;
 import org.apache.causeway.core.metamodel.facets.object.icon.ObjectIconService;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.objectmanager.ObjectManager;
-import org.apache.causeway.core.metamodel.services.ServiceUtil;
 import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
 import 
org.apache.causeway.core.security.authentication.manager.AuthenticationManager;
 import 
org.apache.causeway.core.security.authorization.manager.AuthorizationManager;
@@ -194,7 +193,11 @@ class MetaModelContext_usingSpring implements 
MetaModelContext {
         return getServiceRegistry()
                 .streamRegisteredBeans()
                 .map(this::toManagedObject)
-                .collect(Collectors.toMap(ServiceUtil::idOfAdapter, v->v, 
(o,n)->n, LinkedHashMap::new));
+                .collect(Collectors.toMap(
+                        
service->service.getSpecification().getLogicalTypeName(),
+                        v->v,
+                        (o,n)->n,
+                        LinkedHashMap::new));
     }
 
     private ManagedObject toManagedObject(final _ManagedBeanAdapter 
managedBeanAdapter) {
diff --git a/viewers/restfulobjects/applib/src/main/java/module-info.java 
b/viewers/restfulobjects/applib/src/main/java/module-info.java
new file mode 100644
index 0000000000..d9ec7aca94
--- /dev/null
+++ b/viewers/restfulobjects/applib/src/main/java/module-info.java
@@ -0,0 +1,43 @@
+/*
+ *  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.
+ */
+module org.apache.causeway.viewer.restfulobjects.applib {
+    exports org.apache.causeway.viewer.restfulobjects.applib.homepage;
+    exports org.apache.causeway.viewer.restfulobjects.applib.errors;
+    exports org.apache.causeway.viewer.restfulobjects.applib.util;
+    exports org.apache.causeway.viewer.restfulobjects.applib.domaintypes;
+    exports org.apache.causeway.viewer.restfulobjects.applib.domainobjects;
+    exports org.apache.causeway.viewer.restfulobjects.applib.version;
+    exports org.apache.causeway.viewer.restfulobjects.applib.boot;
+    exports org.apache.causeway.viewer.restfulobjects.applib;
+    exports org.apache.causeway.viewer.restfulobjects.applib.health;
+    exports org.apache.causeway.viewer.restfulobjects.applib.menubars;
+    exports org.apache.causeway.viewer.restfulobjects.applib.user;
+    exports org.apache.causeway.viewer.restfulobjects.applib.dtos;
+
+    requires com.fasterxml.jackson.annotation;
+    requires com.fasterxml.jackson.core;
+    requires com.fasterxml.jackson.databind;
+    requires java.ws.rs;
+    requires lombok;
+    requires org.apache.causeway.applib;
+    requires org.apache.causeway.commons;
+    requires org.joda.time;
+    requires spring.context;
+    requires spring.core;
+}
\ No newline at end of file
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/ServiceUtil.java
 b/viewers/restfulobjects/client/src/main/java/module-info.java
similarity index 55%
rename from 
core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/ServiceUtil.java
rename to viewers/restfulobjects/client/src/main/java/module-info.java
index 0cc44cb82c..d0d437acbb 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/ServiceUtil.java
+++ b/viewers/restfulobjects/client/src/main/java/module-info.java
@@ -16,22 +16,20 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.core.metamodel.services;
+module org.apache.causeway.viewer.restfulobjects.client {
+    exports org.apache.causeway.viewer.restfulobjects.client.log;
+    exports org.apache.causeway.viewer.restfulobjects.client;
+    exports org.apache.causeway.viewer.restfulobjects.client.auth;
 
-import org.apache.causeway.core.metamodel.object.ManagedObject;
-import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
-
-public final class ServiceUtil {
-
-    private ServiceUtil() {
-    }
-
-    public static String idOfSpec(final ObjectSpecification serviceSpec) {
-        return serviceSpec.getLogicalTypeName();
-    }
-
-    public static String idOfAdapter(final ManagedObject serviceAdapter) {
-        return idOfSpec(serviceAdapter.getSpecification());
-    }
-
-}
+    requires com.fasterxml.jackson.core;
+    requires com.fasterxml.jackson.databind;
+    requires java.annotation;
+    requires java.ws.rs;
+    requires java.xml.bind;
+    requires lombok;
+    requires org.apache.causeway.applib;
+    requires org.apache.causeway.commons;
+    requires org.apache.causeway.viewer.restfulobjects.applib;
+    requires org.apache.logging.log4j;
+    requires spring.core;
+}
\ No newline at end of file
diff --git a/viewers/restfulobjects/jaxrs-resteasy/pom.xml 
b/viewers/restfulobjects/jaxrs-resteasy/pom.xml
index 129448815c..93cb4e4fe2 100644
--- a/viewers/restfulobjects/jaxrs-resteasy/pom.xml
+++ b/viewers/restfulobjects/jaxrs-resteasy/pom.xml
@@ -92,6 +92,10 @@
                                        <groupId>org.ow2.asm</groupId>
                                        <artifactId>asm</artifactId>
                                </exclusion>
+                               <exclusion>
+                                       
<groupId>org.springframework.boot</groupId>
+                                       
<artifactId>spring-boot-starter-tomcat</artifactId>
+                               </exclusion>
                        </exclusions>
                </dependency>
 
diff --git 
a/viewers/restfulobjects/jaxrs-resteasy/src/main/java/org/apache/causeway/viewer/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.java
 
b/viewers/restfulobjects/jaxrs-resteasy/src/main/java/org/apache/causeway/viewer/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.java
index aa6a8f657b..dbf85139a9 100644
--- 
a/viewers/restfulobjects/jaxrs-resteasy/src/main/java/org/apache/causeway/viewer/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.java
+++ 
b/viewers/restfulobjects/jaxrs-resteasy/src/main/java/org/apache/causeway/viewer/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.java
@@ -56,7 +56,8 @@ import lombok.val;
  *
  */
 @Service
-@Named(CausewayModuleViewerRestfulObjectsApplib.NAMESPACE + 
".WebModuleJaxrsRestEasy4") // CAUTION: SwaggerServiceMenu refers to this name
+//CAUTION: SwaggerServiceMenu refers to this name
+@Named(CausewayModuleViewerRestfulObjectsApplib.NAMESPACE + 
".WebModuleJaxrsRestEasy")
 @javax.annotation.Priority(PriorityPrecedence.MIDPOINT - 80)
 @Qualifier("JaxrsRestEasy4")
 public final class WebModuleJaxrsResteasy extends WebModuleAbstract {
@@ -85,7 +86,7 @@ public final class WebModuleJaxrsResteasy extends 
WebModuleAbstract {
     private final String name = "JaxrsRestEasy4";
 
     @Override
-    public void prepare(WebModuleContext ctx) {
+    public void prepare(final WebModuleContext ctx) {
 
         // forces RuntimeDelegate.getInstance() to be provided by RestEasy
         // (and not by eg. the JEE container if any)
@@ -101,7 +102,7 @@ public final class WebModuleJaxrsResteasy extends 
WebModuleAbstract {
     }
 
     @Override
-    public Can<ServletContextListener> init(ServletContext ctx) throws 
ServletException {
+    public Can<ServletContextListener> init(final ServletContext ctx) throws 
ServletException {
 
         val authenticationStrategyClassName = causewayConfiguration.getViewer()
                 .getRestfulobjects().getAuthentication().getStrategyClassName()
diff --git a/viewers/restfulobjects/rendering/src/main/java/module-info.java 
b/viewers/restfulobjects/rendering/src/main/java/module-info.java
new file mode 100644
index 0000000000..e6a4afd8d3
--- /dev/null
+++ b/viewers/restfulobjects/rendering/src/main/java/module-info.java
@@ -0,0 +1,54 @@
+/*
+ *  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.
+ */
+module org.apache.causeway.viewer.restfulobjects.rendering {
+    exports org.apache.causeway.viewer.restfulobjects.rendering.service.conneg;
+    exports 
org.apache.causeway.viewer.restfulobjects.rendering.service.swagger;
+    exports 
org.apache.causeway.viewer.restfulobjects.rendering.service.valuerender;
+    exports org.apache.causeway.viewer.restfulobjects.rendering.util;
+    exports org.apache.causeway.viewer.restfulobjects.rendering.domainobjects;
+    exports org.apache.causeway.viewer.restfulobjects.rendering;
+    exports 
org.apache.causeway.viewer.restfulobjects.rendering.service.swagger.internal;
+    exports org.apache.causeway.viewer.restfulobjects.rendering.domaintypes;
+    exports 
org.apache.causeway.viewer.restfulobjects.rendering.service.acceptheader;
+    exports org.apache.causeway.viewer.restfulobjects.rendering.service;
+
+    requires org.apache.causeway.viewer.restfulobjects.applib;
+    requires com.fasterxml.jackson.core;
+    requires com.fasterxml.jackson.databind;
+    requires jakarta.activation;
+    requires java.annotation;
+    requires java.inject;
+    requires java.sql;
+    requires java.ws.rs;
+    requires java.xml.bind;
+    requires lombok;
+    requires org.apache.causeway.applib;
+    requires org.apache.causeway.commons;
+    requires org.apache.causeway.core.config;
+    requires org.apache.causeway.core.metamodel;
+    requires org.apache.causeway.core.runtime;
+    requires org.apache.causeway.schema;
+    requires org.apache.logging.log4j;
+    requires org.joda.time;
+    requires spring.beans;
+    requires spring.context;
+    requires spring.core;
+    requires swagger.core;
+    requires swagger.models;
+}
\ No newline at end of file
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
index 254b5d3b2b..8809e110ae 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/DomainObjectReprRenderer.java
@@ -29,7 +29,6 @@ import 
org.apache.causeway.core.metamodel.interactions.managed.ManagedCollection
 import org.apache.causeway.core.metamodel.interactions.managed.ManagedProperty;
 import org.apache.causeway.core.metamodel.object.ManagedObject;
 import org.apache.causeway.core.metamodel.object.ManagedObjects;
-import org.apache.causeway.core.metamodel.services.ServiceUtil;
 import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation;
@@ -190,7 +189,7 @@ extends ReprRendererAbstract<ManagedObject> {
 
             // serviceId or instance Id
             if (isService) {
-                representation.mapPutString("serviceId", 
ServiceUtil.idOfAdapter(objectAdapter));
+                representation.mapPutString("serviceId", 
objectAdapter.getSpecification().getLogicalTypeName());
             } else {
                 oidIfAny.ifPresent(oid->{
                     Optional.ofNullable(oid.getLogicalTypeName())
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java
index 49e11f23dc..3889837456 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/DomainServiceLinkTo.java
@@ -19,7 +19,6 @@
 package org.apache.causeway.viewer.restfulobjects.rendering.domainobjects;
 
 import org.apache.causeway.core.metamodel.object.ManagedObject;
-import org.apache.causeway.core.metamodel.services.ServiceUtil;
 import org.apache.causeway.viewer.restfulobjects.applib.Rel;
 import org.apache.causeway.viewer.restfulobjects.applib.RepresentationType;
 import org.apache.causeway.viewer.restfulobjects.rendering.LinkBuilder;
@@ -29,7 +28,7 @@ public class DomainServiceLinkTo extends DomainObjectLinkTo {
 
     @Override
     public ObjectAdapterLinkTo with(final ManagedObject objectAdapter) {
-        serviceId = ServiceUtil.idOfAdapter(objectAdapter);
+        serviceId = objectAdapter.getSpecification().getLogicalTypeName();
         return super.with(objectAdapter);
     }
 
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/SwaggerServiceMenu.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/SwaggerServiceMenu.java
index 4455f66605..2a8c3210cd 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/SwaggerServiceMenu.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/SwaggerServiceMenu.java
@@ -156,7 +156,7 @@ public class SwaggerServiceMenu {
     // -- HELPER
     @Programmatic String disableReasonWhenRequiresROViewer() {
         final Optional<?> moduleIfAny = serviceRegistry
-                .lookupBeanById("causeway.viewer.ro.WebModuleJaxrsRestEasy4");
+                .lookupBeanById("causeway.viewer.ro.WebModuleJaxrsRestEasy");
         return moduleIfAny.isPresent()
                 ? null
                 : "RestfulObjects viewer is not configured";
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
index 338f5cf9ed..2fca0ff7c5 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/Generation.java
@@ -34,7 +34,6 @@ import org.apache.causeway.applib.services.swagger.Visibility;
 import org.apache.causeway.commons.internal.base._Strings;
 import org.apache.causeway.commons.internal.collections._Sets;
 import 
org.apache.causeway.core.metamodel.facets.object.domainservice.DomainServiceFacet;
-import org.apache.causeway.core.metamodel.services.ServiceUtil;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
 import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
@@ -325,7 +324,7 @@ class Generation {
 
     void appendServicePath(final ObjectSpecification objectSpec) {
 
-        final String serviceId = serviceIdFor(objectSpec);
+        final String serviceId = objectSpec.getLogicalTypeName();
 
         final Path path = new Path();
         swagger.path(String.format("/services/%s", serviceId), path);
@@ -354,7 +353,7 @@ class Generation {
 
     ModelImpl appendObjectPathAndModelDefinitions(final ObjectSpecification 
objectSpec) {
 
-        final String logicalTypeName = logicalTypeNameFor(objectSpec);
+        final String logicalTypeName = objectSpec.getLogicalTypeName();
 
         final Path path = new Path();
         swagger.path(String.format("/objects/%s/{objectId}", logicalTypeName), 
path);
@@ -427,7 +426,7 @@ class Generation {
             final ObjectSpecification serviceSpec,
             final ObjectAction serviceAction) {
 
-        final String serviceId = serviceIdFor(serviceSpec);
+        final String serviceId = serviceSpec.getLogicalTypeName();
         final String actionId = serviceAction.getId();
 
         val parameters = serviceAction.getParameters();
@@ -513,7 +512,7 @@ class Generation {
             final ObjectSpecification objectSpec,
             final OneToManyAssociation collection) {
 
-        final String logicalTypeName = logicalTypeNameFor(objectSpec);
+        final String logicalTypeName = objectSpec.getLogicalTypeName();
         final String collectionId = collection.getId();
 
         final Path path = new Path();
@@ -542,7 +541,7 @@ class Generation {
             final ObjectSpecification objectSpec,
             final ObjectAction objectAction) {
 
-        final String logicalTypeName = logicalTypeNameFor(objectSpec);
+        final String logicalTypeName = objectSpec.getLogicalTypeName();
         final String actionId = objectAction.getId();
 
         val parameters = objectAction.getParameters();
@@ -647,7 +646,7 @@ class Generation {
         final ArrayProperty arrayProperty = new ArrayProperty();
         if(objectSpecification != null && 
objectSpecification.getCorrespondingClass() != Object.class) {
             arrayProperty
-            .description("List of " + logicalTypeNameFor(objectSpecification))
+            .description("List of " + objectSpecification.getLogicalTypeName())
             .items(modelFor(objectSpecification));
         } else {
             arrayProperty.items(new ObjectProperty());
@@ -685,7 +684,7 @@ class Generation {
         if(specification.getCorrespondingClass() == java.lang.Enum.class) {
             return new StringProperty();
         }
-        return newRefProperty(logicalTypeNameFor(specification) + "Repr");
+        return newRefProperty(specification.getLogicalTypeName() + "Repr");
     }
 
     void updateObjectModel(
@@ -694,7 +693,7 @@ class Generation {
             final List<OneToOneAssociation> objectProperties,
             final List<OneToManyAssociation> objectCollections) {
 
-        final String logicalTypeName = logicalTypeNameFor(objectSpecification);
+        final String logicalTypeName = 
objectSpecification.getLogicalTypeName();
         final String className = objectSpecification.getFullIdentifier();
 
         model
@@ -753,14 +752,6 @@ class Generation {
                 .required("extensions");
     }
 
-    static String serviceIdFor(final ObjectSpecification serviceSpec) {
-        return ServiceUtil.idOfSpec(serviceSpec);
-    }
-
-    static String logicalTypeNameFor(final ObjectSpecification objectSpec) {
-        return objectSpec.getLogicalTypeName();
-    }
-
     static StringProperty stringProperty() {
         return new StringProperty();
     }
diff --git a/viewers/restfulobjects/viewer/src/main/java/module-info.java 
b/viewers/restfulobjects/viewer/src/main/java/module-info.java
new file mode 100644
index 0000000000..a3a78111f8
--- /dev/null
+++ b/viewers/restfulobjects/viewer/src/main/java/module-info.java
@@ -0,0 +1,55 @@
+/*
+ *  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.
+ */
+module org.apache.causeway.viewer.restfulobjects.viewer {
+    exports org.apache.causeway.viewer.restfulobjects.viewer.jaxrsapp;
+    exports org.apache.causeway.viewer.restfulobjects.viewer.webmodule;
+    exports org.apache.causeway.viewer.restfulobjects.viewer.context;
+    exports org.apache.causeway.viewer.restfulobjects.viewer;
+    exports org.apache.causeway.viewer.restfulobjects.viewer.webmodule.auth;
+    exports org.apache.causeway.viewer.restfulobjects.viewer.resources;
+    exports org.apache.causeway.viewer.restfulobjects.viewer.util;
+    exports org.apache.causeway.viewer.restfulobjects.viewer.mappers.entity;
+    exports org.apache.causeway.viewer.restfulobjects.viewer.mappers;
+    exports 
org.apache.causeway.viewer.restfulobjects.viewer.resources.serialization;
+
+    requires com.fasterxml.jackson.core;
+    requires com.fasterxml.jackson.databind;
+    requires java.annotation;
+    requires java.inject;
+    requires java.transaction;
+    requires java.ws.rs;
+    requires java.xml.bind;
+    requires javax.servlet.api;
+    requires lombok;
+    requires org.apache.causeway.applib;
+    requires org.apache.causeway.commons;
+    requires org.apache.causeway.core.config;
+    requires org.apache.causeway.core.metamodel;
+    requires org.apache.causeway.core.webapp;
+    requires org.apache.causeway.security.api;
+    requires org.apache.causeway.viewer.commons.applib;
+    requires org.apache.causeway.viewer.commons.services;
+    requires org.apache.causeway.viewer.restfulobjects.applib;
+    requires org.apache.causeway.viewer.restfulobjects.rendering;
+    requires org.apache.logging.log4j;
+    requires spring.beans;
+    requires spring.context;
+    requires spring.core;
+    requires spring.web;
+}
\ No newline at end of file

Reply via email to