This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/CAUSEWAY-3676 by this push:
     new 80b970a160 CAUSEWAY-3676: adds scalar support for jdk and joda dates 
and times
80b970a160 is described below

commit 80b970a1600c8615c55bb53340e5339072b68a48
Author: danhaywood <[email protected]>
AuthorDate: Sun Feb 18 14:25:59 2024 +0000

    CAUSEWAY-3676: adds scalar support for jdk and joda dates and times
---
 .../core/config/CausewayConfiguration.java         |   6 +-
 .../marshallers/ScalarMarshallerBigDecimal.java    |   1 +
 .../marshallers/ScalarMarshallerBigInteger.java    |   1 +
 .../marshallers/ScalarMarshallerBytePrimitive.java |   3 +-
 .../marshallers/ScalarMarshallerByteWrapper.java   |   3 +-
 .../ScalarMarshallerCharacterWrapper.java          |   3 +-
 ...ate.java => ScalarMarshallerJdk8LocalTime.java} |  20 +-
 ...ava => ScalarMarshallerJdk8OffsetDateTime.java} |  18 +-
 ...te.java => ScalarMarshallerJdk8OffsetTime.java} |  18 +-
 .../marshallers/ScalarMarshallerJodaLocalDate.java |   6 +-
 ...ate.java => ScalarMarshallerJodaLocalTime.java} |  19 +-
 ...erBigDecimal.java => ScalarMarshallerUuid.java} |  17 +-
 .../viewer/test/domain/calc/Calculator.java        |  52 ++-
 ...alculator_IntegTest.each.add_big_decimals._.gql |   4 +-
 ...r_IntegTest.each.add_big_decimals.approved.json |   4 +-
 ...ator_IntegTest.each.jdk8_local_plus_days._.gql} |   2 +-
 ...egTest.each.jdk8_local_plus_days.approved.json} |   2 +-
 ...st.each.jdk8_local_plus_hours_and_minutes._.gql |   7 +
 ...jdk8_local_plus_hours_and_minutes.approved.json |   9 +
 ...k8_offset_plus_days_and_hours_and_minutes._.gql |   7 +
 ...t_plus_days_and_hours_and_minutes.approved.json |   9 +
 ...t.each.jdk8_offset_plus_hours_and_minutes._.gql |   7 +
 ...dk8_offset_plus_hours_and_minutes.approved.json |   9 +
 ...dk8_zoned_plus_days_and_hours_and_minutes._.gql |   7 +
 ...d_plus_days_and_hours_and_minutes.approved.json |   9 +
 ...ator_IntegTest.each.joda_local_plus_days._.gql} |   2 +-
 ...egTest.each.joda_local_plus_days.approved.json} |   2 +-
 ...st.each.joda_local_plus_hours_and_minutes._.gql |   7 +
 ...joda_local_plus_hours_and_minutes.approved.json |   9 +
 ...Calculator_IntegTest.each.joda_plus_days._.gql} |   2 +-
 ...or_IntegTest.each.joda_plus_days.approved.json} |   2 +-
 .../Calculator_IntegTest.each.some_locale._.gql    |   7 +
 ...lator_IntegTest.each.some_locale.approved.json} |   4 +-
 .../e2e/Calculator_IntegTest.each.some_url._.gql   |   7 +
 ...lculator_IntegTest.each.some_url.approved.json} |   4 +-
 .../e2e/Calculator_IntegTest.each.some_uuid._.gql  |   7 +
 ...lculator_IntegTest.each.some_uuid.approved.json |   9 +
 viewers/graphql/test/src/test/resources/schema.gql | 369 ++++++++++++++++-----
 38 files changed, 520 insertions(+), 154 deletions(-)

