use of org.mule.runtime.api.meta.model.config.ConfigurationModel in project mule by mulesoft.
the class XmlExtensionLoaderTestCase method testModuleWrongBodyContent.
@Test
public void testModuleWrongBodyContent() {
String modulePath = "validation/module-wrong-body-content.xml";
if (validateXml) {
try {
getExtensionModelFrom(modulePath);
fail("Should not have reached up to this point, the XML is invalid and the ExtensionModel should not be generated.");
} catch (MuleRuntimeException e) {
assertThat(e.getMessage(), containsString("There were '2' error"));
assertThat(e.getMessage(), containsString("Invalid content was found starting with element 'mule:fake-request-config'"));
assertThat(e.getMessage(), containsString("Invalid content was found starting with element 'mule:non-existing-operation'"));
}
} else {
ExtensionModel extensionModel = getExtensionModelFrom(modulePath);
assertThat(extensionModel.getName(), is("module-wrong-body-content"));
assertThat(extensionModel.getOperationModels().size(), is(0));
assertThat(extensionModel.getConfigurationModels().size(), is(1));
ConfigurationModel configurationModel = extensionModel.getConfigurationModels().get(0);
assertThat(configurationModel.getName(), is(CONFIG_NAME));
assertThat(configurationModel.getAllParameterModels().size(), is(2));
Optional<GlobalElementComponentModelModelProperty> globalElementComponentModelModelProperty = configurationModel.getModelProperty(GlobalElementComponentModelModelProperty.class);
assertThat(globalElementComponentModelModelProperty.isPresent(), is(true));
assertThat(globalElementComponentModelModelProperty.get().getGlobalElements().size(), is(1));
Optional<OperationModel> operationModelOptional = configurationModel.getOperationModel("operation-with-non-valid-body");
assertThat(operationModelOptional.isPresent(), is(true));
final OperationModel operationModel = operationModelOptional.get();
assertThat(operationModel.getAllParameterModels().size(), is(0));
Optional<OperationComponentModelModelProperty> modelProperty = operationModel.getModelProperty(OperationComponentModelModelProperty.class);
assertThat(modelProperty.isPresent(), is(true));
assertThat(modelProperty.get().getBodyComponentModel().getInnerComponents().size(), is(1));
assertThat(operationModel.getOutput().getType().getMetadataFormat(), is(MetadataFormat.JAVA));
assertThat(operationModel.getOutput().getType(), instanceOf(VoidType.class));
assertThat(operationModel.getOutputAttributes().getType().getMetadataFormat(), is(MetadataFormat.JAVA));
assertThat(operationModel.getOutputAttributes().getType(), instanceOf(VoidType.class));
assertThat(operationModel.getErrorModels().size(), is(0));
}
}
use of org.mule.runtime.api.meta.model.config.ConfigurationModel in project mule by mulesoft.
the class XmlExtensionLoaderTestCase method testModuleProperties.
@Test
public void testModuleProperties() {
String modulePath = "modules/module-properties.xml";
ExtensionModel extensionModel = getExtensionModelFrom(modulePath);
assertThat(extensionModel.getName(), is("module-properties"));
assertThat(extensionModel.getConfigurationModels().size(), is(1));
ConfigurationModel configurationModel = extensionModel.getConfigurationModels().get(0);
assertThat(configurationModel.getName(), is(CONFIG_NAME));
assertThat(configurationModel.getAllParameterModels().size(), is(5));
assertThat(configurationModel.getAllParameterModels().get(0).getName(), is("configParam"));
assertThat(configurationModel.getAllParameterModels().get(1).getName(), is("defaultConfigParam"));
Optional<GlobalElementComponentModelModelProperty> globalElementComponentModelModelProperty = configurationModel.getModelProperty(GlobalElementComponentModelModelProperty.class);
assertThat(globalElementComponentModelModelProperty.isPresent(), is(true));
assertThat(globalElementComponentModelModelProperty.get().getGlobalElements().size(), is(0));
assertThat(configurationModel.getOperationModels().size(), is(7));
Optional<OperationModel> operationModel = configurationModel.getOperationModel("set-payload-add-param-and-property-values");
assertThat(operationModel.isPresent(), is(true));
assertThat(operationModel.get().getAllParameterModels().size(), is(3));
assertThat(operationModel.get().getAllParameterModels().get(0).getName(), is("value1"));
assertThat(operationModel.get().getAllParameterModels().get(1).getName(), is(TARGET_PARAMETER_NAME));
assertThat(operationModel.get().getAllParameterModels().get(2).getName(), is(TARGET_VALUE_PARAMETER_NAME));
Optional<OperationComponentModelModelProperty> modelProperty = operationModel.get().getModelProperty(OperationComponentModelModelProperty.class);
assertThat(modelProperty.isPresent(), is(true));
assertThat(modelProperty.get().getBodyComponentModel().getInnerComponents().size(), is(1));
}
use of org.mule.runtime.api.meta.model.config.ConfigurationModel in project mule by mulesoft.
the class XmlExtensionLoaderTestCase method testModuleDocumentation.
@Test
public void testModuleDocumentation() throws IOException {
String modulePath = "modules/module-documentation.xml";
ExtensionModel extensionModel = getExtensionModelFrom(modulePath);
assertThat(extensionModel.getName(), is("module-documentation"));
assertThat(extensionModel.getDescription(), is("Documentation for the connector"));
assertThat(extensionModel.getConfigurationModels().size(), is(1));
ConfigurationModel configurationModel = extensionModel.getConfigurationModels().get(0);
assertThat(configurationModel.getName(), is(CONFIG_NAME));
final List<ParameterModel> configurationParameterModels = configurationModel.getAllParameterModels();
assertThat(configurationParameterModels.size(), is(5));
assertThat(configurationParameterModels.get(0).getName(), is("aPropertyWithDoc"));
assertThat(configurationParameterModels.get(0).getDescription(), is("Documentation for the property"));
assertThat(configurationParameterModels.get(1).getName(), is("aHiddenPropertyWithDoc"));
assertThat(configurationParameterModels.get(1).getDescription(), is("Documentation for the hidden property"));
assertThat(configurationParameterModels.get(1).getLayoutModel().isPresent(), is(true));
assertThat(configurationParameterModels.get(1).getLayoutModel().get().isPassword(), is(true));
assertThat(configurationParameterModels.get(2).getName(), is("aPropertyDisplayModel"));
assertThat(configurationParameterModels.get(2).getDescription(), is(""));
assertThat(configurationParameterModels.get(2).getDisplayModel().isPresent(), is(true));
assertThat(configurationParameterModels.get(2).getDisplayModel().get().getDisplayName(), is("A pretty name property"));
assertThat(configurationParameterModels.get(2).getDisplayModel().get().getSummary(), is("a summary tooltip property"));
assertThat(configurationParameterModels.get(2).getDisplayModel().get().getExample(), is("SOME_PROPERTY_SAMPLE_DATA"));
assertThat(configurationParameterModels.get(3).getName(), is("aPropertyWithPlacement"));
assertThat(configurationParameterModels.get(3).getDescription(), is(""));
assertThat(configurationParameterModels.get(3).getLayoutModel().isPresent(), is(true));
assertThat(configurationParameterModels.get(3).getLayoutModel().get().getTabName().get(), is("Not General Property"));
assertThat(configurationParameterModels.get(3).getLayoutModel().get().getOrder().get(), is(42));
Optional<GlobalElementComponentModelModelProperty> globalElementComponentModelModelProperty = configurationModel.getModelProperty(GlobalElementComponentModelModelProperty.class);
assertThat(globalElementComponentModelModelProperty.isPresent(), is(true));
assertThat(globalElementComponentModelModelProperty.get().getGlobalElements().size(), is(0));
assertThat(configurationModel.getOperationModels().size(), is(1));
Optional<OperationModel> operationModelOptional = configurationModel.getOperationModel("operation-with-doc");
assertThat(operationModelOptional.isPresent(), is(true));
final OperationModel operationModel = operationModelOptional.get();
assertThat(operationModel.getDescription(), is("Documentation for the operation"));
assertThat(operationModel.getDisplayModel().isPresent(), is(true));
assertThat(operationModel.getDisplayModel().get().getDisplayName(), is("A pretty name for the operation"));
assertThat(operationModel.getDisplayModel().get().getSummary(), is("a summary tooltip operation"));
assertThat(operationModel.getDisplayModel().get().getExample(), is("SOME_OPERATION_SAMPLE_DATA"));
final List<ParameterModel> allParameterModels = operationModel.getAllParameterModels();
assertThat(allParameterModels.size(), is(6));
assertThat(allParameterModels.get(0).getName(), is("paramWithDoc"));
assertThat(allParameterModels.get(0).getDescription(), is("Documentation for the parameter"));
assertThat(allParameterModels.get(0).getLayoutModel().get().getTabName().get(), is(Placement.DEFAULT_TAB));
assertThat(allParameterModels.get(0).getLayoutModel().get().getOrder().isPresent(), is(false));
assertThat(allParameterModels.get(1).getName(), is("hiddenParamWithDoc"));
assertThat(allParameterModels.get(1).getDescription(), is("Documentation for the hidden parameter"));
assertThat(allParameterModels.get(1).getLayoutModel().isPresent(), is(true));
assertThat(allParameterModels.get(1).getLayoutModel().get().isPassword(), is(true));
assertThat(allParameterModels.get(2).getName(), is("paramDisplayModel"));
assertThat(allParameterModels.get(2).getDescription(), is(""));
assertThat(allParameterModels.get(2).getDisplayModel().isPresent(), is(true));
assertThat(allParameterModels.get(2).getDisplayModel().get().getDisplayName(), is("A pretty name parameter"));
assertThat(allParameterModels.get(2).getDisplayModel().get().getSummary(), is("a summary tooltip parameter"));
assertThat(allParameterModels.get(2).getDisplayModel().get().getExample(), is("SOME_PARAMETER_SAMPLE_DATA"));
assertThat(allParameterModels.get(3).getName(), is("paramWithPlacement"));
assertThat(allParameterModels.get(3).getDescription(), is(""));
assertThat(allParameterModels.get(3).getLayoutModel().isPresent(), is(true));
assertThat(allParameterModels.get(3).getLayoutModel().get().getTabName().get(), is("Not General Parameter"));
assertThat(allParameterModels.get(3).getLayoutModel().get().getOrder().get(), is(17));
assertThat(allParameterModels.get(4).getName(), is(TARGET_PARAMETER_NAME));
assertThat(allParameterModels.get(4).getDescription(), is(TARGET_PARAMETER_DESCRIPTION));
assertThat(allParameterModels.get(5).getName(), is(TARGET_VALUE_PARAMETER_NAME));
assertThat(allParameterModels.get(5).getDescription(), is(TARGET_VALUE_PARAMETER_DESCRIPTION));
assertThat(operationModel.getOutput().getDescription(), is("Documentation for the output"));
assertThat(operationModel.getOutputAttributes().getDescription(), is("Documentation for the output attributes"));
assertThat(operationModel.getErrorModels().size(), is(2));
assertThat(operationModel.getErrorModels(), containsInAnyOrder(ErrorModelBuilder.newError("CUSTOM_ERROR_HERE", extensionModel.getXmlDslModel().getPrefix().toUpperCase()).withParent(ErrorModelBuilder.newError(ANY).build()).build(), ErrorModelBuilder.newError("ANOTHER_CUSTOM_ERROR_HERE", extensionModel.getXmlDslModel().getPrefix().toUpperCase()).withParent(ErrorModelBuilder.newError(ANY).build()).build()));
Optional<OperationComponentModelModelProperty> modelProperty = operationModel.getModelProperty(OperationComponentModelModelProperty.class);
assertThat(modelProperty.isPresent(), is(true));
assertThat(modelProperty.get().getBodyComponentModel().getInnerComponents().size(), is(2));
}
use of org.mule.runtime.api.meta.model.config.ConfigurationModel in project mule by mulesoft.
the class DefaultXmlArtifactDeclarationLoader method declareAsConnectionProvider.
private boolean declareAsConnectionProvider(ExtensionModel ownerExtension, ConfigurationModel model, ConfigurationElementDeclarer configurationDeclarer, ConfigLine config, ElementDeclarer extensionElementsDeclarer) {
final DslSyntaxResolver dsl = resolvers.get(getNamespace(config));
Optional<ConnectionProviderModel> connectionProvider = model.getConnectionProviders().stream().filter(cp -> dsl.resolve(cp).getElementName().equals(config.getIdentifier())).findFirst();
if (!connectionProvider.isPresent()) {
connectionProvider = ownerExtension.getConnectionProviders().stream().filter(cp -> dsl.resolve(cp).getElementName().equals(config.getIdentifier())).findFirst();
}
if (!connectionProvider.isPresent()) {
return true;
}
ConnectionProviderModel providerModel = connectionProvider.get();
ConnectionElementDeclarer connectionDeclarer = extensionElementsDeclarer.newConnection(providerModel.getName());
declareParameterizedComponent(providerModel, dsl.resolve(providerModel), connectionDeclarer, config.getConfigAttributes(), config.getChildren());
configurationDeclarer.withConnection(connectionDeclarer.getDeclaration());
return false;
}
use of org.mule.runtime.api.meta.model.config.ConfigurationModel in project mule by mulesoft.
the class DefaultXmlArtifactDeclarationLoader method declareElement.
private void declareElement(final ConfigLine configLine, final ArtifactDeclarer artifactDeclarer) {
final ExtensionModel ownerExtension = getExtensionModel(configLine);
final ElementDeclarer extensionElementsDeclarer = forExtension(ownerExtension.getName());
final DslSyntaxResolver dsl = resolvers.get(getNamespace(configLine));
Reference<Boolean> alreadyDeclared = new Reference<>(false);
new ExtensionWalker() {
@Override
protected void onConstruct(HasConstructModels owner, ConstructModel model) {
declareComponentModel(configLine, model, extensionElementsDeclarer::newConstruct).ifPresent(declarer -> {
getDeclaredName(configLine).ifPresent(((ConstructElementDeclarer) declarer)::withRefName);
artifactDeclarer.withGlobalElement((GlobalElementDeclaration) declarer.getDeclaration());
alreadyDeclared.set(true);
stop();
});
}
@Override
protected void onConfiguration(ConfigurationModel model) {
final DslElementSyntax elementDsl = dsl.resolve(model);
if (elementDsl.getElementName().equals(configLine.getIdentifier())) {
ConfigurationElementDeclarer configurationDeclarer = extensionElementsDeclarer.newConfiguration(model.getName());
getDeclaredName(configLine).ifPresent(configurationDeclarer::withRefName);
Map<String, SimpleConfigAttribute> attributes = configLine.getConfigAttributes().values().stream().filter(a -> !a.getName().equals(NAME_ATTRIBUTE_NAME)).collect(toMap(SimpleConfigAttribute::getName, a -> a));
List<ConfigLine> configComplexParameters = configLine.getChildren().stream().filter(config -> declareAsConnectionProvider(ownerExtension, model, configurationDeclarer, config, extensionElementsDeclarer)).collect(toList());
declareParameterizedComponent(model, elementDsl, configurationDeclarer, attributes, configComplexParameters);
artifactDeclarer.withGlobalElement(configurationDeclarer.getDeclaration());
alreadyDeclared.set(true);
stop();
}
}
}.walk(ownerExtension);
if (!alreadyDeclared.get()) {
ownerExtension.getTypes().stream().filter(type -> dsl.resolve(type).map(typeDsl -> typeDsl.getElementName().equals(configLine.getIdentifier())).orElse(false)).findFirst().ifPresent(type -> {
TopLevelParameterDeclarer topLevelParameter = extensionElementsDeclarer.newGlobalParameter(configLine.getIdentifier());
getDeclaredName(configLine).ifPresent(topLevelParameter::withRefName);
type.accept(getParameterDeclarerVisitor(configLine, dsl.resolve(type).get(), value -> topLevelParameter.withValue((ParameterObjectValue) value)));
artifactDeclarer.withGlobalElement(topLevelParameter.getDeclaration());
});
}
}
Aggregations