Search in sources :

Example 1 with ComponentModel

use of org.mule.runtime.api.meta.model.ComponentModel in project mule by mulesoft.

the class MetadataOperationTestCase method componentWithStaticInputs.

@Test
public void componentWithStaticInputs() throws IOException {
    location = Location.builder().globalName(TYPE_WITH_DECLARED_SUBTYPES_METADATA).addProcessorsPart().addIndexPart(0).build();
    ComponentMetadataDescriptor metadataDescriptor = getSuccessComponentDynamicMetadata(NULL_METADATA_KEY);
    final ComponentModel typedModel = metadataDescriptor.getModel();
    assertExpectedType(getParameter(typedModel, "plainShape"), Shape.class);
    assertExpectedType(getParameter(typedModel, "animal"), Animal.class);
    assertExpectedType(getParameter(typedModel, "rectangleSubtype"), Rectangle.class);
}
Also used : ComponentModel(org.mule.runtime.api.meta.model.ComponentModel) ComponentMetadataDescriptor(org.mule.runtime.api.metadata.descriptor.ComponentMetadataDescriptor) Test(org.junit.Test)

Example 2 with ComponentModel

use of org.mule.runtime.api.meta.model.ComponentModel in project mule by mulesoft.

the class MetadataOperationTestCase method pagedOperationMetadataTestCase.

@Test
public void pagedOperationMetadataTestCase() throws Exception {
    location = Location.builder().globalName(PAGED_OPERATION_METADATA).addProcessorsPart().addIndexPart(0).build();
    ComponentMetadataDescriptor metadataDescriptor = getSuccessComponentDynamicMetadata(NULL_METADATA_KEY);
    final ComponentModel typedModel = metadataDescriptor.getModel();
    assertExpectedType(getParameter(typedModel, "animal"), Animal.class);
}
Also used : ComponentModel(org.mule.runtime.api.meta.model.ComponentModel) ComponentMetadataDescriptor(org.mule.runtime.api.metadata.descriptor.ComponentMetadataDescriptor) Test(org.junit.Test)

Example 3 with ComponentModel

use of org.mule.runtime.api.meta.model.ComponentModel in project mule by mulesoft.

the class MetadataComponentModelValidator method validateResolversName.

