@Override public void visitObject(ObjectType objectType) { boolean canBeGlobal = objectType.getAnnotation(TypeDslAnnotation.class) .map(TypeDslAnnotation::allowsTopLevelDefinition).orElse(false); if (canBeGlobal) { getHashedGlobal(value).ifPresent(reference::set); } }
@Override public void visitObject(ObjectType objectType) { if (!registeredTypes.contains(objectType)) { registeredTypes.add(objectType); objectType.getAnnotation(StereotypeTypeAnnotation.class).ifPresent(a -> a.resolveStereotypes(resolver)); objectType.getFields().forEach(f -> f.getValue().accept(this)); } }
@Override public void visitObject(ObjectType objectType) { if (objectType.getMetadataFormat() != JAVA) { return; } final Class<Object> clazz = getType(objectType).orElse(null); if (clazz == null || relativeClasses.contains(clazz)) { return; } Optional<ClassInformationAnnotation> classInformation = objectType.getAnnotation(ClassInformationAnnotation.class); if (classInformation.isPresent()) { classInformation.get().getGenericTypes() .forEach(generic -> relativeClasses.add(loadClass(generic, extensionClassLoader))); } relativeClasses.add(clazz); objectType.getFields().stream().forEach(objectFieldType -> objectFieldType.accept(this)); objectType.getOpenRestriction().ifPresent(t -> t.accept(this)); }
@Override public void visitObject(ObjectType objectType) { if (objectType.getMetadataFormat() != JAVA) { return; } final String clazz = getId(objectType).orElse(null); if (clazz == null || relativeClasses.contains(clazz)) { return; } Optional<ClassInformationAnnotation> classInformation = objectType.getAnnotation(ClassInformationAnnotation.class); classInformation .ifPresent(classInformationAnnotation -> relativeClasses .addAll(classInformationAnnotation.getGenericTypes())); relativeClasses.add(clazz); objectType.getFields().forEach(objectFieldType -> objectFieldType.accept(this)); objectType.getOpenRestriction().ifPresent(t -> t.accept(this)); }
private void createWrappedObject(ObjectType objectType, ParameterObjectValue.Builder objectValue, ConfigLine config) { ConfigLine wrappedConfig = config.getChildren().get(0); DslSyntaxResolver wrappedElementResolver = resolvers.get(getNamespace(wrappedConfig)); Set<ObjectType> subTypes = context.getTypeCatalog().getSubTypes(objectType); if (!subTypes.isEmpty()) { subTypes.stream() .filter(subType -> wrappedElementResolver.resolve(subType) .map(dsl -> dsl.getElementName().equals(wrappedConfig.getIdentifier())) .orElse(false)) .findFirst() .ifPresent(subType -> createObjectValueFromType(subType, objectValue, wrappedConfig, wrappedElementResolver.resolve(subType).get())); } else if (objectType.getAnnotation(ExtensibleTypeAnnotation.class).isPresent()) { createObjectValueFromType(objectType, objectValue, wrappedConfig, wrappedElementResolver.resolve(objectType).get()); } }
private List<XmlExtensionElementDocumentation> getTypesDocumentation(ExtensionModel extensionModel) { List<XmlExtensionElementDocumentation> types = new ArrayList<>(); extensionModel.getTypes().forEach(type -> ExtensionMetadataTypeUtils.getId(type) .ifPresent(id -> { XmlExtensionElementDocumentation element = new XmlExtensionElementDocumentation(); element.setName(id); element.setDescription(type.getAnnotation(DescriptionAnnotation.class) .map(DescriptionAnnotation::getValue).orElse("")); element.setParameters(type.getFields().stream() .map(f -> new XmlExtensionParameterDocumentation(getAlias(f), f.getAnnotation(DescriptionAnnotation.class) .map(DescriptionAnnotation::getValue).orElse(""))) .collect(toList())); types.add(element); })); return types; }
@Test public void exportedTypesWithStereotypes() { Optional<ObjectType> withStereoType = marvelExtension.getTypes().stream() .filter(type -> type.getAnnotation(StereotypeTypeAnnotation.class).isPresent()) .findFirst(); assertThat(withStereoType.isPresent(), is(true)); Optional<StereotypeTypeAnnotation> stereotype = withStereoType.get().getAnnotation(StereotypeTypeAnnotation.class); List<StereotypeModel> allowedStereotypes = stereotype.get().getAllowedStereotypes(); assertThat(allowedStereotypes, hasSize(1)); assertStereotype(allowedStereotypes.get(0), MARVEL_EXTENSION, DR_STRANGE_STEREOTYPE_NAME, null); }
@Override public void visitObject(ObjectType objectType) { if (!visitedTypes.add(objectType)) { return; } if (isMap(objectType)) { objectType.getAnnotation(ClassInformationAnnotation.class) .filter(classInformation -> !classInformation.getGenericTypes().isEmpty()) .filter(classInformation -> !Objects.equals(classInformation.getGenericTypes().get(0), String.class.getName())) .ifPresent(classInformation -> problemsReporter.addError(new Problem(parameter, format( "Parameter '%s' is of type '%s' and its key type is not %s ", parameter.getName(), getType(objectType).getName(), String.class.getName())))); objectType.getOpenRestriction().get().accept(this); } else { parameter.getModelProperty(ExtensionParameterDescriptorModelProperty.class) .map(descriptor -> descriptor.getExtensionParameter().getType()) .ifPresent(type -> { final String typeName = type.getName(); type.getFields() .forEach(field -> checkInvalidFieldAnnotations(parameter, typeName, field, ConfigOverride.class, ComponentId.class, MetadataKeyId.class, MetadataKeyPart.class)); }); } objectType.getFields().forEach(f -> f.getValue().accept(this)); }
@Test public void noInfrastructureTypes() throws Exception { extensionModel.getTypes() .forEach(type -> assertThat(type.getAnnotation(InfrastructureTypeAnnotation.class).isPresent(), is(false))); }
private boolean isCustomStaticType(ObjectType objectType) { return objectType.getAnnotation(CustomDefinedStaticTypeAnnotation.class).isPresent(); }
assertThat(subTypesModel.getBaseType().getAnnotation(TypeIdAnnotation.class).get().getValue(), is(Scheduler.class.getName()));
public static Optional<MetadataType> getGenericTypeAt(ObjectType objectType, int index, ClassTypeLoader typeLoader) { Optional<ClassInformationAnnotation> classInformationAnnotation = objectType.getAnnotation(ClassInformationAnnotation.class); if (!classInformationAnnotation.isPresent() || classInformationAnnotation.get().getGenericTypes().size() <= index) { return Optional.empty(); } return typeLoader.load(classInformationAnnotation.get().getGenericTypes().get(index)); } }
@Override public void visitObject(ObjectType objectType) { if (!registeredTypes.contains(objectType)) { registeredTypes.add(objectType); objectType.getAnnotation(StereotypeTypeAnnotation.class).ifPresent(a -> a.resolveStereotypes(resolver)); objectType.getFields().forEach(f -> f.getValue().accept(this)); } }
@Override public void visitObject(ObjectType objectType) { if (isMap(objectType)) { objectType.getAnnotation(ClassInformationAnnotation.class) .filter(classInformation -> !classInformation.getGenericTypes().isEmpty()) .filter(classInformation -> !Objects.equals(classInformation.getGenericTypes().get(0), String.class.getName())) .ifPresent(classInformation -> problemsReporter.addError(new Problem(parameter, format( "Parameter '%s' is of type '%s' and its key type is not %s ", parameter.getName(), getType(objectType).getName(), String.class.getName())))); } }
@Override public void visitObject(ObjectType objectType) { if (objectType.getMetadataFormat() != JAVA) { return; } final Class<Object> clazz = getType(objectType).orElse(null); if (clazz == null || relativeClasses.contains(clazz)) { return; } Optional<ClassInformationAnnotation> classInformation = objectType.getAnnotation(ClassInformationAnnotation.class); if (classInformation.isPresent()) { classInformation.get().getGenericTypes() .forEach(generic -> relativeClasses.add(loadClass(generic, extensionClassLoader))); } relativeClasses.add(clazz); objectType.getFields().stream().forEach(objectFieldType -> objectFieldType.accept(this)); objectType.getOpenRestriction().ifPresent(t -> t.accept(this)); }
private List<XmlExtensionElementDocumentation> getTypesDocumentation(ExtensionModel extensionModel) { List<XmlExtensionElementDocumentation> types = new ArrayList<>(); extensionModel.getTypes().forEach(type -> ExtensionMetadataTypeUtils.getId(type) .ifPresent(id -> { XmlExtensionElementDocumentation element = new XmlExtensionElementDocumentation(); element.setName(id); element.setDescription(type.getAnnotation(DescriptionAnnotation.class) .map(DescriptionAnnotation::getValue).orElse("")); element.setParameters(type.getFields().stream() .map(f -> new XmlExtensionParameterDocumentation(getAlias(f), f.getAnnotation(DescriptionAnnotation.class) .map(DescriptionAnnotation::getValue).orElse(""))) .collect(toList())); types.add(element); })); return types; }
private void createWrappedObject(ObjectType objectType, ParameterObjectValue.Builder objectValue, ConfigLine config) { ConfigLine wrappedConfig = config.getChildren().get(0); DslSyntaxResolver wrappedElementResolver = resolvers.get(getNamespace(wrappedConfig)); Set<ObjectType> subTypes = context.getTypeCatalog().getSubTypes(objectType); if (!subTypes.isEmpty()) { subTypes.stream() .filter(subType -> wrappedElementResolver.resolve(subType) .map(dsl -> dsl.getElementName().equals(wrappedConfig.getIdentifier())) .orElse(false)) .findFirst() .ifPresent(subType -> createObjectValueFromType(subType, objectValue, wrappedConfig, wrappedElementResolver.resolve(subType).get())); } else if (objectType.getAnnotation(ExtensibleTypeAnnotation.class).isPresent()) { createObjectValueFromType(objectType, objectValue, wrappedConfig, wrappedElementResolver.resolve(objectType).get()); } }
@Override public void visitObject(ObjectType objectType) { if (objectType.getMetadataFormat() != JAVA) { return; } final String clazz = getId(objectType).orElse(null); if (clazz == null || relativeClasses.contains(clazz)) { return; } Optional<ClassInformationAnnotation> classInformation = objectType.getAnnotation(ClassInformationAnnotation.class); classInformation .ifPresent(classInformationAnnotation -> relativeClasses .addAll(classInformationAnnotation.getGenericTypes())); relativeClasses.add(clazz); objectType.getFields().forEach(objectFieldType -> objectFieldType.accept(this)); objectType.getOpenRestriction().ifPresent(t -> t.accept(this)); }
assertThat(subTypesModel.getBaseType().getAnnotation(TypeIdAnnotation.class).get().getValue(), is(Scheduler.class.getName()));