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

commit c3ab42e8802b33aa6d3e38e4c3b0f5801969557d
Author: danhaywood <[email protected]>
AuthorDate: Wed Jan 24 19:51:11 2024 +0000

    CAUSEWAY-3676: adds validate
---
 .../viewer/graphql/model/domain/GqlvProperty.java  |   10 +-
 .../graphql/model/domain/GqlvPropertyValidate.java |  133 +
 .../model/domain/GqlvPropertyValidateHolder.java   |   28 +
 .../graphql/viewer/test/domain/DeptHead.java       |    5 +
 .../graphql/viewer/test/domain/StaffMember.java    |    6 +
 .../graphql/viewer/test/e2e/Domain_IntegTest.java  |    8 +
 ...main_IntegTest.staff_member_name_validate._.gql |   11 +
 ...egTest.staff_member_name_validate.approved.json |   13 +
 .../test/e2e/Schema_IntegTest.schema.approved.json | 2562 +++++++++++++++++++-
 .../graphql/test/src/test/resources/schema.gql     |  104 +
 10 files changed, 2808 insertions(+), 72 deletions(-)

diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
index 4102fef488..e7276c1c8e 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvProperty.java
@@ -37,10 +37,11 @@ import static graphql.schema.GraphQLObjectType.newObject;
 
 public class GqlvProperty
         extends GqlvAssociation<OneToOneAssociation, GqlvPropertyHolder>
-        implements GqlvPropertyGetHolder,
-                   GqlvMemberHiddenHolder,
+        implements GqlvMemberHiddenHolder,
                    GqlvMemberDisabledHolder,
