private GraphQLScalarType buildScalar(BuildContext buildCtx, ScalarTypeDefinition typeDefinition) { buildCtx.enterNode(typeDefinition); TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); RuntimeWiring runtimeWiring = buildCtx.getWiring(); WiringFactory wiringFactory = runtimeWiring.getWiringFactory(); List<ScalarTypeExtensionDefinition> extensions = scalarTypeExtensions(typeDefinition, buildCtx); ScalarWiringEnvironment environment = new ScalarWiringEnvironment(typeRegistry, typeDefinition, extensions); GraphQLScalarType scalar; if (wiringFactory.providesScalar(environment)) { scalar = wiringFactory.getScalar(environment); } else { scalar = buildCtx.getWiring().getScalars().get(typeDefinition.getName()); } if (!ScalarInfo.isStandardScalar(scalar) && !ScalarInfo.isGraphqlSpecifiedScalar(scalar)) { scalar = scalar.transform(builder -> builder.withDirectives( buildDirectives(typeDefinition.getDirectives(), directivesOf(extensions), SCALAR, buildCtx.getDirectiveDefinitions()) )); // // only allow modification of custom scalars scalar = directiveBehaviour.onScalar(scalar, buildCtx.mkBehaviourParams()); } return buildCtx.exitNode(scalar); }
private GraphQLScalarType buildScalar(BuildContext buildCtx, ScalarTypeDefinition typeDefinition) { buildCtx.enterNode(typeDefinition); TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); RuntimeWiring runtimeWiring = buildCtx.getWiring(); WiringFactory wiringFactory = runtimeWiring.getWiringFactory(); List<ScalarTypeExtensionDefinition> extensions = scalarTypeExtensions(typeDefinition, buildCtx); ScalarWiringEnvironment environment = new ScalarWiringEnvironment(typeRegistry, typeDefinition, extensions); GraphQLScalarType scalar; if (wiringFactory.providesScalar(environment)) { scalar = wiringFactory.getScalar(environment); } else { scalar = buildCtx.getWiring().getScalars().get(typeDefinition.getName()); } if (!ScalarInfo.isStandardScalar(scalar) && !ScalarInfo.isGraphqlSpecifiedScalar(scalar)) { scalar = scalar.transform(builder -> builder.withDirectives( buildDirectives(typeDefinition.getDirectives(), directivesOf(extensions), SCALAR, buildCtx.getDirectiveDefinitions()) )); // // only allow modification of custom scalars scalar = directiveBehaviour.onScalar(scalar, buildCtx.mkBehaviourParams()); } return buildCtx.exitNode(scalar); }