private void validateResolversName(ComponentModel model, MetadataResolverFactory resolverFactory, Table<String, String, Class<?>> names, ProblemsReporter problemsReporter) {
    List<NamedTypeResolver> resolvers = new LinkedList<>();
    resolvers.addAll(getAllInputResolvers(model, resolverFactory));
    resolvers.add(resolverFactory.getOutputResolver());
    resolvers.stream().filter(r -> !r.getClass().equals(NullMetadataResolver.class)).forEach(r -> {
        if (isBlank(r.getResolverName())) {
            problemsReporter.addError(new Problem(model, format(EMPTY_RESOLVER_NAME, getComponentModelTypeName(model), model.getName(), r.getClass().getSimpleName(), "resolver")));
        } else {
            if (names.get(r.getCategoryName(), r.getResolverName()) != null && names.get(r.getCategoryName(), r.getResolverName()) != r.getClass()) {
                problemsReporter.addError(new Problem(model, format("%s [%s] specifies metadata resolvers with repeated name [%s] for the same category [%s]. Resolver names should be unique for a given category. Affected resolvers are '%s' and '%s'", getComponentModelTypeName(model), model.getName(), r.getResolverName(), r.getCategoryName(), names.get(r.getCategoryName(), r.getResolverName()).getSimpleName(), r.getClass().getSimpleName())));
            }
            names.put(r.getCategoryName(), r.getResolverName(), r.getClass());
        }
    });
}
Also used : OperationModel(org.mule.runtime.api.meta.model.operation.OperationModel) Message(org.mule.runtime.api.message.Message) NamedObject(org.mule.runtime.api.meta.NamedObject) HashBasedTable(com.google.common.collect.HashBasedTable) MetadataKeyIdModelProperty(org.mule.runtime.extension.api.property.MetadataKeyIdModelProperty) SourceModel(org.mule.runtime.api.meta.model.source.SourceModel) ModelLoaderUtils.isScope(org.mule.runtime.module.extension.internal.loader.utils.ModelLoaderUtils.isScope) ArrayType(org.mule.metadata.api.model.ArrayType) MetadataKeyPartModelProperty(org.mule.runtime.extension.api.property.MetadataKeyPartModelProperty) Map(java.util.Map) StringUtils(org.mule.runtime.core.api.util.StringUtils) Collectors.toSet(java.util.stream.Collectors.toSet) ConnectableComponentModel(org.mule.runtime.api.meta.model.ConnectableComponentModel) ExtensionMetadataTypeUtils.isMap(org.mule.runtime.extension.api.util.ExtensionMetadataTypeUtils.isMap) ObjectType(org.mule.metadata.api.model.ObjectType) OutputTypeResolver(org.mule.runtime.api.metadata.resolving.OutputTypeResolver) ProblemsReporter(org.mule.runtime.extension.api.loader.ProblemsReporter) InputTypeResolver(org.mule.runtime.api.metadata.resolving.InputTypeResolver) Set(java.util.Set) String.format(java.lang.String.format) MetadataTypeVisitor(org.mule.metadata.api.visitor.MetadataTypeVisitor) MuleExtensionUtils(org.mule.runtime.module.extension.internal.util.MuleExtensionUtils) Serializable(java.io.Serializable) List(java.util.List) HasOperationModels(org.mule.runtime.api.meta.model.operation.HasOperationModels) NameUtils.getComponentModelTypeName(org.mule.runtime.extension.api.util.NameUtils.getComponentModelTypeName) MetadataType(org.mule.metadata.api.model.MetadataType) Optional(java.util.Optional) ExtensionOperationDescriptorModelProperty(org.mule.runtime.module.extension.internal.loader.java.type.property.ExtensionOperationDescriptorModelProperty) ParameterModel(org.mule.runtime.api.meta.model.parameter.ParameterModel) ComponentModel(org.mule.runtime.api.meta.model.ComponentModel) ExtensionTypeDescriptorModelProperty(org.mule.runtime.module.extension.internal.loader.java.type.property.ExtensionTypeDescriptorModelProperty) CustomDefinedStaticTypeAnnotation(org.mule.runtime.module.extension.internal.loader.annotations.CustomDefinedStaticTypeAnnotation) StringUtils.join(org.apache.commons.lang3.StringUtils.join) NullMetadataResolver(org.mule.runtime.extension.api.metadata.NullMetadataResolver) Problem(org.mule.runtime.extension.api.loader.Problem) LinkedList(java.util.LinkedList) MetadataResolverUtils.isNullResolver(org.mule.runtime.extension.api.metadata.MetadataResolverUtils.isNullResolver) ExtensionModelValidator(org.mule.runtime.extension.api.loader.ExtensionModelValidator) MetadataTypeUtils.isVoid(org.mule.metadata.api.utils.MetadataTypeUtils.isVoid) MetadataResolverUtils.getAllResolvers(org.mule.runtime.extension.api.metadata.MetadataResolverUtils.getAllResolvers) MetadataTypeUtils.isCollection(org.mule.metadata.api.utils.MetadataTypeUtils.isCollection) ExtensionModel(org.mule.runtime.api.meta.model.ExtensionModel) ModelLoaderUtils.isRouter(org.mule.runtime.module.extension.internal.loader.utils.ModelLoaderUtils.isRouter) Collectors.toList(java.util.stream.Collectors.toList) ExtensionMetadataTypeUtils.getType(org.mule.runtime.extension.api.util.ExtensionMetadataTypeUtils.getType) ExtensionMetadataTypeUtils(org.mule.runtime.extension.api.util.ExtensionMetadataTypeUtils) StringUtils.isBlank(org.apache.commons.lang3.StringUtils.isBlank) ExtensionWalker(org.mule.runtime.api.meta.model.util.ExtensionWalker) MetadataResolverFactory(org.mule.runtime.extension.api.metadata.MetadataResolverFactory) NamedTypeResolver(org.mule.runtime.api.metadata.resolving.NamedTypeResolver) Table(com.google.common.collect.Table) HasSourceModels(org.mule.runtime.api.meta.model.source.HasSourceModels) NullMetadataResolver(org.mule.runtime.extension.api.metadata.NullMetadataResolver) NamedTypeResolver(org.mule.runtime.api.metadata.resolving.NamedTypeResolver) Problem(org.mule.runtime.extension.api.loader.Problem) LinkedList(java.util.LinkedList)

