CAUSEWAY-3676: adds invoke.args
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Environment.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Environment.java
index 4f9f09d..485fb2d 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Environment.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/Environment.java
@@ -11,6 +11,10 @@
Map<String, Object> getArguments();
+ default <T> T getArgument(String name) {
+ return (T)getArguments().get(name);
+ }
+
GraphQLContext getGraphQlContext();
@RequiredArgsConstructor
@@ -28,4 +32,20 @@
return dataFetchingEnvironment.getGraphQlContext();
}
}
+
+ @RequiredArgsConstructor
+ class ForTunnelled implements Environment {
+
+ private final DataFetchingEnvironment dataFetchingEnvironment;
+
+ @Override
+ public Map<String, Object> getArguments() {
+ return dataFetchingEnvironment.getGraphQlContext().get("arguments");
+ }
+
+ @Override
+ public GraphQLContext getGraphQlContext() {
+ return dataFetchingEnvironment.getGraphQlContext();
+ }
+ }
}
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java
index 7c2144a..beeb26b 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java
@@ -40,10 +40,12 @@
@Log4j2
public class GqlvActionInvoke
extends GqlvAbstractCustom
- implements GqlvActionInvokeResult.Holder {
+ implements GqlvActionInvokeResult.Holder,
+ GqlvActionInvokeArgs.Holder {
private final Holder holder;
private final GqlvActionInvokeResult result;
+ private final GqlvActionInvokeArgs args;
public GqlvActionInvoke(
final Holder holder,
@@ -54,10 +56,12 @@
if(isBuilt()) {
this.result = null;
+ this.args = null;
return;
}
- addChildFieldFor(this.result = new GqlvActionInvokeResult(holder, context));
+ addChildFieldFor(this.result = new GqlvActionInvokeResult(this, context));
+ addChildFieldFor(this.args = new GqlvActionInvokeArgs(this, context));
val gqlObjectType = buildObjectType();
val objectAction = holder.getObjectAction();
@@ -97,6 +101,7 @@
@Override
protected void addDataFetchersForChildren() {
result.addDataFetcher(this);
+ args.addDataFetcher(this);
}
@Override
@@ -110,10 +115,10 @@
@Override
public Can<ManagedObject> argumentManagedObjectsFor(
- final Environment dataFetchingEnvironment,
+ final Environment environment,
final ObjectAction objectAction,
final BookmarkService bookmarkService) {
- return holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, bookmarkService);
+ return holder.argumentManagedObjectsFor(environment, objectAction, bookmarkService);
}
@Override
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeArgs.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeArgs.java
new file mode 100644
index 0000000..9144d41
--- /dev/null
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeArgs.java
@@ -0,0 +1,113 @@
+/*
+ * 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 graphql.schema.DataFetchingEnvironment;
+
+import lombok.Getter;
+import lombok.extern.log4j.Log4j2;
+import lombok.val;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
+import org.apache.causeway.commons.collections.Can;
+import org.apache.causeway.core.metamodel.object.ManagedObject;
+import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
+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.ObjectActionProvider;
+import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider;
+
+@Log4j2
+public class GqlvActionInvokeArgs
+ extends GqlvAbstractCustom
+ implements GqlvActionInvokeArgsArg.Holder {
+
+ @Getter private final Holder holder;
+
+ private final List<GqlvActionInvokeArgsArg> args = new ArrayList<>();
+
+ public GqlvActionInvokeArgs(
+ final Holder holder,
+ final Context context) {
+ super(TypeNames.actionArgsTypeNameFor(holder.getObjectSpecification(), holder.getObjectAction()), context);
+ this.holder = holder;
+
+ if (isBuilt()) {
+ // nothing else to be done
+ return;
+ }
+
+ val idx = new AtomicInteger(0);
+ holder.getObjectAction().getParameters().forEach(objectActionParameter -> {
+ args.add(addChildFieldFor(new GqlvActionInvokeArgsArg(this, objectActionParameter, this.context, idx.getAndIncrement())));
+ });
+
+ if (args.isEmpty()) {
+ return;
+ }
+
+ buildObjectTypeAndField("args");
+ }
+
+ @Override
+ public ObjectSpecification getObjectSpecification() {
+ return holder.getObjectSpecification();
+ }
+
+ @Override
+ public ObjectAction getObjectMember() {
+ return getObjectAction();
+ }
+
+ @Override
+ public ObjectAction getObjectAction() {
+ return holder.getObjectAction();
+ }
+
+ @Override
+ protected void addDataFetchersForChildren() {
+ args.forEach(param -> param.addDataFetcher(this));
+ }
+
+ @Override
+ protected Object fetchData(DataFetchingEnvironment dataFetchingEnvironment) {
+ return BookmarkedPojo.sourceFrom(dataFetchingEnvironment, context);
+ }
+
+ @Override
+ public Can<ManagedObject> argumentManagedObjectsFor(Environment dataFetchingEnvironment, ObjectAction objectAction, BookmarkService bookmarkService) {
+ return holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, bookmarkService);
+ }
+
+ public interface Holder
+ extends ObjectSpecificationProvider,
+ ObjectActionProvider {
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ Environment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
+
+ }
+}
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeArgsArg.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeArgsArg.java
new file mode 100644
index 0000000..f46436a
--- /dev/null
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeArgsArg.java
@@ -0,0 +1,100 @@
+/*
+ * 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 graphql.schema.DataFetchingEnvironment;
+
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
+import org.apache.causeway.commons.collections.Can;
+import org.apache.causeway.core.metamodel.object.ManagedObject;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
+import org.apache.causeway.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.causeway.viewer.graphql.model.context.Context;
+import org.apache.causeway.viewer.graphql.model.domain.GqlvAbstract;
+import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo;
+import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionProvider;
+import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider;
+
+import graphql.schema.GraphQLList;
+
+import lombok.Getter;
+import lombok.extern.log4j.Log4j2;
+import lombok.val;
+
+import java.util.Map;
+
+import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
+
+import static org.apache.causeway.viewer.graphql.model.domain.GqlvAction.asPojo;
+
+@Log4j2
+public class GqlvActionInvokeArgsArg
+ extends GqlvAbstract {
+
+ @Getter private final Holder holder;
+ @Getter private final ObjectActionParameter objectActionParameter;
+ @Getter private final int paramNum;
+
+ public GqlvActionInvokeArgsArg(
+ final Holder holder,
+ final ObjectActionParameter objectActionParameter,
+ final Context context,
+ final int paramNum) {
+ super(context);
+
+ this.holder = holder;
+ this.objectActionParameter = objectActionParameter;
+ this.paramNum = paramNum;
+
+ val elementType = objectActionParameter.getElementType();;
+
+ val gqlObjectTypeForElementType = context.typeMapper.outputTypeFor(elementType);
+ if (gqlObjectTypeForElementType != null) {
+ val gqlOutputType = objectActionParameter.isPlural()
+ ? GraphQLList.list(gqlObjectTypeForElementType)
+ : gqlObjectTypeForElementType;
+
+ val fieldBuilder = newFieldDefinition()
+ .name(objectActionParameter.getId())
+ .type(gqlOutputType);
+ setField(fieldBuilder.build());
+ } else {
+ setField(null);
+ }
+ }
+
+
+ @Override
+ protected Object fetchData(DataFetchingEnvironment dataFetchingEnvironment) {
+ val environment = new Environment.ForTunnelled(dataFetchingEnvironment);
+ val managedObjects = holder.argumentManagedObjectsFor(environment, holder.getObjectAction(), context.bookmarkService);
+ return managedObjects.get(paramNum).map(ManagedObject::getPojo).orElse(null);
+ }
+
+ public interface Holder
+ extends ObjectSpecificationProvider,
+ ObjectActionProvider {
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ Environment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
+
+ }
+}
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeResult.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeResult.java
index fdce5d3..1b279c2 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeResult.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeResult.java
@@ -18,7 +18,6 @@
*/
package org.apache.causeway.viewer.graphql.model.domain;
-import graphql.GraphQLContext;
import graphql.schema.DataFetchingEnvironment;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLList;
@@ -48,15 +47,13 @@
import lombok.val;
import lombok.extern.log4j.Log4j2;
-import java.util.Map;
-
@Log4j2
public class GqlvActionInvokeResult extends GqlvAbstract {
- private final GqlvActionInvoke.Holder holder;
+ private final GqlvActionInvokeResult.Holder holder;
public GqlvActionInvokeResult(
- final GqlvActionInvoke.Holder holder,
+ final GqlvActionInvokeResult.Holder holder,
final Context context) {
super(context);
@@ -110,18 +107,8 @@
protected Object fetchData(final DataFetchingEnvironment dataFetchingEnvironment) {
val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
- val environment = new Environment() {
- @Override
- public Map<String, Object> getArguments() {
- return dataFetchingEnvironment.getGraphQlContext().get("arguments");
- }
-
- @Override
- public GraphQLContext getGraphQlContext() {
- return dataFetchingEnvironment.getGraphQlContext();
- }
- };
+ val environment = new Environment.ForTunnelled(dataFetchingEnvironment);
val objectSpecification = context.specificationLoader.loadSpecification(sourcePojo.getClass());
if (objectSpecification == null) {
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
index 028cb60..a13a04c 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
@@ -19,9 +19,7 @@
package org.apache.causeway.viewer.graphql.model.domain;
import java.util.ArrayList;
-import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import graphql.schema.DataFetchingEnvironment;
@@ -64,14 +62,14 @@
val idx = new AtomicInteger(0);
holder.getObjectAction().getParameters().forEach(objectActionParameter -> {
- val gqlvActionParam = new GqlvActionParamsParam(this, objectActionParameter, this.context, idx.getAndIncrement());
- addChildFieldFor(gqlvActionParam);
- params.add(gqlvActionParam);
+ params.add(addChildFieldFor(new GqlvActionParamsParam(this, objectActionParameter, this.context, idx.getAndIncrement())));
});
- if (hasParams()) {
- buildObjectTypeAndField("params");
+ if (params.isEmpty()) {
+ return;
}
+
+ buildObjectTypeAndField("params");
}
@Override
@@ -89,16 +87,11 @@
return holder.getObjectAction();
}
- public boolean hasParams() {
- return !params.isEmpty();
- }
-
@Override
protected void addDataFetchersForChildren() {
params.forEach(param -> param.addDataFetcher(this));
}
-
@Override
protected Object fetchData(DataFetchingEnvironment dataFetchingEnvironment) {
return BookmarkedPojo.sourceFrom(dataFetchingEnvironment, context);
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
index 85fa14f..9ccb814 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainService.java
@@ -18,15 +18,14 @@
*/
package org.apache.causeway.viewer.graphql.model.domain;
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.util.ArrayList;
+import java.util.List;
import graphql.schema.DataFetchingEnvironment;
import org.apache.causeway.core.config.CausewayConfiguration;
import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
-import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
import org.apache.causeway.viewer.graphql.model.context.Context;
import lombok.Getter;
@@ -42,7 +41,7 @@
@Getter private final ObjectSpecification objectSpecification;
@Getter private final Object servicePojo;
- private final Map<String, GqlvAction> actions = new LinkedHashMap<>();
+ private final List<GqlvAction> actions = new ArrayList<>();
public static GqlvDomainService of(
final ObjectSpecification objectSpecification,
@@ -81,20 +80,14 @@
.filter(objectAction -> objectAction.getSemantics().isSafeInNature() ||
apiVariant != CausewayConfiguration.Viewer.Graphql.ApiVariant.QUERY_ONLY // the other variants have an entry for all actions.
)
- .forEach(this::addAction);
- }
-
- private void addAction(final ObjectAction objectAction) {
- val gqlvAction = new GqlvAction(this, objectAction, context);
- addChildFieldFor(gqlvAction);
- actions.put(objectAction.getId(), gqlvAction);
+ .forEach(act -> actions.add(addChildFieldFor(new GqlvAction(this, act, context))));
}
@Override
protected void addDataFetchersForChildren() {
if (hasActions()) {
- actions.forEach((id, gqlva) -> gqlva.addDataFetcher(this));
+ actions.forEach(act -> act.addDataFetcher(this));
}
}
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java
index 93f605f..3b97b2a 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/TypeNames.java
@@ -59,6 +59,10 @@
return objectTypeNameFor(owningType) + "__" + objectAction.getId() + "__gqlv_action_params";
}
+ public static String actionArgsTypeNameFor(ObjectSpecification owningType, ObjectAction objectAction) {
+ return objectTypeNameFor(owningType) + "__" + objectAction.getId() + "__gqlv_action_args";
+ }
+
public static String actionParamTypeNameFor(ObjectSpecification owningType, ObjectActionParameter objectActionParameter) {
return objectTypeNameFor(owningType) + "__" + objectActionParameter.getAction().getId() + "__" + objectActionParameter.getId() + "__gqlv_action_parameter";
}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals._.gql
index 1567448..5bb92ef 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals._.gql
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals._.gql
@@ -2,6 +2,10 @@
university_calc_Calculator {
addBigDecimals {
invoke(x: "1.1", y: "2.2") {
+ args {
+ x
+ y
+ }
results
}
}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
index 46fdaad..2dbb5ad 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.add_big_decimals.approved.json
@@ -3,6 +3,10 @@
"university_calc_Calculator" : {
"addBigDecimals" : {
"invoke" : {
+ "args" : {
+ "x" : "1.1",
+ "y" : "2.2"
+ },
"results" : "3.3"
}
}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat._.gql
index 7850f7b..72d04e7 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat._.gql
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat._.gql
@@ -5,6 +5,10 @@
university_calc_Calculator {
concat {
invoke(prefix: "Fizz", suffix: "Buzz") {
+ args {
+ prefix
+ suffix
+ }
results
}
}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat.approved.json
index d1dacdf..ef631f4 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat.approved.json
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.each.scenario_concat.approved.json
@@ -6,6 +6,10 @@
"university_calc_Calculator" : {
"concat" : {
"invoke" : {
+ "args" : {
+ "prefix" : "Fizz",
+ "suffix" : "Buzz"
+ },
"results" : "FizzBuzz"
}
}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members._.gql
index 963d325..3a677d0b 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members._.gql
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members._.gql
@@ -1,9 +1,13 @@
{
Scenario(name: "can add staff members") {
+ Name
Given {
university_dept_Departments {
findDepartmentByName {
invoke(name: "Classics") {
+ args {
+ name
+ }
results {
staffMembers {
get {
@@ -60,6 +64,9 @@
university_dept_Departments {
findDepartmentByName {
invoke(name: "Classics") {
+ args {
+ name
+ }
results {
staffMembers {
get {
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members.approved.json
index 069b006..d9064a0 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members.approved.json
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.find_department_and_add_staff_members.approved.json
@@ -1,10 +1,14 @@
{
"data" : {
"Scenario" : {
+ "Name" : "can add staff members",
"Given" : {
"university_dept_Departments" : {
"findDepartmentByName" : {
"invoke" : {
+ "args" : {
+ "name" : "Classics"
+ },
"results" : {
"staffMembers" : {
"get" : [ {
@@ -91,6 +95,9 @@
"university_dept_Departments" : {
"findDepartmentByName" : {
"invoke" : {
+ "args" : {
+ "name" : "Classics"
+ },
"results" : {
"staffMembers" : {
"get" : [ {
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name._.gql
index 0f15d48..1f959fa 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name._.gql
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name._.gql
@@ -1,11 +1,13 @@
{
Scenario(name: "Find department and change its name"){
Name
-
Given {
university_dept_Departments {
findDepartmentByName {
invoke(name: "Classics") {
+ args {
+ name
+ }
results {
_meta {
saveAs(ref: "classics_dept")
@@ -20,6 +22,9 @@
university_dept_Department(object: {ref: "classics_dept"}) {
changeName {
invokeIdempotent(newName: "Ancient History") {
+ args {
+ newName
+ }
results {
name {
get
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name.approved.json
index e4d41ec..7e7ce09 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name.approved.json
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.each.scenario_find_department_and_change_name.approved.json
@@ -6,6 +6,9 @@
"university_dept_Departments" : {
"findDepartmentByName" : {
"invoke" : {
+ "args" : {
+ "name" : "Classics"
+ },
"results" : {
"_meta" : {
"saveAs" : "classics_dept"
@@ -19,6 +22,9 @@
"university_dept_Department" : {
"changeName" : {
"invokeIdempotent" : {
+ "args" : {
+ "newName" : "Ancient History"
+ },
"results" : {
"name" : {
"get" : "Ancient History"
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department._.gql
index 82cc9b9..df05734 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department._.gql
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department._.gql
@@ -5,6 +5,9 @@
university_dept_Departments {
findDepartmentByName {
invoke(name: "Classics") {
+ args {
+ name
+ }
results {
_meta {
saveAs(ref: "classics")
@@ -18,6 +21,14 @@
university_dept_Staff {
createStaffMember {
invokeNonIdempotent(name: "Dr. Georgina McGovern", department: { ref: "classics"}) {
+ args {
+ name
+ department {
+ name {
+ get
+ }
+ }
+ }
results {
name {
get
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department.approved.json
index 7eb3216..3d8eac4 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department.approved.json
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.each.create_staff_member_with_department.approved.json
@@ -6,6 +6,9 @@
"university_dept_Departments" : {
"findDepartmentByName" : {
"invoke" : {
+ "args" : {
+ "name" : "Classics"
+ },
"results" : {
"_meta" : {
"saveAs" : "classics"
@@ -19,6 +22,14 @@
"university_dept_Staff" : {
"createStaffMember" : {
"invokeNonIdempotent" : {
+ "args" : {
+ "name" : "Dr. Georgina McGovern",
+ "department" : {
+ "name" : {
+ "get" : "Classics"
+ }
+ }
+ },
"results" : {
"name" : {
"get" : "Dr. Georgina McGovern"
diff --git a/viewers/graphql/test/src/test/resources/schema.gql b/viewers/graphql/test/src/test/resources/schema.gql
index 571a083..02187b4 100644
--- a/viewers/graphql/test/src/test/resources/schema.gql
+++ b/viewers/graphql/test/src/test/resources/schema.gql
@@ -1808,7 +1808,14 @@
validate(firstParam: String, secondParam: String, thirdParameter: String): String
}
+type university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_args {
+ firstParam: String
+ secondParam: String
+ thirdParameter: String
+}
+
type university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_invoke {
+ args: university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_args
results: String
}
@@ -1847,7 +1854,13 @@
validate(firstParam: String, secondParam: String): String
}
+type university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_args {
+ firstParam: String
+ secondParam: String
+}
+
type university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_invoke {
+ args: university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_args
results: String
}
@@ -1924,7 +1937,13 @@
validate(x: String, y: String): String
}
+type university_calc_Calculator__addBigDecimals__gqlv_action_args {
+ x: String
+ y: String
+}
+
type university_calc_Calculator__addBigDecimals__gqlv_action_invoke {
+ args: university_calc_Calculator__addBigDecimals__gqlv_action_args
results: String
}
@@ -1955,7 +1974,13 @@
validate(x: String, y: String): String
}
+type university_calc_Calculator__addBigIntegers__gqlv_action_args {
+ x: String
+ y: String
+}
+
type university_calc_Calculator__addBigIntegers__gqlv_action_invoke {
+ args: university_calc_Calculator__addBigIntegers__gqlv_action_args
results: String
}
@@ -1986,7 +2011,13 @@
validate(x: Byte, y: Byte): String
}
+type university_calc_Calculator__addByteWrappers__gqlv_action_args {
+ x: Byte
+ y: Byte
+}
+
type university_calc_Calculator__addByteWrappers__gqlv_action_invoke {
+ args: university_calc_Calculator__addByteWrappers__gqlv_action_args
results: Int
}
@@ -2017,7 +2048,13 @@
validate(x: Byte, y: Byte): String
}
+type university_calc_Calculator__addBytes__gqlv_action_args {
+ x: Byte
+ y: Byte
+}
+
type university_calc_Calculator__addBytes__gqlv_action_invoke {
+ args: university_calc_Calculator__addBytes__gqlv_action_args
results: Byte
}
@@ -2048,7 +2085,13 @@
validate(x: Float, y: Float): String
}
+type university_calc_Calculator__addDoubleWrappers__gqlv_action_args {
+ x: Float
+ y: Float
+}
+
type university_calc_Calculator__addDoubleWrappers__gqlv_action_invoke {
+ args: university_calc_Calculator__addDoubleWrappers__gqlv_action_args
results: Float
}
@@ -2079,7 +2122,13 @@
validate(x: Float, y: Float): String
}
+type university_calc_Calculator__addDoubles__gqlv_action_args {
+ x: Float
+ y: Float
+}
+
type university_calc_Calculator__addDoubles__gqlv_action_invoke {
+ args: university_calc_Calculator__addDoubles__gqlv_action_args
results: Float
}
@@ -2110,7 +2159,13 @@
validate(x: Float, y: Float): String
}
+type university_calc_Calculator__addFloatWrappers__gqlv_action_args {
+ x: Float
+ y: Float
+}
+
type university_calc_Calculator__addFloatWrappers__gqlv_action_invoke {
+ args: university_calc_Calculator__addFloatWrappers__gqlv_action_args
results: Float
}
@@ -2141,7 +2196,13 @@
validate(x: Float, y: Float): String
}
+type university_calc_Calculator__addFloats__gqlv_action_args {
+ x: Float
+ y: Float
+}
+
type university_calc_Calculator__addFloats__gqlv_action_invoke {
+ args: university_calc_Calculator__addFloats__gqlv_action_args
results: Float
}
@@ -2172,7 +2233,13 @@
validate(x: Int, y: Int): String
}
+type university_calc_Calculator__addIntegerWrappers__gqlv_action_args {
+ x: Int
+ y: Int
+}
+
type university_calc_Calculator__addIntegerWrappers__gqlv_action_invoke {
+ args: university_calc_Calculator__addIntegerWrappers__gqlv_action_args
results: Int
}
@@ -2203,7 +2270,13 @@
validate(x: Int, y: Int): String
}
+type university_calc_Calculator__addIntegers__gqlv_action_args {
+ x: Int
+ y: Int
+}
+
type university_calc_Calculator__addIntegers__gqlv_action_invoke {
+ args: university_calc_Calculator__addIntegers__gqlv_action_args
results: Int
}
@@ -2234,7 +2307,13 @@
validate(x: Short, y: Short): String
}
+type university_calc_Calculator__addShortWrappers__gqlv_action_args {
+ x: Short
+ y: Short
+}
+
type university_calc_Calculator__addShortWrappers__gqlv_action_invoke {
+ args: university_calc_Calculator__addShortWrappers__gqlv_action_args
results: Short
}
@@ -2265,7 +2344,13 @@
validate(x: Short, y: Short): String
}
+type university_calc_Calculator__addShorts__gqlv_action_args {
+ x: Short
+ y: Short
+}
+
type university_calc_Calculator__addShorts__gqlv_action_invoke {
+ args: university_calc_Calculator__addShorts__gqlv_action_args
results: Short
}
@@ -2296,7 +2381,13 @@
validate(x: Boolean, y: Boolean): String
}
+type university_calc_Calculator__and__gqlv_action_args {
+ x: Boolean
+ y: Boolean
+}
+
type university_calc_Calculator__and__gqlv_action_invoke {
+ args: university_calc_Calculator__and__gqlv_action_args
results: Boolean
}
@@ -2327,7 +2418,13 @@
validate(prefix: String, suffix: String): String
}
+type university_calc_Calculator__concat__gqlv_action_args {
+ prefix: String
+ suffix: String
+}
+
type university_calc_Calculator__concat__gqlv_action_invoke {
+ args: university_calc_Calculator__concat__gqlv_action_args
results: String
}
@@ -2365,7 +2462,13 @@
validate(date: String, numDays: Int): String
}
+type university_calc_Calculator__jdk8LocalPlusDays__gqlv_action_args {
+ date: String
+ numDays: Int
+}
+
type university_calc_Calculator__jdk8LocalPlusDays__gqlv_action_invoke {
+ args: university_calc_Calculator__jdk8LocalPlusDays__gqlv_action_args
results: String
}
@@ -2389,7 +2492,14 @@
validate(numHours: Int, numMinutes: Int, time: String): String
}
+type university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__gqlv_action_args {
+ numHours: Int
+ numMinutes: Int
+ time: String
+}
+
type university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__gqlv_action_invoke {
+ args: university_calc_Calculator__jdk8LocalPlusHoursAndMinutes__gqlv_action_args
results: String
}
@@ -2435,7 +2545,15 @@
validate(dateTime: DateTime, numDays: Int, numHours: Int, numMinutes: Int): String
}
+type university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_args {
+ dateTime: DateTime
+ numDays: Int
+ numHours: Int
+ numMinutes: Int
+}
+
type university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_invoke {
+ args: university_calc_Calculator__jdk8OffsetPlusDaysAndHoursAndMinutes__gqlv_action_args
results: DateTime
}
@@ -2475,7 +2593,14 @@
validate(numHours: Int, numMinutes: Int, time: Time): String
}
+type university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__gqlv_action_args {
+ numHours: Int
+ numMinutes: Int
+ time: Time
+}
+
type university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__gqlv_action_invoke {
+ args: university_calc_Calculator__jdk8OffsetPlusHoursAndMinutes__gqlv_action_args
results: Time
}
@@ -2521,7 +2646,15 @@
validate(dateTime: String, numDays: Int, numHours: Int, numMinutes: Int): String
}
+type university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_args {
+ dateTime: String
+ numDays: Int
+ numHours: Int
+ numMinutes: Int
+}
+
type university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_invoke {
+ args: university_calc_Calculator__jdk8ZonedPlusDaysAndHoursAndMinutes__gqlv_action_args
results: String
}
@@ -2568,7 +2701,13 @@
validate(date: String, numDays: Int): String
}
+type university_calc_Calculator__jodaLocalPlusDays__gqlv_action_args {
+ date: String
+ numDays: Int
+}
+
type university_calc_Calculator__jodaLocalPlusDays__gqlv_action_invoke {
+ args: university_calc_Calculator__jodaLocalPlusDays__gqlv_action_args
results: String
}
@@ -2592,7 +2731,14 @@
validate(numHours: Int, numMinutes: Int, time: String): String
}
+type university_calc_Calculator__jodaLocalPlusHoursAndMinutes__gqlv_action_args {
+ numHours: Int
+ numMinutes: Int
+ time: String
+}
+
type university_calc_Calculator__jodaLocalPlusHoursAndMinutes__gqlv_action_invoke {
+ args: university_calc_Calculator__jodaLocalPlusHoursAndMinutes__gqlv_action_args
results: String
}
@@ -2638,7 +2784,15 @@
validate(dateTime: String, numDays: Int, numHours: Int, numMinutes: Int): String
}
+type university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__gqlv_action_args {
+ dateTime: String
+ numDays: Int
+ numHours: Int
+ numMinutes: Int
+}
+
type university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__gqlv_action_invoke {
+ args: university_calc_Calculator__jodaPlusDaysAndHoursAndMinutes__gqlv_action_args
results: String
}
@@ -2678,7 +2832,12 @@
validate(month: org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum): String
}
+type university_calc_Calculator__nextMonth__gqlv_action_args {
+ month: org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum
+}
+
type university_calc_Calculator__nextMonth__gqlv_action_invoke {
+ args: university_calc_Calculator__nextMonth__gqlv_action_args
results: org_apache_causeway_viewer_graphql_viewer_test_domain_calc_Month__gqlv_enum
}
@@ -2702,7 +2861,12 @@
validate(x: Boolean): String
}
+type university_calc_Calculator__not__gqlv_action_args {
+ x: Boolean
+}
+
type university_calc_Calculator__not__gqlv_action_invoke {
+ args: university_calc_Calculator__not__gqlv_action_args
results: Boolean
}
@@ -2725,7 +2889,13 @@
validate(x: Boolean, y: Boolean): String
}
+type university_calc_Calculator__or__gqlv_action_args {
+ x: Boolean
+ y: Boolean
+}
+
type university_calc_Calculator__or__gqlv_action_invoke {
+ args: university_calc_Calculator__or__gqlv_action_args
results: Boolean
}
@@ -2803,7 +2973,12 @@
validate(staffMember: university_dept_StaffMember__gqlv_input): String
}
+type university_dept_Department__addStaffMember__gqlv_action_args {
+ staffMember: university_dept_StaffMember
+}
+
type university_dept_Department__addStaffMember__gqlv_action_invoke {
+ args: university_dept_Department__addStaffMember__gqlv_action_args
results: university_dept_Department
}
@@ -2828,7 +3003,12 @@
validate(staffMembers: [university_dept_StaffMember__gqlv_input]): String
}
+type university_dept_Department__addStaffMembers__gqlv_action_args {
+ staffMembers: [university_dept_StaffMember]
+}
+
type university_dept_Department__addStaffMembers__gqlv_action_invoke {
+ args: university_dept_Department__addStaffMembers__gqlv_action_args
results: university_dept_Department
}
@@ -2853,7 +3033,12 @@
validate(newDeptHead: university_dept_DeptHead__gqlv_input): String
}
+type university_dept_Department__changeDeptHead__gqlv_action_args {
+ newDeptHead: university_dept_DeptHead
+}
+
type university_dept_Department__changeDeptHead__gqlv_action_invoke {
+ args: university_dept_Department__changeDeptHead__gqlv_action_args
results: university_dept_Department
}
@@ -2879,7 +3064,12 @@
validate(newName: String): String
}
+type university_dept_Department__changeName__gqlv_action_args {
+ newName: String
+}
+
type university_dept_Department__changeName__gqlv_action_invoke {
+ args: university_dept_Department__changeName__gqlv_action_args
results: university_dept_Department
}
@@ -2936,7 +3126,12 @@
validate(staffMember: university_dept_StaffMember__gqlv_input): String
}
+type university_dept_Department__removeStaffMember__gqlv_action_args {
+ staffMember: university_dept_StaffMember
+}
+
type university_dept_Department__removeStaffMember__gqlv_action_invoke {
+ args: university_dept_Department__removeStaffMember__gqlv_action_args
results: university_dept_Department
}
@@ -2983,7 +3178,13 @@
validate(deptHead: university_dept_DeptHead__gqlv_input, name: String): String
}
+type university_dept_Departments__createDepartment__gqlv_action_args {
+ deptHead: university_dept_DeptHead
+ name: String
+}
+
type university_dept_Departments__createDepartment__gqlv_action_invoke {
+ args: university_dept_Departments__createDepartment__gqlv_action_args
results: university_dept_Department
}
@@ -3020,7 +3221,12 @@
validate(name: String): String
}
+type university_dept_Departments__findDepartmentByName__gqlv_action_args {
+ name: String
+}
+
type university_dept_Departments__findDepartmentByName__gqlv_action_invoke {
+ args: university_dept_Departments__findDepartmentByName__gqlv_action_args
results: university_dept_Department
}
@@ -3061,7 +3267,12 @@
validate(department: university_dept_Department__gqlv_input): String
}
+type university_dept_DeptHead__changeDepartment__gqlv_action_args {
+ department: university_dept_Department
+}
+
type university_dept_DeptHead__changeDepartment__gqlv_action_invoke {
+ args: university_dept_DeptHead__changeDepartment__gqlv_action_args
results: university_dept_DeptHead
}
@@ -3078,7 +3289,12 @@
validate(newName: String): String
}
+type university_dept_DeptHead__changeName__gqlv_action_args {
+ newName: String
+}
+
type university_dept_DeptHead__changeName__gqlv_action_invoke {
+ args: university_dept_DeptHead__changeName__gqlv_action_args
results: university_dept_DeptHead
}
@@ -3152,7 +3368,12 @@
validate(name: String): String
}
+type university_dept_DeptHeads__findHeadByName__gqlv_action_args {
+ name: String
+}
+
type university_dept_DeptHeads__findHeadByName__gqlv_action_invoke {
+ args: university_dept_DeptHeads__findHeadByName__gqlv_action_args
results: university_dept_DeptHead
}
@@ -3256,7 +3477,13 @@
validate(department: university_dept_Department__gqlv_input, name: String): String
}
+type university_dept_Staff__createStaffMember__gqlv_action_args {
+ department: university_dept_Department
+ name: String
+}
+
type university_dept_Staff__createStaffMember__gqlv_action_invoke {
+ args: university_dept_Staff__createStaffMember__gqlv_action_args
results: university_dept_StaffMember
}
@@ -3293,7 +3520,12 @@
validate(name: String): String
}
+type university_dept_Staff__findStaffMemberByName__gqlv_action_args {
+ name: String
+}
+
type university_dept_Staff__findStaffMemberByName__gqlv_action_invoke {
+ args: university_dept_Staff__findStaffMemberByName__gqlv_action_args
results: university_dept_StaffMember
}