@Override public void accept(ExtensionDeclarer extensionDeclarer, ExtensionLoadingContext context) { extensionDeclarer.named(EXTENSION_NAME) .describedAs("Crafted Extension") .onVersion("1.0.0") .withCategory(COMMUNITY) .fromVendor("Mulesoft"); } }
private String getStereotypePrefix(ExtensionDeclarer extensionDeclarer) { return extensionDeclarer.getDeclaration().getXmlDslModel().getPrefix().toUpperCase(); }
private ExtensionModel mockedExtension(final String name, final String config, final String connectionProvider, boolean supportsConnectivityTesting) { final ExtensionDeclarer extensionDeclarer = new ExtensionDeclarer(); extensionDeclarer.named(name) .onVersion("4.0.0") .fromVendor("MuleSoft testcase") .withCategory(Category.COMMUNITY) .withConfig(config) .withConnectionProvider(connectionProvider) .supportsConnectivityTesting(supportsConnectivityTesting) .withConnectionManagementType(ConnectionManagementType.NONE); return new ExtensionModelFactory() .create(new DefaultExtensionLoadingContext(extensionDeclarer, currentThread().getContextClassLoader(), new NullDslResolvingContext())); }
private ExtensionDeclarer getExtensionDeclarer(ExtensionLoadingContext context) { Extension extension = MuleExtensionAnnotationParser.getExtension(extensionType); return context.getExtensionDeclarer() .named(extension.name()) .onVersion(version) .fromVendor(extension.vendor()) .withCategory(extension.category()) .withModelProperty(new SoapExtensionModelProperty()) .withModelProperty(new ExtensionTypeDescriptorModelProperty(new TypeWrapper(extensionType, typeLoader))) .withModelProperty(new ImplementingTypeModelProperty(extensionType)); }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { Xml xml = extractAnnotation(extensionLoadingContext.getExtensionDeclarer().getDeclaration(), Xml.class); ExtensionDeclarer declarer = extensionLoadingContext.getExtensionDeclarer(); ExtensionDeclaration extensionDeclaration = declarer.getDeclaration(); declarer.withXmlDsl(getXmlLanguageModel(xml, extensionDeclaration)); }
extensionDeclarer.named(EXTENSION_NAME) .describedAs(EXTENSION_DESCRIPTION) .fromVendor(VENDOR) .onVersion(VERSION) .withCategory(COMMUNITY) .withMinMuleVersion(MIN_MULE_VERSION) .withXmlDsl(xmlDslModel); final ConfigurationDeclarer springConfig = extensionDeclarer.withConfig("config") .describedAs("Spring configuration that allows to define a set of spring XML files and create an application context with objects to be used in the mule artifact."); ParameterGroupDeclarer parameterGroupDeclarer = springConfig.onDefaultParameterGroup(); extensionDeclarer.withExternalLibrary(ExternalLibraryModel.builder() .withName("spring-beans") .withDescription("Spring Beans (http://projects.spring.io/spring-framework). Based on the application usage of the Spring Framework, other spring dependencies may be required.") .withType(DEPENDENCY).build()); extensionDeclarer.withExternalLibrary(ExternalLibraryModel.builder() .withName("spring-context") .withDescription("Spring Context (http://projects.spring.io/spring-framework). Based on the application usage of the Spring Framework, other spring dependencies may be required.") final ConfigurationDeclarer securityManager = extensionDeclarer.withConfig("security-manager") .describedAs("This is the security provider type that is used to configure spring-security related functionality."); securityManager.onDefaultParameterGroup().withRequiredParameter("providers").withExpressionSupport(NOT_SUPPORTED) .withRole(BEHAVIOUR).ofType(typeBuilder.arrayType().of(typeLoader.load(SecurityProvider.class)).build()); final OperationDeclarer authorizationFilter = extensionDeclarer.withOperation("authorization-filter") .describedAs("Authorize users against a required set of authorities."); authorizationFilter.withOutput().ofType(typeBuilder.voidType().build());
.createTypeLoader(MuleExtensionModelDeclarer.class.getClassLoader()); ExtensionDeclarer extensionDeclarer = new ExtensionDeclarer() .named(MULE_NAME) .describedAs("Mule Runtime and Integration Platform: Core components") .onVersion(MULE_VERSION) .fromVendor(MULESOFT_VENDOR) .withCategory(COMMUNITY) .withModelProperty(new CustomBuildingDefinitionProviderModelProperty()) .withXmlDsl(XmlDslModel.builder() .setPrefix(CORE_PREFIX) .setNamespace(CORE_NAMESPACE)
@Test public void enrichWithCustomNamespaceValue() { extensionDeclarer.named(EXTENSION_NAME).onVersion(EXTENSION_VERSION); XmlDslModel dslModel = enrich(DefaultXmlExtension.class); assertThat(dslModel, is(notNullValue())); assertThat(dslModel.getSchemaVersion(), is(EXTENSION_VERSION)); assertThat(dslModel.getPrefix(), is(NAMESPACE)); assertThat(dslModel.getNamespace(), equalTo(String.format(DEFAULT_NAMESPACE_LOCATION_MASK, NAMESPACE))); assertThat(dslModel.getXsdFileName(), is(String.format(XSD_FILENAME_MASK, NAMESPACE))); assertThat(dslModel.getSchemaLocation(), is(String.format(DEFAULT_SCHEMA_LOCATION_MASK, String.format(DEFAULT_NAMESPACE_LOCATION_MASK, NAMESPACE), String.format(XSD_FILENAME_MASK, NAMESPACE)))); }
@Before public void before() throws Exception { connectedOperation = spy(new ExtensionDeclarer() .withOperation(CONNECTED_OPERATION) .requiresConnection(true) .getDeclaration()); notConnectedOperation = spy(new ExtensionDeclarer() .withOperation(NOT_CONNECTED_OPERATION) .requiresConnection(false) .getDeclaration()); when(extensionLoadingContext.getExtensionDeclarer()).thenReturn(extensionDeclarer); when(extensionDeclarer.getDeclaration()).thenReturn(extensionDeclaration); when(extensionDeclaration.getOperations()).thenReturn(asList(connectedOperation, notConnectedOperation)); }
private XmlDslModel enrich(Class<?> type) { extensionDeclarer.withModelProperty(new ImplementingTypeModelProperty(type)); declarationEnricher .enrich(new DefaultExtensionLoadingContext(extensionDeclarer, type.getClassLoader(), getDefault(emptySet()))); return extensionDeclarer.getDeclaration().getXmlDslModel(); }
private Optional<ConfigurationDeclarer> loadPropertiesFrom(ExtensionDeclarer declarer, ComponentModel moduleModel, List<ComponentModel> globalElementsComponentModel, Set<ExtensionModel> extensions) { List<ComponentModel> configurationProperties = extractProperties(moduleModel); List<ComponentModel> connectionProperties = extractConnectionProperties(moduleModel); validateProperties(configurationProperties, connectionProperties); if (!configurationProperties.isEmpty() || !connectionProperties.isEmpty()) { declarer.withModelProperty(new NoReconnectionStrategyModelProperty()); ConfigurationDeclarer configurationDeclarer = declarer.withConfig(CONFIG_NAME); configurationProperties.forEach(param -> extractProperty(configurationDeclarer, param)); addConnectionProvider(configurationDeclarer, connectionProperties, globalElementsComponentModel, extensions); return of(configurationDeclarer); } return empty(); }
declarer.withModelProperty(getXmlExtensionModelProperty(moduleModel, xmlDslModel)); } else { final ExtensionDeclarer temporalDeclarer = new ExtensionDeclarer(); fillDeclarer(temporalDeclarer, name, version, category, vendor, xmlDslModel, description); loadOperationsFrom(temporalDeclarer, moduleModel, directedGraph, xmlDslModel, OperationVisibility.PRIVATE); final ExtensionModel result = createExtensionModel(temporalDeclarer); declarer.withModelProperty(new PrivateOperationsModelProperty(result.getOperationModels()));
private ConfigurationDeclarer getConfigDeclarer(ExtensionDeclarer declarer, SoapExtensionTypeWrapper<?> extension, Set<ErrorModel> soapErrors) { //TODO - MULE-14311 - Make loader work in compile time Class<?> clazz = extension.getDeclaringClass().get(); TypeAwareConfigurationFactory configurationFactory = new TypeAwareConfigurationFactory(clazz, clazz.getClassLoader()); ConfigurationDeclarer configDeclarer = declarer.withConfig(DEFAULT_CONFIG_NAME) .describedAs(DEFAULT_CONFIG_DESCRIPTION) .withModelProperty(new ConfigurationFactoryModelProperty(configurationFactory)) .withModelProperty(new ImplementingTypeModelProperty(clazz)); operationDeclarer.declare(configDeclarer, typeLoader, soapErrors); return configDeclarer; }
private void addGlobalElementModelProperty(ExtensionDeclarer declarer, List<ComponentModel> globalElementsComponentModel) { if (!globalElementsComponentModel.isEmpty()) { declarer.withModelProperty(new GlobalElementComponentModelModelProperty(globalElementsComponentModel)); } }
new ByteArrayInputStream(resultStream.toByteArray())); if (StringUtils.isNotBlank(transformedModuleDocument.getDocumentElement().getAttribute(XMLNS_TNS))) { final ExtensionDeclarer extensionDeclarer = new ExtensionDeclarer(); loadModuleExtension(extensionDeclarer, resource, transformedModuleDocument, extensions, true); result = createExtensionModel(extensionDeclarer);
ExtensionDeclarer declarer = context.getExtensionDeclarer() .named(extensionElement.getName()) .onVersion(version) .fromVendor(extensionElement.getVendor()) .withCategory(extensionElement.getCategory()) .withModelProperty(new ExtensionTypeDescriptorModelProperty(extensionElement)); .ifPresent(m -> declarer.withModelProperty(new CompileTimeModelProperty())); .ifPresent(extensionClass -> declarer.withModelProperty(new ImplementingTypeModelProperty(extensionClass)));
@Test public void enrichWithCustomValues() { extensionDeclarer.named(EXTENSION_NAME).onVersion(EXTENSION_VERSION); XmlDslModel dslModel = enrich(XmlSupport.class); assertThat(dslModel, is(notNullValue())); assertThat(dslModel.getSchemaVersion(), is(EXTENSION_VERSION)); assertThat(dslModel.getPrefix(), is(NAMESPACE)); assertThat(dslModel.getNamespace(), is(NAMESPACE_LOCATION)); assertThat(dslModel.getXsdFileName(), is(String.format(XSD_FILENAME_MASK, NAMESPACE))); assertThat(dslModel.getSchemaLocation(), is(String.format(DEFAULT_SCHEMA_LOCATION_MASK, NAMESPACE_LOCATION, String.format(XSD_FILENAME_MASK, NAMESPACE)))); }
private XmlDslModel enrich(Class<?> type) { extensionDeclarer.withModelProperty(new ImplementingTypeModelProperty(type)); declarationEnricher .enrich(new DefaultExtensionLoadingContext(extensionDeclarer, type.getClassLoader(), getDefault(emptySet()))); return extensionDeclarer.getDeclaration().getXmlDslModel(); }
@Override public void enrich(ExtensionLoadingContext extensionLoadingContext) { Xml xml = extractAnnotation(extensionLoadingContext.getExtensionDeclarer().getDeclaration(), Xml.class); ExtensionDeclarer declarer = extensionLoadingContext.getExtensionDeclarer(); ExtensionDeclaration extensionDeclaration = declarer.getDeclaration(); declarer.withXmlDsl(getXmlLanguageModel(xml, extensionDeclaration)); }
private void declareConfiguration(ExtensionDeclarer declarer, ExtensionElement extensionType, ComponentElement configType) { checkConfigurationIsNotAnOperation(extensionType, configType); ConfigurationDeclarer configurationDeclarer; Optional<Configuration> configurationAnnotation = configType.getAnnotation(Configuration.class); if (configurationAnnotation.isPresent()) { final Configuration configuration = configurationAnnotation.get(); String configName = isBlank(configuration.name()) ? DEFAULT_CONFIG_NAME : configuration.name(); configurationDeclarer = declarer.withConfig(configName); } else { configurationDeclarer = declarer.withConfig(DEFAULT_CONFIG_NAME).describedAs(DEFAULT_CONFIG_DESCRIPTION); } Class<?> extensionClass = extensionType.getDeclaringClass().orElse(Object.class); Class<?> configClass = configType.getDeclaringClass().orElse(Object.class); ClassLoader classLoader = extensionClass.getClassLoader() != null ? extensionClass.getClassLoader() : Thread.currentThread().getContextClassLoader(); TypeAwareConfigurationFactory typeAwareConfigurationFactory = new TypeAwareConfigurationFactory(configClass, classLoader); configurationDeclarer .withModelProperty(new ConfigurationFactoryModelProperty(typeAwareConfigurationFactory)) .withModelProperty(new ImplementingTypeModelProperty(configClass)); configurationDeclarer.withModelProperty(new ExtensionTypeDescriptorModelProperty(configType)); loader.parseExternalLibs(configType, configurationDeclarer); ParameterDeclarationContext context = new ParameterDeclarationContext(CONFIGURATION, configurationDeclarer.getDeclaration()); loader.getFieldParametersLoader().declare(configurationDeclarer, configType.getParameters(), context); getOperationLoaderDelegate().declareOperations(declarer, configurationDeclarer, configType); getSourceModelLoaderDelegate().declareMessageSources(declarer, configurationDeclarer, configType); getFunctionModelLoaderDelegate().declareFunctions(declarer, configurationDeclarer, configType); getConnectionProviderModelLoaderDelegate().declareConnectionProviders(configurationDeclarer, configType); }