Example 4 with ComponentModel

use of org.mule.runtime.api.meta.model.ComponentModel in project mule by mulesoft.

the class DefaultXmlArtifactDeclarationLoader method getComponentDeclaringWalker.

private ExtensionWalker getComponentDeclaringWalker(final Consumer<ComponentElementDeclaration> declarationConsumer, final ConfigLine line, final ElementDeclarer extensionElementsDeclarer) {
    final DslSyntaxResolver dsl = resolvers.get(getNamespace(line));
    return new ExtensionWalker() {

        @Override
        protected void onOperation(HasOperationModels owner, OperationModel model) {
            if (!model.getName().equals(TRANSFORM_IDENTIFIER)) {
                declareComponentModel(line, model, extensionElementsDeclarer::newOperation).ifPresent(declarer -> {
                    declarationConsumer.accept((ComponentElementDeclaration) declarer.getDeclaration());
                    stop();
                });
            } else {
                declareTransform(model);
            }
        }

        @Override
        protected void onSource(HasSourceModels owner, SourceModel model) {
            declareComponentModel(line, model, extensionElementsDeclarer::newSource).ifPresent(declarer -> {
                final DslElementSyntax elementDsl = dsl.resolve(model);
                model.getSuccessCallback().ifPresent(cb -> declareParameterizedComponent(cb, elementDsl, declarer, line.getConfigAttributes(), line.getChildren()));
                model.getErrorCallback().ifPresent(cb -> declareParameterizedComponent(cb, elementDsl, declarer, line.getConfigAttributes(), line.getChildren()));
                declarationConsumer.accept((ComponentElementDeclaration) declarer.getDeclaration());
                stop();
            });
        }

        @Override
        protected void onConstruct(HasConstructModels owner, ConstructModel model) {
            declareComponentModel(line, model, extensionElementsDeclarer::newConstruct).ifPresent(declarer -> {
                declarationConsumer.accept((ComponentElementDeclaration) declarer.getDeclaration());
                stop();
            });
        }

        private void declareTransform(ComponentModel model) {
            final DslElementSyntax elementDsl = dsl.resolve(model);
            if (model.getName().equals(TRANSFORM_IDENTIFIER) && elementDsl.getElementName().equals(line.getIdentifier())) {
                ComponentElementDeclarer transform = extensionElementsDeclarer.newOperation(TRANSFORM_IDENTIFIER);
                line.getChildren().stream().filter(c -> c.getIdentifier().equals("message")).findFirst().ifPresent(messageConfig -> {
                    ParameterGroupElementDeclarer messageGroup = newParameterGroup("Message");
                    messageConfig.getChildren().stream().filter(c -> c.getIdentifier().equals("set-payload")).findFirst().ifPresent(payloadConfig -> {
                        ParameterObjectValue.Builder payload = newObjectValue();
                        populateTransformScriptParameter(payloadConfig, payload);
                        messageGroup.withParameter("setPayload", payload.build());
                    });
                    messageConfig.getChildren().stream().filter(c -> c.getIdentifier().equals("set-attributes")).findFirst().ifPresent(attributesConfig -> {
                        ParameterObjectValue.Builder attributes = newObjectValue();
                        populateTransformScriptParameter(attributesConfig, attributes);
                        messageGroup.withParameter("setAttributes", attributes.build());
                    });
                    transform.withParameterGroup(messageGroup.getDeclaration());
                });
                line.getChildren().stream().filter(c -> c.getIdentifier().equals("variables")).findFirst().ifPresent(variablesConfig -> {
                    ParameterGroupElementDeclarer variablesGroup = newParameterGroup("Set Variables");
                    ParameterListValue.Builder variables = newListValue();
                    variablesConfig.getChildren().forEach(variableConfig -> {
                        ParameterObjectValue.Builder variable = newObjectValue();
                        variable.withParameter(TRANSFORM_VARIABLE_NAME, variableConfig.getConfigAttributes().get(TRANSFORM_VARIABLE_NAME).getValue());
                        populateTransformScriptParameter(variableConfig, variable);
                        variables.withValue(variable.build());
                    });
                    transform.withParameterGroup(variablesGroup.withParameter("setVariables", variables.build()).getDeclaration());
                });
                line.getConfigAttributes().values().forEach(a -> transform.withCustomParameter(a.getName(), a.getValue()));
                declarationConsumer.accept((ComponentElementDeclaration) transform.getDeclaration());
                stop();
            }
        }
    };
}
Also used : HasOperationModels(org.mule.runtime.api.meta.model.operation.HasOperationModels) ParameterListValue(org.mule.runtime.app.declaration.api.fluent.ParameterListValue) ExtensionWalker(org.mule.runtime.api.meta.model.util.ExtensionWalker) DslSyntaxResolver(org.mule.runtime.extension.api.dsl.syntax.resolver.DslSyntaxResolver) ParameterGroupElementDeclarer(org.mule.runtime.app.declaration.api.fluent.ParameterGroupElementDeclarer) SourceModel(org.mule.runtime.api.meta.model.source.SourceModel) ConstructModel(org.mule.runtime.api.meta.model.construct.ConstructModel) ComponentElementDeclarer(org.mule.runtime.app.declaration.api.fluent.ComponentElementDeclarer) DslElementSyntax(org.mule.runtime.extension.api.dsl.syntax.DslElementSyntax) HasConstructModels(org.mule.runtime.api.meta.model.construct.HasConstructModels) ComponentModel(org.mule.runtime.api.meta.model.ComponentModel) ParameterObjectValue(org.mule.runtime.app.declaration.api.fluent.ParameterObjectValue) HasSourceModels(org.mule.runtime.api.meta.model.source.HasSourceModels) OperationModel(org.mule.runtime.api.meta.model.operation.OperationModel)

