This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/CAUSEWAY-3676 by this push:
new d8fadf296d CAUSEWAY-3676: finishes extraction of TypeMapper
responsibilities
d8fadf296d is described below
commit d8fadf296daa080b3f31b1eaabea37006e3b0dcd
Author: danhaywood <[email protected]>
AuthorDate: Fri Jan 26 15:19:18 2024 +0000
CAUSEWAY-3676: finishes extraction of TypeMapper responsibilities
---
.../viewer/graphql/model/domain/GqlvAction.java | 39 ++--------------------
.../graphql/model/domain/GqlvActionInvoke.java | 9 ++++-
.../graphql/model/domain/GqlvActionParam.java | 15 +++++++++
.../model/domain/GqlvActionParamAutoComplete.java | 9 ++++-
.../model/domain/GqlvActionParamChoices.java | 8 ++++-
.../model/domain/GqlvActionParamDefault.java | 9 ++++-
.../model/domain/GqlvActionParamDisabled.java | 9 ++++-
.../model/domain/GqlvActionParamHidden.java | 9 ++++-
.../model/domain/GqlvActionParamValidate.java | 9 ++++-
.../graphql/model/domain/GqlvActionParams.java | 18 ++++++++++
.../viewer/graphql/model/types/TypeMapper.java | 37 ++++++++++++++++++++
11 files changed, 128 insertions(+), 43 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 6a64d44d74..3cf5a7612e 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
@@ -92,7 +92,7 @@ public class GqlvAction
.build());
}
- static Can<ManagedObject> argumentManagedObjectsFor(
+ public Can<ManagedObject> argumentManagedObjectsFor(
final DataFetchingEnvironment dataFetchingEnvironment,
final ObjectAction objectAction,
final BookmarkService bookmarkService) {
@@ -140,7 +140,7 @@ public class GqlvAction
});
}
- private static ManagedObject adaptValue(
+ private ManagedObject adaptValue(
final ObjectActionParameter oap,
final Object argumentValue) {
@@ -149,43 +149,10 @@ public class GqlvAction
return ManagedObject.empty(elementType);
}
- val argPojo = adaptPojo(argumentValue, elementType);
+ val argPojo = context.typeMapper.adaptPojo(argumentValue, elementType);
return ManagedObject.adaptParameter(oap, argPojo);
}
- private static Object adaptPojo(
- final Object argumentValue,
- ObjectSpecification elementType) {
- val elementClazz = elementType.getCorrespondingClass();
-
- if (elementClazz.isEnum()) {
- return Enum.valueOf((Class<Enum>) elementClazz,
argumentValue.toString());
- }
-
- if (elementClazz == BigInteger.class) {
- return BigInteger.valueOf((Integer) argumentValue);
- }
-
- if (elementClazz == BigDecimal.class) {
- return BigDecimal.valueOf((Double) argumentValue);
- }
-
- if (elementClazz == LocalDate.class) {
- String argumentStr = (String) argumentValue;
- return LocalDate.parse(argumentStr,
DateTimeFormatter.ofPattern("yyyy-MM-dd"));
- }
-
- if (elementClazz == org.joda.time.LocalDate.class) {
- String argumentStr = (String) argumentValue;
- return org.joda.time.LocalDate.parse(argumentStr,
org.joda.time.format.DateTimeFormat.forPattern("yyyy-MM-dd"));
- }
-
- if (elementClazz == float.class || elementClazz == Float.class) {
- return ((Double) argumentValue).floatValue();
- }
-
- return argumentValue;
- }
private static Optional<Object> asPojo(
final ObjectSpecification elementType,
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java
index d0ca5e0890..e1356732a0 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvoke.java
@@ -19,6 +19,8 @@
package org.apache.causeway.viewer.graphql.model.domain;
import org.apache.causeway.applib.annotation.Where;
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
+import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.viewer.graphql.model.context.Context;
import org.apache.causeway.viewer.graphql.model.exceptions.DisabledException;
@@ -151,7 +153,7 @@ public class GqlvActionInvoke {
}
val head = objectAction.interactionHead(managedObject);
- val argumentManagedObjects =
GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
+ val argumentManagedObjects =
holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
val validityConsent = objectAction.isArgumentSetValid(head,
argumentManagedObjects, InteractionInitiatedBy.USER);
if (validityConsent.isVetoed()) {
@@ -172,5 +174,10 @@ public class GqlvActionInvoke {
final GraphQLFieldDefinition.Builder fieldBuilder,
final TypeMapper.InputContext inputContext,
final int parameterCount);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
index 4a10ac9750..c05f8b891a 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParam.java
@@ -18,6 +18,9 @@
*/
package org.apache.causeway.viewer.graphql.model.domain;
+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.core.metamodel.spec.feature.ObjectActionParameter;
@@ -27,6 +30,8 @@ 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 graphql.schema.DataFetchingEnvironment;
+
import lombok.Getter;
import lombok.extern.log4j.Log4j2;
@@ -154,6 +159,11 @@ public class GqlvActionParam
holder.addGqlArguments(objectAction, fieldBuilder, inputContext,
paramNum);
}
+ @Override
+ public Can<ManagedObject>
argumentManagedObjectsFor(DataFetchingEnvironment dataFetchingEnvironment,
ObjectAction objectAction, BookmarkService bookmarkService) {
+ return holder.argumentManagedObjectsFor(dataFetchingEnvironment,
objectAction, bookmarkService);
+ }
+
@Override
public void addGqlArgument(ObjectAction objectAction,
GraphQLFieldDefinition.Builder fieldBuilder, TypeMapper.InputContext
inputContext, int paramNum) {
@@ -170,5 +180,10 @@ public class GqlvActionParam
GraphQLFieldDefinition.Builder fieldBuilder,
TypeMapper.InputContext inputContext,
int paramNum);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamAutoComplete.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamAutoComplete.java
index ed3f822c8b..1279b1bf90 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamAutoComplete.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamAutoComplete.java
@@ -23,6 +23,8 @@ package org.apache.causeway.viewer.graphql.model.domain;
import java.util.stream.Collectors;
import org.apache.causeway.applib.annotation.Where;
+ import org.apache.causeway.applib.services.bookmark.BookmarkService;
+ import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.causeway.core.metamodel.interactions.managed.ManagedAction;
import
org.apache.causeway.core.metamodel.interactions.managed.ParameterNegotiationModel;
@@ -107,7 +109,7 @@ package org.apache.causeway.viewer.graphql.model.domain;
val managedObject = ManagedObject.adaptSingular(objectSpecification,
sourcePojo);
val objectActionParameter =
objectAction.getParameterById(holder.getObjectActionParameter().getId());
- val argumentManagedObjects =
GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
+ val argumentManagedObjects =
holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
val managedAction = ManagedAction.of(managedObject, objectAction,
Where.ANYWHERE);
val pendingArgs = ParameterNegotiationModel.of(managedAction,
argumentManagedObjects);
@@ -131,5 +133,10 @@ package org.apache.causeway.viewer.graphql.model.domain;
GraphQLFieldDefinition.Builder fieldBuilder,
TypeMapper.InputContext inputContext,
int paramNum);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamChoices.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamChoices.java
index d48720d575..2fec45c1ee 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamChoices.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamChoices.java
@@ -19,6 +19,7 @@
package org.apache.causeway.viewer.graphql.model.domain;
import org.apache.causeway.applib.annotation.Where;
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.causeway.core.metamodel.interactions.managed.ManagedAction;
@@ -99,7 +100,7 @@ import static
graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
val managedObject = ManagedObject.adaptSingular(objectSpecification,
sourcePojo);
val objectActionParameter =
objectAction.getParameterById(holder.getObjectActionParameter().getId());
- val argumentManagedObjects =
GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
+ val argumentManagedObjects =
holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
val managedAction = ManagedAction.of(managedObject, objectAction,
Where.ANYWHERE);
val pendingArgs = ParameterNegotiationModel.of(managedAction,
argumentManagedObjects);
@@ -122,5 +123,10 @@ import static
graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
GraphQLFieldDefinition.Builder fieldBuilder,
TypeMapper.InputContext inputContext,
int paramNum);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDefault.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDefault.java
index d4e48be8f4..8a7405bc1d 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDefault.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDefault.java
@@ -21,6 +21,8 @@ package org.apache.causeway.viewer.graphql.model.domain;
import java.util.Collections;
import org.apache.causeway.applib.annotation.Where;
+ import org.apache.causeway.applib.services.bookmark.BookmarkService;
+ import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.core.metamodel.interactions.managed.ManagedAction;
import
org.apache.causeway.core.metamodel.interactions.managed.ParameterNegotiationModel;
import org.apache.causeway.core.metamodel.object.ManagedObject;
@@ -94,7 +96,7 @@ package org.apache.causeway.viewer.graphql.model.domain;
val managedObject = ManagedObject.adaptSingular(objectSpecification,
sourcePojo);
val objectActionParameter =
objectAction.getParameterById(holder.getObjectActionParameter().getId());
- val argumentManagedObjects =
GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
+ val argumentManagedObjects =
holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
val managedAction = ManagedAction.of(managedObject, objectAction,
Where.ANYWHERE);
val pendingArgs = ParameterNegotiationModel.of(managedAction,
argumentManagedObjects);
@@ -115,5 +117,10 @@ package org.apache.causeway.viewer.graphql.model.domain;
GraphQLFieldDefinition.Builder fieldBuilder,
TypeMapper.InputContext inputContext,
int paramNum);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDisabled.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDisabled.java
index 0819256aa3..9c5bdfe88a 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDisabled.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamDisabled.java
@@ -18,6 +18,8 @@
*/
package org.apache.causeway.viewer.graphql.model.domain;
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
+import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
@@ -79,7 +81,7 @@ public class GqlvActionParamDisabled {
val actionInteractionHead =
objectAction.interactionHead(managedObject);
val objectActionParameter =
objectAction.getParameterById(holder.getObjectActionParameter().getId());
- val argumentManagedObjects =
GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
+ val argumentManagedObjects =
holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
val usable = objectActionParameter.isUsable(actionInteractionHead,
argumentManagedObjects, InteractionInitiatedBy.USER);
return usable.isVetoed() ?
usable.getReasonAsString().orElse("Disabled") : null;
@@ -95,5 +97,10 @@ public class GqlvActionParamDisabled {
GraphQLFieldDefinition.Builder fieldBuilder,
TypeMapper.InputContext inputContext,
int i);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamHidden.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamHidden.java
index c412fe2b85..345f7a4a13 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamHidden.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParamHidden.java
@@ -18,6 +18,8 @@
*/
package org.apache.causeway.viewer.graphql.model.domain;
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
+import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
@@ -81,7 +83,7 @@ public class GqlvActionParamHidden {
val objectActionParameter =
objectAction.getParameterById(holder.getObjectActionParameter().getId());
- val argumentManagedObjects =
GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
+ val argumentManagedObjects =
holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
val visible = objectActionParameter.isVisible(actionInteractionHead,
argumentManagedObjects, InteractionInitiatedBy.USER);
return visible.isVetoed();
@@ -97,5 +99,10 @@ public class GqlvActionParamHidden {
GraphQLFieldDefinition.Builder fieldBuilder,
TypeMapper.InputContext inputContext,
int paramNum);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
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
index 42d8537cc6..5798572484 100644
---
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
@@ -18,6 +18,8 @@
*/
package org.apache.causeway.viewer.graphql.model.domain;
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
+import org.apache.causeway.commons.collections.Can;
import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAction;
@@ -81,7 +83,7 @@ public class GqlvActionParamValidate {
val objectActionParameter =
objectAction.getParameterById(holder.getObjectActionParameter().getId());
- val argumentManagedObjects =
GqlvAction.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
+ val argumentManagedObjects =
holder.argumentManagedObjectsFor(dataFetchingEnvironment, objectAction,
context.bookmarkService);
val usable = objectActionParameter.isUsable(actionInteractionHead,
argumentManagedObjects, InteractionInitiatedBy.USER);
return usable.isVetoed() ?
usable.getReasonAsString().orElse("Invalid") : null;
@@ -93,5 +95,10 @@ public class GqlvActionParamValidate {
ObjectActionProvider,
ObjectActionParameterProvider {
void addGqlArgument(ObjectAction objectAction,
GraphQLFieldDefinition.Builder fieldBuilder, TypeMapper.InputContext
inputContext, int paramNum);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
index 28d39d1c60..a96f6ace58 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionParams.java
@@ -18,6 +18,9 @@
*/
package org.apache.causeway.viewer.graphql.model.domain;
+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.core.metamodel.spec.feature.ObjectActionParameter;
@@ -27,6 +30,8 @@ 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 graphql.schema.DataFetchingEnvironment;
+
import lombok.Getter;
import lombok.extern.log4j.Log4j2;
@@ -131,6 +136,14 @@ public class GqlvActionParams implements
GqlvActionParam.Holder {
holder.addGqlArguments(objectAction, fieldBuilder, inputContext,
paramNum);
}
+ @Override
+ public Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService) {
+ return holder.argumentManagedObjectsFor(dataFetchingEnvironment,
objectAction, bookmarkService);
+ }
+
public interface Holder
extends GqlvHolder,
ObjectSpecificationProvider,
@@ -141,5 +154,10 @@ public class GqlvActionParams implements
GqlvActionParam.Holder {
GraphQLFieldDefinition.Builder fieldBuilder,
TypeMapper.InputContext inputContext,
int paramNum);
+
+ Can<ManagedObject> argumentManagedObjectsFor(
+ DataFetchingEnvironment dataFetchingEnvironment,
+ ObjectAction objectAction,
+ BookmarkService bookmarkService);
}
}
diff --git
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java
index 0974757570..7612b6d005 100644
---
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java
+++
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java
@@ -20,12 +20,15 @@ package org.apache.causeway.viewer.graphql.model.types;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
import java.util.Map;
import graphql.Scalars;
import graphql.schema.*;
import lombok.experimental.UtilityClass;
+import lombok.val;
import javax.annotation.Priority;
import javax.ws.rs.NotSupportedException;
@@ -192,6 +195,40 @@ public class TypeMapper {
}
}
+ public Object adaptPojo(
+ final Object argumentValue,
+ final ObjectSpecification elementType) {
+ val elementClazz = elementType.getCorrespondingClass();
+
+ if (elementClazz.isEnum()) {
+ return Enum.valueOf((Class<Enum>) elementClazz,
argumentValue.toString());
+ }
+
+ if (elementClazz == BigInteger.class) {
+ return BigInteger.valueOf((Integer) argumentValue);
+ }
+
+ if (elementClazz == BigDecimal.class) {
+ return BigDecimal.valueOf((Double) argumentValue);
+ }
+
+ if (elementClazz == LocalDate.class) {
+ String argumentStr = (String) argumentValue;
+ return LocalDate.parse(argumentStr,
DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+ }
+
+ if (elementClazz == org.joda.time.LocalDate.class) {
+ String argumentStr = (String) argumentValue;
+ return org.joda.time.LocalDate.parse(argumentStr,
org.joda.time.format.DateTimeFormat.forPattern("yyyy-MM-dd"));
+ }
+
+ if (elementClazz == float.class || elementClazz == Float.class) {
+ return ((Double) argumentValue).floatValue();
+ }
+
+ return argumentValue;
+ }
+
public enum InputContext {
HIDE,
DISABLE,