in data-index/data-index-graphql/src/main/java/org/kie/kogito/index/graphql/GraphQLObjectTypeMapper.java [77:127]
private Consumer<GraphQLObjectType.Builder> build(DomainDescriptor domain) {
return builder -> domain.getAttributes().forEach(field -> {
LOGGER.debug("GraphQL mapping field: {}", field.getName());
if (KogitoMetadata.class.getName().equals(field.getTypeName())) {
builder.field(newFieldDefinition().name(KOGITO_DOMAIN_ATTRIBUTE).type(schema.getObjectType("KogitoMetadata"))).build();
} else {
GraphQLOutputType type;
switch (field.getTypeName()) {
case "java.lang.Integer":
type = Scalars.GraphQLInt;
break;
case "java.lang.Long":
field.setTypeName("Long");
type = getGraphQLType(field, schema, additionalTypes, allTypes);
break;
case "java.lang.Float":
type = Scalars.GraphQLFloat;
break;
case "java.lang.Double":
field.setTypeName("BigDecimal");
type = getGraphQLType(field, schema, additionalTypes, allTypes);
break;
case "java.lang.String":
type = Scalars.GraphQLString;
break;
case "java.lang.Boolean":
type = Scalars.GraphQLBoolean;
break;
case "java.time.LocalDate":
type = ExtendedScalars.Date;
break;
case "java.util.Date":
case "java.time.LocalDateTime":
case "java.time.ZonedDateTime":
case "kogito.Date":
case "kogito.Instant":
field.setTypeName("DateTime");
default:
type = getGraphQLType(field, schema, additionalTypes, allTypes);
}
if (type != null) {
if (field.getLabel() != null && field.getLabel().contains("REPEATED")) {
GraphQLOutputType listOfType = new GraphQLList(type);
builder.field(newFieldDefinition().name(field.getName()).type(listOfType));
} else {
builder.field(newFieldDefinition().name(field.getName()).type(type));
}
}
}
});
}