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 9aac5ab7507c975f83d230f2689c9ed619eafc91 Author: danhaywood <[email protected]> AuthorDate: Fri Jan 26 06:17:10 2024 +0000 CAUSEWAY-3676: extends test domain --- .../viewer/graphql/model/domain/GqlvAction.java | 31 +- .../model/domain/GqlvActionParamValidate.java | 96 +++++ .../graphql/viewer/test/domain/Department.java | 55 +++ .../graphql/viewer/test/domain/StaffMember.java | 2 +- .../viewer/test/domain/StaffMemberRepository.java | 7 + .../test/e2e/Schema_IntegTest.schema.approved.json | 444 +++++++++++++++++++++ ...chema_IntegTest.schema_types_name.approved.json | 18 + .../graphql/test/src/test/resources/schema.gql | 54 +++ 8 files changed, 699 insertions(+), 8 deletions(-) diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java index 49ea67bad9..f0d9d6c10b 100644 --- a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java @@ -35,6 +35,7 @@ import graphql.schema.*; import lombok.extern.log4j.Log4j2; import lombok.val; +import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -138,14 +139,30 @@ public class GqlvAction final TypeMapper.InputContext inputContext, final int upTo) { - Can<ObjectActionParameter> parameters = objectAction.getParameters(); + val parameters = objectAction.getParameters(); + val arguments = parameters.stream() + .limit(upTo) + .map(OneToOneActionParameter.class::cast) // TODO: remove - we previously filter to ignore any actions that have collection parameters + .map(oneToOneActionParameter -> gqlArgumentFor(oneToOneActionParameter, inputContext)) + .collect(Collectors.toList()); + if (!arguments.isEmpty()) { + builder.arguments(arguments); + } + } - if (parameters.isNotEmpty()) { - builder.arguments(parameters.stream() - .limit(upTo) - .map(OneToOneActionParameter.class::cast) // we previously filter to ignore any actions that have collection parameters - .map(oneToOneActionParameter -> gqlArgumentFor(oneToOneActionParameter, inputContext)) - .collect(Collectors.toList())); + static void addGqlArgument( + final ObjectAction objectAction, + final GraphQLFieldDefinition.Builder builder, + final TypeMapper.InputContext inputContext, + final int paramNum) { + + val parameters = objectAction.getParameters(); + val arguments = parameters.get(paramNum).stream() + .map(OneToOneActionParameter.class::cast) // TODO: remove - we previously filter to ignore any actions that have collection parameters + .map(oneToOneActionParameter -> gqlArgumentFor(oneToOneActionParameter, inputContext)) + .collect(Collectors.toList()); + if (!arguments.isEmpty()) { + builder.arguments(arguments); } } diff --git a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamValidate.java b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamValidate.java new file mode 100644 index 0000000000..f03f362ed5 --- /dev/null +++ b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamValidate.java @@ -0,0 +1,96 @@ +/* + * 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.consent.InteractionInitiatedBy; +import org.apache.causeway.core.metamodel.object.ManagedObject; +import org.apache.causeway.viewer.graphql.model.context.Context; +import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionParameterProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionProvider; +import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider; +import org.apache.causeway.viewer.graphql.model.types.TypeMapper; + +import lombok.val; +import lombok.extern.log4j.Log4j2; + +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.GraphQLFieldDefinition; + +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; + +import static org.apache.causeway.viewer.graphql.model.domain.GqlvAction.addGqlArgument; + + +@Log4j2 +public class GqlvActionParamValidate { + + private final Holder holder; + private final Context context; + + private final GraphQLFieldDefinition field; + + public GqlvActionParamValidate( + final Holder holder, + final Context context) { + this.holder = holder; + this.context = context; + + val fieldBuilder = newFieldDefinition() + .name("validate") + .type(TypeMapper.scalarTypeFor(String.class)); + addGqlArgument(holder.getObjectAction(), fieldBuilder, TypeMapper.InputContext.DISABLE, holder.getParamNum()+1); + this.field = holder.addField(fieldBuilder.build()); + } + + + public void addDataFetcher() { + context.codeRegistryBuilder.dataFetcher( + holder.coordinatesFor(field), + this::disabled + ); + } + + private String disabled(final DataFetchingEnvironment dataFetchingEnvironment) { + + val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment); + val objectSpecification = context.specificationLoader.loadSpecification(sourcePojo.getClass()); + if (objectSpecification == null) { + return "Disabled"; + } + + val objectAction = holder.getObjectAction(); + val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo); + val actionInteractionHead = objectAction.interactionHead(managedObject); + + val objectActionParameter = objectAction.getParameterById(holder.getObjectActionParameter().getId()); + val argumentManagedObjects = GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context.bookmarkService); + + val usable = objectActionParameter.isUsable(actionInteractionHead, argumentManagedObjects, InteractionInitiatedBy.USER); + return usable.isVetoed() ? usable.getReasonAsString().orElse("Disabled") : null; + } + + public interface Holder + extends GqlvHolder, + ObjectSpecificationProvider, + ObjectActionProvider, + ObjectActionParameterProvider { + GqlvActionParam.Holder getHolder(); + } +} diff --git a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/Department.java b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/Department.java index d2a0155e18..f5c90ec495 100644 --- a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/Department.java +++ b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/Department.java @@ -26,15 +26,20 @@ import javax.persistence.OneToMany; import javax.persistence.OneToOne; import javax.persistence.Table; +import org.apache.causeway.applib.annotation.Action; +import org.apache.causeway.applib.annotation.ActionLayout; import org.apache.causeway.applib.annotation.Bounding; import org.apache.causeway.applib.annotation.Collection; import org.apache.causeway.applib.annotation.DomainObject; import org.apache.causeway.applib.annotation.Nature; import org.apache.causeway.applib.annotation.Property; +import org.apache.causeway.applib.annotation.SemanticsOf; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.RequiredArgsConstructor; import lombok.Setter; +import lombok.val; import java.util.Comparator; import java.util.Set; @@ -61,6 +66,27 @@ public class Department implements Comparable<Department> { @Getter @Setter private String name; + @Action(semantics = SemanticsOf.IDEMPOTENT) + public class changeName { + + public Department act(final String newName){ + setName(newName); + return Department.this; + } + + public String default0Act(){ + return getName(); + } + + public String validate0Act(String name) { + if (name.contains("!")) { + return "Name cannot contain '!' character"; + } + return null; + } + } + + @Getter @Setter @Property @@ -74,6 +100,35 @@ public class Department implements Comparable<Department> { @OneToMany(mappedBy = "department") private Set<StaffMember> staffMembers = new TreeSet<>(); + @Action(semantics = SemanticsOf.IDEMPOTENT) + @ActionLayout(associateWith = "staffMembers") + public class addStaffMember { + + public Department act(StaffMember staffMember) { + val department = Department.this; + + department.getStaffMembers().add(staffMember); + staffMember.setDepartment(department); + return department; + } + } + + @Action(semantics = SemanticsOf.IDEMPOTENT) + @ActionLayout(associateWith = "staffMembers") + @RequiredArgsConstructor + public class removeStaffMember { + + public Department act(StaffMember staffMember) { + val department = Department.this; + + department.getStaffMembers().add(staffMember); + staffMember.setDepartment(department); + return department; + } + public Set<StaffMember> choices0Act() { + return Department.this.getStaffMembers(); + } + } @Override public int compareTo(final Department o) { 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 547ac32a68..5116b2bb71 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 @@ -38,7 +38,7 @@ import org.apache.causeway.applib.annotation.Property; ) @javax.inject.Named("university.dept.StaffMember") @NoArgsConstructor -@DomainObject(nature = Nature.ENTITY) +@DomainObject(nature = Nature.ENTITY, autoCompleteRepository = StaffMemberRepository.class, autoCompleteMethod = "findByNameMatching") public class StaffMember implements Comparable<StaffMember> { public StaffMember(String name, Department department) { diff --git a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/StaffMemberRepository.java b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/StaffMemberRepository.java index 1eff43776e..0778503795 100644 --- a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/StaffMemberRepository.java +++ b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/domain/StaffMemberRepository.java @@ -19,6 +19,7 @@ package org.apache.causeway.viewer.graphql.viewer.test.domain; import java.util.List; +import java.util.stream.Collectors; import javax.inject.Inject; @@ -53,4 +54,10 @@ public class StaffMemberRepository { orElse(null); } + public List<StaffMember> findByNameMatching(final String name){ + return findAll().stream(). + filter(dept -> dept.getName().contains(name)). + collect(Collectors.toList()); + } + } 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 99079739df..5bb809b804 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 @@ -21485,6 +21485,313 @@ }, "isDeprecated" : false, "deprecationReason" : null + }, { + "name" : "changeName", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__changeName__gqlv_action", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "addStaffMember", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__addStaffMember__gqlv_action", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "removeStaffMember", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__removeStaffMember__gqlv_action", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__addStaffMember__gqlv_action", + "description" : null, + "fields" : [ { + "name" : "hidden", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "Boolean", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "disabled", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "validate", + "description" : null, + "args" : [ { + "name" : "staffMember", + "description" : null, + "type" : { + "kind" : "INPUT_OBJECT", + "name" : "university_dept_StaffMember__gqlv_input", + "ofType" : null + }, + "defaultValue" : null + } ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "invokeIdempotent", + "description" : null, + "args" : [ { + "name" : "staffMember", + "description" : null, + "type" : { + "kind" : "NON_NULL", + "name" : null, + "ofType" : { + "kind" : "INPUT_OBJECT", + "name" : "university_dept_StaffMember__gqlv_input", + "ofType" : null + } + }, + "defaultValue" : null + } ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "params", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__addStaffMember__gqlv_action_params", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__addStaffMember__gqlv_action_params", + "description" : null, + "fields" : [ { + "name" : "staffMember", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter", + "description" : null, + "fields" : [ { + "name" : "hidden", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "Boolean", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "disabled", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__changeName__gqlv_action", + "description" : null, + "fields" : [ { + "name" : "hidden", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "Boolean", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "disabled", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "validate", + "description" : null, + "args" : [ { + "name" : "newName", + "description" : null, + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "defaultValue" : null + } ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "invokeIdempotent", + "description" : null, + "args" : [ { + "name" : "newName", + "description" : null, + "type" : { + "kind" : "NON_NULL", + "name" : null, + "ofType" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + } + }, + "defaultValue" : null + } ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "params", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__changeName__gqlv_action_params", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__changeName__gqlv_action_params", + "description" : null, + "fields" : [ { + "name" : "newName", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__changeName__newName__gqlv_action_parameter", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__changeName__newName__gqlv_action_parameter", + "description" : null, + "fields" : [ { + "name" : "hidden", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "Boolean", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "disabled", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null } ], "inputFields" : null, "interfaces" : [ ], @@ -21734,6 +22041,143 @@ "interfaces" : [ ], "enumValues" : null, "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__removeStaffMember__gqlv_action", + "description" : null, + "fields" : [ { + "name" : "hidden", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "Boolean", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "disabled", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "validate", + "description" : null, + "args" : [ { + "name" : "staffMember", + "description" : null, + "type" : { + "kind" : "INPUT_OBJECT", + "name" : "university_dept_StaffMember__gqlv_input", + "ofType" : null + }, + "defaultValue" : null + } ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "invokeIdempotent", + "description" : null, + "args" : [ { + "name" : "staffMember", + "description" : null, + "type" : { + "kind" : "NON_NULL", + "name" : null, + "ofType" : { + "kind" : "INPUT_OBJECT", + "name" : "university_dept_StaffMember__gqlv_input", + "ofType" : null + } + }, + "defaultValue" : null + } ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "params", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__removeStaffMember__gqlv_action_params", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__removeStaffMember__gqlv_action_params", + "description" : null, + "fields" : [ { + "name" : "staffMember", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "OBJECT", + "name" : "university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null + }, { + "kind" : "OBJECT", + "name" : "university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter", + "description" : null, + "fields" : [ { + "name" : "hidden", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "Boolean", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + }, { + "name" : "disabled", + "description" : null, + "args" : [ ], + "type" : { + "kind" : "SCALAR", + "name" : "String", + "ofType" : null + }, + "isDeprecated" : false, + "deprecationReason" : null + } ], + "inputFields" : null, + "interfaces" : [ ], + "enumValues" : null, + "possibleTypes" : null }, { "kind" : "OBJECT", "name" : "university_dept_Department__staffMembers__gqlv_collection", diff --git a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema_types_name.approved.json b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema_types_name.approved.json index 7b5fb5e9ef..cce375c1dc 100644 --- a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema_types_name.approved.json +++ b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema_types_name.approved.json @@ -761,6 +761,18 @@ "name" : "university_admin_AdminMenu__otherAdminAction__gqlv_action" }, { "name" : "university_dept_Department" + }, { + "name" : "university_dept_Department__addStaffMember__gqlv_action" + }, { + "name" : "university_dept_Department__addStaffMember__gqlv_action_params" + }, { + "name" : "university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter" + }, { + "name" : "university_dept_Department__changeName__gqlv_action" + }, { + "name" : "university_dept_Department__changeName__gqlv_action_params" + }, { + "name" : "university_dept_Department__changeName__newName__gqlv_action_parameter" }, { "name" : "university_dept_Department__deptHead__gqlv_property" }, { @@ -769,6 +781,12 @@ "name" : "university_dept_Department__gqlv_meta" }, { "name" : "university_dept_Department__name__gqlv_property" + }, { + "name" : "university_dept_Department__removeStaffMember__gqlv_action" + }, { + "name" : "university_dept_Department__removeStaffMember__gqlv_action_params" + }, { + "name" : "university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter" }, { "name" : "university_dept_Department__staffMembers__gqlv_collection" }, { diff --git a/incubator/viewers/graphql/test/src/test/resources/schema.gql b/incubator/viewers/graphql/test/src/test/resources/schema.gql index aa953469fe..546e870d59 100644 --- a/incubator/viewers/graphql/test/src/test/resources/schema.gql +++ b/incubator/viewers/graphql/test/src/test/resources/schema.gql @@ -2185,11 +2185,48 @@ type university_admin_AdminMenu__otherAdminAction__gqlv_action { type university_dept_Department { _gql_meta: university_dept_Department__gqlv_meta + addStaffMember: university_dept_Department__addStaffMember__gqlv_action + changeName: university_dept_Department__changeName__gqlv_action deptHead: university_dept_Department__deptHead__gqlv_property name: university_dept_Department__name__gqlv_property + removeStaffMember: university_dept_Department__removeStaffMember__gqlv_action staffMembers: university_dept_Department__staffMembers__gqlv_collection } +type university_dept_Department__addStaffMember__gqlv_action { + disabled: String + hidden: Boolean + invokeIdempotent(staffMember: university_dept_StaffMember__gqlv_input!): university_dept_Department + params: university_dept_Department__addStaffMember__gqlv_action_params + validate(staffMember: university_dept_StaffMember__gqlv_input): String +} + +type university_dept_Department__addStaffMember__gqlv_action_params { + staffMember: university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter +} + +type university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter { + disabled: String + hidden: Boolean +} + +type university_dept_Department__changeName__gqlv_action { + disabled: String + hidden: Boolean + invokeIdempotent(newName: String!): university_dept_Department + params: university_dept_Department__changeName__gqlv_action_params + validate(newName: String): String +} + +type university_dept_Department__changeName__gqlv_action_params { + newName: university_dept_Department__changeName__newName__gqlv_action_parameter +} + +type university_dept_Department__changeName__newName__gqlv_action_parameter { + disabled: String + hidden: Boolean +} + type university_dept_Department__deptHead__gqlv_property { disabled: String get: university_dept_DeptHead @@ -2212,6 +2249,23 @@ type university_dept_Department__name__gqlv_property { validate(name: String): String } +type university_dept_Department__removeStaffMember__gqlv_action { + disabled: String + hidden: Boolean + invokeIdempotent(staffMember: university_dept_StaffMember__gqlv_input!): university_dept_Department + params: university_dept_Department__removeStaffMember__gqlv_action_params + validate(staffMember: university_dept_StaffMember__gqlv_input): String +} + +type university_dept_Department__removeStaffMember__gqlv_action_params { + staffMember: university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter +} + +type university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter { + disabled: String + hidden: Boolean +} + type university_dept_Department__staffMembers__gqlv_collection { disabled: String get: [university_dept_StaffMember]
