@Test public void assertDeclaration() { assertThat(extensionModel.getName(), is(EXTENSION_NAME)); assertThat(extensionModel.getDescription(), is(EXTENSION_DESCRIPTION)); assertThat(extensionModel.getVersion(), is(VERSION)); assertThat(extensionModel.getConfigurationModels(), hasSize(2)); assertThat(extensionModel.getVendor(), is(VENDOR)); assertThat(extensionModel.getOperationModels(), hasSize(1)); assertThat(extensionModel.getConnectionProviders(), is(empty())); assertThat(extensionModel.getSourceModels(), is(empty())); }
private Set<String> getDependenciesOrFail(ExtensionModel extensionModel) { return extensionModel.getModelProperty(XmlExtensionModelProperty.class) .orElseThrow(() -> new IllegalArgumentException(format("The current extension [%s] (namespace [%s]) does not have the macro expansion model property, it should have never reach here.", extensionModel.getName(), extensionModel.getXmlDslModel().getNamespace()))) .getNamespacesDependencies(); }
private Optional<DslElementModel<ObjectType>> resolveBasedOnTypes(ComponentConfiguration configuration) { return currentExtension.getTypes().stream() .map(type -> resolveBasedOnType(type, configuration, new ArrayDeque<>())) .filter(Optional::isPresent) .map(Optional::get) .findFirst(); }
private Optional<String> defaultGlobalElementName() { Optional<String> defaultElementName = empty(); if (extensionModel.getConfigurationModels().isEmpty() && extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class).isPresent()) { defaultElementName = extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class) .map(globalElementComponentModelModelProperty -> format( DEFAULT_CONFIG_GLOBAL_ELEMENT_SUFFIX, extensionModel.getName())); } return defaultElementName; }
@Override public Optional<GeneratedResource> generateResource(ExtensionModel extensionModel) { Set<ImportedTypeModel> importedTypes = extensionModel.getImportedTypes(); DslResolvingContext dslContext = importedTypes.isEmpty() ? new NullDslResolvingContext() : new ClasspathBasedDslContext(extensionModel.getModelProperty(ImplementingTypeModelProperty.class) .map(mp -> mp.getType().getClassLoader()) .orElse(Thread.currentThread().getContextClassLoader())); return generateResource(extensionModel, dslContext); }
@Override public void write(JsonWriter out, ExtensionModel model) throws IOException { out.beginObject(); out.name(NAME).value(model.getName()); out.name(DESCRIPTION).value(model.getDescription()); out.name(VERSION).value(model.getVersion()); out.name(VENDOR).value(model.getVendor()); writeWithDelegate(model.getCategory(), CATEGORY, out, new TypeToken<Category>() {}); writeWithDelegate(model.getXmlDslModel(), XML_DSL, out, new TypeToken<XmlDslModel>() {}); writeWithDelegate(model.getResources(), RESOURCES, out, new TypeToken<Set<String>>() {}); writeWithDelegate(model.getSubTypes(), SUB_TYPES, out, new TypeToken<Set<SubTypesModel>>() {}); writeWithDelegate(model.getPrivilegedPackages(), PRIVILEGED_PACKAGES, out, new TypeToken<Set<String>>() {}); writeWithDelegate(model.getPrivilegedArtifacts(), PRIVILEGED_ARTIFACTS, out, new TypeToken<Set<String>>() {}); writeWithDelegate(model.getExternalLibraryModels(), EXTERNAL_LIBRARIES, out, new TypeToken<Set<ExternalLibraryModel>>() {}); writeImportedTypes(out, model.getImportedTypes()); writeWithDelegate(model.getDisplayModel().orElse(null), DISPLAY_MODEL, out, new TypeToken<DisplayModel>() {}); writeWithDelegate(model.getConfigurationModels(), CONFIGURATIONS, out, new TypeToken<List<ConfigurationModel>>() {}); writeWithDelegate(model.getOperationModels(), OPERATIONS, out, new TypeToken<List<OperationModel>>() {}); writeWithDelegate(model.getFunctionModels(), FUNCTIONS, out, new TypeToken<List<FunctionModel>>() {}); writeWithDelegate(model.getConstructModels(), CONSTRUCTS, out, new TypeToken<List<ConstructModel>>() {}); writeWithDelegate(model.getConnectionProviders(), CONNECTION_PROVIDERS, out, new TypeToken<List<ConnectionProviderModel>>() {}); writeWithDelegate(model.getSourceModels(), MESSAGE_SOURCES, out, new TypeToken<List<SourceModel>>() {}); notificationModelDelegate.writeNotifications(model.getNotificationModels(), out); errorModelDelegate.writeErrors(model.getErrorModels(), out); writeExtensionLevelModelProperties(out, model); writeTypes(TYPES, out, model.getTypes()); out.endObject(); }
@Test public void otherModels() { assertThat(coreExtensionModel.getResources(), empty()); assertThat(coreExtensionModel.getSubTypes(), hasSize(1)); SubTypesModel subTypesModel = coreExtensionModel.getSubTypes().iterator().next(); assertThat(subTypesModel.getBaseType().getAnnotation(TypeIdAnnotation.class).get().getValue(), is(Scheduler.class.getName())); assertThat(cronSchedulerType.getFieldByName("timeZone").get().getValue(), instanceOf(DefaultStringType.class)); assertThat(coreExtensionModel.getExternalLibraryModels(), empty()); assertThat(coreExtensionModel.getImportedTypes(), empty()); assertThat(coreExtensionModel.getConfigurationModels(), empty()); assertThat(coreExtensionModel.getOperationModels(), hasSize(8)); assertThat(coreExtensionModel.getConstructModels(), hasSize(15)); assertThat(coreExtensionModel.getConnectionProviders(), empty()); assertThat(coreExtensionModel.getSourceModels(), hasSize(1)); assertThat(coreExtensionModel.getErrorModels(), hasItem(newError(TRANSFORMATION).withParent(errorMuleAny).build())); assertThat(coreExtensionModel.getTypes(), hasSize(5));
@Before public void doSetup() { when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); when(extensionModel.getConfigurationModels()).thenReturn(emptyList()); when(extensionModel.getConstructModels()).thenReturn(emptyList()); when(extensionModel.getFunctionModels()).thenReturn(emptyList()); when(extensionModel.getConnectionProviders()).thenReturn(emptyList()); when(extensionModel.getSourceModels()).thenReturn(emptyList()); when(extensionModel.getDeprecationModel()).thenReturn(empty()); when(extensionModel.getName()).thenReturn("extensionName"); when(operationModel.getParameterGroupModels()).thenReturn(asList(parameterGroupModel)); when(operationModel.getDeprecationModel()).thenReturn(empty()); when(operationModel.getName()).thenReturn("extensionOperation"); when(parameterGroupModel.getParameterModels()).thenReturn(asList(parameterModel)); when(parameterModel.isDeprecated()).thenReturn(false); when(parameterModel.getDeprecationModel()).thenReturn(empty()); when(parameterModel.getName()).thenReturn("parameterName"); when(extensionModel.getModelProperty(CompileTimeModelProperty.class)).thenReturn(ofNullable(new CompileTimeModelProperty())); }
final ExtensionModel extensionModel = getExtensionModelFrom(modulePath, expectedResources); assertThat(extensionModel.getName(), is("module-documentation")); assertThat(extensionModel.getDescription(), is("Documentation for the connector")); assertThat(extensionModel.getResources(), is(containsInAnyOrder(expectedResources.toArray()))); assertThat(extensionModel.getConfigurationModels().size(), is(1)); ConfigurationModel configurationModel = extensionModel.getConfigurationModels().get(0); assertThat(configurationModel.getName(), is(CONFIG_NAME)); final List<ParameterModel> configurationParameterModels = configurationModel.getAllParameterModels(); extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class); assertThat(globalElementComponentModelModelProperty.isPresent(), is(false)); containsInAnyOrder( ErrorModelBuilder.newError("CUSTOM_ERROR_HERE", extensionModel .getXmlDslModel().getPrefix().toUpperCase()) .withParent(ErrorModelBuilder .newError(ANY).build()) ErrorModelBuilder .newError("ANOTHER_CUSTOM_ERROR_HERE", extensionModel .getXmlDslModel().getPrefix().toUpperCase()) .withParent(ErrorModelBuilder .newError(ANY).build())
@Test public void testModuleCallingOperationsWithinModule() { String modulePath = "modules/module-calling-operations-within-module.xml"; ExtensionModel extensionModel = getExtensionModelFrom(modulePath); assertThat(extensionModel.getName(), is("module-calling-operations-within-module")); assertThat(extensionModel.getConfigurationModels().size(), is(0)); assertThat(extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class).isPresent(), is(false)); assertThat(extensionModel.getOperationModels().size(), is(11)); }
@Before public void before() { when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); mockSubTypes(extensionModel); when(extensionModel.getName()).thenReturn("extensionModel"); when(extensionModel.getImportedTypes()).thenReturn(emptySet()); when(extensionModel.getXmlDslModel()) .thenReturn(XmlDslModel.builder().setPrefix("ns").setNamespace("http://www.mulesoft.org/schema/mule/ns") .setSchemaLocation("http://www.mulesoft.org/schema/mule/heisenberg/current/mule-ns.xsd").build()); when(operationModel.getName()).thenReturn("dummyOperation"); when(validParameterModel.getModelProperty(ParameterGroupModelProperty.class)).thenReturn(Optional.empty()); when(validParameterModel.getModelProperty(QNameModelProperty.class)).thenReturn(Optional.empty()); when(validParameterModel.getModelProperty(InfrastructureParameterModelProperty.class)).thenReturn(Optional.empty()); when(validParameterModel.getModelProperty(OAuthParameterModelProperty.class)).thenReturn(Optional.empty()); when(validParameterModel.getDslConfiguration()).thenReturn(ParameterDslConfiguration.getDefaultInstance()); when(validParameterModel.getRole()).thenReturn(BEHAVIOUR); when(validParameterModel.getLayoutModel()).thenReturn(Optional.empty()); when(invalidParameterModel.getModelProperty(ParameterGroupModelProperty.class)).thenReturn(Optional.empty()); when(invalidParameterModel.getModelProperty(QNameModelProperty.class)).thenReturn(Optional.empty()); when(invalidParameterModel.getModelProperty(InfrastructureParameterModelProperty.class)).thenReturn(Optional.empty()); when(invalidParameterModel.getModelProperty(OAuthParameterModelProperty.class)).thenReturn(Optional.empty()); when(invalidParameterModel.getDslConfiguration()).thenReturn(ParameterDslConfiguration.getDefaultInstance()); when(invalidParameterModel.getRole()).thenReturn(BEHAVIOUR); when(invalidParameterModel.getLayoutModel()).thenReturn(Optional.empty()); when(invalidParameterModel.getExpressionSupport()).thenReturn(SUPPORTED); }
@Test public void consistentWithManifest() { assertThat(coreExtensionModel.getName(), is(MULE_NAME)); assertThat(coreExtensionModel.getDescription(), is("Mule Runtime and Integration Platform: Core components")); assertThat(coreExtensionModel.getVersion(), is(getProductVersion())); assertThat(coreExtensionModel.getVendor(), is(getVendorName())); assertThat(coreExtensionModel.getCategory(), is(COMMUNITY)); }
@Before public void before() { when(extensionModel.getName()).thenReturn("dummyExtension"); when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); when(extensionModel.getSourceModels()).thenReturn(asList(sourceModel)); when(extensionModel.getSubTypes()).thenReturn(emptySet()); when(extensionModel.getModelProperty(ImplementingTypeModelProperty.class)) .thenReturn(Optional.of(new ImplementingTypeModelProperty(Object.class))); when(operationModel.getName()).thenReturn("dummyOperation"); when(operationModel.getOutput()).thenReturn(outputModel); when(sourceModel.getOutput()).thenReturn(outputModel); when(outputModel.getType()).thenReturn(toMetadataType(void.class)); when(sourceModel.getName()).thenReturn("dummySource"); when(sourceModel.getErrorCallback()).thenReturn(of(sourceCallbackModel)); when(sourceModel.getSuccessCallback()).thenReturn(of(sourceCallbackModel)); when(sourceModel.getTerminateCallback()).thenReturn(of(sourceCallbackModel)); visitableMock(operationModel, sourceModel); }
/** * @return the extension's error namespace for a given {@link ExtensionModel} */ public static String getExtensionsNamespace(ExtensionModel extensionModel) { return getExtensionsNamespace(extensionModel.getXmlDslModel()); }
@Before public void setUp() { when(extensionModel.getXmlDslModel()).thenReturn(XmlDslModel.builder().setPrefix("test-extension").build()); when(extensionModel.getName()).thenReturn("Test Extension"); when(operationModel.getName()).thenReturn("testOperation"); }
@Test public void configurationNameClashesWithAnotherConfigurationName() { exception.expect(IllegalModelDefinitionException.class); ConfigurationModel anotherConfigurationModel = mock(ConfigurationModel.class); when(anotherConfigurationModel.getName()).thenReturn(CONFIG_NAME); when(extensionModel.getConfigurationModels()).thenReturn(asList(configurationModel, anotherConfigurationModel)); validate(); }
private XmlExtensionDocumentation getDocumenter(ExtensionModel model, List<XmlExtensionElementDocumentation> configs, List<XmlExtensionElementDocumentation> connections, List<XmlExtensionElementDocumentation> operations, List<XmlExtensionElementDocumentation> sources, List<XmlExtensionElementDocumentation> types) { final XmlExtensionDocumentation documenter = new XmlExtensionDocumentation(); XmlExtensionElementDocumentation element = new XmlExtensionElementDocumentation(); element.setName(model.getName()); element.setDescription(model.getDescription()); element.setParameters(emptyList()); documenter.setExtension(element); documenter.setConfigs(configs); documenter.setConnections(connections); documenter.setOperation(operations); documenter.setSources(sources); documenter.setTypes(types); return documenter; } }
private void assertTestConnectionModuleOn(String modulePath) { ExtensionModel extensionModel = getExtensionModelFrom(modulePath); assertThat(extensionModel.getName(), is("module-test-connection")); assertThat(extensionModel.getConfigurationModels().size(), is(1)); ConfigurationModel configurationModel = extensionModel.getConfigurationModels().get(0); assertThat(configurationModel.getName(), is(CONFIG_NAME)); assertThat(configurationModel.getAllParameterModels().size(), is(4)); Optional<ConnectionProviderModel> connectionProviderModel = configurationModel.getConnectionProviderModel(MODULE_CONNECTION_GLOBAL_ELEMENT_NAME); assertThat(connectionProviderModel.isPresent(), is(true)); assertThat(connectionProviderModel.get().supportsConnectivityTesting(), is(true)); }
private void validateResultReturnType(Type returnType, ProblemsReporter problemsReporter, OperationModel operationModel, ExtensionModel extensionModel) { if (returnType.isAssignableTo(Result.class)) { if (returnType.getGenerics().isEmpty()) { problemsReporter.addError(new Problem(operationModel, format(MISSING_GENERICS_ERROR_MESSAGE, operationModel.getName(), extensionModel.getName(), Result.class))); } } }
@Before public void before() { mockClassLoaderModelProperty(extensionModel, getClass().getClassLoader()); when(extensionModel.getName()).thenReturn("dummyExtension"); visitableMock(operationModel, sourceModel); when(extensionModel.getModelProperty(ExtensionTypeDescriptorModelProperty.class)).thenReturn(of(modelProperty)); when(modelProperty.getType()).thenReturn(type); when(type.getDeclaringClass()).thenReturn(of(this.getClass())); }