diff --git 
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
 
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
index 36ef5f5891..036f2bac03 100644
--- 
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
+++ 
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
@@ -2419,6 +2419,10 @@ public class CausewayConfiguration {
             @Data
             public static class ScalarMarshaller {
 
+                /**
+                 * For both JDK8's {@link java.time.LocalTime} and JodaTime's 
{@link org.joda.time.LocalTime}
+                 */
+                private String localTimeFormat = "HH:mm:ss";
                 /**
                  * For both JDK8's {@link java.time.LocalDate} and JodaTime's 
{@link org.joda.time.LocalDate}
                  */
@@ -2426,7 +2430,7 @@ public class CausewayConfiguration {
                 /**
                  * for JDK8's {@link java.time.ZonedDateTime} and JodaTime's 
{@link org.joda.time.DateTime}
                  */
-                private String zonedDateTimeFormat = "yyyy-MM-dd HH:mm:ss z";
+                private String zonedDateTimeFormat = 
"yyyy-MM-dd'T'HH:mm:ssXXX";
             }
 
             @Getter
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigDecimal.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigDecimal.java
index 515a3f905a..de87001b9c 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigDecimal.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigDecimal.java
@@ -24,6 +24,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 
 import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
 
 import org.springframework.stereotype.Component;
 
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigInteger.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigInteger.java
index 4e14d0723a..247d7311ce 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigInteger.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigInteger.java
@@ -24,6 +24,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 
 import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
 
 import org.springframework.stereotype.Component;
 
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBytePrimitive.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBytePrimitive.java
index b7b198c6c1..68428a1ec1 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBytePrimitive.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBytePrimitive.java
@@ -22,6 +22,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 
 import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
 
 import org.springframework.stereotype.Component;
 
@@ -36,7 +37,7 @@ public class ScalarMarshallerBytePrimitive extends 
ScalarMarshallerAbstract<Byte
 
     @Inject
     public ScalarMarshallerBytePrimitive(final CausewayConfiguration 
causewayConfiguration) {
-        super(byte.class, Scalars.GraphQLInt, causewayConfiguration);
+        super(byte.class, ExtendedScalars.GraphQLByte, causewayConfiguration);
     }
 
     @Override
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerByteWrapper.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerByteWrapper.java
index 18016d6223..0177c48716 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerByteWrapper.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerByteWrapper.java
@@ -22,6 +22,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 
 import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
 
 import org.springframework.stereotype.Component;
 
@@ -36,7 +37,7 @@ public class ScalarMarshallerByteWrapper extends 
ScalarMarshallerAbstract<Byte>
 
     @Inject
     public ScalarMarshallerByteWrapper(final CausewayConfiguration 
causewayConfiguration) {
-        super(Byte.class, Scalars.GraphQLInt, causewayConfiguration);
+        super(Byte.class, ExtendedScalars.GraphQLByte, causewayConfiguration);
     }
 
     @Override
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerCharacterWrapper.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerCharacterWrapper.java
index e8c96f79f2..5509bd3ba5 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerCharacterWrapper.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerCharacterWrapper.java
@@ -22,6 +22,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 
 import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
 
 import org.springframework.stereotype.Component;
 
@@ -36,7 +37,7 @@ public class ScalarMarshallerCharacterWrapper extends 
ScalarMarshallerAbstract<C
 
     @Inject
     public ScalarMarshallerCharacterWrapper(final CausewayConfiguration 
causewayConfiguration) {
-        super(Character.class, Scalars.GraphQLString, causewayConfiguration);
+        super(Character.class, ExtendedScalars.GraphQLChar, 
causewayConfiguration);
     }
 
     @Override
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8LocalTime.java
similarity index 71%
copy from 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
copy to 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8LocalTime.java
index 06739664e6..fd6360a04d 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8LocalTime.java
@@ -18,12 +18,18 @@
  */
 package org.apache.causeway.viewer.graphql.model.marshallers;
 
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.OffsetTime;
+import java.time.format.DateTimeFormatter;
+
 import javax.annotation.Priority;
 import javax.inject.Inject;
 
 import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
 
-import org.joda.time.LocalDate;
+import org.joda.time.LocalDateTime;
 
 import org.springframework.stereotype.Component;
 
@@ -34,19 +40,19 @@ import 
org.apache.causeway.viewer.graphql.applib.marshallers.ScalarMarshallerAbs
 
 @Component
 @Priority(PriorityPrecedence.LATE)
-public class ScalarMarshallerJodaLocalDate extends 
ScalarMarshallerAbstract<LocalDate> {
+public class ScalarMarshallerJdk8LocalTime extends 
ScalarMarshallerAbstract<LocalTime> {
 
     private final CausewayConfiguration.Viewer.Graphql.ScalarMarshaller 
scalarMarshallerConfig;
 
     @Inject
-    public ScalarMarshallerJodaLocalDate(final CausewayConfiguration 
causewayConfiguration) {
-        super(LocalDate.class, Scalars.GraphQLString, causewayConfiguration);
+    public ScalarMarshallerJdk8LocalTime(final CausewayConfiguration 
causewayConfiguration) {
+        super(LocalTime.class, Scalars.GraphQLString, causewayConfiguration);
         scalarMarshallerConfig = 
causewayConfiguration.getViewer().getGraphql().getScalarMarshaller();
     }
 
     @Override
-    public LocalDate unmarshal(Object graphValue, Class<?> targetType) {
-        String argumentStr = (String) graphValue;
-        return LocalDate.parse(argumentStr, 
org.joda.time.format.DateTimeFormat.forPattern(scalarMarshallerConfig.getLocalDateFormat()));
+    public LocalTime unmarshal(Object graphValue, Class<?> targetType) {
+        String str = (String) graphValue;
+        return LocalTime.parse(str, 
DateTimeFormatter.ofPattern(scalarMarshallerConfig.getLocalTimeFormat()));
     }
 }
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8OffsetDateTime.java
similarity index 73%
copy from 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
copy to 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8OffsetDateTime.java
index 06739664e6..7235f4d26d 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8OffsetDateTime.java
@@ -18,12 +18,15 @@
  */
 package org.apache.causeway.viewer.graphql.model.marshallers;
 
+import java.time.OffsetDateTime;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+
 import javax.annotation.Priority;
 import javax.inject.Inject;
 
 import graphql.Scalars;
-
-import org.joda.time.LocalDate;
+import graphql.scalars.ExtendedScalars;
 
 import org.springframework.stereotype.Component;
 
@@ -34,19 +37,18 @@ import 
org.apache.causeway.viewer.graphql.applib.marshallers.ScalarMarshallerAbs
 
 @Component
 @Priority(PriorityPrecedence.LATE)
-public class ScalarMarshallerJodaLocalDate extends 
ScalarMarshallerAbstract<LocalDate> {
+public class ScalarMarshallerJdk8OffsetDateTime extends 
ScalarMarshallerAbstract<OffsetDateTime> {
 
     private final CausewayConfiguration.Viewer.Graphql.ScalarMarshaller 
scalarMarshallerConfig;
 
     @Inject
-    public ScalarMarshallerJodaLocalDate(final CausewayConfiguration 
causewayConfiguration) {
-        super(LocalDate.class, Scalars.GraphQLString, causewayConfiguration);
+    public ScalarMarshallerJdk8OffsetDateTime(final CausewayConfiguration 
causewayConfiguration) {
+        super(OffsetDateTime.class, ExtendedScalars.DateTime, 
causewayConfiguration);
         scalarMarshallerConfig = 
causewayConfiguration.getViewer().getGraphql().getScalarMarshaller();
     }
 
     @Override
-    public LocalDate unmarshal(Object graphValue, Class<?> targetType) {
-        String argumentStr = (String) graphValue;
-        return LocalDate.parse(argumentStr, 
org.joda.time.format.DateTimeFormat.forPattern(scalarMarshallerConfig.getLocalDateFormat()));
+    public OffsetDateTime unmarshal(Object graphValue, Class<?> targetType) {
+        return (OffsetDateTime) graphValue;
     }
 }
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8OffsetTime.java
similarity index 72%
copy from 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
copy to 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8OffsetTime.java
index 06739664e6..dbb2d2b92e 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJdk8OffsetTime.java
@@ -18,12 +18,13 @@
  */
 package org.apache.causeway.viewer.graphql.model.marshallers;
 
+import java.time.LocalTime;
+import java.time.OffsetTime;
+
 import javax.annotation.Priority;
 import javax.inject.Inject;
 
-import graphql.Scalars;
-
-import org.joda.time.LocalDate;
+import graphql.scalars.ExtendedScalars;
 
 import org.springframework.stereotype.Component;
 
@@ -34,19 +35,18 @@ import 
org.apache.causeway.viewer.graphql.applib.marshallers.ScalarMarshallerAbs
 
 @Component
 @Priority(PriorityPrecedence.LATE)
-public class ScalarMarshallerJodaLocalDate extends 
ScalarMarshallerAbstract<LocalDate> {
+public class ScalarMarshallerJdk8OffsetTime extends 
ScalarMarshallerAbstract<OffsetTime> {
 
     private final CausewayConfiguration.Viewer.Graphql.ScalarMarshaller 
scalarMarshallerConfig;
 
     @Inject
-    public ScalarMarshallerJodaLocalDate(final CausewayConfiguration 
causewayConfiguration) {
-        super(LocalDate.class, Scalars.GraphQLString, causewayConfiguration);
+    public ScalarMarshallerJdk8OffsetTime(final CausewayConfiguration 
causewayConfiguration) {
+        super(OffsetTime.class, ExtendedScalars.Time, causewayConfiguration);
         scalarMarshallerConfig = 
causewayConfiguration.getViewer().getGraphql().getScalarMarshaller();
     }
 
     @Override
-    public LocalDate unmarshal(Object graphValue, Class<?> targetType) {
-        String argumentStr = (String) graphValue;
-        return LocalDate.parse(argumentStr, 
org.joda.time.format.DateTimeFormat.forPattern(scalarMarshallerConfig.getLocalDateFormat()));
+    public OffsetTime unmarshal(Object graphValue, Class<?> targetType) {
+        return (OffsetTime) graphValue;
     }
 }
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
index 06739664e6..1fd93a8047 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
@@ -18,6 +18,8 @@
  */
 package org.apache.causeway.viewer.graphql.model.marshallers;
 
+import java.time.format.DateTimeFormatter;
+
 import javax.annotation.Priority;
 import javax.inject.Inject;
 
@@ -31,6 +33,8 @@ import 
org.apache.causeway.applib.annotation.PriorityPrecedence;
 import org.apache.causeway.core.config.CausewayConfiguration;
 import 
org.apache.causeway.viewer.graphql.applib.marshallers.ScalarMarshallerAbstract;
 
+import static org.joda.time.format.DateTimeFormat.*;
+
 
 @Component
 @Priority(PriorityPrecedence.LATE)
@@ -47,6 +51,6 @@ public class ScalarMarshallerJodaLocalDate extends 
ScalarMarshallerAbstract<Loca
     @Override
     public LocalDate unmarshal(Object graphValue, Class<?> targetType) {
         String argumentStr = (String) graphValue;
-        return LocalDate.parse(argumentStr, 
org.joda.time.format.DateTimeFormat.forPattern(scalarMarshallerConfig.getLocalDateFormat()));
+        return LocalDate.parse(argumentStr, 
forPattern(scalarMarshallerConfig.getLocalDateFormat()));
     }
 }
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalTime.java
similarity index 73%
copy from 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
copy to 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalTime.java
index 06739664e6..b74cb23a01 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalDate.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerJodaLocalTime.java
@@ -18,12 +18,15 @@
  */
 package org.apache.causeway.viewer.graphql.model.marshallers;
 
+
 import javax.annotation.Priority;
 import javax.inject.Inject;
 
 import graphql.Scalars;
 
-import org.joda.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+
+import org.joda.time.LocalTime;
 
 import org.springframework.stereotype.Component;
 
@@ -31,22 +34,24 @@ import 
org.apache.causeway.applib.annotation.PriorityPrecedence;
 import org.apache.causeway.core.config.CausewayConfiguration;
 import 
org.apache.causeway.viewer.graphql.applib.marshallers.ScalarMarshallerAbstract;
 
+import static org.joda.time.format.DateTimeFormat.forPattern;
+
 
 @Component
 @Priority(PriorityPrecedence.LATE)
-public class ScalarMarshallerJodaLocalDate extends 
ScalarMarshallerAbstract<LocalDate> {
+public class ScalarMarshallerJodaLocalTime extends 
ScalarMarshallerAbstract<LocalTime> {
 
     private final CausewayConfiguration.Viewer.Graphql.ScalarMarshaller 
scalarMarshallerConfig;
 
     @Inject
-    public ScalarMarshallerJodaLocalDate(final CausewayConfiguration 
causewayConfiguration) {
-        super(LocalDate.class, Scalars.GraphQLString, causewayConfiguration);
+    public ScalarMarshallerJodaLocalTime(final CausewayConfiguration 
causewayConfiguration) {
+        super(LocalTime.class, Scalars.GraphQLString, causewayConfiguration);
         scalarMarshallerConfig = 
causewayConfiguration.getViewer().getGraphql().getScalarMarshaller();
     }
 
     @Override
-    public LocalDate unmarshal(Object graphValue, Class<?> targetType) {
-        String argumentStr = (String) graphValue;
-        return LocalDate.parse(argumentStr, 
org.joda.time.format.DateTimeFormat.forPattern(scalarMarshallerConfig.getLocalDateFormat()));
+    public LocalTime unmarshal(Object graphValue, Class<?> targetType) {
+        String str = (String) graphValue;
+        return LocalTime.parse(str, 
forPattern(scalarMarshallerConfig.getLocalTimeFormat()));
     }
 }
diff --git 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigDecimal.java
 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerUuid.java
similarity index 75%
copy from 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigDecimal.java
copy to 
viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerUuid.java
index 515a3f905a..4a820f57cf 100644
--- 
a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerBigDecimal.java
+++ 
b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/marshallers/ScalarMarshallerUuid.java
@@ -18,12 +18,12 @@
  */
 package org.apache.causeway.viewer.graphql.model.marshallers;
 
-import java.math.BigDecimal;
-
 import javax.annotation.Priority;
 import javax.inject.Inject;
 
-import graphql.Scalars;
+import graphql.scalars.ExtendedScalars;
+
+import java.util.UUID;
 
 import org.springframework.stereotype.Component;
 
@@ -37,15 +37,16 @@ import 
org.apache.causeway.viewer.graphql.applib.marshallers.ScalarMarshallerAbs
  */
 @Component
 @Priority(PriorityPrecedence.LATE)
-public class ScalarMarshallerBigDecimal extends 
ScalarMarshallerAbstract<BigDecimal> {
+public class ScalarMarshallerUuid extends ScalarMarshallerAbstract<UUID> {
 
     @Inject
-    public ScalarMarshallerBigDecimal(final CausewayConfiguration 
causewayConfiguration) {
-        super(BigDecimal.class, Scalars.GraphQLString, causewayConfiguration);
+    public ScalarMarshallerUuid(final CausewayConfiguration 
causewayConfiguration) {
+        super(UUID.class, ExtendedScalars.UUID, causewayConfiguration);
     }
 
     @Override
-    public BigDecimal unmarshal(Object graphValue, Class<?> targetType) {
-        return new BigDecimal((String) graphValue);
+    public UUID unmarshal(Object graphValue, Class<?> targetType) {
+        return (UUID)graphValue;
     }
+
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/calc/Calculator.java
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/calc/Calculator.java
index 37614c261c..867fb6fa49 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/calc/Calculator.java
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/calc/Calculator.java
@@ -2,8 +2,14 @@ package 
org.apache.causeway.viewer.graphql.viewer.test.domain.calc;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.net.URL;
 import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.OffsetDateTime;
+import java.time.OffsetTime;
 import java.time.ZonedDateTime;
+import java.util.Locale;
+import java.util.UUID;
 
 import javax.annotation.Priority;
 import javax.inject.Inject;
@@ -18,6 +24,7 @@ import 
org.apache.causeway.applib.annotation.PriorityPrecedence;
 import org.apache.causeway.applib.annotation.SemanticsOf;
 
 import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 
 @Named("university.calc.Calculator")
 @DomainService(nature= NatureOfService.VIEW)
@@ -86,25 +93,45 @@ public class Calculator {
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    public LocalDate plusDays(LocalDate date, int numDays) {
+    public LocalDate jdk8LocalPlusDays(LocalDate date, int numDays) {
         return date.plusDays(numDays);
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    public ZonedDateTime plusDaysAndHoursAndMinutes(ZonedDateTime dateTime, 
int numDays, int numHours, int numMinutes) {
+    public OffsetDateTime jdk8OffsetPlusDaysAndHoursAndMinutes(OffsetDateTime 
dateTime, int numDays, int numHours, int numMinutes) {
         return 
dateTime.plusDays(numDays).plusHours(numHours).plusMinutes(numMinutes);
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    public org.joda.time.LocalDate plusJodaDays(org.joda.time.LocalDate date, 
int numDays) {
+    public ZonedDateTime jdk8ZonedPlusDaysAndHoursAndMinutes(ZonedDateTime 
dateTime, int numDays, int numHours, int numMinutes) {
+        return 
dateTime.plusDays(numDays).plusHours(numHours).plusMinutes(numMinutes);
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    public OffsetTime jdk8OffsetPlusHoursAndMinutes(OffsetTime time, int 
numHours, int numMinutes) {
+        return time.plusHours(numHours).plusMinutes(numMinutes);
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    public LocalTime jdk8LocalPlusHoursAndMinutes(LocalTime time, int 
numHours, int numMinutes) {
+        return time.plusHours(numHours).plusMinutes(numMinutes);
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    public org.joda.time.LocalDate jodaLocalPlusDays(org.joda.time.LocalDate 
date, int numDays) {
         return date.plusDays(numDays);
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    public org.joda.time.DateTime 
plusJodaDaysAndHoursAndMinutes(org.joda.time.DateTime dateTime, int numDays, 
int numHours, int numMinutes) {
+    public org.joda.time.DateTime 
jodaPlusDaysAndHoursAndMinutes(org.joda.time.DateTime dateTime, int numDays, 
int numHours, int numMinutes) {
         return 
dateTime.plusDays(numDays).plusHours(numHours).plusMinutes(numMinutes);
     }
 
+    @Action(semantics = SemanticsOf.SAFE)
+    public org.joda.time.LocalTime 
jodaLocalPlusHoursAndMinutes(org.joda.time.LocalTime time, int numHours, int 
numMinutes) {
+        return time.plusHours(numHours).plusMinutes(numMinutes);
+    }
+
 
     @Action(semantics = SemanticsOf.SAFE)
     public boolean and(boolean x, boolean y) {
@@ -131,4 +158,21 @@ public class Calculator {
         return prefix + suffix;
     }
 
+    @Action(semantics = SemanticsOf.SAFE)
+    public UUID someUuid() {
+        return UUID.fromString("91be0d2d-1752-4962-ad2c-89a7ef73a656");
+    }
+
+    @SneakyThrows
+    @Action(semantics = SemanticsOf.SAFE)
+    public URL someUrl() {
+        return new URL("https://causeway.apache.org";);
+    }
+
+    @SneakyThrows
+    @Action(semantics = SemanticsOf.SAFE)
+    public Locale someLocale() {
+        return Locale.UK;
+    }
+
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals._.gql
index 8020e05fe4..a397c75030 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals._.gql
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals._.gql
@@ -1,7 +1,7 @@
 {
   university_calc_Calculator {
-    addBigIntegers {
-      invoke(x: "1", y: "2")
+    addBigDecimals {
+      invoke(x: "1.1", y: "2.2")
     }
   }
 }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
index 41da73aeea..6e00f365e7 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
@@ -1,8 +1,8 @@
 {
   "data" : {
     "university_calc_Calculator" : {
-      "addBigIntegers" : {
-        "invoke" : "3"
+      "addBigDecimals" : {
+        "invoke" : "3.3"
       }
     }
   }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days._.gql
similarity index 78%
copy from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days._.gql
copy to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days._.gql
index c631e57829..50abc29d6d 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days._.gql
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days._.gql
@@ -1,6 +1,6 @@
 {
   university_calc_Calculator {
-    plusDays {
+    jdk8LocalPlusDays {
       invoke(date: "2024-01-26", numDays: 2)
     }
   }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days.approved.json
similarity index 76%
copy from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
copy to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days.approved.json
index 6d1ebd29b8..4d50ad3377 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_days.approved.json
@@ -1,7 +1,7 @@
 {
   "data" : {
     "university_calc_Calculator" : {
-      "plusJodaDays" : {
+      "jdk8LocalPlusDays" : {
         "invoke" : "2024-01-28"
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes._.gql
new file mode 100644
index 0000000000..1b6f9079ac
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes._.gql
@@ -0,0 +1,7 @@
+{
+  university_calc_Calculator {
+    jdk8LocalPlusHoursAndMinutes {
+      invoke(time: "13:35:05", numHours: 2, numMinutes: 20)
+    }
+  }
+}
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes.approved.json
new file mode 100644
index 0000000000..9ad6ffd4f8
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_local_plus_hours_and_minutes.approved.json
@@ -0,0 +1,9 @@
+{
+  "data" : {
+    "university_calc_Calculator" : {
+      "jdk8LocalPlusHoursAndMinutes" : {
+        "invoke" : "15:55:05"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes._.gql
new file mode 100644
index 0000000000..357cfa5a52
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes._.gql
@@ -0,0 +1,7 @@
+{
+  university_calc_Calculator {
+    jdk8OffsetPlusDaysAndHoursAndMinutes {
+      invoke(dateTime: "2024-08-12T04:05:20-01:00", numDays: 3, numHours: 2, 
numMinutes: 15)
+    }
+  }
+}
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes.approved.json
new file mode 100644
index 0000000000..a6f97ef4a5
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_days_and_hours_and_minutes.approved.json
@@ -0,0 +1,9 @@
+{
+  "data" : {
+    "university_calc_Calculator" : {
+      "jdk8OffsetPlusDaysAndHoursAndMinutes" : {
+        "invoke" : "2024-08-15T06:20:20.000-01:00"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes._.gql
new file mode 100644
index 0000000000..7fb48ee43d
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes._.gql
@@ -0,0 +1,7 @@
+{
+  university_calc_Calculator {
+    jdk8OffsetPlusHoursAndMinutes {
+      invoke(time: "04:05:20-01:00", numHours: 2, numMinutes: 15)
+    }
+  }
+}
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes.approved.json
new file mode 100644
index 0000000000..4d23d7a579
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_offset_plus_hours_and_minutes.approved.json
@@ -0,0 +1,9 @@
+{
+  "data" : {
+    "university_calc_Calculator" : {
+      "jdk8OffsetPlusHoursAndMinutes" : {
+        "invoke" : "06:20:20-01:00"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes._.gql
new file mode 100644
index 0000000000..35a622993c
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes._.gql
@@ -0,0 +1,7 @@
+{
+  university_calc_Calculator {
+    jdk8ZonedPlusDaysAndHoursAndMinutes {
+      invoke(dateTime: "2022-04-15T08:20:10+02:00", numDays: 3, numHours: 2, 
numMinutes: 15)
+    }
+  }
+}
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes.approved.json
new file mode 100644
index 0000000000..d8ce668e54
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.jdk8_zoned_plus_days_and_hours_and_minutes.approved.json
@@ -0,0 +1,9 @@
+{
+  "data" : {
+    "university_calc_Calculator" : {
+      "jdk8ZonedPlusDaysAndHoursAndMinutes" : {
+        "invoke" : "2022-04-18T10:35:10+02:00"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days._.gql
similarity index 78%
rename from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days._.gql
rename to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days._.gql
index 61b56a4184..6cd2d75b0e 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days._.gql
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days._.gql
@@ -1,6 +1,6 @@
 {
   university_calc_Calculator {
-    plusJodaDays {
+    jodaLocalPlusDays {
       invoke(date: "2024-01-26", numDays: 2)
     }
   }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days.approved.json
similarity index 76%
rename from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days.approved.json
rename to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days.approved.json
index d2f25092c2..769ebd476c 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_days.approved.json
@@ -1,7 +1,7 @@
 {
   "data" : {
     "university_calc_Calculator" : {
-      "plusDays" : {
+      "jodaLocalPlusDays" : {
         "invoke" : "2024-01-28"
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes._.gql
new file mode 100644
index 0000000000..e47a2a439a
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes._.gql
@@ -0,0 +1,7 @@
+{
+  university_calc_Calculator {
+    jodaLocalPlusHoursAndMinutes {
+      invoke(time: "13:35:05", numHours: 2, numMinutes: 20)
+    }
+  }
+}
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes.approved.json
new file mode 100644
index 0000000000..0aa97a54db
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_local_plus_hours_and_minutes.approved.json
@@ -0,0 +1,9 @@
+{
+  "data" : {
+    "university_calc_Calculator" : {
+      "jodaLocalPlusHoursAndMinutes" : {
+        "invoke" : "15:55:05.000"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days._.gql
similarity index 78%
rename from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days._.gql
rename to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days._.gql
index c631e57829..6cd2d75b0e 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_days._.gql
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days._.gql
@@ -1,6 +1,6 @@
 {
   university_calc_Calculator {
-    plusDays {
+    jodaLocalPlusDays {
       invoke(date: "2024-01-26", numDays: 2)
     }
   }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days.approved.json
similarity index 76%
copy from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
copy to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days.approved.json
index 6d1ebd29b8..769ebd476c 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.joda_plus_days.approved.json
@@ -1,7 +1,7 @@
 {
   "data" : {
     "university_calc_Calculator" : {
-      "plusJodaDays" : {
+      "jodaLocalPlusDays" : {
         "invoke" : "2024-01-28"
       }
     }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale._.gql
new file mode 100644
index 0000000000..5286646be0
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale._.gql
@@ -0,0 +1,7 @@
+{
+  university_calc_Calculator {
+    someLocale {
+      invoke
+    }
+  }
+}
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale.approved.json
similarity index 57%
copy from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
copy to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale.approved.json
index 41da73aeea..64cee0547b 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_locale.approved.json
@@ -1,8 +1,8 @@
 {
   "data" : {
     "university_calc_Calculator" : {
-      "addBigIntegers" : {
-        "invoke" : "3"
+      "someLocale" : {
+        "invoke" : "en_GB"
       }
     }
   }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url._.gql
new file mode 100644
index 0000000000..d1dc947deb
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url._.gql
@@ -0,0 +1,7 @@
+{
+  university_calc_Calculator {
+    someUrl {
+      invoke
+    }
+  }
+}
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url.approved.json
similarity index 50%
rename from 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
rename to 
viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url.approved.json
index 6d1ebd29b8..8d077128e5 100644
--- 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.plus_joda_days.approved.json
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_url.approved.json
@@ -1,8 +1,8 @@
 {
   "data" : {
     "university_calc_Calculator" : {
-      "plusJodaDays" : {
-        "invoke" : "2024-01-28"
+      "someUrl" : {
+        "invoke" : "https://causeway.apache.org";
       }
     }
   }
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid._.gql
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid._.gql
new file mode 100644
index 0000000000..5d32cca32a
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid._.gql
@@ -0,0 +1,7 @@
+{
+  university_calc_Calculator {
+    someUuid {
+      invoke
+    }
+  }
+}
diff --git 
a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid.approved.json
 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid.approved.json
new file mode 100644
index 0000000000..92ef0f4ef4
--- /dev/null
+++ 
b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.some_uuid.approved.json
@@ -0,0 +1,9 @@
+{
+  "data" : {
+    "university_calc_Calculator" : {
+      "someUuid" : {
+        "invoke" : "91be0d2d-1752-4962-ad2c-89a7ef73a656"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/viewers/graphql/test/src/test/resources/schema.gql 
b/viewers/graphql/test/src/test/resources/schema.gql
index a6b68304bb..2e857f1308 100644
--- a/viewers/graphql/test/src/test/resources/schema.gql
+++ b/viewers/graphql/test/src/test/resources/schema.gql
@@ -1872,13 +1872,20 @@ type university_calc_Calculator {
   addShorts: university_calc_Calculator__addShorts__gqlv_action
   and: university_calc_Calculator__and__gqlv_action
   concat: university_calc_Calculator__concat__gqlv_action
+  jdk8LocalPlusDays: university_calc_Calculator__jdk8LocalPlusDays__gqlv_action
+  jdk8LocalPlusHoursAndMinutes: 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__gqlv_action
+  jdk8OffsetPlusDaysAndHoursAndMinutes: 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action
+  jdk8OffsetPlusHoursAndMinutes: 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__gqlv_action
+  jdk8ZonedPlusDaysAndHoursAndMinutes: 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action
+  jodaLocalPlusDays: university_calc_Calculator__jodaLocalPlusDays__gqlv_action
+  jodaLocalPlusHoursAndMinutes: 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__gqlv_action
+  jodaPlusDaysAndHoursAndMinutes: 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__gqlv_action
   nextMonth: university_calc_Calculator__nextMonth__gqlv_action
   not: university_calc_Calculator__not__gqlv_action
   or: university_calc_Calculator__or__gqlv_action
-  plusDays: university_calc_Calculator__plusDays__gqlv_action
-  plusDaysAndHoursAndMinutes: 
university_calc_Calculator__plusDaysAndHoursAndMinutes__gqlv_action
-  plusJodaDays: university_calc_Calculator__plusJodaDays__gqlv_action
-  plusJodaDaysAndHoursAndMinutes: 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__gqlv_action
+  someLocale: university_calc_Calculator__someLocale__gqlv_action
+  someUrl: university_calc_Calculator__someUrl__gqlv_action
+  someUuid: university_calc_Calculator__someUuid__gqlv_action
 }
 
 type university_calc_Calculator__addBigDecimals__gqlv_action {
@@ -1938,9 +1945,9 @@ type 
university_calc_Calculator__addBigIntegers__y__gqlv_action_parameter {
 type university_calc_Calculator__addByteWrappers__gqlv_action {
   disabled: String
   hidden: Boolean
-  invoke(x: Int!, y: Int): Int
+  invoke(x: Byte!, y: Byte): Int
   params: university_calc_Calculator__addByteWrappers__gqlv_action_params
-  validate(x: Int, y: Int): String
+  validate(x: Byte, y: Byte): String
 }
 
 type university_calc_Calculator__addByteWrappers__gqlv_action_params {
@@ -1950,24 +1957,24 @@ type 
university_calc_Calculator__addByteWrappers__gqlv_action_params {
 
 type university_calc_Calculator__addByteWrappers__x__gqlv_action_parameter {
   datatype: String
-  disabled(x: Int): String
+  disabled(x: Byte): String
   hidden: Boolean
   validity: String
 }
 
 type university_calc_Calculator__addByteWrappers__y__gqlv_action_parameter {
   datatype: String
-  disabled(x: Int, y: Int): String
-  hidden(x: Int): Boolean
+  disabled(x: Byte, y: Byte): String
+  hidden(x: Byte): Boolean
   validity: String
 }
 
 type university_calc_Calculator__addBytes__gqlv_action {
   disabled: String
   hidden: Boolean
-  invoke(x: Int!, y: Int!): Int
+  invoke(x: Byte!, y: Byte!): Byte
   params: university_calc_Calculator__addBytes__gqlv_action_params
-  validate(x: Int, y: Int): String
+  validate(x: Byte, y: Byte): String
 }
 
 type university_calc_Calculator__addBytes__gqlv_action_params {
@@ -1977,15 +1984,15 @@ type 
university_calc_Calculator__addBytes__gqlv_action_params {
 
 type university_calc_Calculator__addBytes__x__gqlv_action_parameter {
   datatype: String
-  disabled(x: Int): String
+  disabled(x: Byte): String
   hidden: Boolean
   validity: String
 }
 
 type university_calc_Calculator__addBytes__y__gqlv_action_parameter {
   datatype: String
-  disabled(x: Int, y: Int): String
-  hidden(x: Int): Boolean
+  disabled(x: Byte, y: Byte): String
+  hidden(x: Byte): Boolean
   validity: String
 }
 
@@ -2259,212 +2266,381 @@ type 
university_calc_Calculator__concat__suffix__gqlv_action_parameter {
   validity: String
 }
 
-type university_calc_Calculator__nextMonth__gqlv_action {
+type 
university_calc_Calculator__jdk8LocalPlusDays__date__gqlv_action_parameter {
+  datatype: String
+  disabled(date: String): String
+  hidden: Boolean
+  validity: String
+}
+
+type university_calc_Calculator__jdk8LocalPlusDays__gqlv_action {
   disabled: String
   hidden: Boolean
-  invoke(month: 
org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum!): 
org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum
-  params: university_calc_Calculator__nextMonth__gqlv_action_params
-  validate(month: 
org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum): 
String
+  invoke(date: String!, numDays: Int!): String
+  params: university_calc_Calculator__jdk8LocalPlusDays__gqlv_action_params
+  validate(date: String, numDays: Int): String
 }
 
-type university_calc_Calculator__nextMonth__gqlv_action_params {
-  month: university_calc_Calculator__nextMonth__month__gqlv_action_parameter
+type university_calc_Calculator__jdk8LocalPlusDays__gqlv_action_params {
+  date: 
university_calc_Calculator__jdk8LocalPlusDays__date__gqlv_action_parameter
+  numDays: 
university_calc_Calculator__jdk8LocalPlusDays__numDays__gqlv_action_parameter
 }
 
-type university_calc_Calculator__nextMonth__month__gqlv_action_parameter {
-  choices: 
[org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum]
+type 
university_calc_Calculator__jdk8LocalPlusDays__numDays__gqlv_action_parameter {
   datatype: String
-  disabled(month: 
org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum): 
String
-  hidden: Boolean
+  disabled(date: String, numDays: Int): String
+  hidden(date: String): Boolean
   validity: String
 }
 
-type university_calc_Calculator__not__gqlv_action {
+type university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__gqlv_action {
   disabled: String
   hidden: Boolean
-  invoke(x: Boolean!): Boolean
-  params: university_calc_Calculator__not__gqlv_action_params
-  validate(x: Boolean): String
+  invoke(numHours: Int!, numMinutes: Int!, time: String!): String
+  params: 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__gqlv_action_params
+  validate(numHours: Int, numMinutes: Int, time: String): String
 }
 
-type university_calc_Calculator__not__gqlv_action_params {
-  x: university_calc_Calculator__not__x__gqlv_action_parameter
+type 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__gqlv_action_params {
+  numHours: 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__numHours__gqlv_action_parameter
+  numMinutes: 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
+  time: 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__time__gqlv_action_parameter
 }
 
-type university_calc_Calculator__not__x__gqlv_action_parameter {
+type 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__numHours__gqlv_action_parameter
 {
   datatype: String
-  disabled(x: Boolean): String
+  disabled(numHours: Int, time: String): String
+  hidden(time: String): Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
 {
+  datatype: String
+  disabled(numHours: Int, numMinutes: Int, time: String): String
+  hidden(numHours: Int, time: String): Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__time__gqlv_action_parameter
 {
+  datatype: String
+  disabled(time: String): String
   hidden: Boolean
   validity: String
 }
 
-type university_calc_Calculator__or__gqlv_action {
+type 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
 {
+  datatype: String
+  disabled(dateTime: DateTime): String
+  hidden: Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action {
   disabled: String
   hidden: Boolean
-  invoke(x: Boolean!, y: Boolean!): Boolean
-  params: university_calc_Calculator__or__gqlv_action_params
-  validate(x: Boolean, y: Boolean): String
+  invoke(dateTime: DateTime!, numDays: Int!, numHours: Int!, numMinutes: 
Int!): DateTime
+  params: 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_params
+  validate(dateTime: DateTime, numDays: Int, numHours: Int, numMinutes: Int): 
String
 }
 
-type university_calc_Calculator__or__gqlv_action_params {
-  x: university_calc_Calculator__or__x__gqlv_action_parameter
-  y: university_calc_Calculator__or__y__gqlv_action_parameter
+type 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_params
 {
+  dateTime: 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
+  numDays: 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
+  numHours: 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
+  numMinutes: 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
 }
 
-type university_calc_Calculator__or__x__gqlv_action_parameter {
+type 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
 {
   datatype: String
-  disabled(x: Boolean): String
+  disabled(dateTime: DateTime, numDays: Int): String
+  hidden(dateTime: DateTime): Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
 {
+  datatype: String
+  disabled(dateTime: DateTime, numDays: Int, numHours: Int): String
+  hidden(dateTime: DateTime, numDays: Int): Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
 {
+  datatype: String
+  disabled(dateTime: DateTime, numDays: Int, numHours: Int, numMinutes: Int): 
String
+  hidden(dateTime: DateTime, numDays: Int, numHours: Int): Boolean
+  validity: String
+}
+
+type university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__gqlv_action {
+  disabled: String
   hidden: Boolean
+  invoke(numHours: Int!, numMinutes: Int!, time: Time!): Time
+  params: 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__gqlv_action_params
+  validate(numHours: Int, numMinutes: Int, time: Time): String
+}
+
+type 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__gqlv_action_params {
+  numHours: 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__numHours__gqlv_action_parameter
+  numMinutes: 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
+  time: 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__time__gqlv_action_parameter
+}
+
+type 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__numHours__gqlv_action_parameter
 {
+  datatype: String
+  disabled(numHours: Int, time: Time): String
+  hidden(time: Time): Boolean
   validity: String
 }
 
-type university_calc_Calculator__or__y__gqlv_action_parameter {
+type 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
 {
   datatype: String
-  disabled(x: Boolean, y: Boolean): String
-  hidden(x: Boolean): Boolean
+  disabled(numHours: Int, numMinutes: Int, time: Time): String
+  hidden(numHours: Int, time: Time): Boolean
   validity: String
 }
 
-type 
university_calc_Calculator__plusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
 {
+type 
university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__time__gqlv_action_parameter
 {
+  datatype: String
+  disabled(time: Time): String
+  hidden: Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
 {
   datatype: String
   disabled(dateTime: String): String
   hidden: Boolean
   validity: String
 }
 
-type university_calc_Calculator__plusDaysAndHoursAndMinutes__gqlv_action {
+type 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action {
   disabled: String
   hidden: Boolean
   invoke(dateTime: String!, numDays: Int!, numHours: Int!, numMinutes: Int!): 
String
-  params: 
university_calc_Calculator__plusDaysAndHoursAndMinutes__gqlv_action_params
+  params: 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_params
   validate(dateTime: String, numDays: Int, numHours: Int, numMinutes: Int): 
String
 }
 
-type 
university_calc_Calculator__plusDaysAndHoursAndMinutes__gqlv_action_params {
-  dateTime: 
university_calc_Calculator__plusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
-  numDays: 
university_calc_Calculator__plusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
-  numHours: 
university_calc_Calculator__plusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
-  numMinutes: 
university_calc_Calculator__plusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
+type 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_params
 {
+  dateTime: 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
+  numDays: 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
+  numHours: 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
+  numMinutes: 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
 }
 
-type 
university_calc_Calculator__plusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
 {
+type 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
 {
   datatype: String
   disabled(dateTime: String, numDays: Int): String
   hidden(dateTime: String): Boolean
   validity: String
 }
 
-type 
university_calc_Calculator__plusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
 {
+type 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
 {
   datatype: String
   disabled(dateTime: String, numDays: Int, numHours: Int): String
   hidden(dateTime: String, numDays: Int): Boolean
   validity: String
 }
 
-type 
university_calc_Calculator__plusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
 {
+type 
university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
 {
   datatype: String
   disabled(dateTime: String, numDays: Int, numHours: Int, numMinutes: Int): 
String
   hidden(dateTime: String, numDays: Int, numHours: Int): Boolean
   validity: String
 }
 
-type university_calc_Calculator__plusDays__date__gqlv_action_parameter {
+type 
university_calc_Calculator__jodaLocalPlusDays__date__gqlv_action_parameter {
   datatype: String
-  disabled(date: Date): String
+  disabled(date: String): String
   hidden: Boolean
   validity: String
 }
 
-type university_calc_Calculator__plusDays__gqlv_action {
+type university_calc_Calculator__jodaLocalPlusDays__gqlv_action {
   disabled: String
   hidden: Boolean
-  invoke(date: Date!, numDays: Int!): Date
-  params: university_calc_Calculator__plusDays__gqlv_action_params
-  validate(date: Date, numDays: Int): String
+  invoke(date: String!, numDays: Int!): String
+  params: university_calc_Calculator__jodaLocalPlusDays__gqlv_action_params
+  validate(date: String, numDays: Int): String
 }
 
-type university_calc_Calculator__plusDays__gqlv_action_params {
-  date: university_calc_Calculator__plusDays__date__gqlv_action_parameter
-  numDays: university_calc_Calculator__plusDays__numDays__gqlv_action_parameter
+type university_calc_Calculator__jodaLocalPlusDays__gqlv_action_params {
+  date: 
university_calc_Calculator__jodaLocalPlusDays__date__gqlv_action_parameter
+  numDays: 
university_calc_Calculator__jodaLocalPlusDays__numDays__gqlv_action_parameter
 }
 
-type university_calc_Calculator__plusDays__numDays__gqlv_action_parameter {
+type 
university_calc_Calculator__jodaLocalPlusDays__numDays__gqlv_action_parameter {
   datatype: String
-  disabled(date: Date, numDays: Int): String
-  hidden(date: Date): Boolean
+  disabled(date: String, numDays: Int): String
+  hidden(date: String): Boolean
   validity: String
 }
 
-type 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
 {
+type university_calc_Calculator__jodaLocalPlusHoursAndMinutes__gqlv_action {
+  disabled: String
+  hidden: Boolean
+  invoke(numHours: Int!, numMinutes: Int!, time: String!): String
+  params: 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__gqlv_action_params
+  validate(numHours: Int, numMinutes: Int, time: String): String
+}
+
+type 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__gqlv_action_params {
+  numHours: 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__numHours__gqlv_action_parameter
+  numMinutes: 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
+  time: 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__time__gqlv_action_parameter
+}
+
+type 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__numHours__gqlv_action_parameter
 {
+  datatype: String
+  disabled(numHours: Int, time: String): String
+  hidden(time: String): Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
 {
+  datatype: String
+  disabled(numHours: Int, numMinutes: Int, time: String): String
+  hidden(numHours: Int, time: String): Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jodaLocalPlusHoursAndMinutes__time__gqlv_action_parameter
 {
+  datatype: String
+  disabled(time: String): String
+  hidden: Boolean
+  validity: String
+}
+
+type 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
 {
   datatype: String
   disabled(dateTime: String): String
   hidden: Boolean
   validity: String
 }
 
-type university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__gqlv_action {
+type university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__gqlv_action {
   disabled: String
   hidden: Boolean
   invoke(dateTime: String!, numDays: Int!, numHours: Int!, numMinutes: Int!): 
String
-  params: 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__gqlv_action_params
+  params: 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__gqlv_action_params
   validate(dateTime: String, numDays: Int, numHours: Int, numMinutes: Int): 
String
 }
 
-type 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__gqlv_action_params {
-  dateTime: 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
-  numDays: 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
-  numHours: 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
-  numMinutes: 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
+type 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__gqlv_action_params {
+  dateTime: 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
+  numDays: 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
+  numHours: 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
+  numMinutes: 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
 }
 
-type 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
 {
+type 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
 {
   datatype: String
   disabled(dateTime: String, numDays: Int): String
   hidden(dateTime: String): Boolean
   validity: String
 }
 
-type 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
 {
+type 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
 {
   datatype: String
   disabled(dateTime: String, numDays: Int, numHours: Int): String
   hidden(dateTime: String, numDays: Int): Boolean
   validity: String
 }
 
-type 
university_calc_Calculator__plusJodaDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
 {
+type 
university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
 {
   datatype: String
   disabled(dateTime: String, numDays: Int, numHours: Int, numMinutes: Int): 
String
   hidden(dateTime: String, numDays: Int, numHours: Int): Boolean
   validity: String
 }
 
-type university_calc_Calculator__plusJodaDays__date__gqlv_action_parameter {
+type university_calc_Calculator__nextMonth__gqlv_action {
+  disabled: String
+  hidden: Boolean
+  invoke(month: 
org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum!): 
org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum
+  params: university_calc_Calculator__nextMonth__gqlv_action_params
+  validate(month: 
org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum): 
String
+}
+
+type university_calc_Calculator__nextMonth__gqlv_action_params {
+  month: university_calc_Calculator__nextMonth__month__gqlv_action_parameter
+}
+
+type university_calc_Calculator__nextMonth__month__gqlv_action_parameter {
+  choices: 
[org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum]
   datatype: String
-  disabled(date: String): String
+  disabled(month: 
org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum): 
String
   hidden: Boolean
   validity: String
 }
 
-type university_calc_Calculator__plusJodaDays__gqlv_action {
+type university_calc_Calculator__not__gqlv_action {
   disabled: String
   hidden: Boolean
-  invoke(date: String!, numDays: Int!): String
-  params: university_calc_Calculator__plusJodaDays__gqlv_action_params
-  validate(date: String, numDays: Int): String
+  invoke(x: Boolean!): Boolean
+  params: university_calc_Calculator__not__gqlv_action_params
+  validate(x: Boolean): String
 }
 
-type university_calc_Calculator__plusJodaDays__gqlv_action_params {
-  date: university_calc_Calculator__plusJodaDays__date__gqlv_action_parameter
-  numDays: 
university_calc_Calculator__plusJodaDays__numDays__gqlv_action_parameter
+type university_calc_Calculator__not__gqlv_action_params {
+  x: university_calc_Calculator__not__x__gqlv_action_parameter
 }
 
-type university_calc_Calculator__plusJodaDays__numDays__gqlv_action_parameter {
+type university_calc_Calculator__not__x__gqlv_action_parameter {
   datatype: String
-  disabled(date: String, numDays: Int): String
-  hidden(date: String): Boolean
+  disabled(x: Boolean): String
+  hidden: Boolean
+  validity: String
+}
+
+type university_calc_Calculator__or__gqlv_action {
+  disabled: String
+  hidden: Boolean
+  invoke(x: Boolean!, y: Boolean!): Boolean
+  params: university_calc_Calculator__or__gqlv_action_params
+  validate(x: Boolean, y: Boolean): String
+}
+
+type university_calc_Calculator__or__gqlv_action_params {
+  x: university_calc_Calculator__or__x__gqlv_action_parameter
+  y: university_calc_Calculator__or__y__gqlv_action_parameter
+}
+
+type university_calc_Calculator__or__x__gqlv_action_parameter {
+  datatype: String
+  disabled(x: Boolean): String
+  hidden: Boolean
+  validity: String
+}
+
+type university_calc_Calculator__or__y__gqlv_action_parameter {
+  datatype: String
+  disabled(x: Boolean, y: Boolean): String
+  hidden(x: Boolean): Boolean
   validity: String
 }
 
+type university_calc_Calculator__someLocale__gqlv_action {
+  disabled: String
+  hidden: Boolean
+  invoke: String
+  validate: String
+}
+
+type university_calc_Calculator__someUrl__gqlv_action {
+  disabled: String
+  hidden: Boolean
+  invoke: String
+  validate: String
+}
+
+type university_calc_Calculator__someUuid__gqlv_action {
+  disabled: String
+  hidden: Boolean
+  invoke: UUID
+  validate: String
+}
+
 "University department specializing in a field of study"
 type university_dept_Department {
   _meta: university_dept_Department__gqlv_meta
@@ -2970,12 +3146,21 @@ enum 
org_apache_causeway_viewer_graphql_viewer_test_domain_dept_Grade__gqlv_enum
   SENIOR_LECTURER
 }
 
-"An RFC-3339 compliant Full Date Scalar"
-scalar Date
+"An 8-bit signed integer"
+scalar Byte
+
+"An RFC-3339 compliant DateTime Scalar"
+scalar DateTime
 
 "A 16-bit signed integer"
 scalar Short
 
+"An RFC-3339 compliant Full Time Scalar"
+scalar Time
+
+"A universally unique identifier compliant UUID Scalar"
+scalar UUID
+
 input causeway_applib_DomainObjectList__gqlv_input {
   id: ID
   ref: String

Reply via email to