You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by sh...@apache.org on 2021/07/01 12:09:41 UTC

[unomi] 01/01: Fix GraphQLProvider NPE for missing event types

This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch UNOMI-495-graphql-eventtype-npe
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit 53e3b97758d78fde89393f798afac33eb93bfa32
Author: Serge Huber <sh...@jahia.com>
AuthorDate: Thu Jul 1 14:09:32 2021 +0200

    Fix GraphQLProvider NPE for missing event types
---
 .../apache/unomi/graphql/schema/GraphQLSchemaProvider.java    | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/GraphQLSchemaProvider.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/GraphQLSchemaProvider.java
index df968f7..1f2d9bb 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/GraphQLSchemaProvider.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/schema/GraphQLSchemaProvider.java
@@ -69,6 +69,8 @@ import org.apache.unomi.graphql.types.output.RootMutation;
 import org.apache.unomi.graphql.types.output.RootQuery;
 import org.apache.unomi.graphql.utils.ReflectionUtil;
 import org.apache.unomi.graphql.utils.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -86,6 +88,8 @@ import static graphql.schema.GraphQLObjectType.newObject;
 
 public class GraphQLSchemaProvider {
 
+    private static final Logger logger = LoggerFactory.getLogger(GraphQLSchemaProvider.class.getName());
+
     private final ProfileService profileService;
 
     private final EventTypeRegistry eventTypeRegistry;
@@ -577,10 +581,15 @@ public class GraphQLSchemaProvider {
         final Collection<EventType> unomiEventTypes = eventTypeRegistry.getAll();
         unomiEventTypes.forEach(eventType -> {
             final String typeName = UnomiToGraphQLConverter.convertEventType(eventType.getType());
+            final GraphQLInputType eventInputType = (GraphQLInputType) getFromTypeRegistry(typeName + "Input");
+            if (eventInputType == null) {
+                logger.warn("Couldn't find event input type {}", typeName + "Input, will not add it as a field.");
+                return;
+            }
 
             builder.field(GraphQLInputObjectField.newInputObjectField()
                     .name(StringUtils.decapitalize(typeName))
-                    .type((GraphQLInputType) getFromTypeRegistry(typeName + "Input"))
+                    .type(eventInputType)
                     .build());
         });