private GraphQLEnumType buildEnumType(BuildContext buildCtx, EnumTypeDefinition typeDefinition) { buildCtx.enterNode(typeDefinition); GraphQLEnumType.Builder builder = GraphQLEnumType.newEnum(); builder.definition(typeDefinition); builder.name(typeDefinition.getName()); builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); List<EnumTypeExtensionDefinition> extensions = enumTypeExtensions(typeDefinition, buildCtx); EnumValuesProvider enumValuesProvider = buildCtx.getWiring().getEnumValuesProviders().get(typeDefinition.getName()); typeDefinition.getEnumValueDefinitions().forEach(evd -> { GraphQLEnumValueDefinition enumValueDefinition = buildEnumValue(buildCtx, typeDefinition, enumValuesProvider, evd); builder.value(enumValueDefinition); }); extensions.forEach(extension -> extension.getEnumValueDefinitions().forEach(evd -> { GraphQLEnumValueDefinition enumValueDefinition = buildEnumValue(buildCtx, typeDefinition, enumValuesProvider, evd); if (!builder.hasValue(enumValueDefinition.getName())) { builder.value(enumValueDefinition); } })); builder.withDirectives( buildDirectives(typeDefinition.getDirectives(), directivesOf(extensions), ENUM, buildCtx.getDirectiveDefinitions()) ); GraphQLEnumType enumType = builder.build(); enumType = directiveBehaviour.onEnum(enumType, buildCtx.mkBehaviourParams()); return buildCtx.exitNode(enumType); }
protected GraphQLInputType getFieldsEnumType(EntityType<?> entityType) { GraphQLEnumType.Builder enumBuilder = GraphQLEnumType.newEnum().name(entityType.getName()+"FieldsEnum"); final AtomicInteger ordinal = new AtomicInteger(); entityType.getAttributes().stream() .filter(this::isValidInput) .filter(this::isNotIgnored) .forEach(it -> enumBuilder.value(it.getName(), ordinal.incrementAndGet())); GraphQLInputType answer = enumBuilder.build(); setNoOpCoercing(answer); return answer; }
@Override public GraphQLInputType getInputType(IGraphQLObjectMapper graphQLObjectMapper, Type type) { Class<?> classType = (Class<?>) type; Class<?> enumClassType = classType.getComponentType(); GraphQLEnumType.Builder enumType = GraphQLEnumType.newEnum() .name(graphQLObjectMapper.getTypeNamingStrategy().getTypeName(graphQLObjectMapper, enumClassType)); for (Object value : enumClassType.getEnumConstants()) { enumType.value(value.toString(), value); } return new GraphQLList(enumType.build()); }
@Test public void wireGraphQLEnumType_validLocations_correctMethodIsCalled() throws Exception { // Arrange AnnotationsDirectiveWiring upperWiring = mock(AnnotationsDirectiveWiring.class); GraphQLEnumType directiveContainer = GraphQLEnumType.newEnum().name("asdf").value("asdfasdf").build(); AnnotationsWiringEnvironmentImpl upperCaseEnv = new AnnotationsWiringEnvironmentImpl(directiveContainer, directiveContainer.getDirective("upperCase")); when(upperWiring.onEnum(upperCaseEnv)).thenReturn(directiveContainer); HashMap<GraphQLDirective, AnnotationsDirectiveWiring> map = new HashMap<>(); GraphQLDirective upperCase = newDirective().name("upperCase").validLocations(Introspection.DirectiveLocation.ENUM).build(); map.put(upperCase, upperWiring); // Act directiveWirer.wire(directiveContainer, map); // Assert verify(upperWiring).onEnum(upperCaseEnv); }
protected GraphQLEnumType generateEnumType(Object object) { String typeName = getGraphQLTypeNameOrIdentityCode(object); List<GraphQLEnumValueDefinition> enumValues = getEnumValues(object); if (enumValues == null) { return null; } GraphQLEnumType.Builder builder = newEnum(); builder.name(typeName); builder.description(getTypeDescription(object)); for (GraphQLEnumValueDefinition value : enumValues) { builder.value(value.getName(), value.getValue(), value.getDescription()); } return builder.build(); } }
public Builder value(String name) { return value(new GraphQLEnumValueDefinition(name, null, name)); }
@Test(expectedExceptions = InvalidDirectiveLocationException.class) public void wireGraphQLEnumType_invalidLocations_exceptionIsThrown() throws Exception { // Arrange AnnotationsDirectiveWiring upperWiring = mock(AnnotationsDirectiveWiring.class); GraphQLEnumType directiveContainer = GraphQLEnumType.newEnum().name("asdf").value("asdfasdf").build(); AnnotationsWiringEnvironmentImpl upperCaseEnv = new AnnotationsWiringEnvironmentImpl(directiveContainer, directiveContainer.getDirective("upperCase")); when(upperWiring.onEnum(upperCaseEnv)).thenReturn(directiveContainer); HashMap<GraphQLDirective, AnnotationsDirectiveWiring> map = new HashMap<>(); GraphQLDirective upperCase = newDirective().name("upperCase").build(); map.put(upperCase, upperWiring); // Act directiveWirer.wire(directiveContainer, map); }
public Builder value(String name, Object value, String description) { return value(new GraphQLEnumValueDefinition(name, description, value)); }
public Builder value(String name, Object value) { assertNotNull(value, "value can't be null"); return value(new GraphQLEnumValueDefinition(name, null, value)); }
public Builder value(String name, Object value, String description, String deprecationReason) { value(new GraphQLEnumValueDefinition(name, description, value, deprecationReason)); return this; }
@Override public GraphQLOutputType getOutputType(IGraphQLObjectMapper graphQLObjectMapper, Type type) { Class<?> classType = (Class<?>) type; Class<?> enumClassType = classType.getComponentType(); GraphQLEnumType.Builder enumType = GraphQLEnumType.newEnum() .name(graphQLObjectMapper.getTypeNamingStrategy().getTypeName(graphQLObjectMapper, enumClassType)); for (Object value : enumClassType.getEnumConstants()) { enumType.value(value.toString(), value); } return new GraphQLList(enumType.build()); }
public static <E extends Enum<E>> GraphQLOutputType newEnumType(Class<E> enumClass) { GraphQLEnumType.Builder builder = GraphQLEnumType.newEnum() .name(enumClass.getSimpleName()); for (E e : EnumUtils.getEnumList(enumClass)) { builder = builder.value(e.name(), e); } return builder.build(); }
public GraphQLEnumType createLinkEnumType() { GraphQLEnumType linkTypeEnum = newEnum().name(LINK_TYPE_NAME).description("Mesh resolve link type").value(LinkType.FULL.name(), LinkType.FULL, "Render full links").value(LinkType.MEDIUM.name(), LinkType.MEDIUM, "Render medium links").value(LinkType.SHORT.name(), LinkType.SHORT, "Render short links") .value(LinkType.OFF.name(), LinkType.OFF, "Don't render links").build(); return linkTypeEnum; }
private void addOptions(GraphQLEnumType.Builder enumBuilder, AnnotatedType javaType, OperationMapper operationMapper, BuildContext buildContext) { MessageBundle messageBundle = buildContext.messageBundle; sortEnumValues((Enum[]) ClassUtils.getRawType(javaType.getType()).getEnumConstants(), buildContext.typeInfoGenerator.getFieldOrder(javaType, messageBundle), messageBundle).stream() .map(enumConst -> (Enum<?>) enumConst) .forEach(enumConst -> enumBuilder.value(GraphQLEnumValueDefinition.newEnumValueDefinition() .name(getValueName(enumConst, messageBundle)) .value(enumConst) .description(getValueDescription(enumConst, messageBundle)) .deprecationReason(getValueDeprecationReason(enumConst, messageBundle)) .withDirectives(getValueDirectives(enumConst, operationMapper, buildContext)) .build())); }
public Builder value(String name) { return value(new GraphQLEnumValueDefinition(name, null, name)); }
public Builder value(String name, Object value, String description) { return value(new GraphQLEnumValueDefinition(name, description, value)); }
public Builder value(String name, Object value, String description, String deprecationReason) { value(new GraphQLEnumValueDefinition(name, description, value, deprecationReason)); return this; }
public Builder value(String name, Object value) { assertNotNull(value, "value can't be null"); return value(new GraphQLEnumValueDefinition(name, null, value)); }