use of com.github.victools.jsonschema.generator.TypeContext in project jsonschema-generator by victools.
the class DefaultSchemaDefinitionNamingStrategy method getDefinitionNameForKey.
@Override
public String getDefinitionNameForKey(DefinitionKey key, SchemaGenerationContext generationContext) {
TypeContext typeContext = generationContext.getTypeContext();
ResolvedType type = key.getType();
return typeContext.getSimpleTypeDescription(type);
}
use of com.github.victools.jsonschema.generator.TypeContext in project jsonschema-generator by victools.
the class AbstractTypeAwareTest method prepareContextForVersion.
/**
* Override generation context mock methods that are version dependent.
*
* @param schemaVersion designated JSON Schema version
*/
protected void prepareContextForVersion(SchemaVersion schemaVersion) {
TypeContext typeContext = TypeContextFactory.createDefaultTypeContext();
ResolvedType resolvedTestClass = typeContext.resolve(this.testClass);
this.testClassMembers = typeContext.resolveWithMembers(resolvedTestClass);
this.context = Mockito.mock(SchemaGenerationContext.class, Mockito.RETURNS_DEEP_STUBS);
Mockito.when(this.context.getTypeContext()).thenReturn(typeContext);
SchemaGeneratorConfig config = Mockito.mock(SchemaGeneratorConfig.class);
Mockito.when(this.context.getGeneratorConfig()).thenReturn(config);
Mockito.when(config.resolveArrayMaxItems(Mockito.any(FieldScope.class))).thenReturn(null);
Mockito.when(config.resolveArrayMaxItems(Mockito.any(MethodScope.class))).thenReturn(null);
Mockito.when(config.resolveArrayMaxItemsForType(Mockito.any())).thenReturn(null);
Mockito.when(config.resolveArrayMinItems(Mockito.any(FieldScope.class))).thenReturn(null);
Mockito.when(config.resolveArrayMinItems(Mockito.any(MethodScope.class))).thenReturn(null);
Mockito.when(config.resolveArrayMinItemsForType(Mockito.any())).thenReturn(null);
Mockito.when(config.resolveArrayUniqueItems(Mockito.any(FieldScope.class))).thenReturn(null);
Mockito.when(config.resolveArrayUniqueItems(Mockito.any(MethodScope.class))).thenReturn(null);
Mockito.when(config.resolveArrayUniqueItemsForType(Mockito.any())).thenReturn(null);
Mockito.when(config.resolveStringMaxLength(Mockito.any(FieldScope.class))).thenReturn(null);
Mockito.when(config.resolveStringMaxLength(Mockito.any(MethodScope.class))).thenReturn(null);
Mockito.when(config.resolveStringMaxLengthForType(Mockito.any())).thenReturn(null);
Mockito.when(config.resolveStringMinLength(Mockito.any(FieldScope.class))).thenReturn(null);
Mockito.when(config.resolveStringMinLength(Mockito.any(MethodScope.class))).thenReturn(null);
Mockito.when(config.resolveStringMinLengthForType(Mockito.any())).thenReturn(null);
Mockito.when(config.getSchemaVersion()).thenReturn(schemaVersion);
Answer<String> keywordLookup = invocation -> ((SchemaKeyword) invocation.getArgument(0)).forVersion(schemaVersion);
Mockito.when(config.getKeyword(Mockito.any())).thenAnswer(keywordLookup);
Mockito.when(this.context.getKeyword(Mockito.any())).thenAnswer(keywordLookup);
ObjectMapper objectMapper = new ObjectMapper();
Mockito.when(config.getObjectMapper()).thenReturn(objectMapper);
Mockito.when(config.createArrayNode()).thenAnswer((_invocation) -> objectMapper.createArrayNode());
Mockito.when(config.createObjectNode()).thenAnswer((_invocation) -> objectMapper.createObjectNode());
Mockito.when(this.context.createStandardDefinitionReference(Mockito.any(ResolvedType.class), Mockito.any())).thenAnswer((_invocation) -> objectMapper.createObjectNode());
}
use of com.github.victools.jsonschema.generator.TypeContext in project jsonschema-generator by victools.
the class JsonSubTypesResolverLookUpTest method testFindSubtypes.
@Test
@Parameters
public void testFindSubtypes(Class<?> targetType, List<Class<?>> erasedSubtypes) {
this.prepareContextForVersion(SchemaVersion.DRAFT_2019_09);
TypeContext typeContext = this.getContext().getTypeContext();
List<ResolvedType> subtypes = this.instance.findSubtypes(typeContext.resolve(targetType), this.getContext());
this.assertErasedSubtypesAreEquals(erasedSubtypes, subtypes);
}
use of com.github.victools.jsonschema.generator.TypeContext in project jsonschema-generator by victools.
the class AdditionalPropertiesModuleTest method testResolveAdditionalProperties.
@Test
@Parameters
@SuppressWarnings("unchecked")
public void testResolveAdditionalProperties(Module moduleInstance, Type expectedAdditionalProperties, Type type, Type[] typeParameters) {
moduleInstance.applyToConfigBuilder(this.builder);
ArgumentCaptor<ConfigFunction<TypeScope, Type>> resolverCaptor = ArgumentCaptor.forClass(ConfigFunction.class);
Mockito.verify(this.generalConfigPart).withAdditionalPropertiesResolver(resolverCaptor.capture());
ConfigFunction<TypeScope, Type> additionalPropertiesResolver = resolverCaptor.getValue();
TypeContext typeContext = this.getContext().getTypeContext();
TypeScope scope = typeContext.createTypeScope(typeContext.resolve(type, typeParameters));
Type result = additionalPropertiesResolver.apply(scope);
if (expectedAdditionalProperties == null || expectedAdditionalProperties == Void.class) {
Assert.assertEquals(expectedAdditionalProperties, result);
} else {
Assert.assertEquals(typeContext.resolve(expectedAdditionalProperties), result);
}
}
use of com.github.victools.jsonschema.generator.TypeContext in project alfresco-java-sdk by Alfresco.
the class JsonSchemaGeneratorTest method getConfigBuilder.
private SchemaGeneratorConfigBuilder getConfigBuilder(final EventEntry entry) {
final JacksonModule module = new JacksonModule(JacksonOption.RESPECT_JSONPROPERTY_ORDER);
final SchemaGeneratorConfigBuilder configBuilder = new SchemaGeneratorConfigBuilder(SchemaVersion.DRAFT_2019_09, OptionPreset.PLAIN_JSON).with(module);
configBuilder.forTypesInGeneral().withSubtypeResolver((declaredType, generationContext) -> {
if (declaredType.getErasedType() == Resource.class) {
final TypeContext typeContext = generationContext.getTypeContext();
switch(entry) {
case NODE_ENTRY:
return List.of(typeContext.resolveSubtype(declaredType, NodeResource.class));
case CHILD_ASSOC_ENTRY:
return List.of(typeContext.resolveSubtype(declaredType, ChildAssociationResource.class));
case PEER_ASSOC_ENTRY:
return List.of(typeContext.resolveSubtype(declaredType, PeerAssociationResource.class));
}
}
if (declaredType.getErasedType() == DataAttributes.class) {
final TypeContext typeContext = generationContext.getTypeContext();
if (entry == EventEntry.NODE_UPDATED_ENTRY) {
return List.of(typeContext.resolveSubtype(declaredType, EventDataWithResourceBefore.class));
} else {
return List.of(typeContext.resolveSubtype(declaredType, EventDataWithoutResourceBefore.class));
}
}
return null;
});
configBuilder.forFields().withTargetTypeOverridesResolver(field -> {
if (field.getDeclaredType().getErasedType() == URI.class) {
return Stream.of(String.class).map(specificSubtype -> field.getContext().resolve(String.class)).collect(Collectors.toList());
}
return null;
});
configBuilder.forFields().withRequiredCheck(field -> {
final Required annotation = field.getAnnotation(Required.class);
return (annotation != null);
});
return configBuilder;
}
Aggregations