@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { ExtensionDeclarer extensionDeclarer = extensionLoadingContext.getExtensionDeclarer(); extensionDeclarer .getDeclaration() .getModelProperty(ExtensionTypeDescriptorModelProperty.class) .map(ExtensionTypeDescriptorModelProperty::getType) .flatMap(type -> type.getValueFromAnnotation(PrivilegedExport.class)) .ifPresent(valueFetcher -> { valueFetcher.getArrayValue(PrivilegedExport::artifacts).forEach(extensionDeclarer::withPrivilegedArtifact); valueFetcher.getArrayValue(PrivilegedExport::packages).forEach(extensionDeclarer::withPrivilegedPackage); }); } }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { Optional<ExtensionTypeDescriptorModelProperty> modelProperty = extensionLoadingContext.getExtensionDeclarer().getDeclaration() .getModelProperty(ExtensionTypeDescriptorModelProperty.class); modelProperty .map(ExtensionTypeDescriptorModelProperty::getType) .flatMap(type -> type.getValueFromAnnotation(Export.class)) .ifPresent(exportAnnotation -> { ExtensionDeclarer declarer = extensionLoadingContext.getExtensionDeclarer(); exportAnnotation.getClassArrayValue(Export::classes) .stream() .map(Type::asMetadataType) .forEach(type -> registerType(declarer, type)); exportAnnotation.getArrayValue(Export::resources).forEach(declarer::withResource); }); }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { ExtensionDeclarer declarer = extensionLoadingContext.getExtensionDeclarer(); ExtensionDeclaration extensionDeclaration = declarer.getDeclaration(); Optional<ExtensionTypeDescriptorModelProperty> implementingType = extensionDeclaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); if (!implementingType.isPresent()) { return; } Type type = implementingType.get().getType(); List<AnnotationValueFetcher<SubTypeMapping>> typeMappings = parseRepeatableAnnotation(type, SubTypeMapping.class, c -> ((SubTypesMapping) c).value()); if (!typeMappings.isEmpty()) { declareSubTypesMapping(declarer, typeMappings, extensionDeclaration.getName()); } }
protected void assertModelProperties(ExtensionDeclaration extensionDeclaration) { ImplementingTypeModelProperty implementingTypeModelProperty = extensionDeclaration.getModelProperty(ImplementingTypeModelProperty.class).get(); assertThat(implementingTypeModelProperty, is(notNullValue())); assertThat(HeisenbergExtension.class.isAssignableFrom(implementingTypeModelProperty.getType()), is(true)); }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { Optional<ExtensionTypeDescriptorModelProperty> property = extensionLoadingContext.getExtensionDeclarer().getDeclaration() .getModelProperty(ExtensionTypeDescriptorModelProperty.class); //TODO MULE-14397 - Improve Dynamic Metadata Enricher to enrich without requiring Classes if (property.isPresent() && property.get().getType().getDeclaringClass().isPresent()) { extensionType = property.get().getType(); new IdempotentDeclarationWalker() { @Override public void onSource(SourceDeclaration declaration) { enrichSourceMetadata(declaration); } @Override public void onOperation(OperationDeclaration declaration) { enrichOperationMetadata(declaration); } }.walk(extensionLoadingContext.getExtensionDeclarer().getDeclaration()); } }
extensionDeclaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); if (!extensionType.isPresent()) { return;
public void apply(ExtensionLoadingContext extensionLoadingContext) { ExtensionDeclaration extensionDeclaration = extensionLoadingContext.getExtensionDeclarer().getDeclaration(); Optional<GlobalElementComponentModelModelProperty> modelProperty = extensionDeclaration.getModelProperty(GlobalElementComponentModelModelProperty.class); new IdempotentDeclarationWalker() { @Override protected void onConfiguration(ConfigurationDeclaration declaration) { walkDeclaration(modelProperty, declaration.getAllParameters()); } @Override protected void onConnectionProvider(ConnectedDeclaration owner, ConnectionProviderDeclaration declaration) { if (owner instanceof ConfigurationDeclaration) { walkDeclaration(modelProperty, declaration.getAllParameters()); } } @Override protected void onOperation(OperationDeclaration declaration) { declaration.getModelProperty(OperationComponentModelModelProperty.class) .ifPresent(modelProperty -> { ComponentModel bodyComponentModel = modelProperty.getBodyComponentModel(); declaration.getAllParameters().stream() .filter(parameterDeclaration -> parameterDeclaration.getType() instanceof StringType) .forEach(parameterDeclaration -> traverseProperty(bodyComponentModel.getInnerComponents(), parameterDeclaration)); }); } }.walk(extensionDeclaration); }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { ExtensionDeclaration declaration = extensionLoadingContext.getExtensionDeclarer().getDeclaration(); String extensionNamespace = getExtensionsNamespace(declaration); Optional<ExtensionTypeDescriptorModelProperty> implementingType = declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); ErrorsModelFactory errorModelDescriber = new ErrorsModelFactory(extensionNamespace); errorModelDescriber.getErrorModels().forEach(declaration::addErrorModel); if (implementingType.isPresent() && implementingType.get().getType().getDeclaringClass().isPresent()) { Type extensionElement = implementingType.get().getType(); Optional<ErrorTypes> errorAnnotation = extensionElement.getAnnotation(ErrorTypes.class); List<Pair<ComponentDeclaration, MethodElement>> errorOperations = collectErrorOperations(declaration); if (errorAnnotation.isPresent()) { ErrorTypeDefinition<?>[] errorTypes = (ErrorTypeDefinition<?>[]) errorAnnotation.get().value().getEnumConstants(); if (errorTypes.length > 0) { ErrorsModelFactory operationErrorModelDescriber = new ErrorsModelFactory(errorTypes, extensionNamespace); operationErrorModelDescriber.getErrorModels().forEach(declaration::addErrorModel); errorOperations.stream().forEach(pair -> registerOperationErrorTypes(pair.getSecond(), pair.getFirst(), operationErrorModelDescriber, errorTypes, extensionElement)); } else { handleNoErrorTypes(extensionElement, errorOperations); } } else { handleNoErrorTypes(extensionElement, errorOperations); } } }
ExtensionDeclaration declaration = extensionLoadingContext.getExtensionDeclarer().getDeclaration(); Optional<ExtensionTypeDescriptorModelProperty> extensionType = declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); String extensionNamespace = getExtensionsNamespace(declaration); ClassTypeLoader typeLoader = ExtensionsTypeLoaderFactory.getDefault().createTypeLoader();
public void apply(ExtensionLoadingContext extensionLoadingContext) { ExtensionDeclarer extensionDeclarer = extensionLoadingContext.getExtensionDeclarer(); this.typeLoader = new DefaultExtensionsTypeLoaderFactory().createTypeLoader(extensionLoadingContext.getExtensionClassLoader()); ExtensionDeclaration declaration = extensionLoadingContext.getExtensionDeclarer().getDeclaration(); this.namespace = getStereotypePrefix(extensionDeclarer); this.processorParent = newStereotype(PROCESSOR.getType(), namespace).withParent(PROCESSOR).build(); this.sourceParent = newStereotype(SOURCE.getType(), namespace).withParent(SOURCE).build(); IdempotentDeclarationWalker enricher = declaration.getModelProperty(ImplementingTypeModelProperty.class).isPresent() ? getJavaBasedStereotypeEnricher() : getDefaultStereotypeEnricher(); enricher.walk(declaration); resolveDeclaredTypesStereotypes(declaration, namespace); }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { ExtensionDeclarer extensionDeclarer = extensionLoadingContext.getExtensionDeclarer(); extensionDeclarer .getDeclaration() .getModelProperty(ExtensionTypeDescriptorModelProperty.class) .map(ExtensionTypeDescriptorModelProperty::getType) .flatMap(type -> type.getValueFromAnnotation(PrivilegedExport.class)) .ifPresent(valueFetcher -> { valueFetcher.getArrayValue(PrivilegedExport::artifacts).forEach(extensionDeclarer::withPrivilegedArtifact); valueFetcher.getArrayValue(PrivilegedExport::packages).forEach(extensionDeclarer::withPrivilegedPackage); }); } }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { Optional<ExtensionTypeDescriptorModelProperty> modelProperty = extensionLoadingContext.getExtensionDeclarer().getDeclaration() .getModelProperty(ExtensionTypeDescriptorModelProperty.class); modelProperty .map(ExtensionTypeDescriptorModelProperty::getType) .flatMap(type -> type.getValueFromAnnotation(Export.class)) .ifPresent(exportAnnotation -> { ExtensionDeclarer declarer = extensionLoadingContext.getExtensionDeclarer(); exportAnnotation.getClassArrayValue(Export::classes) .stream() .map(Type::asMetadataType) .forEach(type -> registerType(declarer, type)); exportAnnotation.getArrayValue(Export::resources).forEach(declarer::withResource); }); }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { Optional<ExtensionTypeDescriptorModelProperty> property = extensionLoadingContext.getExtensionDeclarer().getDeclaration() .getModelProperty(ExtensionTypeDescriptorModelProperty.class); //TODO MULE-14397 - Improve Dynamic Metadata Enricher to enrich without requiring Classes if (property.isPresent() && property.get().getType().getDeclaringClass().isPresent()) { extensionType = property.get().getType(); new IdempotentDeclarationWalker() { @Override public void onSource(SourceDeclaration declaration) { enrichSourceMetadata(declaration); } @Override public void onOperation(OperationDeclaration declaration) { enrichOperationMetadata(declaration); } }.walk(extensionLoadingContext.getExtensionDeclarer().getDeclaration()); } }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { ExtensionDeclarer declarer = extensionLoadingContext.getExtensionDeclarer(); ExtensionDeclaration extensionDeclaration = declarer.getDeclaration(); Optional<ExtensionTypeDescriptorModelProperty> implementingType = extensionDeclaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); if (!implementingType.isPresent()) { return; } Type type = implementingType.get().getType(); List<AnnotationValueFetcher<SubTypeMapping>> typeMappings = parseRepeatableAnnotation(type, SubTypeMapping.class, c -> ((SubTypesMapping) c).value()); if (!typeMappings.isEmpty()) { declareSubTypesMapping(declarer, typeMappings, extensionDeclaration.getName()); } }
extensionDeclaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); if (!extensionType.isPresent()) { return;
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { ExtensionDeclaration declaration = extensionLoadingContext.getExtensionDeclarer().getDeclaration(); String extensionNamespace = getExtensionsNamespace(declaration); Optional<ExtensionTypeDescriptorModelProperty> implementingType = declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); ErrorsModelFactory errorModelDescriber = new ErrorsModelFactory(extensionNamespace); errorModelDescriber.getErrorModels().forEach(declaration::addErrorModel); if (implementingType.isPresent() && implementingType.get().getType().getDeclaringClass().isPresent()) { Type extensionElement = implementingType.get().getType(); Optional<ErrorTypes> errorAnnotation = extensionElement.getAnnotation(ErrorTypes.class); List<Pair<ComponentDeclaration, MethodElement>> errorOperations = collectErrorOperations(declaration); if (errorAnnotation.isPresent()) { ErrorTypeDefinition<?>[] errorTypes = (ErrorTypeDefinition<?>[]) errorAnnotation.get().value().getEnumConstants(); if (errorTypes.length > 0) { ErrorsModelFactory operationErrorModelDescriber = new ErrorsModelFactory(errorTypes, extensionNamespace); operationErrorModelDescriber.getErrorModels().forEach(declaration::addErrorModel); errorOperations.stream().forEach(pair -> registerOperationErrorTypes(pair.getSecond(), pair.getFirst(), operationErrorModelDescriber, errorTypes, extensionElement)); } else { handleNoErrorTypes(extensionElement, errorOperations); } } else { handleNoErrorTypes(extensionElement, errorOperations); } } }
ExtensionDeclaration declaration = extensionLoadingContext.getExtensionDeclarer().getDeclaration(); Optional<ExtensionTypeDescriptorModelProperty> extensionType = declaration.getModelProperty(ExtensionTypeDescriptorModelProperty.class); String extensionNamespace = getExtensionsNamespace(declaration); ClassTypeLoader typeLoader = ExtensionsTypeLoaderFactory.getDefault().createTypeLoader();
ExtensionDeclaration declaration = extensionLoadingContext.getExtensionDeclarer().getDeclaration(); Optional<ImplementingTypeModelProperty> implementingType = declaration.getModelProperty(ImplementingTypeModelProperty.class);