Example 5 with ComponentModel

use of org.mule.runtime.api.meta.model.ComponentModel in project mule by mulesoft.

the class DefaultXmlDslElementModelConverter method asXml.

/**
 * {@inheritDoc}
 */
@Override
public Element asXml(DslElementModel elementModel) {
    Object model = elementModel.getModel();
    checkArgument(model instanceof ConfigurationModel || model instanceof ComponentModel || model instanceof MetadataType, "The element must be either a MetadataType, ConfigurationModel or a ComponentModel");
    DslElementSyntax dsl = elementModel.getDsl();
    Element componentRoot = createElement(dsl, elementModel.getConfiguration());
    if (isEETransform(componentRoot)) {
        return populateEETransform(elementModel);
    }
    writeApplicationElement(componentRoot, elementModel, componentRoot);
    return componentRoot;
}
Also used : ConfigurationModel(org.mule.runtime.api.meta.model.config.ConfigurationModel) DslElementSyntax(org.mule.runtime.extension.api.dsl.syntax.DslElementSyntax) Element(org.w3c.dom.Element) ComponentModel(org.mule.runtime.api.meta.model.ComponentModel) MetadataType(org.mule.metadata.api.model.MetadataType)

Aggregations

ComponentModel (org.mule.runtime.api.meta.model.ComponentModel)12 ExtensionModel (org.mule.runtime.api.meta.model.ExtensionModel)5 List (java.util.List)4 Optional (java.util.Optional)4 String.format (java.lang.String.format)3 Test (org.junit.Test)3 ConfigurationInstance (org.mule.runtime.extension.api.runtime.config.ConfigurationInstance)3 Map (java.util.Map)2 Optional.empty (java.util.Optional.empty)2 Optional.of (java.util.Optional.of)2 Set (java.util.Set)2 Collectors.toList (java.util.stream.Collectors.toList)2 StringUtils.isBlank (org.apache.commons.lang3.StringUtils.isBlank)2 MetadataType (org.mule.metadata.api.model.MetadataType)2 Registry (org.mule.runtime.api.artifact.Registry)2 MuleException (org.mule.runtime.api.exception.MuleException)2 InitialisationException (org.mule.runtime.api.lifecycle.InitialisationException)2 HasOperationModels (org.mule.runtime.api.meta.model.operation.HasOperationModels)2 OperationModel (org.mule.runtime.api.meta.model.operation.OperationModel)2 ParameterGroupModel (org.mule.runtime.api.meta.model.parameter.ParameterGroupModel)2