-                   GqlvPropertySetHolder {
+                   GqlvPropertyGetHolder,
+                   GqlvPropertySetHolder,
+                   GqlvPropertyValidateHolder {
 
     private final GraphQLObjectType.Builder gqlObjectTypeBuilder;
     private final GraphQLObjectType gqlObjectType;
@@ -48,6 +49,7 @@ public class GqlvProperty
     private final GqlvMemberDisabled disabled;
     private final GqlvPropertyGet get;
     private final GqlvPropertySet set;
+    private final GqlvPropertyValidate validate;
     private final BookmarkService bookmarkService;
 
     public GqlvProperty(
@@ -65,6 +67,7 @@ public class GqlvProperty
         this.disabled = new GqlvMemberDisabled(this, codeRegistryBuilder);
         this.get = new GqlvPropertyGet(this, codeRegistryBuilder, 
specificationLoader);
         this.set = new GqlvPropertySet(this, codeRegistryBuilder, 
specificationLoader);
+        this.validate = new GqlvPropertyValidate(this, codeRegistryBuilder, 
specificationLoader);
 
         this.gqlObjectType = gqlObjectTypeBuilder.build();
 
@@ -98,6 +101,7 @@ public class GqlvProperty
         disabled.addDataFetcher();
         get.addDataFetcher();
         set.addDataFetcher();
+        validate.addDataFetcher();
     }
 
     private class Fetcher implements DataFetcher<Object> {
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidate.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidate.java
new file mode 100644
index 0000000000..b80cf07cca
--- /dev/null
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidate.java
@@ -0,0 +1,133 @@
+/*
+ *  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 java.util.Map;
+
+import org.apache.causeway.core.metamodel.consent.Consent;
+import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.causeway.core.metamodel.object.ManagedObject;
+import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
+import org.apache.causeway.viewer.graphql.model.types.TypeMapper;
+
+import lombok.val;
+
+import graphql.schema.DataFetchingEnvironment;
+import graphql.schema.GraphQLArgument;
+import graphql.schema.GraphQLCodeRegistry;
+import graphql.schema.GraphQLFieldDefinition;
+import graphql.schema.GraphQLOutputType;
+
+import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
+
+public class GqlvPropertyValidate {
+
+    final GqlvPropertyValidateHolder holder;
+    final GraphQLCodeRegistry.Builder codeRegistryBuilder;
+    final SpecificationLoader specificationLoader;
+    final GraphQLFieldDefinition field;
+
+    public GqlvPropertyValidate(
+            final GqlvPropertyValidateHolder holder,
+            final GraphQLCodeRegistry.Builder codeRegistryBuilder,
+            final SpecificationLoader specificationLoader) {
+        this.holder = holder;
+        this.codeRegistryBuilder = codeRegistryBuilder;
+        this.field = fieldDefinition(holder);
+        this.specificationLoader = specificationLoader;
+    }
+
+    GraphQLFieldDefinition fieldDefinition(final GqlvPropertyValidateHolder 
holder) {
+
+        GraphQLFieldDefinition fieldDefinition = null;
+        GraphQLOutputType type = outputTypeFor(holder);
+        if (type != null) {
+            val fieldBuilder = newFieldDefinition()
+                    .name("validate")
+                    .type(type);
+            addGqlArgument(holder.getOneToOneAssociation(), fieldBuilder);
+            fieldDefinition = fieldBuilder.build();
+
+            holder.addField(fieldDefinition);
+        }
+        return fieldDefinition;
+    }
+
+    GraphQLOutputType outputTypeFor(GqlvPropertyValidateHolder holder) {
+        return TypeMapper.scalarTypeFor(String.class);
+    }
+
+    static void addGqlArgument(
+            final OneToOneAssociation oneToOneAssociation,
+            final GraphQLFieldDefinition.Builder builder) {
+
+        builder.argument(gqlArgumentFor(oneToOneAssociation));
+    }
+
+    private static GraphQLArgument gqlArgumentFor(final OneToOneAssociation 
oneToOneAssociation) {
+        return GraphQLArgument.newArgument()
+                .name(oneToOneAssociation.getId())
+                .type(TypeMapper.inputTypeFor(oneToOneAssociation))
+                .build();
+    }
+
+
+    void addDataFetcher() {
+
+        val association = holder.getOneToOneAssociation();
+        val fieldObjectSpecification = association.getElementType();
+        val beanSort = fieldObjectSpecification.getBeanSort();
+
+        switch (beanSort) {
+            case VALUE:
+            case VIEW_MODEL:
+            case ENTITY:
+                codeRegistryBuilder.dataFetcher(
+                        holder.coordinatesFor(field),
+                        this::validate);
+
+                break;
+        }
+    }
+
+    Object validate(final DataFetchingEnvironment dataFetchingEnvironment) {
+
+        val association = holder.getOneToOneAssociation();
+
+        val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
+
+        val sourcePojoClass = sourcePojo.getClass();
+        val objectSpecification = 
specificationLoader.loadSpecification(sourcePojoClass);
+        if (objectSpecification == null) {
+            // not expected
+            return null;
+        }
+
+        val managedObject = ManagedObject.adaptSingular(objectSpecification, 
sourcePojo);
+
+        Map<String, Object> arguments = dataFetchingEnvironment.getArguments();
+        Object argumentValue = arguments.get(association.getId());
+        ManagedObject argumentManagedObject = 
ManagedObject.adaptProperty(association, argumentValue);
+        Consent associationValid = 
association.isAssociationValid(managedObject, argumentManagedObject, 
InteractionInitiatedBy.USER);
+
+        return associationValid.isVetoed() ? 
associationValid.getReasonAsString().orElse("invalid") : null;
+    }
+
+}
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidateHolder.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidateHolder.java
new file mode 100644
index 0000000000..616bf45f1c
--- /dev/null
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvPropertyValidateHolder.java
@@ -0,0 +1,28 @@
+/*
+ *  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.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation;
+
+public interface GqlvPropertyValidateHolder extends GqlvHolder {
+
+    OneToOneAssociation getOneToOneAssociation();
+
+    GqlvPropertyHolder getHolder();
+}
diff --git 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/DeptHead.java
 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/DeptHead.java
index 7749187e15..03f90873b1 100644
--- 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/DeptHead.java
+++ 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/DeptHead.java
@@ -35,13 +35,18 @@ import javax.persistence.Transient;
 import org.apache.causeway.applib.annotation.Action;
 import org.apache.causeway.applib.annotation.Bounding;
 import org.apache.causeway.applib.annotation.DomainObject;
+import org.apache.causeway.applib.annotation.Editing;
 import org.apache.causeway.applib.annotation.Nature;
+import org.apache.causeway.applib.annotation.Optionality;
 import org.apache.causeway.applib.annotation.Property;
 import org.apache.causeway.applib.annotation.SemanticsOf;
 
 import lombok.Getter;
 import lombok.Setter;
 
+import static org.apache.causeway.applib.annotation.Editing.ENABLED;
+import static org.apache.causeway.applib.annotation.Optionality.MANDATORY;
+
 @Entity
 @Table(
         schema = "public",
diff --git 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/StaffMember.java
 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/StaffMember.java
index bda263a69c..cca203a03f 100644
--- 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/StaffMember.java
+++ 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/StaffMember.java
@@ -53,6 +53,12 @@ public class StaffMember implements Comparable<StaffMember> {
     @Getter @Setter
     @Property(editing = Editing.ENABLED)
     private String name;
+    public String validateName(String proposedName) {
+        if(proposedName.contains("!")) {
+            return("Name cannot contain '!' character");
+        }
+        return null;
+    }
 
     @Getter @Setter
     @Property
diff --git 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.java
 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.java
index 632a50b614..dd4b70177a 100644
--- 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.java
+++ 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.java
@@ -160,6 +160,14 @@ public class Domain_IntegTest extends 
CausewayViewerGraphqlTestModuleIntegTestAb
         
assertThat(staffMemberIfAny.get()).extracting(StaffMember::getName).isEqualTo("Gerald
 Johns");
     }
 
+    @Test
+    @UseReporter(DiffReporter.class)
+    void staff_member_name_validate() throws Exception {
+
+        // when, then
+        Approvals.verify(submit(), jsonOptions());
+    }
+
     @Test
     @UseReporter(DiffReporter.class)
     void find_depthead_by_name() throws Exception {
diff --git 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.staff_member_name_validate._.gql
 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.staff_member_name_validate._.gql
new file mode 100644
index 0000000000..e7d8b898ef
--- /dev/null
+++ 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.staff_member_name_validate._.gql
@@ -0,0 +1,11 @@
+{
+  university_dept_Staff {
+    findByName {
+      invoke(name: "Gerry Jones") {
+        name {
+          validate(name: "Gerry!")
+        }
+      }
+    }
+  }
+}
diff --git 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.staff_member_name_validate.approved.json
 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.staff_member_name_validate.approved.json
new file mode 100644
index 0000000000..3f614254ad
--- /dev/null
+++ 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Domain_IntegTest.staff_member_name_validate.approved.json
@@ -0,0 +1,13 @@
+{
+  "data" : {
+    "university_dept_Staff" : {
+      "findByName" : {
+        "invoke" : {
+          "name" : {
+            "validate" : "Name cannot contain '!' character"
+          }
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json
 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json
index ba29d839a3..2bd68359dc 100644
--- 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json
+++ 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json
@@ -1118,6 +1118,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "actionArguments",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1180,6 +1200,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "actionId",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1242,6 +1282,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "actionOwningFqcn",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1312,6 +1372,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "elementTypeFqcn",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1474,6 +1558,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "title",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1628,6 +1736,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "facets",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1744,6 +1876,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1959,6 +2115,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parameter",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -2029,6 +2209,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : "causeway_applib_node_ActionNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -2266,6 +2470,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "mixedIn",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -2336,6 +2564,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : "causeway_applib_TypeNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -2406,21 +2658,45 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
-        } ],
-        "inputFields" : null,
-        "interfaces" : [ ],
-        "enumValues" : null,
-        "possibleTypes" : null
-      }, {
-        "kind" : "OBJECT",
-        "name" : "causeway_applib_PropertyNode__streamChildNodes__gqlv_action",
-        "description" : null,
-        "fields" : [ {
-          "name" : "hidden",
+        }, {
+          "name" : "validate",
           "description" : null,
-          "args" : [ ],
-          "type" : {
-            "kind" : "SCALAR",
+          "args" : [ {
+            "name" : "property",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_PropertyNode__streamChildNodes__gqlv_action",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
             "name" : "Boolean",
             "ofType" : null
           },
@@ -2560,6 +2836,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "description",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -2691,6 +2991,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "name",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -2845,6 +3169,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "domainClassDto",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"causeway_schema_metamodel_v2_DomainClassDto__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -2961,6 +3309,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3172,6 +3544,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "authenticationCode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3242,6 +3638,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "authenticationSource",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3304,6 +3724,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "avatarUrl",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3435,6 +3875,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "impersonating",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3497,6 +3961,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "languageLocale",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3559,6 +4043,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "multiTenancyToken",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3629,8 +4133,32 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
-        } ],
-        "inputFields" : null,
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "name",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
@@ -3691,6 +4219,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "numberFormatLocale",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3753,6 +4301,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "realName",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3861,6 +4429,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "timeFormatLocale",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -4068,6 +4656,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "action",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -4230,6 +4842,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "mixedIn",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -4300,6 +4936,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : "causeway_applib_TypeNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -4518,6 +5178,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "collection",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -4649,6 +5333,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "mixedIn",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -4719,6 +5427,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : "causeway_applib_TypeNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -4915,6 +5647,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "facetAttr",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -5046,19 +5802,43 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
-        } ],
-        "inputFields" : null,
-        "interfaces" : [ ],
-        "enumValues" : null,
-        "possibleTypes" : null
-      }, {
-        "kind" : "OBJECT",
-        "name" : "causeway_applib_node_FacetNode",
-        "description" : null,
-        "fields" : [ {
-          "name" : "_gql_meta",
+        }, {
+          "name" : "validate",
           "description" : null,
-          "args" : [ ],
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : "causeway_applib_node_FacetNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_node_FacetNode",
+        "description" : null,
+        "fields" : [ {
+          "name" : "_gql_meta",
+          "description" : null,
+          "args" : [ ],
           "type" : {
             "kind" : "OBJECT",
             "name" : "causeway_applib_node_FacetNode__gqlv_meta",
@@ -5211,6 +5991,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "facet",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -5327,6 +6131,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -5397,6 +6225,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "shadowed",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -5632,6 +6484,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "key",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -5702,6 +6578,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "value",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -6149,6 +7049,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "memberName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -6219,6 +7143,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "namespaceName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -6274,6 +7222,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parent",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"causeway_feat_ApplicationFeatureViewModel__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -6344,6 +7316,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "typeSimpleName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -6581,21 +7577,45 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
-        } ],
-        "inputFields" : null,
-        "interfaces" : [ ],
-        "enumValues" : null,
-        "possibleTypes" : null
-      }, {
-        "kind" : "OBJECT",
-        "name" : 
"causeway_feat_ApplicationNamespace__namespaceName__gqlv_property",
-        "description" : null,
-        "fields" : [ {
-          "name" : "hidden",
+        }, {
+          "name" : "validate",
           "description" : null,
-          "args" : [ ],
-          "type" : {
-            "kind" : "SCALAR",
+          "args" : [ {
+            "name" : "memberName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : 
"causeway_feat_ApplicationNamespace__namespaceName__gqlv_property",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
             "name" : "Boolean",
             "ofType" : null
           },
@@ -6651,6 +7671,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "namespaceName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -6706,6 +7750,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parent",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"causeway_feat_ApplicationFeatureViewModel__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -6776,6 +7844,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "typeSimpleName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7029,6 +8121,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "actionSemantics",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7160,6 +8276,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "memberName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7230,6 +8370,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "namespaceName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7285,6 +8449,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parent",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"causeway_feat_ApplicationFeatureViewModel__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7355,6 +8543,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "returnType",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7425,6 +8637,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "typeSimpleName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7581,19 +8817,43 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
-        } ],
-        "inputFields" : null,
-        "interfaces" : [ ],
-        "enumValues" : null,
-        "possibleTypes" : null
-      }, {
-        "kind" : "OBJECT",
-        "name" : 
"causeway_feat_ApplicationTypeCollection__elementType__gqlv_property",
-        "description" : null,
-        "fields" : [ {
-          "name" : "hidden",
+        }, {
+          "name" : "validate",
           "description" : null,
-          "args" : [ ],
+          "args" : [ {
+            "name" : "derived",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : 
"causeway_feat_ApplicationTypeCollection__elementType__gqlv_property",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
           "type" : {
             "kind" : "SCALAR",
             "name" : "Boolean",
@@ -7651,6 +8911,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "elementType",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7782,6 +9066,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "memberName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7852,6 +9160,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "namespaceName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7907,6 +9239,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parent",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"causeway_feat_ApplicationFeatureViewModel__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -7977,6 +9333,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "typeSimpleName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8172,6 +9552,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "memberName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8242,6 +9646,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "namespaceName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8297,6 +9725,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parent",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"causeway_feat_ApplicationFeatureViewModel__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8367,6 +9819,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "typeSimpleName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8545,6 +10021,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "derived",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8668,6 +10168,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "maxLength",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "Int",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8738,6 +10258,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "memberName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8808,6 +10352,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "namespaceName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8863,6 +10431,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parent",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"causeway_feat_ApplicationFeatureViewModel__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -8933,6 +10525,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "returnType",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9003,6 +10619,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "typeSimpleName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9039,14 +10679,34 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "SCALAR",
-            "name" : "Int",
+            "kind" : "SCALAR",
+            "name" : "Int",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "set",
+          "description" : null,
+          "args" : [ {
+            "name" : "typicalLength",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "Int",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_feat_ApplicationTypeProperty",
             "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
         }, {
-          "name" : "set",
+          "name" : "validate",
           "description" : null,
           "args" : [ {
             "name" : "typicalLength",
@@ -9059,8 +10719,8 @@
             "defaultValue" : null
           } ],
           "type" : {
-            "kind" : "OBJECT",
-            "name" : "causeway_feat_ApplicationTypeProperty",
+            "kind" : "SCALAR",
+            "name" : "String",
             "ofType" : null
           },
           "isDeprecated" : false,
@@ -9288,6 +10948,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "memberName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9358,6 +11042,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "namespaceName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9413,6 +11121,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parent",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"causeway_feat_ApplicationFeatureViewModel__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9529,6 +11261,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "typeSimpleName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9718,6 +11474,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "actions",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9788,6 +11568,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "annotations",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9858,6 +11662,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "collections",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -9928,6 +11756,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "facets",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -10059,6 +11911,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "id",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -10121,6 +11997,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "majorVersion",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -10157,14 +12053,34 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "SCALAR",
-            "name" : "String",
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "set",
+          "description" : null,
+          "args" : [ {
+            "name" : "minorVersion",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_schema_metamodel_v2_DomainClassDto",
             "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
         }, {
-          "name" : "set",
+          "name" : "validate",
           "description" : null,
           "args" : [ {
             "name" : "minorVersion",
@@ -10177,8 +12093,8 @@
             "defaultValue" : null
           } ],
           "type" : {
-            "kind" : "OBJECT",
-            "name" : "causeway_schema_metamodel_v2_DomainClassDto",
+            "kind" : "SCALAR",
+            "name" : "String",
             "ofType" : null
           },
           "isDeprecated" : false,
@@ -10253,6 +12169,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "properties",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -10323,6 +12263,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "service",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -10600,6 +12564,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "className",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -10662,6 +12650,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "fixtureScriptClassName",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -10793,6 +12801,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "key",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -10848,6 +12880,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "object",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -12195,6 +14251,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "failure",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -12546,6 +14626,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "success",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -13795,6 +15899,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "failure",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -14780,6 +16908,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "success",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -14970,14 +17122,38 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "SCALAR",
-            "name" : "String",
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "set",
+          "description" : null,
+          "args" : [ {
+            "name" : "value",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "org_apache_causeway_commons_functional_Try",
             "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
         }, {
-          "name" : "set",
+          "name" : "validate",
           "description" : null,
           "args" : [ {
             "name" : "value",
@@ -14994,8 +17170,8 @@
             "defaultValue" : null
           } ],
           "type" : {
-            "kind" : "OBJECT",
-            "name" : "org_apache_causeway_commons_functional_Try",
+            "kind" : "SCALAR",
+            "name" : "String",
             "ofType" : null
           },
           "isDeprecated" : false,
@@ -15189,6 +17365,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -15415,6 +17615,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "mixedIn",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "Boolean",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -15485,6 +17709,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "parentNode",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "INPUT_OBJECT",
+                "name" : "causeway_applib_TypeNode__gqlv_input",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -15639,6 +17887,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "friendlyName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -15770,6 +18042,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "qualifiedName",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -16000,6 +18296,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "deptHead",
+            "description" : null,
+            "type" : {
+              "kind" : "INPUT_OBJECT",
+              "name" : "university_dept_DeptHead__gqlv_input",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -16142,6 +18458,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "name",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -16631,6 +18971,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "department",
+            "description" : null,
+            "type" : {
+              "kind" : "INPUT_OBJECT",
+              "name" : "university_dept_Department__gqlv_input",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -16765,6 +19125,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "name",
+            "description" : null,
+            "type" : {
+              "kind" : "SCALAR",
+              "name" : "String",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -17043,6 +19423,26 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "department",
+            "description" : null,
+            "type" : {
+              "kind" : "INPUT_OBJECT",
+              "name" : "university_dept_Department__gqlv_input",
+              "ofType" : null
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -17185,6 +19585,30 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "validate",
+          "description" : null,
+          "args" : [ {
+            "name" : "name",
+            "description" : null,
+            "type" : {
+              "kind" : "NON_NULL",
+              "name" : null,
+              "ofType" : {
+                "kind" : "SCALAR",
+                "name" : "String",
+                "ofType" : null
+              }
+            },
+            "defaultValue" : null
+          } ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
diff --git a/incubator/viewers/graphql/test/src/test/resources/schema.gql 
b/incubator/viewers/graphql/test/src/test/resources/schema.gql
index bfe8ee7e9f..b5c9311d12 100644
--- a/incubator/viewers/graphql/test/src/test/resources/schema.gql
+++ b/incubator/viewers/graphql/test/src/test/resources/schema.gql
@@ -48,6 +48,7 @@ type 
causeway_applib_DomainObjectList__actionArguments__gqlv_property {
   get: String
   hidden: Boolean
   set(actionArguments: String): causeway_applib_DomainObjectList
+  validate(actionArguments: String): String
 }
 
 type causeway_applib_DomainObjectList__actionId__gqlv_property {
@@ -55,6 +56,7 @@ type 
causeway_applib_DomainObjectList__actionId__gqlv_property {
   get: String
   hidden: Boolean
   set(actionId: String): causeway_applib_DomainObjectList
+  validate(actionId: String): String
 }
 
 type causeway_applib_DomainObjectList__actionOwningFqcn__gqlv_property {
@@ -62,6 +64,7 @@ type 
causeway_applib_DomainObjectList__actionOwningFqcn__gqlv_property {
   get: String
   hidden: Boolean
   set(actionOwningFqcn: String): causeway_applib_DomainObjectList
+  validate(actionOwningFqcn: String): String
 }
 
 type causeway_applib_DomainObjectList__elementTypeFqcn__gqlv_property {
@@ -69,6 +72,7 @@ type 
causeway_applib_DomainObjectList__elementTypeFqcn__gqlv_property {
   get: String!
   hidden: Boolean
   set(elementTypeFqcn: String!): causeway_applib_DomainObjectList
+  validate(elementTypeFqcn: String!): String
 }
 
 type causeway_applib_DomainObjectList__gqlv_meta {
@@ -86,6 +90,7 @@ type causeway_applib_DomainObjectList__title__gqlv_property {
   get: String!
   hidden: Boolean
   set(title: String!): causeway_applib_DomainObjectList
+  validate(title: String!): String
 }
 
 type causeway_applib_FacetGroupNode {
@@ -105,6 +110,7 @@ type causeway_applib_FacetGroupNode__facets__gqlv_property {
   get: String!
   hidden: Boolean
   set(facets: String!): causeway_applib_FacetGroupNode
+  validate(facets: String!): String
 }
 
 type causeway_applib_FacetGroupNode__gqlv_meta {
@@ -116,6 +122,7 @@ type 
causeway_applib_FacetGroupNode__parentNode__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): 
causeway_applib_FacetGroupNode
+  validate(parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): String
 }
 
 type causeway_applib_ParameterNode {
@@ -140,6 +147,7 @@ type 
causeway_applib_ParameterNode__parameter__gqlv_property {
   get: String!
   hidden: Boolean
   set(parameter: String!): causeway_applib_ParameterNode
+  validate(parameter: String!): String
 }
 
 type causeway_applib_ParameterNode__parentNode__gqlv_property {
@@ -147,6 +155,7 @@ type 
causeway_applib_ParameterNode__parentNode__gqlv_property {
   get: causeway_applib_node_ActionNode!
   hidden: Boolean
   set(parentNode: causeway_applib_node_ActionNode__gqlv_input!): 
causeway_applib_ParameterNode
+  validate(parentNode: causeway_applib_node_ActionNode__gqlv_input!): String
 }
 
 type causeway_applib_PropertyNode {
@@ -173,6 +182,7 @@ type causeway_applib_PropertyNode__mixedIn__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(mixedIn: Boolean!): causeway_applib_PropertyNode
+  validate(mixedIn: Boolean!): String
 }
 
 type causeway_applib_PropertyNode__parentNode__gqlv_property {
@@ -180,6 +190,7 @@ type 
causeway_applib_PropertyNode__parentNode__gqlv_property {
   get: causeway_applib_TypeNode!
   hidden: Boolean
   set(parentNode: causeway_applib_TypeNode__gqlv_input!): 
causeway_applib_PropertyNode
+  validate(parentNode: causeway_applib_TypeNode__gqlv_input!): String
 }
 
 type causeway_applib_PropertyNode__property__gqlv_property {
@@ -187,6 +198,7 @@ type causeway_applib_PropertyNode__property__gqlv_property {
   get: String!
   hidden: Boolean
   set(property: String!): causeway_applib_PropertyNode
+  validate(property: String!): String
 }
 
 type causeway_applib_PropertyNode__streamChildNodes__gqlv_action {
@@ -206,6 +218,7 @@ type 
causeway_applib_RoleMemento__description__gqlv_property {
   get: String!
   hidden: Boolean
   set(description: String!): causeway_applib_RoleMemento
+  validate(description: String!): String
 }
 
 type causeway_applib_RoleMemento__gqlv_meta {
@@ -218,6 +231,7 @@ type causeway_applib_RoleMemento__name__gqlv_property {
   get: String!
   hidden: Boolean
   set(name: String!): causeway_applib_RoleMemento
+  validate(name: String!): String
 }
 
 type causeway_applib_TypeNode {
@@ -237,6 +251,7 @@ type 
causeway_applib_TypeNode__domainClassDto__gqlv_property {
   get: causeway_schema_metamodel_v2_DomainClassDto!
   hidden: Boolean
   set(domainClassDto: 
causeway_schema_metamodel_v2_DomainClassDto__gqlv_input!): 
causeway_applib_TypeNode
+  validate(domainClassDto: 
causeway_schema_metamodel_v2_DomainClassDto__gqlv_input!): String
 }
 
 type causeway_applib_TypeNode__gqlv_meta {
@@ -248,6 +263,7 @@ type causeway_applib_TypeNode__parentNode__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): 
causeway_applib_TypeNode
+  validate(parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): String
 }
 
 type causeway_applib_UserMemento {
@@ -270,6 +286,7 @@ type 
causeway_applib_UserMemento__authenticationCode__gqlv_property {
   get: String!
   hidden: Boolean
   set(authenticationCode: String!): causeway_applib_UserMemento
+  validate(authenticationCode: String!): String
 }
 
 type causeway_applib_UserMemento__authenticationSource__gqlv_property {
@@ -277,6 +294,7 @@ type 
causeway_applib_UserMemento__authenticationSource__gqlv_property {
   get: String!
   hidden: Boolean
   set(authenticationSource: String!): causeway_applib_UserMemento
+  validate(authenticationSource: String!): String
 }
 
 type causeway_applib_UserMemento__avatarUrl__gqlv_property {
@@ -284,6 +302,7 @@ type causeway_applib_UserMemento__avatarUrl__gqlv_property {
   get: String
   hidden: Boolean
   set(avatarUrl: String): causeway_applib_UserMemento
+  validate(avatarUrl: String): String
 }
 
 type causeway_applib_UserMemento__gqlv_meta {
@@ -296,6 +315,7 @@ type 
causeway_applib_UserMemento__impersonating__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(impersonating: Boolean!): causeway_applib_UserMemento
+  validate(impersonating: Boolean!): String
 }
 
 type causeway_applib_UserMemento__languageLocale__gqlv_property {
@@ -303,6 +323,7 @@ type 
causeway_applib_UserMemento__languageLocale__gqlv_property {
   get: String
   hidden: Boolean
   set(languageLocale: String): causeway_applib_UserMemento
+  validate(languageLocale: String): String
 }
 
 type causeway_applib_UserMemento__multiTenancyToken__gqlv_property {
@@ -310,6 +331,7 @@ type 
causeway_applib_UserMemento__multiTenancyToken__gqlv_property {
   get: String
   hidden: Boolean
   set(multiTenancyToken: String): causeway_applib_UserMemento
+  validate(multiTenancyToken: String): String
 }
 
 type causeway_applib_UserMemento__name__gqlv_property {
@@ -317,6 +339,7 @@ type causeway_applib_UserMemento__name__gqlv_property {
   get: String!
   hidden: Boolean
   set(name: String!): causeway_applib_UserMemento
+  validate(name: String!): String
 }
 
 type causeway_applib_UserMemento__numberFormatLocale__gqlv_property {
@@ -324,6 +347,7 @@ type 
causeway_applib_UserMemento__numberFormatLocale__gqlv_property {
   get: String
   hidden: Boolean
   set(numberFormatLocale: String): causeway_applib_UserMemento
+  validate(numberFormatLocale: String): String
 }
 
 type causeway_applib_UserMemento__realName__gqlv_property {
@@ -331,6 +355,7 @@ type causeway_applib_UserMemento__realName__gqlv_property {
   get: String
   hidden: Boolean
   set(realName: String): causeway_applib_UserMemento
+  validate(realName: String): String
 }
 
 type causeway_applib_UserMemento__roles__gqlv_collection {
@@ -344,6 +369,7 @@ type 
causeway_applib_UserMemento__timeFormatLocale__gqlv_property {
   get: String
   hidden: Boolean
   set(timeFormatLocale: String): causeway_applib_UserMemento
+  validate(timeFormatLocale: String): String
 }
 
 type causeway_applib_UserMenu {
@@ -370,6 +396,7 @@ type causeway_applib_node_ActionNode__action__gqlv_property 
{
   get: String!
   hidden: Boolean
   set(action: String!): causeway_applib_node_ActionNode
+  validate(action: String!): String
 }
 
 type causeway_applib_node_ActionNode__childNodes__gqlv_collection {
@@ -387,6 +414,7 @@ type 
causeway_applib_node_ActionNode__mixedIn__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(mixedIn: Boolean!): causeway_applib_node_ActionNode
+  validate(mixedIn: Boolean!): String
 }
 
 type causeway_applib_node_ActionNode__parentNode__gqlv_property {
@@ -394,6 +422,7 @@ type 
causeway_applib_node_ActionNode__parentNode__gqlv_property {
   get: causeway_applib_TypeNode!
   hidden: Boolean
   set(parentNode: causeway_applib_TypeNode__gqlv_input!): 
causeway_applib_node_ActionNode
+  validate(parentNode: causeway_applib_TypeNode__gqlv_input!): String
 }
 
 type causeway_applib_node_ActionNode__streamChildNodes__gqlv_action {
@@ -421,6 +450,7 @@ type 
causeway_applib_node_CollectionNode__collection__gqlv_property {
   get: String!
   hidden: Boolean
   set(collection: String!): causeway_applib_node_CollectionNode
+  validate(collection: String!): String
 }
 
 type causeway_applib_node_CollectionNode__gqlv_meta {
@@ -433,6 +463,7 @@ type 
causeway_applib_node_CollectionNode__mixedIn__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(mixedIn: Boolean!): causeway_applib_node_CollectionNode
+  validate(mixedIn: Boolean!): String
 }
 
 type causeway_applib_node_CollectionNode__parentNode__gqlv_property {
@@ -440,6 +471,7 @@ type 
causeway_applib_node_CollectionNode__parentNode__gqlv_property {
   get: causeway_applib_TypeNode!
   hidden: Boolean
   set(parentNode: causeway_applib_TypeNode__gqlv_input!): 
causeway_applib_node_CollectionNode
+  validate(parentNode: causeway_applib_TypeNode__gqlv_input!): String
 }
 
 type causeway_applib_node_CollectionNode__streamChildNodes__gqlv_action {
@@ -465,6 +497,7 @@ type 
causeway_applib_node_FacetAttrNode__facetAttr__gqlv_property {
   get: String!
   hidden: Boolean
   set(facetAttr: String!): causeway_applib_node_FacetAttrNode
+  validate(facetAttr: String!): String
 }
 
 type causeway_applib_node_FacetAttrNode__gqlv_meta {
@@ -477,6 +510,7 @@ type 
causeway_applib_node_FacetAttrNode__parentNode__gqlv_property {
   get: causeway_applib_node_FacetNode!
   hidden: Boolean
   set(parentNode: causeway_applib_node_FacetNode__gqlv_input!): 
causeway_applib_node_FacetAttrNode
+  validate(parentNode: causeway_applib_node_FacetNode__gqlv_input!): String
 }
 
 type causeway_applib_node_FacetNode {
@@ -497,6 +531,7 @@ type causeway_applib_node_FacetNode__facet__gqlv_property {
   get: String!
   hidden: Boolean
   set(facet: String!): causeway_applib_node_FacetNode
+  validate(facet: String!): String
 }
 
 type causeway_applib_node_FacetNode__gqlv_meta {
@@ -508,6 +543,7 @@ type 
causeway_applib_node_FacetNode__parentNode__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): 
causeway_applib_node_FacetNode
+  validate(parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): String
 }
 
 type causeway_applib_node_FacetNode__shadowed__gqlv_property {
@@ -515,6 +551,7 @@ type 
causeway_applib_node_FacetNode__shadowed__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(shadowed: Boolean!): causeway_applib_node_FacetNode
+  validate(shadowed: Boolean!): String
 }
 
 type causeway_conf_ConfigurationMenu {
@@ -543,6 +580,7 @@ type 
causeway_conf_ConfigurationProperty__key__gqlv_property {
   get: String!
   hidden: Boolean
   set(key: String!): causeway_conf_ConfigurationProperty
+  validate(key: String!): String
 }
 
 type causeway_conf_ConfigurationProperty__value__gqlv_property {
@@ -550,6 +588,7 @@ type 
causeway_conf_ConfigurationProperty__value__gqlv_property {
   get: String!
   hidden: Boolean
   set(value: String!): causeway_conf_ConfigurationProperty
+  validate(value: String!): String
 }
 
 type causeway_conf_ConfigurationViewmodel {
@@ -600,6 +639,7 @@ type 
causeway_feat_ApplicationFeatureViewModel__memberName__gqlv_property {
   get: String!
   hidden: Boolean
   set(memberName: String!): causeway_feat_ApplicationFeatureViewModel
+  validate(memberName: String!): String
 }
 
 type causeway_feat_ApplicationFeatureViewModel__namespaceName__gqlv_property {
@@ -607,12 +647,14 @@ type 
causeway_feat_ApplicationFeatureViewModel__namespaceName__gqlv_property {
   get: String!
   hidden: Boolean
   set(namespaceName: String!): causeway_feat_ApplicationFeatureViewModel
+  validate(namespaceName: String!): String
 }
 
 type causeway_feat_ApplicationFeatureViewModel__parent__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
causeway_feat_ApplicationFeatureViewModel
+  validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
String
 }
 
 type causeway_feat_ApplicationFeatureViewModel__typeSimpleName__gqlv_property {
@@ -620,6 +662,7 @@ type 
causeway_feat_ApplicationFeatureViewModel__typeSimpleName__gqlv_property {
   get: String!
   hidden: Boolean
   set(typeSimpleName: String!): causeway_feat_ApplicationFeatureViewModel
+  validate(typeSimpleName: String!): String
 }
 
 type causeway_feat_ApplicationNamespace {
@@ -646,6 +689,7 @@ type 
causeway_feat_ApplicationNamespace__memberName__gqlv_property {
   get: String!
   hidden: Boolean
   set(memberName: String!): causeway_feat_ApplicationNamespace
+  validate(memberName: String!): String
 }
 
 type causeway_feat_ApplicationNamespace__namespaceName__gqlv_property {
@@ -653,12 +697,14 @@ type 
causeway_feat_ApplicationNamespace__namespaceName__gqlv_property {
   get: String!
   hidden: Boolean
   set(namespaceName: String!): causeway_feat_ApplicationNamespace
+  validate(namespaceName: String!): String
 }
 
 type causeway_feat_ApplicationNamespace__parent__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
causeway_feat_ApplicationNamespace
+  validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
String
 }
 
 type causeway_feat_ApplicationNamespace__typeSimpleName__gqlv_property {
@@ -666,6 +712,7 @@ type 
causeway_feat_ApplicationNamespace__typeSimpleName__gqlv_property {
   get: String!
   hidden: Boolean
   set(typeSimpleName: String!): causeway_feat_ApplicationNamespace
+  validate(typeSimpleName: String!): String
 }
 
 type causeway_feat_ApplicationType {
@@ -694,6 +741,7 @@ type 
causeway_feat_ApplicationTypeAction__actionSemantics__gqlv_property {
   get: String!
   hidden: Boolean
   set(actionSemantics: String!): causeway_feat_ApplicationTypeAction
+  validate(actionSemantics: String!): String
 }
 
 type causeway_feat_ApplicationTypeAction__gqlv_meta {
@@ -706,6 +754,7 @@ type 
causeway_feat_ApplicationTypeAction__memberName__gqlv_property {
   get: String!
   hidden: Boolean
   set(memberName: String!): causeway_feat_ApplicationTypeAction
+  validate(memberName: String!): String
 }
 
 type causeway_feat_ApplicationTypeAction__namespaceName__gqlv_property {
@@ -713,12 +762,14 @@ type 
causeway_feat_ApplicationTypeAction__namespaceName__gqlv_property {
   get: String!
   hidden: Boolean
   set(namespaceName: String!): causeway_feat_ApplicationTypeAction
+  validate(namespaceName: String!): String
 }
 
 type causeway_feat_ApplicationTypeAction__parent__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
causeway_feat_ApplicationTypeAction
+  validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
String
 }
 
 type causeway_feat_ApplicationTypeAction__returnType__gqlv_property {
@@ -726,6 +777,7 @@ type 
causeway_feat_ApplicationTypeAction__returnType__gqlv_property {
   get: String!
   hidden: Boolean
   set(returnType: String!): causeway_feat_ApplicationTypeAction
+  validate(returnType: String!): String
 }
 
 type causeway_feat_ApplicationTypeAction__typeSimpleName__gqlv_property {
@@ -733,6 +785,7 @@ type 
causeway_feat_ApplicationTypeAction__typeSimpleName__gqlv_property {
   get: String!
   hidden: Boolean
   set(typeSimpleName: String!): causeway_feat_ApplicationTypeAction
+  validate(typeSimpleName: String!): String
 }
 
 type causeway_feat_ApplicationTypeCollection {
@@ -750,6 +803,7 @@ type 
causeway_feat_ApplicationTypeCollection__derived__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(derived: Boolean!): causeway_feat_ApplicationTypeCollection
+  validate(derived: Boolean!): String
 }
 
 type causeway_feat_ApplicationTypeCollection__elementType__gqlv_property {
@@ -757,6 +811,7 @@ type 
causeway_feat_ApplicationTypeCollection__elementType__gqlv_property {
   get: String!
   hidden: Boolean
   set(elementType: String!): causeway_feat_ApplicationTypeCollection
+  validate(elementType: String!): String
 }
 
 type causeway_feat_ApplicationTypeCollection__gqlv_meta {
@@ -769,6 +824,7 @@ type 
causeway_feat_ApplicationTypeCollection__memberName__gqlv_property {
   get: String!
   hidden: Boolean
   set(memberName: String!): causeway_feat_ApplicationTypeCollection
+  validate(memberName: String!): String
 }
 
 type causeway_feat_ApplicationTypeCollection__namespaceName__gqlv_property {
@@ -776,12 +832,14 @@ type 
causeway_feat_ApplicationTypeCollection__namespaceName__gqlv_property {
   get: String!
   hidden: Boolean
   set(namespaceName: String!): causeway_feat_ApplicationTypeCollection
+  validate(namespaceName: String!): String
 }
 
 type causeway_feat_ApplicationTypeCollection__parent__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
causeway_feat_ApplicationTypeCollection
+  validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
String
 }
 
 type causeway_feat_ApplicationTypeCollection__typeSimpleName__gqlv_property {
@@ -789,6 +847,7 @@ type 
causeway_feat_ApplicationTypeCollection__typeSimpleName__gqlv_property {
   get: String!
   hidden: Boolean
   set(typeSimpleName: String!): causeway_feat_ApplicationTypeCollection
+  validate(typeSimpleName: String!): String
 }
 
 type causeway_feat_ApplicationTypeMember {
@@ -809,6 +868,7 @@ type 
causeway_feat_ApplicationTypeMember__memberName__gqlv_property {
   get: String!
   hidden: Boolean
   set(memberName: String!): causeway_feat_ApplicationTypeMember
+  validate(memberName: String!): String
 }
 
 type causeway_feat_ApplicationTypeMember__namespaceName__gqlv_property {
@@ -816,12 +876,14 @@ type 
causeway_feat_ApplicationTypeMember__namespaceName__gqlv_property {
   get: String!
   hidden: Boolean
   set(namespaceName: String!): causeway_feat_ApplicationTypeMember
+  validate(namespaceName: String!): String
 }
 
 type causeway_feat_ApplicationTypeMember__parent__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
causeway_feat_ApplicationTypeMember
+  validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
String
 }
 
 type causeway_feat_ApplicationTypeMember__typeSimpleName__gqlv_property {
@@ -829,6 +891,7 @@ type 
causeway_feat_ApplicationTypeMember__typeSimpleName__gqlv_property {
   get: String!
   hidden: Boolean
   set(typeSimpleName: String!): causeway_feat_ApplicationTypeMember
+  validate(typeSimpleName: String!): String
 }
 
 type causeway_feat_ApplicationTypeProperty {
@@ -848,6 +911,7 @@ type 
causeway_feat_ApplicationTypeProperty__derived__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(derived: Boolean!): causeway_feat_ApplicationTypeProperty
+  validate(derived: Boolean!): String
 }
 
 type causeway_feat_ApplicationTypeProperty__gqlv_meta {
@@ -860,6 +924,7 @@ type 
causeway_feat_ApplicationTypeProperty__maxLength__gqlv_property {
   get: Int
   hidden: Boolean
   set(maxLength: Int): causeway_feat_ApplicationTypeProperty
+  validate(maxLength: Int): String
 }
 
 type causeway_feat_ApplicationTypeProperty__memberName__gqlv_property {
@@ -867,6 +932,7 @@ type 
causeway_feat_ApplicationTypeProperty__memberName__gqlv_property {
   get: String!
   hidden: Boolean
   set(memberName: String!): causeway_feat_ApplicationTypeProperty
+  validate(memberName: String!): String
 }
 
 type causeway_feat_ApplicationTypeProperty__namespaceName__gqlv_property {
@@ -874,12 +940,14 @@ type 
causeway_feat_ApplicationTypeProperty__namespaceName__gqlv_property {
   get: String!
   hidden: Boolean
   set(namespaceName: String!): causeway_feat_ApplicationTypeProperty
+  validate(namespaceName: String!): String
 }
 
 type causeway_feat_ApplicationTypeProperty__parent__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
causeway_feat_ApplicationTypeProperty
+  validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
String
 }
 
 type causeway_feat_ApplicationTypeProperty__returnType__gqlv_property {
@@ -887,6 +955,7 @@ type 
causeway_feat_ApplicationTypeProperty__returnType__gqlv_property {
   get: String!
   hidden: Boolean
   set(returnType: String!): causeway_feat_ApplicationTypeProperty
+  validate(returnType: String!): String
 }
 
 type causeway_feat_ApplicationTypeProperty__typeSimpleName__gqlv_property {
@@ -894,6 +963,7 @@ type 
causeway_feat_ApplicationTypeProperty__typeSimpleName__gqlv_property {
   get: String!
   hidden: Boolean
   set(typeSimpleName: String!): causeway_feat_ApplicationTypeProperty
+  validate(typeSimpleName: String!): String
 }
 
 type causeway_feat_ApplicationTypeProperty__typicalLength__gqlv_property {
@@ -901,6 +971,7 @@ type 
causeway_feat_ApplicationTypeProperty__typicalLength__gqlv_property {
   get: Int
   hidden: Boolean
   set(typicalLength: Int): causeway_feat_ApplicationTypeProperty
+  validate(typicalLength: Int): String
 }
 
 type causeway_feat_ApplicationType__actions__gqlv_collection {
@@ -925,6 +996,7 @@ type 
causeway_feat_ApplicationType__memberName__gqlv_property {
   get: String!
   hidden: Boolean
   set(memberName: String!): causeway_feat_ApplicationType
+  validate(memberName: String!): String
 }
 
 type causeway_feat_ApplicationType__namespaceName__gqlv_property {
@@ -932,12 +1004,14 @@ type 
causeway_feat_ApplicationType__namespaceName__gqlv_property {
   get: String!
   hidden: Boolean
   set(namespaceName: String!): causeway_feat_ApplicationType
+  validate(namespaceName: String!): String
 }
 
 type causeway_feat_ApplicationType__parent__gqlv_property {
   disabled: String
   hidden: Boolean
   set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
causeway_feat_ApplicationType
+  validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): 
String
 }
 
 type causeway_feat_ApplicationType__properties__gqlv_collection {
@@ -951,6 +1025,7 @@ type 
causeway_feat_ApplicationType__typeSimpleName__gqlv_property {
   get: String!
   hidden: Boolean
   set(typeSimpleName: String!): causeway_feat_ApplicationType
+  validate(typeSimpleName: String!): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto {
@@ -971,6 +1046,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__actions__gqlv_property {
   get: String!
   hidden: Boolean
   set(actions: String!): causeway_schema_metamodel_v2_DomainClassDto
+  validate(actions: String!): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto__annotations__gqlv_property {
@@ -978,6 +1054,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__annotations__gqlv_property {
   get: String!
   hidden: Boolean
   set(annotations: String!): causeway_schema_metamodel_v2_DomainClassDto
+  validate(annotations: String!): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto__collections__gqlv_property {
@@ -985,6 +1062,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__collections__gqlv_property {
   get: String!
   hidden: Boolean
   set(collections: String!): causeway_schema_metamodel_v2_DomainClassDto
+  validate(collections: String!): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto__facets__gqlv_property {
@@ -992,6 +1070,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__facets__gqlv_property {
   get: String!
   hidden: Boolean
   set(facets: String!): causeway_schema_metamodel_v2_DomainClassDto
+  validate(facets: String!): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto__gqlv_meta {
@@ -1004,6 +1083,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__id__gqlv_property {
   get: String!
   hidden: Boolean
   set(id: String!): causeway_schema_metamodel_v2_DomainClassDto
+  validate(id: String!): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto__majorVersion__gqlv_property {
@@ -1011,6 +1091,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__majorVersion__gqlv_property {
   get: String
   hidden: Boolean
   set(majorVersion: String): causeway_schema_metamodel_v2_DomainClassDto
+  validate(majorVersion: String): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto__minorVersion__gqlv_property {
@@ -1018,6 +1099,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__minorVersion__gqlv_property {
   get: String
   hidden: Boolean
   set(minorVersion: String): causeway_schema_metamodel_v2_DomainClassDto
+  validate(minorVersion: String): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto__properties__gqlv_property {
@@ -1025,6 +1107,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__properties__gqlv_property {
   get: String!
   hidden: Boolean
   set(properties: String!): causeway_schema_metamodel_v2_DomainClassDto
+  validate(properties: String!): String
 }
 
 type causeway_schema_metamodel_v2_DomainClassDto__service__gqlv_property {
@@ -1032,6 +1115,7 @@ type 
causeway_schema_metamodel_v2_DomainClassDto__service__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(service: Boolean!): causeway_schema_metamodel_v2_DomainClassDto
+  validate(service: Boolean!): String
 }
 
 type causeway_security_LoginRedirect {
@@ -1066,6 +1150,7 @@ type 
causeway_testing_fixtures_FixtureResult__className__gqlv_property {
   get: String!
   hidden: Boolean
   set(className: String!): causeway_testing_fixtures_FixtureResult
+  validate(className: String!): String
 }
 
 type 
causeway_testing_fixtures_FixtureResult__fixtureScriptClassName__gqlv_property {
@@ -1073,6 +1158,7 @@ type 
causeway_testing_fixtures_FixtureResult__fixtureScriptClassName__gqlv_prope
   get: String
   hidden: Boolean
   set(fixtureScriptClassName: String): causeway_testing_fixtures_FixtureResult
+  validate(fixtureScriptClassName: String): String
 }
 
 type causeway_testing_fixtures_FixtureResult__gqlv_meta {
@@ -1085,12 +1171,14 @@ type 
causeway_testing_fixtures_FixtureResult__key__gqlv_property {
   get: String!
   hidden: Boolean
   set(key: String!): causeway_testing_fixtures_FixtureResult
+  validate(key: String!): String
 }
 
 type causeway_testing_fixtures_FixtureResult__object__gqlv_property {
   disabled: String
   hidden: Boolean
   set(object: String!): causeway_testing_fixtures_FixtureResult
+  validate(object: String!): String
 }
 
 type java_lang_Runnable {
@@ -1238,6 +1326,7 @@ type 
org_apache_causeway_commons_functional_Railway__failure__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(failure: Boolean!): org_apache_causeway_commons_functional_Railway
+  validate(failure: Boolean!): String
 }
 
 type org_apache_causeway_commons_functional_Railway__gqlv_meta {
@@ -1274,6 +1363,7 @@ type 
org_apache_causeway_commons_functional_Railway__success__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(success: Boolean!): org_apache_causeway_commons_functional_Railway
+  validate(success: Boolean!): String
 }
 
 type org_apache_causeway_commons_functional_ThrowingConsumer {
@@ -1411,6 +1501,7 @@ type 
org_apache_causeway_commons_functional_Try__failure__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(failure: Boolean!): org_apache_causeway_commons_functional_Try
+  validate(failure: Boolean!): String
 }
 
 type 
org_apache_causeway_commons_functional_Try__flatMapSuccessAsNullable__gqlv_action
 {
@@ -1519,6 +1610,7 @@ type 
org_apache_causeway_commons_functional_Try__success__gqlv_property {
   get: Boolean!
   hidden: Boolean
   set(success: Boolean!): org_apache_causeway_commons_functional_Try
+  validate(success: Boolean!): String
 }
 
 type org_apache_causeway_commons_functional_Try__thenCall__gqlv_action {
@@ -1543,6 +1635,7 @@ type 
org_apache_causeway_commons_functional_Try__value__gqlv_property {
   disabled: String
   hidden: Boolean
   set(value: String!): org_apache_causeway_commons_functional_Try
+  validate(value: String!): String
 }
 
 type org_apache_causeway_core_metamodel_inspect_model_MMNode {
@@ -1565,6 +1658,7 @@ type 
org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__gqlv_p
   disabled: String
   hidden: Boolean
   set(parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): 
org_apache_causeway_core_metamodel_inspect_model_MMNode
+  validate(parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): String
 }
 
 type org_apache_causeway_core_metamodel_inspect_model_MemberNode {
@@ -1590,6 +1684,7 @@ type 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__mixedIn__gqlv_
   get: Boolean!
   hidden: Boolean
   set(mixedIn: Boolean!): 
org_apache_causeway_core_metamodel_inspect_model_MemberNode
+  validate(mixedIn: Boolean!): String
 }
 
 type 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNode__gqlv_property
 {
@@ -1597,6 +1692,7 @@ type 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNode__gq
   get: causeway_applib_TypeNode!
   hidden: Boolean
   set(parentNode: causeway_applib_TypeNode__gqlv_input!): 
org_apache_causeway_core_metamodel_inspect_model_MemberNode
+  validate(parentNode: causeway_applib_TypeNode__gqlv_input!): String
 }
 
 type 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__streamChildNodes__gqlv_action
 {
@@ -1616,6 +1712,7 @@ type 
org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__f
   get: String!
   hidden: Boolean
   set(friendlyName: String!): 
org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript
+  validate(friendlyName: String!): String
 }
 
 type 
org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__gqlv_meta
 {
@@ -1628,6 +1725,7 @@ type 
org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__q
   get: String!
   hidden: Boolean
   set(qualifiedName: String!): 
org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript
+  validate(qualifiedName: String!): String
 }
 
 type university_admin_AdminMenu {
@@ -1659,6 +1757,7 @@ type university_dept_Department__deptHead__gqlv_property {
   get: university_dept_DeptHead
   hidden: Boolean
   set(deptHead: university_dept_DeptHead__gqlv_input): 
university_dept_Department
+  validate(deptHead: university_dept_DeptHead__gqlv_input): String
 }
 
 type university_dept_Department__gqlv_meta {
@@ -1672,6 +1771,7 @@ type university_dept_Department__name__gqlv_property {
   get: String!
   hidden: Boolean
   set(name: String!): university_dept_Department
+  validate(name: String!): String
 }
 
 type university_dept_Department__staffMembers__gqlv_collection {
@@ -1729,6 +1829,7 @@ type university_dept_DeptHead__department__gqlv_property {
   get: university_dept_Department
   hidden: Boolean
   set(department: university_dept_Department__gqlv_input): 
university_dept_DeptHead
+  validate(department: university_dept_Department__gqlv_input): String
 }
 
 type university_dept_DeptHead__gqlv_meta {
@@ -1742,6 +1843,7 @@ type university_dept_DeptHead__name__gqlv_property {
   get: String
   hidden: Boolean
   set(name: String): university_dept_DeptHead
+  validate(name: String): String
 }
 
 type university_dept_DeptHeads {
@@ -1778,6 +1880,7 @@ type 
university_dept_StaffMember__department__gqlv_property {
   get: university_dept_Department
   hidden: Boolean
   set(department: university_dept_Department__gqlv_input): 
university_dept_StaffMember
+  validate(department: university_dept_Department__gqlv_input): String
 }
 
 type university_dept_StaffMember__gqlv_meta {
@@ -1791,6 +1894,7 @@ type university_dept_StaffMember__name__gqlv_property {
   get: String!
   hidden: Boolean
   set(name: String!): university_dept_StaffMember
+  validate(name: String!): String
 }
 
 type university_dept_Staff__createStaffMember__gqlv_action {


Reply via email to