private Optional<ConfigurationModel> getConfigurationModelForExtension(ExtensionModel extensionModel, Set<ConfigurationModel> assignableConfigurationModels) { List<ConfigurationModel> implicitConfigurationModels = assignableConfigurationModels.stream().filter(ExtensionModelUtils::canBeUsedImplicitly).collect(Collectors.toList()); if (implicitConfigurationModels.isEmpty()) { return empty(); } else if (implicitConfigurationModels.size() == 1) { return ofNullable(implicitConfigurationModels.get(0)); } throw new IllegalStateException(format("No configuration can be inferred for extension '%s'", extensionModel.getName())); }
/** * {@inheritDoc} */ @Override public String getOwningExtensionName() { return messageSource.getExtensionModel().getName(); } }
private void onTerminated() { if (onComplete != null) { try { onComplete.run(); } catch (Exception e) { LOGGER.warn("Operation " + operationModel.getName() + " from extension " + extensionModel.getName() + " threw exception while executing the onComplete FlowListener", e); } } }
private void validateForbiddenTypesReturnType(Type returnType, ProblemsReporter problemsReporter, OperationModel operationModel, ExtensionModel extensionModel) { illegalReturnTypes.stream() .filter(returnType::isAssignableTo) .findFirst() .ifPresent(forbiddenType -> problemsReporter.addError(new Problem(operationModel, format( "Operation '%s' in Extension '%s' specifies '%s' as a return type. Operations are " + "not allowed to return objects of that type", operationModel.getName(), extensionModel.getName(), forbiddenType.getName())))); }
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; }
private void validateNonBlockingCallback(MethodElement<? extends Type> operationMethod, ProblemsReporter problemsReporter, OperationModel operationModel, ExtensionModel extensionModel) { operationMethod.getParameters().stream() .filter(p -> p.getType().isSameType(CompletionCallback.class)) .findFirst().ifPresent(p -> { if (p.getType().getGenerics().isEmpty()) { problemsReporter.addError(new Problem(p, format(MISSING_GENERICS_ERROR_MESSAGE, operationModel.getName(), extensionModel.getName(), CompletionCallback.class.getName()))); } }); }
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))); } } }
@Test public void returnsEmptyExtensionWhenNonRegistered() throws Exception { ExtensionModel parentExtension = mock(ExtensionModel.class); when(parentExtension.getName()).thenReturn("testExtension"); Set<ExtensionModel> parentExtensions = singleton(parentExtension); when(parentExtensionManager.getExtensions()).thenReturn(parentExtensions); CompositeArtifactExtensionManager extensionManager = new CompositeArtifactExtensionManager(parentExtensionManager, childExtensionManager); Optional<ExtensionModel> extension = extensionManager.getExtension("fooExtension"); assertThat(extension.isPresent(), is(false)); }
@Test public void providesRegisteredExtension() throws Exception { ExtensionModel parentExtension = mock(ExtensionModel.class); when(parentExtension.getName()).thenReturn("testExtension"); Set<ExtensionModel> parentExtensions = singleton(parentExtension); when(parentExtensionManager.getExtensions()).thenReturn(parentExtensions); CompositeArtifactExtensionManager extensionManager = new CompositeArtifactExtensionManager(parentExtensionManager, childExtensionManager); Optional<ExtensionModel> extension = extensionManager.getExtension("testExtension"); assertThat(extension.get(), is(parentExtension)); }
@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() { 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())); }
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)); }
@Test public void testModuleResources() { String modulePath = "modules/module-resources.xml"; ExtensionModel extensionModel = getExtensionModelFrom(modulePath); assertThat(extensionModel.getName(), is("module-resources")); assertThat(extensionModel.getConfigurationModels().size(), is(0)); assertThat(extensionModel.getModelProperty(GlobalElementComponentModelModelProperty.class).isPresent(), is(false)); assertThat(extensionModel.getOperationModels().size(), is(0)); }
@Before public void before() { when(extensionModel.getName()).thenReturn(EXTENSION_NAME); when(operationModel.getName()).thenReturn(OPERATION_NAME); when(operationModel.getOutput().getType()).thenReturn(TYPE_LOADER.load(String.class)); when(operationModel.getOutputAttributes().getType()).thenReturn(TYPE_LOADER.load(void.class)); when(goodParameter.getName()).thenReturn("valid"); when(extensionModel.getOperationModels()).thenReturn(asList(operationModel)); when(operationModel.getAllParameterModels()).thenReturn(asList(goodParameter)); }
@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 load() throws Exception { ExtensionModel extensionModel = loader.loadExtensionModel(classLoader, dslResolvingContext, attributes); assertThat(extensionModel, is(notNullValue())); assertThat(extensionModel.getName(), is(EXTENSION_NAME)); }
@Test public void loadPrivilegedExtension() { ExtensionModel extension = loadExtension(PrivilegedExtension.class); assertThat(extension.getName(), is(NEW_NAME)); } }
@Before public void beforeTest() { when(extensionFactory.createHandler()).thenReturn(extensionEnricher); mockExceptionEnricher(extensionModel, extensionFactory); mockExceptionEnricher(sourceModel, sourceFactory); when(sourceEnricher.enrichException(any(Exception.class))).thenReturn(new HeisenbergException(ERROR_MESSAGE)); when(sourceFactory.createHandler()).thenReturn(sourceEnricher); when(extensionModel.getXmlDslModel()).thenReturn(XmlDslModel.builder().setPrefix("test-extension").build()); when(extensionModel.getName()).thenReturn("Test Extension"); when(sourceModel.getName()).thenReturn("Test Source"); manager = new ExceptionHandlerManager(extensionModel, sourceModel); }
@Test public void connectionProviderNameClashesWithOperationParameterName() { String clashingName = SIMPLE_PARAM_NAME + CONNECTION_PROVIDER_SUFFIX; exception.expect(IllegalModelDefinitionException.class); exception.expectMessage(format( "Extension '%s' has a connection provider named '%s' and an operation named operation with an argument type named equally.", extensionModel.getName(), hyphenize(clashingName))); ParameterModel offending = getParameter(clashingName, ChildTest.class); when(connectionProviderModel.getName()).thenReturn(clashingName); when(operationModel.getAllParameterModels()).thenReturn(asList(topLevelOperationParam, offending)); validate(); }
@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)); }