Merge branch 'ESTUP2-668' into CAUSEWAY-3745
diff --git a/antora/components/refguide/modules/applib-svc/partials/_presentation-layer-spi.adoc b/antora/components/refguide/modules/applib-svc/partials/_presentation-layer-spi.adoc
index 214b6ce..73419d2 100644
--- a/antora/components/refguide/modules/applib-svc/partials/_presentation-layer-spi.adoc
+++ b/antora/components/refguide/modules/applib-svc/partials/_presentation-layer-spi.adoc
@@ -51,6 +51,13 @@
+|xref:refguide:applib:index/services/publishing/spi/PageRenderSubscriber.adoc[PageRenderSubscriber]
+|Hook to allow work to be performed before rendering the page.
+For example, this could be used for simple metric gathering.
+Or, it could be used to preload data in bulk to avoid N+1 problems.
+
+
+
|xref:refguide:applib:index/services/routing/RoutingService.adoc[RoutingService]
|Return an alternative object than that returned by an action.
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/TemporalCharacteristicsProvider.java b/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/TemporalCharacteristicsProvider.java
index 88d5805..597597e 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/TemporalCharacteristicsProvider.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/TemporalCharacteristicsProvider.java
@@ -18,15 +18,7 @@
*/
package org.apache.causeway.applib.value.semantics;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.time.ZoneOffset;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import lombok.val;
-
-public interface TemporalCharacteristicsProvider {
+public interface TemporalCharacteristicsProvider extends TimeZoneChoiceProvider {
static enum TemporalCharacteristic {
@@ -70,27 +62,5 @@
TemporalCharacteristic getTemporalCharacteristic();
OffsetCharacteristic getOffsetCharacteristic();
-
- /**
- * For temporal value editing, provides the list of available time zones to choose from.
- */
- default List<ZoneId> getAvailableZoneIds() {
- return ZoneId.getAvailableZoneIds().stream()
- .sorted()
- .map(ZoneId::of)
- .collect(Collectors.toList());
- }
-
- /**
- * For temporal value editing, provides the list of available offsets to choose from.
- */
- default List<ZoneOffset> getAvailableOffsets() {
- val now = LocalDateTime.now();
- return getAvailableZoneIds().stream()
- .map(ZoneId::getRules)
- .flatMap(zoneIdRules->zoneIdRules.getValidOffsets(now).stream())
- .sorted()
- .distinct()
- .collect(Collectors.toList());
- }
+
}
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/TimeZoneChoiceProvider.java b/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/TimeZoneChoiceProvider.java
new file mode 100644
index 0000000..9109deb
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/causeway/applib/value/semantics/TimeZoneChoiceProvider.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.causeway.applib.value.semantics;
+
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZoneOffset;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import lombok.val;
+
+/**
+ * When implemented by a service {@link #getAvailableZoneIds()}
+ * can be customized to limit the time-zone choices
+ * as e.g. offered by the <i>Wicket Viewer<i> login page.
+ *
+ * @since 2.1, 3.1
+ */
+public interface TimeZoneChoiceProvider {
+
+ /**
+ * For temporal value editing, provides the list of available time zones to choose from.
+ */
+ default List<ZoneId> getAvailableZoneIds() {
+ return ZoneId.getAvailableZoneIds().stream()
+ .sorted()
+ .map(ZoneId::of)
+ .collect(Collectors.toList());
+ }
+
+ /**
+ * For temporal value editing, provides the list of available offsets to choose from.
+ */
+ default List<ZoneOffset> getAvailableOffsets() {
+ val now = LocalDateTime.now();
+ return getAvailableZoneIds().stream()
+ .map(ZoneId::getRules)
+ .flatMap(zoneIdRules->zoneIdRules.getValidOffsets(now).stream())
+ .sorted()
+ .distinct()
+ .collect(Collectors.toList());
+ }
+
+ /**
+ * Returns the fallback implementation, which provides all ZoneIds known to the JVM.
+ */
+ static TimeZoneChoiceProvider fallback() {
+ return new TimeZoneChoiceProvider() {};
+ }
+
+}
diff --git a/api/schema/pom.xml b/api/schema/pom.xml
index c4f76cd..46df398 100644
--- a/api/schema/pom.xml
+++ b/api/schema/pom.xml
@@ -114,7 +114,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
- <version>3.5.0</version>
+ <version>3.6.0</version>
<executions>
<execution>
<id>add-source</id>
diff --git a/bom/pom.xml b/bom/pom.xml
index a217e81..7d787cb 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -87,9 +87,9 @@
<!-- LIBRARY DEPENDENCIES -->
<archunit.version>1.3.0</archunit.version>
- <asciidoctorj.version>2.5.12</asciidoctorj.version>
+ <asciidoctorj.version>2.5.13</asciidoctorj.version>
<asm.version>9.7</asm.version> <!-- keep in sync with org.eclipse.persistence:org.eclipse.persistence.asm -->
- <approvaltests.version>24.0.0</approvaltests.version>
+ <approvaltests.version>24.1.0</approvaltests.version>
<assertj-guava.version>3.25.3</assertj-guava.version>
@@ -182,7 +182,7 @@
<summernote.version>0.8.20</summernote.version>
<surefire-plugin.argLine>-Xmx384m</surefire-plugin.argLine>
<surefire.useModulePath>false</surefire.useModulePath> <!-- disable module-path for testing, that is, put everything on the class-path -->
- <swagger-core.version>2.2.21</swagger-core.version>
+ <swagger-core.version>2.2.22</swagger-core.version>
<wicket.version>9.17.0</wicket.version>
<wicket-bootstrap.version>6.0.5</wicket-bootstrap.version> <!-- de.agilecoders.wicket:wicket-bootstrap... -->
diff --git a/core/pom.xml b/core/pom.xml
index 7efdb3a..88009a6 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -176,7 +176,7 @@
<plugin>
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
- <version>9.1.0</version>
+ <version>9.2.0</version>
<executions>
<execution>
<id>owasp-aggregate</id>
diff --git a/starters/pom.xml b/starters/pom.xml
index 393bae6..5ca1cec 100644
--- a/starters/pom.xml
+++ b/starters/pom.xml
@@ -49,7 +49,7 @@
<maven.compiler.release>11</maven.compiler.release>
<spring-boot.version>2.7.18</spring-boot.version>
- <approvaltests.version>24.0.0</approvaltests.version>
+ <approvaltests.version>24.1.0</approvaltests.version>
<!-- IMPORTANT: keep in sync with property defined in resteasy-spring-boot-starter -->
<resteasy.version>5.0.0.Final</resteasy.version>
diff --git a/valuetypes/asciidoc/builder/src/main/java/org/apache/causeway/valuetypes/asciidoc/builder/ast/SimpleTable.java b/valuetypes/asciidoc/builder/src/main/java/org/apache/causeway/valuetypes/asciidoc/builder/ast/SimpleTable.java
index a7762d4..e093a60 100644
--- a/valuetypes/asciidoc/builder/src/main/java/org/apache/causeway/valuetypes/asciidoc/builder/ast/SimpleTable.java
+++ b/valuetypes/asciidoc/builder/src/main/java/org/apache/causeway/valuetypes/asciidoc/builder/ast/SimpleTable.java
@@ -55,4 +55,9 @@
setAttribute(GRID_ATTR, this.grid = grid, true);
}
+ @Override
+ public void assignColumnWidths() {
+ // no-op
+ }
+
}
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java
index e57f146..59e8c37 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java
@@ -18,72 +18,80 @@
*/
package org.apache.causeway.viewer.graphql.model.domain;
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
-import org.apache.causeway.core.metamodel.spec.feature.*;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectFeature;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectMember;
+import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation;
import lombok.experimental.UtilityClass;
@UtilityClass
public final class TypeNames {
- public static String objectTypeFieldNameFor(
+ public String objectTypeFieldNameFor(
final ObjectSpecification objectSpecification) {
return sanitized(objectSpecification.getLogicalTypeName());
}
- public static String objectTypeNameFor(
+ public String objectTypeNameFor(
final ObjectSpecification objectSpecification,
final SchemaType schemaType) {
return schemaType.name().toLowerCase() + "__" + sanitized(objectSpecification.getLogicalTypeName());
}
- public static String metaTypeNameFor(
+ public String metaTypeNameFor(
final ObjectSpecification objectSpecification,
final SchemaType schemaType) {
return objectTypeNameFor(objectSpecification, schemaType) + "__gqlv_meta";
}
- public static String inputTypeNameFor(
+ public String inputTypeNameFor(
final ObjectSpecification objectSpecification,
final SchemaType schemaType) {
return objectTypeNameFor(objectSpecification, schemaType) + "__gqlv_input";
}
- public static String enumTypeNameFor(
+ public String enumTypeNameFor(
final ObjectSpecification objectSpec,
final SchemaType schemaType) {
return objectTypeNameFor(objectSpec, schemaType) + "__gqlv_enum";
}
- public static String actionTypeNameFor(
+ public String actionTypeNameFor(
final ObjectSpecification owningType,
final ObjectAction oa,
final SchemaType schemaType) {
return objectTypeNameFor(owningType, schemaType) + "__" + oa.asciiId() + "__gqlv_action";
}
- public static String actionInvokeTypeNameFor(
+ public String actionInvokeTypeNameFor(
final ObjectSpecification owningType,
final ObjectAction oa,
final SchemaType schemaType) {
return objectTypeNameFor(owningType, schemaType) + "__" + oa.asciiId() + "__gqlv_action_invoke";
}
- public static String actionParamsTypeNameFor(
+ public String actionParamsTypeNameFor(
final ObjectSpecification owningType,
final ObjectAction oa,
final SchemaType schemaType) {
return objectTypeNameFor(owningType, schemaType) + "__" + oa.asciiId() + "__gqlv_action_params";
}
- public static String actionArgsTypeNameFor(
+ public String actionArgsTypeNameFor(
final ObjectSpecification owningType,
final ObjectAction oa,
final SchemaType schemaType) {
return objectTypeNameFor(owningType, schemaType) + "__" + oa.asciiId() + "__gqlv_action_args";
}
- public static String actionParamTypeNameFor(
+ public String actionParamTypeNameFor(
final ObjectSpecification owningType,
final ObjectActionParameter oap,
final SchemaType schemaType) {
@@ -91,36 +99,55 @@
return objectTypeNameFor(owningType, schemaType) + "__" + objectFeature.asciiId() + "__" + oap.asciiId() + "__gqlv_action_parameter";
}
- public static String propertyTypeNameFor(
+ public String propertyTypeNameFor(
final ObjectSpecification owningType,
final OneToOneAssociation otoa,
final SchemaType schemaType) {
return objectTypeNameFor(owningType, schemaType) + "__" + otoa.asciiId() + "__gqlv_property";
}
- public static String propertyLobTypeNameFor(
+ public String propertyLobTypeNameFor(
final ObjectSpecification owningType,
final OneToOneAssociation otoa,
final SchemaType schemaType) {
return objectTypeNameFor(owningType, schemaType) + "__" + otoa.asciiId() + "__gqlv_property_lob";
}
- public static String collectionTypeNameFor(
+ public String collectionTypeNameFor(
final ObjectSpecification owningType,
final OneToManyAssociation otma,
final SchemaType schemaType) {
return objectTypeNameFor(owningType, schemaType) + "__" + otma.asciiId() + "__gqlv_collection";
}
- public static String memberTypeNameFor(
+ public String memberTypeNameFor(
final ObjectSpecification owningType,
final ObjectMember objectMember,
final SchemaType schemaType) {
return objectTypeNameFor(owningType, schemaType) + "__" + objectMember.asciiId() + "__gqlv_member";
}
- private static String sanitized(final String name) {
- return name.replace('.', '_').replace("#", "__").replace("()","");
+ // -- HELPER
+
+ String sanitized(final String name) {
+ var result = name.replace('.', '_').replace("#", "__").replace("()", "");
+ result = hyphenedToCamelCase(result);
+ return result;
+ }
+
+ /**
+ * Converts e.g. {@code a-b} to {@code aB}.
+ * Which allows namespaces that contain a hyphen like
+ * {@code university.calc.calculator-hyphenated} to be referenced from QraphQL via
+ * {@code university.calc.calculatorHyphenated} say.
+ */
+ private String hyphenedToCamelCase(String string) {
+ final int hyphenStart = string.indexOf("-");
+ return hyphenStart > 0
+ ? string.substring(0,hyphenStart) + Arrays.stream(string.substring(hyphenStart + 1).split("-"))
+ .map(word -> Character.toUpperCase(word.charAt(0)) + word.substring(1))
+ .collect(Collectors.joining())
+ : string;
}
}
diff --git a/viewers/graphql/model/src/test/java/org/apache/causeway/viewer/graphql/model/domain/TypeNamesTest.java b/viewers/graphql/model/src/test/java/org/apache/causeway/viewer/graphql/model/domain/TypeNamesTest.java
new file mode 100644
index 0000000..c575f4c
--- /dev/null
+++ b/viewers/graphql/model/src/test/java/org/apache/causeway/viewer/graphql/model/domain/TypeNamesTest.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.causeway.viewer.graphql.model.domain;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class TypeNamesTest {
+
+ @Test
+ void typeNameSanitized() {
+ assertEquals("a", TypeNames.sanitized("a")); // identity operation
+ assertEquals("aB", TypeNames.sanitized("aB")); // identity operation
+ assertEquals("Ab", TypeNames.sanitized("Ab")); // identity operation
+
+ assertEquals("aB_Cd", TypeNames.sanitized("aB.Cd"));
+ assertEquals("a_b_cD", TypeNames.sanitized("a.b.c-d"));
+ assertEquals("aB_c_d", TypeNames.sanitized("a-b.c.d"));
+ }
+
+}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/calc/CalculatorNameVariant.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/calc/CalculatorNameVariant.java
new file mode 100644
index 0000000..e339867
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/calc/CalculatorNameVariant.java
@@ -0,0 +1,195 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.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;
+import javax.inject.Named;
+
+import org.apache.causeway.applib.annotation.Action;
+import org.apache.causeway.applib.annotation.DomainService;
+import org.apache.causeway.applib.annotation.Optionality;
+import org.apache.causeway.applib.annotation.Parameter;
+import org.apache.causeway.applib.annotation.PriorityPrecedence;
+import org.apache.causeway.applib.annotation.SemanticsOf;
+
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+
+@Named("university.calc.calculator-hyphenated")
+@DomainService
+@Priority(PriorityPrecedence.EARLY)
+@RequiredArgsConstructor(onConstructor_ = {@Inject})
+public class CalculatorNameVariant {
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public byte addBytes(final byte x, final byte y) {
+ return (byte)(x+y);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public int addByteWrappers(final Byte x, @Parameter(optionality = Optionality.OPTIONAL) final Byte y) {
+ return y != null ? x+y : x;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public short addShorts(final short x, final short y) {
+ return (short)(x+y);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public Short addShortWrappers(final Short x, @Parameter(optionality = Optionality.OPTIONAL) final Short y) {
+ return y != null ? (short)(x+y) : x;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public int addIntegers(final int x, final int y) {
+ return x+y;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public int addIntegerWrappers(final Integer x, @Parameter(optionality = Optionality.OPTIONAL) final Integer y) {
+ return y != null ? x+y : x;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public double addDoubles(final double x, final double y) {
+ return x+y;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public Double addDoubleWrappers(final Double x, @Parameter(optionality = Optionality.OPTIONAL) final Double y) {
+ return y != null ? x+y : x;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public float addFloats(final float x, final float y) {
+ return x+y;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public Float addFloatWrappers(final Float x, @Parameter(optionality = Optionality.OPTIONAL) final Float y) {
+ return y != null ? (float)(x+y) : x;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public BigInteger addBigIntegers(final BigInteger x, @Parameter(optionality = Optionality.OPTIONAL) final BigInteger y) {
+ return y != null ? x.add(y) : x;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public BigDecimal addBigDecimals(final BigDecimal x, @Parameter(optionality = Optionality.OPTIONAL) final BigDecimal y) {
+ return y != null ? x.add(y) : x;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public LocalDate jdk8LocalPlusDays(final LocalDate date, final int numDays) {
+ return date.plusDays(numDays);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public OffsetDateTime jdk8OffsetPlusDaysAndHoursAndMinutes(final OffsetDateTime dateTime, final int numDays, final int numHours, final int numMinutes) {
+ return dateTime.plusDays(numDays).plusHours(numHours).plusMinutes(numMinutes);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public ZonedDateTime jdk8ZonedPlusDaysAndHoursAndMinutes(final ZonedDateTime dateTime, final int numDays, final int numHours, final int numMinutes) {
+ return dateTime.plusDays(numDays).plusHours(numHours).plusMinutes(numMinutes);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public OffsetTime jdk8OffsetPlusHoursAndMinutes(final OffsetTime time, final int numHours, final int numMinutes) {
+ return time.plusHours(numHours).plusMinutes(numMinutes);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public LocalTime jdk8LocalPlusHoursAndMinutes(final LocalTime time, final int numHours, final int numMinutes) {
+ return time.plusHours(numHours).plusMinutes(numMinutes);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public org.joda.time.LocalDate jodaLocalPlusDays(final org.joda.time.LocalDate date, final int numDays) {
+ return date.plusDays(numDays);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public org.joda.time.DateTime jodaPlusDaysAndHoursAndMinutes(final org.joda.time.DateTime dateTime, final int numDays, final int numHours, final int numMinutes) {
+ return dateTime.plusDays(numDays).plusHours(numHours).plusMinutes(numMinutes);
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public org.joda.time.LocalTime jodaLocalPlusHoursAndMinutes(final org.joda.time.LocalTime time, final int numHours, final int numMinutes) {
+ return time.plusHours(numHours).plusMinutes(numMinutes);
+ }
+
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public boolean and(final boolean x, final boolean y) {
+ return x & y;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public boolean or(final boolean x, final boolean y) {
+ return x | y;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public boolean not(final boolean x) {
+ return !x;
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public Month nextMonth(final Month month) {
+ return month.nextMonth();
+ }
+
+ @Action(semantics = SemanticsOf.SAFE)
+ public String concat(final String prefix, @Parameter(optionality = Optionality.OPTIONAL) final String suffix) {
+ 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/calc/CalculatorNameVariant_IntegTest.each.hyphenated._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/calc/CalculatorNameVariant_IntegTest.each.hyphenated._.gql
new file mode 100644
index 0000000..f070bff
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/calc/CalculatorNameVariant_IntegTest.each.hyphenated._.gql
@@ -0,0 +1,11 @@
+{
+ rich {
+ university_calc_calculatorHyphenated {
+ addDoubles {
+ invoke(x: 1.1, y: 2.2) {
+ results
+ }
+ }
+ }
+ }
+}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/calc/CalculatorNameVariant_IntegTest.each.hyphenated.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/calc/CalculatorNameVariant_IntegTest.each.hyphenated.approved.json
new file mode 100644
index 0000000..a545970
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/calc/CalculatorNameVariant_IntegTest.each.hyphenated.approved.json
@@ -0,0 +1,13 @@
+{
+ "data" : {
+ "rich" : {
+ "university_calc_calculatorHyphenated" : {
+ "addDoubles" : {
+ "invoke" : {
+ "results" : 3.3000000000000003
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/calc/CalculatorNameVariant_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/calc/CalculatorNameVariant_IntegTest.java
new file mode 100644
index 0000000..4df33ed
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/calc/CalculatorNameVariant_IntegTest.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.causeway.viewer.graphql.viewer.test.e2e.calc;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
+
+import org.junit.jupiter.api.DynamicTest;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.TestFactory;
+
+
+//NOT USING @Transactional since we are running server within same transaction otherwise
+@Order(30)
+public class CalculatorNameVariant_IntegTest extends Abstract_IntegTest {
+
+ @Override
+ @TestFactory
+ public Iterable<DynamicTest> each() throws IOException, URISyntaxException {
+ return super.each();
+ }
+
+}
diff --git a/viewers/graphql/test/src/test/resources/schema.gql b/viewers/graphql/test/src/test/resources/schema.gql
index e16867c..b81e3f9 100644
--- a/viewers/graphql/test/src/test/resources/schema.gql
+++ b/viewers/graphql/test/src/test/resources/schema.gql
@@ -113,6 +113,7 @@
university_admin_AdminMenu: rich__university_admin_AdminMenu
university_calc_Calculator: rich__university_calc_Calculator
university_calc_I18nCalculator: rich__university_calc_I18nCalculator
+ university_calc_calculatorHyphenated: rich__university_calc_calculatorHyphenated
university_dept_Department(object: rich__university_dept_Department__gqlv_input): rich__university_dept_Department
university_dept_Departments: rich__university_dept_Departments
university_dept_DeptHead(object: rich__university_dept_DeptHead__gqlv_input): rich__university_dept_DeptHead
@@ -164,6 +165,7 @@
university_admin_AdminMenu: simple__university_admin_AdminMenu
university_calc_Calculator: simple__university_calc_Calculator
university_calc_I18nCalculator: simple__university_calc_I18nCalculator
+ university_calc_calculatorHyphenated: simple__university_calc_calculatorHyphenated
university_dept_Department(object: simple__university_dept_Department__gqlv_input): simple__university_dept_Department
university_dept_Departments: simple__university_dept_Departments
university_dept_DeptHead(object: simple__university_dept_DeptHead__gqlv_input): simple__university_dept_DeptHead
@@ -225,6 +227,7 @@
university_admin_AdminMenu: rich__university_admin_AdminMenu
university_calc_Calculator: rich__university_calc_Calculator
university_calc_I18nCalculator: rich__university_calc_I18nCalculator
+ university_calc_calculatorHyphenated: rich__university_calc_calculatorHyphenated
university_dept_Department(object: rich__university_dept_Department__gqlv_input): rich__university_dept_Department
university_dept_Departments: rich__university_dept_Departments
university_dept_DeptHead(object: rich__university_dept_DeptHead__gqlv_input): rich__university_dept_DeptHead
@@ -3400,6 +3403,1222 @@
a2: rich__university_calc_I18nCalculator__concat__a2__gqlv_action_parameter
}
+type rich__university_calc_calculatorHyphenated {
+ "Add Big Decimals"
+ addBigDecimals: rich__university_calc_calculatorHyphenated__addBigDecimals__gqlv_action
+ "Add Big Integers"
+ addBigIntegers: rich__university_calc_calculatorHyphenated__addBigIntegers__gqlv_action
+ "Add Byte Wrappers"
+ addByteWrappers: rich__university_calc_calculatorHyphenated__addByteWrappers__gqlv_action
+ "Add Bytes"
+ addBytes: rich__university_calc_calculatorHyphenated__addBytes__gqlv_action
+ "Add Double Wrappers"
+ addDoubleWrappers: rich__university_calc_calculatorHyphenated__addDoubleWrappers__gqlv_action
+ "Add Doubles"
+ addDoubles: rich__university_calc_calculatorHyphenated__addDoubles__gqlv_action
+ "Add Float Wrappers"
+ addFloatWrappers: rich__university_calc_calculatorHyphenated__addFloatWrappers__gqlv_action
+ "Add Floats"
+ addFloats: rich__university_calc_calculatorHyphenated__addFloats__gqlv_action
+ "Add Integer Wrappers"
+ addIntegerWrappers: rich__university_calc_calculatorHyphenated__addIntegerWrappers__gqlv_action
+ "Add Integers"
+ addIntegers: rich__university_calc_calculatorHyphenated__addIntegers__gqlv_action
+ "Add Short Wrappers"
+ addShortWrappers: rich__university_calc_calculatorHyphenated__addShortWrappers__gqlv_action
+ "Add Shorts"
+ addShorts: rich__university_calc_calculatorHyphenated__addShorts__gqlv_action
+ "And"
+ and: rich__university_calc_calculatorHyphenated__and__gqlv_action
+ "Concat"
+ concat: rich__university_calc_calculatorHyphenated__concat__gqlv_action
+ "Jdk 8 Local Plus Days"
+ jdk8LocalPlusDays: rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__gqlv_action
+ "Jdk 8 Local Plus Hours And Minutes"
+ jdk8LocalPlusHoursAndMinutes: rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__gqlv_action
+ "Jdk 8 Offset Plus Days And Hours And Minutes"
+ jdk8OffsetPlusDaysAndHoursAndMinutes: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action
+ "Jdk 8 Offset Plus Hours And Minutes"
+ jdk8OffsetPlusHoursAndMinutes: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__gqlv_action
+ "Jdk 8 Zoned Plus Days And Hours And Minutes"
+ jdk8ZonedPlusDaysAndHoursAndMinutes: rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action
+ "Joda Local Plus Days"
+ jodaLocalPlusDays: rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__gqlv_action
+ "Joda Local Plus Hours And Minutes"
+ jodaLocalPlusHoursAndMinutes: rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__gqlv_action
+ "Joda Plus Days And Hours And Minutes"
+ jodaPlusDaysAndHoursAndMinutes: rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__gqlv_action
+ "Next Month"
+ nextMonth: rich__university_calc_calculatorHyphenated__nextMonth__gqlv_action
+ "Not"
+ not: rich__university_calc_calculatorHyphenated__not__gqlv_action
+ "Or"
+ or: rich__university_calc_calculatorHyphenated__or__gqlv_action
+ "Some Locale"
+ someLocale: rich__university_calc_calculatorHyphenated__someLocale__gqlv_action
+ "Some Url"
+ someUrl: rich__university_calc_calculatorHyphenated__someUrl__gqlv_action
+ "Some Uuid"
+ someUuid: rich__university_calc_calculatorHyphenated__someUuid__gqlv_action
+}
+
+type rich__university_calc_calculatorHyphenated__addBigDecimals__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: String!, y: String): rich__university_calc_calculatorHyphenated__addBigDecimals__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addBigDecimals__gqlv_action_params
+ validate(x: String, y: String): String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigDecimals__gqlv_action_args {
+ x: String
+ y: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigDecimals__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addBigDecimals__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigDecimals__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addBigDecimals__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addBigDecimals__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addBigDecimals__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigDecimals__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: String, y: String): String
+ hidden(x: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigIntegers__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: String!, y: String): rich__university_calc_calculatorHyphenated__addBigIntegers__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addBigIntegers__gqlv_action_params
+ validate(x: String, y: String): String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigIntegers__gqlv_action_args {
+ x: String
+ y: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigIntegers__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addBigIntegers__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigIntegers__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addBigIntegers__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addBigIntegers__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addBigIntegers__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBigIntegers__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: String, y: String): String
+ hidden(x: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addByteWrappers__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Byte!, y: Byte): rich__university_calc_calculatorHyphenated__addByteWrappers__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addByteWrappers__gqlv_action_params
+ validate(x: Byte, y: Byte): String
+}
+
+type rich__university_calc_calculatorHyphenated__addByteWrappers__gqlv_action_args {
+ x: Byte
+ y: Byte
+}
+
+type rich__university_calc_calculatorHyphenated__addByteWrappers__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addByteWrappers__gqlv_action_args
+ results: Int
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addByteWrappers__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addByteWrappers__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addByteWrappers__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addByteWrappers__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Byte): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addByteWrappers__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Byte, y: Byte): String
+ hidden(x: Byte): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBytes__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Byte!, y: Byte!): rich__university_calc_calculatorHyphenated__addBytes__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addBytes__gqlv_action_params
+ validate(x: Byte, y: Byte): String
+}
+
+type rich__university_calc_calculatorHyphenated__addBytes__gqlv_action_args {
+ x: Byte
+ y: Byte
+}
+
+type rich__university_calc_calculatorHyphenated__addBytes__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addBytes__gqlv_action_args
+ results: Byte
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBytes__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addBytes__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addBytes__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addBytes__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Byte): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addBytes__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Byte, y: Byte): String
+ hidden(x: Byte): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubleWrappers__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Float!, y: Float): rich__university_calc_calculatorHyphenated__addDoubleWrappers__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addDoubleWrappers__gqlv_action_params
+ validate(x: Float, y: Float): String
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubleWrappers__gqlv_action_args {
+ x: Float
+ y: Float
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubleWrappers__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addDoubleWrappers__gqlv_action_args
+ results: Float
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubleWrappers__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addDoubleWrappers__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addDoubleWrappers__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubleWrappers__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Float): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubleWrappers__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Float, y: Float): String
+ hidden(x: Float): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubles__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Float!, y: Float!): rich__university_calc_calculatorHyphenated__addDoubles__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addDoubles__gqlv_action_params
+ validate(x: Float, y: Float): String
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubles__gqlv_action_args {
+ x: Float
+ y: Float
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubles__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addDoubles__gqlv_action_args
+ results: Float
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubles__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addDoubles__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addDoubles__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubles__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Float): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addDoubles__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Float, y: Float): String
+ hidden(x: Float): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addFloatWrappers__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Float!, y: Float): rich__university_calc_calculatorHyphenated__addFloatWrappers__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addFloatWrappers__gqlv_action_params
+ validate(x: Float, y: Float): String
+}
+
+type rich__university_calc_calculatorHyphenated__addFloatWrappers__gqlv_action_args {
+ x: Float
+ y: Float
+}
+
+type rich__university_calc_calculatorHyphenated__addFloatWrappers__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addFloatWrappers__gqlv_action_args
+ results: Float
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addFloatWrappers__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addFloatWrappers__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addFloatWrappers__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addFloatWrappers__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Float): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addFloatWrappers__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Float, y: Float): String
+ hidden(x: Float): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addFloats__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Float!, y: Float!): rich__university_calc_calculatorHyphenated__addFloats__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addFloats__gqlv_action_params
+ validate(x: Float, y: Float): String
+}
+
+type rich__university_calc_calculatorHyphenated__addFloats__gqlv_action_args {
+ x: Float
+ y: Float
+}
+
+type rich__university_calc_calculatorHyphenated__addFloats__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addFloats__gqlv_action_args
+ results: Float
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addFloats__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addFloats__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addFloats__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addFloats__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Float): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addFloats__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Float, y: Float): String
+ hidden(x: Float): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegerWrappers__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Int!, y: Int): rich__university_calc_calculatorHyphenated__addIntegerWrappers__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addIntegerWrappers__gqlv_action_params
+ validate(x: Int, y: Int): String
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegerWrappers__gqlv_action_args {
+ x: Int
+ y: Int
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegerWrappers__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addIntegerWrappers__gqlv_action_args
+ results: Int
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegerWrappers__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addIntegerWrappers__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addIntegerWrappers__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegerWrappers__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Int): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegerWrappers__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Int, y: Int): String
+ hidden(x: Int): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegers__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Int!, y: Int!): rich__university_calc_calculatorHyphenated__addIntegers__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addIntegers__gqlv_action_params
+ validate(x: Int, y: Int): String
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegers__gqlv_action_args {
+ x: Int
+ y: Int
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegers__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addIntegers__gqlv_action_args
+ results: Int
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegers__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addIntegers__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addIntegers__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegers__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Int): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addIntegers__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Int, y: Int): String
+ hidden(x: Int): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addShortWrappers__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Short!, y: Short): rich__university_calc_calculatorHyphenated__addShortWrappers__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addShortWrappers__gqlv_action_params
+ validate(x: Short, y: Short): String
+}
+
+type rich__university_calc_calculatorHyphenated__addShortWrappers__gqlv_action_args {
+ x: Short
+ y: Short
+}
+
+type rich__university_calc_calculatorHyphenated__addShortWrappers__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addShortWrappers__gqlv_action_args
+ results: Short
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addShortWrappers__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addShortWrappers__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addShortWrappers__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addShortWrappers__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Short): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addShortWrappers__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Short, y: Short): String
+ hidden(x: Short): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addShorts__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Short!, y: Short!): rich__university_calc_calculatorHyphenated__addShorts__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__addShorts__gqlv_action_params
+ validate(x: Short, y: Short): String
+}
+
+type rich__university_calc_calculatorHyphenated__addShorts__gqlv_action_args {
+ x: Short
+ y: Short
+}
+
+type rich__university_calc_calculatorHyphenated__addShorts__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__addShorts__gqlv_action_args
+ results: Short
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__addShorts__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__addShorts__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__addShorts__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__addShorts__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Short): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__addShorts__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Short, y: Short): String
+ hidden(x: Short): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__and__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Boolean!, y: Boolean!): rich__university_calc_calculatorHyphenated__and__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__and__gqlv_action_params
+ validate(x: Boolean, y: Boolean): String
+}
+
+type rich__university_calc_calculatorHyphenated__and__gqlv_action_args {
+ x: Boolean
+ y: Boolean
+}
+
+type rich__university_calc_calculatorHyphenated__and__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__and__gqlv_action_args
+ results: Boolean
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__and__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__and__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__and__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__and__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Boolean): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__and__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Boolean, y: Boolean): String
+ hidden(x: Boolean): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__concat__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(prefix: String!, suffix: String): rich__university_calc_calculatorHyphenated__concat__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__concat__gqlv_action_params
+ validate(prefix: String, suffix: String): String
+}
+
+type rich__university_calc_calculatorHyphenated__concat__gqlv_action_args {
+ prefix: String
+ suffix: String
+}
+
+type rich__university_calc_calculatorHyphenated__concat__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__concat__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__concat__gqlv_action_params {
+ "Prefix"
+ prefix: rich__university_calc_calculatorHyphenated__concat__prefix__gqlv_action_parameter
+ "Suffix"
+ suffix: rich__university_calc_calculatorHyphenated__concat__suffix__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__concat__prefix__gqlv_action_parameter {
+ datatype: String
+ disabled(prefix: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__concat__suffix__gqlv_action_parameter {
+ datatype: String
+ disabled(prefix: String, suffix: String): String
+ hidden(prefix: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__date__gqlv_action_parameter {
+ datatype: String
+ disabled(date: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(date: String!, numDays: Int!): rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__gqlv_action_params
+ validate(date: String, numDays: Int): String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__gqlv_action_args {
+ date: String
+ numDays: Int
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__gqlv_action_params {
+ "Date"
+ date: rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__date__gqlv_action_parameter
+ "Num Days"
+ numDays: rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__numDays__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusDays__numDays__gqlv_action_parameter {
+ datatype: String
+ disabled(date: String, numDays: Int): String
+ hidden(date: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(numHours: Int!, numMinutes: Int!, time: String!): rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__gqlv_action_params
+ validate(numHours: Int, numMinutes: Int, time: String): String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__gqlv_action_args {
+ numHours: Int
+ numMinutes: Int
+ time: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__gqlv_action_params {
+ "Num Hours"
+ numHours: rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__numHours__gqlv_action_parameter
+ "Num Minutes"
+ numMinutes: rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
+ "Time"
+ time: rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__time__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__numHours__gqlv_action_parameter {
+ datatype: String
+ disabled(numHours: Int, time: String): String
+ hidden(time: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__numMinutes__gqlv_action_parameter {
+ datatype: String
+ disabled(numHours: Int, numMinutes: Int, time: String): String
+ hidden(numHours: Int, time: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8LocalPlusHoursAndMinutes__time__gqlv_action_parameter {
+ datatype: String
+ disabled(time: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: DateTime): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(dateTime: DateTime!, numDays: Int!, numHours: Int!, numMinutes: Int!): rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_params
+ validate(dateTime: DateTime, numDays: Int, numHours: Int, numMinutes: Int): String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_args {
+ dateTime: DateTime
+ numDays: Int
+ numHours: Int
+ numMinutes: Int
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_args
+ results: DateTime
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_params {
+ "Date Time"
+ dateTime: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
+ "Num Days"
+ numDays: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
+ "Num Hours"
+ numHours: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
+ "Num Minutes"
+ numMinutes: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: DateTime, numDays: Int): String
+ hidden(dateTime: DateTime): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: DateTime, numDays: Int, numHours: Int): String
+ hidden(dateTime: DateTime, numDays: Int): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__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 rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(numHours: Int!, numMinutes: Int!, time: Time!): rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__gqlv_action_params
+ validate(numHours: Int, numMinutes: Int, time: Time): String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__gqlv_action_args {
+ numHours: Int
+ numMinutes: Int
+ time: Time
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__gqlv_action_args
+ results: Time
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__gqlv_action_params {
+ "Num Hours"
+ numHours: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__numHours__gqlv_action_parameter
+ "Num Minutes"
+ numMinutes: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
+ "Time"
+ time: rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__time__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__numHours__gqlv_action_parameter {
+ datatype: String
+ disabled(numHours: Int, time: Time): String
+ hidden(time: Time): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__numMinutes__gqlv_action_parameter {
+ datatype: String
+ disabled(numHours: Int, numMinutes: Int, time: Time): String
+ hidden(numHours: Int, time: Time): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8OffsetPlusHoursAndMinutes__time__gqlv_action_parameter {
+ datatype: String
+ disabled(time: Time): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(dateTime: String!, numDays: Int!, numHours: Int!, numMinutes: Int!): rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_params
+ validate(dateTime: String, numDays: Int, numHours: Int, numMinutes: Int): String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_args {
+ dateTime: String
+ numDays: Int
+ numHours: Int
+ numMinutes: Int
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_params {
+ "Date Time"
+ dateTime: rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
+ "Num Days"
+ numDays: rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
+ "Num Hours"
+ numHours: rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
+ "Num Minutes"
+ numMinutes: rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: String, numDays: Int): String
+ hidden(dateTime: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jdk8ZonedPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: String, numDays: Int, numHours: Int): String
+ hidden(dateTime: String, numDays: Int): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__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 rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__date__gqlv_action_parameter {
+ datatype: String
+ disabled(date: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(date: String!, numDays: Int!): rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__gqlv_action_params
+ validate(date: String, numDays: Int): String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__gqlv_action_args {
+ date: String
+ numDays: Int
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__gqlv_action_params {
+ "Date"
+ date: rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__date__gqlv_action_parameter
+ "Num Days"
+ numDays: rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__numDays__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusDays__numDays__gqlv_action_parameter {
+ datatype: String
+ disabled(date: String, numDays: Int): String
+ hidden(date: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(numHours: Int!, numMinutes: Int!, time: String!): rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__gqlv_action_params
+ validate(numHours: Int, numMinutes: Int, time: String): String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__gqlv_action_args {
+ numHours: Int
+ numMinutes: Int
+ time: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__gqlv_action_params {
+ "Num Hours"
+ numHours: rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__numHours__gqlv_action_parameter
+ "Num Minutes"
+ numMinutes: rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__numMinutes__gqlv_action_parameter
+ "Time"
+ time: rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__time__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__numHours__gqlv_action_parameter {
+ datatype: String
+ disabled(numHours: Int, time: String): String
+ hidden(time: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__numMinutes__gqlv_action_parameter {
+ datatype: String
+ disabled(numHours: Int, numMinutes: Int, time: String): String
+ hidden(numHours: Int, time: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaLocalPlusHoursAndMinutes__time__gqlv_action_parameter {
+ datatype: String
+ disabled(time: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: String): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(dateTime: String!, numDays: Int!, numHours: Int!, numMinutes: Int!): rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__gqlv_action_params
+ validate(dateTime: String, numDays: Int, numHours: Int, numMinutes: Int): String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__gqlv_action_args {
+ dateTime: String
+ numDays: Int
+ numHours: Int
+ numMinutes: Int
+}
+
+type rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__gqlv_action_args
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__gqlv_action_params {
+ "Date Time"
+ dateTime: rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__dateTime__gqlv_action_parameter
+ "Num Days"
+ numDays: rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter
+ "Num Hours"
+ numHours: rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter
+ "Num Minutes"
+ numMinutes: rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__numMinutes__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__numDays__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: String, numDays: Int): String
+ hidden(dateTime: String): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__jodaPlusDaysAndHoursAndMinutes__numHours__gqlv_action_parameter {
+ datatype: String
+ disabled(dateTime: String, numDays: Int, numHours: Int): String
+ hidden(dateTime: String, numDays: Int): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__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 rich__university_calc_calculatorHyphenated__nextMonth__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(month: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum!): rich__university_calc_calculatorHyphenated__nextMonth__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__nextMonth__gqlv_action_params
+ validate(month: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum): String
+}
+
+type rich__university_calc_calculatorHyphenated__nextMonth__gqlv_action_args {
+ month: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum
+}
+
+type rich__university_calc_calculatorHyphenated__nextMonth__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__nextMonth__gqlv_action_args
+ results: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__nextMonth__gqlv_action_params {
+ "Month"
+ month: rich__university_calc_calculatorHyphenated__nextMonth__month__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__nextMonth__month__gqlv_action_parameter {
+ choices: [rich__org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum]
+ datatype: String
+ disabled(month: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__not__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Boolean!): rich__university_calc_calculatorHyphenated__not__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__not__gqlv_action_params
+ validate(x: Boolean): String
+}
+
+type rich__university_calc_calculatorHyphenated__not__gqlv_action_args {
+ x: Boolean
+}
+
+type rich__university_calc_calculatorHyphenated__not__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__not__gqlv_action_args
+ results: Boolean
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__not__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__not__x__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__not__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Boolean): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__or__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke(x: Boolean!, y: Boolean!): rich__university_calc_calculatorHyphenated__or__gqlv_action_invoke
+ "Parameters of this action"
+ params: rich__university_calc_calculatorHyphenated__or__gqlv_action_params
+ validate(x: Boolean, y: Boolean): String
+}
+
+type rich__university_calc_calculatorHyphenated__or__gqlv_action_args {
+ x: Boolean
+ y: Boolean
+}
+
+type rich__university_calc_calculatorHyphenated__or__gqlv_action_invoke {
+ "Arguments used to invoke this action"
+ args: rich__university_calc_calculatorHyphenated__or__gqlv_action_args
+ results: Boolean
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__or__gqlv_action_params {
+ "X"
+ x: rich__university_calc_calculatorHyphenated__or__x__gqlv_action_parameter
+ "Y"
+ y: rich__university_calc_calculatorHyphenated__or__y__gqlv_action_parameter
+}
+
+type rich__university_calc_calculatorHyphenated__or__x__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Boolean): String
+ hidden: Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__or__y__gqlv_action_parameter {
+ datatype: String
+ disabled(x: Boolean, y: Boolean): String
+ hidden(x: Boolean): Boolean
+ validity: String
+}
+
+type rich__university_calc_calculatorHyphenated__someLocale__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke: rich__university_calc_calculatorHyphenated__someLocale__gqlv_action_invoke
+ validate: String
+}
+
+type rich__university_calc_calculatorHyphenated__someLocale__gqlv_action_invoke {
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__someUrl__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke: rich__university_calc_calculatorHyphenated__someUrl__gqlv_action_invoke
+ validate: String
+}
+
+type rich__university_calc_calculatorHyphenated__someUrl__gqlv_action_invoke {
+ results: String
+ target: String
+}
+
+type rich__university_calc_calculatorHyphenated__someUuid__gqlv_action {
+ disabled: String
+ hidden: Boolean
+ invoke: rich__university_calc_calculatorHyphenated__someUuid__gqlv_action_invoke
+ validate: String
+}
+
+type rich__university_calc_calculatorHyphenated__someUuid__gqlv_action_invoke {
+ results: UUID
+ target: String
+}
+
"University department specializing in a field of study"
type rich__university_dept_Department {
"Object metadata"
@@ -4896,6 +6115,65 @@
concat(a1: String!, a2: String!): String
}
+type simple__university_calc_calculatorHyphenated {
+ "Add Big Decimals"
+ addBigDecimals(x: String!, y: String): String
+ "Add Big Integers"
+ addBigIntegers(x: String!, y: String): String
+ "Add Byte Wrappers"
+ addByteWrappers(x: Byte!, y: Byte): Int
+ "Add Bytes"
+ addBytes(x: Byte!, y: Byte!): Byte
+ "Add Double Wrappers"
+ addDoubleWrappers(x: Float!, y: Float): Float
+ "Add Doubles"
+ addDoubles(x: Float!, y: Float!): Float
+ "Add Float Wrappers"
+ addFloatWrappers(x: Float!, y: Float): Float
+ "Add Floats"
+ addFloats(x: Float!, y: Float!): Float
+ "Add Integer Wrappers"
+ addIntegerWrappers(x: Int!, y: Int): Int
+ "Add Integers"
+ addIntegers(x: Int!, y: Int!): Int
+ "Add Short Wrappers"
+ addShortWrappers(x: Short!, y: Short): Short
+ "Add Shorts"
+ addShorts(x: Short!, y: Short!): Short
+ "And"
+ and(x: Boolean!, y: Boolean!): Boolean
+ "Concat"
+ concat(prefix: String!, suffix: String): String
+ "Jdk 8 Local Plus Days"
+ jdk8LocalPlusDays(date: String!, numDays: Int!): String
+ "Jdk 8 Local Plus Hours And Minutes"
+ jdk8LocalPlusHoursAndMinutes(numHours: Int!, numMinutes: Int!, time: String!): String
+ "Jdk 8 Offset Plus Days And Hours And Minutes"
+ jdk8OffsetPlusDaysAndHoursAndMinutes(dateTime: DateTime!, numDays: Int!, numHours: Int!, numMinutes: Int!): DateTime
+ "Jdk 8 Offset Plus Hours And Minutes"
+ jdk8OffsetPlusHoursAndMinutes(numHours: Int!, numMinutes: Int!, time: Time!): Time
+ "Jdk 8 Zoned Plus Days And Hours And Minutes"
+ jdk8ZonedPlusDaysAndHoursAndMinutes(dateTime: String!, numDays: Int!, numHours: Int!, numMinutes: Int!): String
+ "Joda Local Plus Days"
+ jodaLocalPlusDays(date: String!, numDays: Int!): String
+ "Joda Local Plus Hours And Minutes"
+ jodaLocalPlusHoursAndMinutes(numHours: Int!, numMinutes: Int!, time: String!): String
+ "Joda Plus Days And Hours And Minutes"
+ jodaPlusDaysAndHoursAndMinutes(dateTime: String!, numDays: Int!, numHours: Int!, numMinutes: Int!): String
+ "Next Month"
+ nextMonth(month: rich__org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum!): rich__org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum
+ "Not"
+ not(x: Boolean!): Boolean
+ "Or"
+ or(x: Boolean!, y: Boolean!): Boolean
+ "Some Locale"
+ someLocale: String
+ "Some Url"
+ someUrl: String
+ "Some Uuid"
+ someUuid: UUID
+}
+
"University department specializing in a field of study"
type simple__university_dept_Department {
"Object metadata"
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/login/SignInPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/login/SignInPanelAbstract.java
index 3cecaef..e779191 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/login/SignInPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/login/SignInPanelAbstract.java
@@ -37,9 +37,9 @@
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.wicket.util.cookies.CookieUtils;
+import org.apache.causeway.applib.value.semantics.TimeZoneChoiceProvider;
import org.apache.causeway.commons.internal.base._Strings;
import org.apache.causeway.core.metamodel.context.HasMetaModelContext;
-import org.apache.causeway.core.metamodel.valuesemantics.temporal.ZonedDateTimeValueSemantics;
import org.apache.causeway.viewer.wicket.ui.util.Wkt;
import lombok.Getter;
@@ -266,7 +266,7 @@
add(Wkt.dropDownChoice("timezone",
new PropertyModel<ZoneId>(SignInPanelAbstract.this, "timezone"),
- new ZonedDateTimeValueSemantics().getAvailableZoneIds())
+ getTimeZoneChoiceProvider().getAvailableZoneIds())
.setRequired(true)
.setMarkupId(TIME_ZONE_SELECT));
@@ -309,6 +309,11 @@
}
}
+ private TimeZoneChoiceProvider getTimeZoneChoiceProvider() {
+ return getMetaModelContext().getServiceRegistry().lookupService(TimeZoneChoiceProvider.class)
+ .orElseGet(TimeZoneChoiceProvider::fallback);
+ }
+
}
/**