/** * @return the extension's error namespace for a given {@link ExtensionModel} */ public static String getExtensionsNamespace(ExtensionModel extensionModel) { return getExtensionsNamespace(extensionModel.getXmlDslModel()); }
/** * Tests the given {@code extensionModel} to be enriched with the {@link XmlDslModel}. If the property is present, then it * delegates into {@link #generateXmlResource(ExtensionModel, XmlDslModel, DslResolvingContext)}. * <p> * Otherwise, it returns {@link Optional#empty()} * * @param extensionModel the {@link ExtensionModel} that requires the resource * @return an {@link Optional} {@link GeneratedResource} */ @Override public Optional<GeneratedResource> generateResource(ExtensionModel extensionModel, DslResolvingContext context) { XmlDslModel languageModel = extensionModel.getXmlDslModel(); return languageModel == null ? empty() : of(generateXmlResource(extensionModel, languageModel, context)); }
private ExtensionModel getExtensionModelOrFail() { return extensionManager.getExtensions().stream() .filter(em -> em.getXmlDslModel().getPrefix().equals(moduleName)) .findFirst() .orElseThrow(() -> new IllegalArgumentException(format("Could not find any extension under the name of [%s]", moduleName))); }
private InputSource generateFromExtensions(String publicId, String systemId) { InputSource inputSource = null; // TODO(fernandezlautaro): MULE-11024 once implemented, remove the extensionSchemaFactory.isPresent() from the `if` statement if (extensionSchemaFactory.isPresent()) { Optional<ExtensionModel> extensionModel = extensions.stream() .filter(em -> systemId.equals(em.getXmlDslModel().getSchemaLocation())) .findAny(); if (extensionModel.isPresent()) { InputStream schema = getSchemaFromExtension(extensionModel.get()); inputSource = new InputSource(schema); inputSource.setPublicId(publicId); inputSource.setSystemId(systemId); } } return inputSource; }
public DefaultXmlArtifactDeclarationLoader(DslResolvingContext context) { this.context = context; this.resolvers = context.getExtensions().stream() .collect(toMap(e -> e.getXmlDslModel().getPrefix(), e -> DslSyntaxResolver.getDefault(e, context))); this.context.getExtensions().forEach(e -> extensionsByNamespace.put(e.getXmlDslModel().getPrefix(), e)); }
private static XmlNamespaceInfoProvider createStaticNamespaceInfoProviders(Set<ExtensionModel> extensionModels) { List<XmlNamespaceInfo> extensionNamespaces = extensionModels.stream() .map(ext -> new StaticXmlNamespaceInfo(ext.getXmlDslModel().getNamespace(), ext.getXmlDslModel().getPrefix())) .collect(toImmutableList()); return new StaticXmlNamespaceInfoProvider(extensionNamespaces); }
public XmlApplicationServiceRegistry(ServiceRegistry delegate, DslResolvingContext context) { this.delegate = delegate; List<XmlNamespaceInfo> extensionNamespaces; if (context != null) { extensionNamespaces = context.getExtensions().stream() .map(ext -> new StaticXmlNamespaceInfo(ext.getXmlDslModel().getNamespace(), ext.getXmlDslModel().getPrefix())) .collect(toImmutableList()); } else { extensionNamespaces = ImmutableList.of(); } extensionsXmlInfoProvider = new StaticXmlNamespaceInfoProvider(extensionNamespaces); }
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(); }
@Override protected void onOperation(HasOperationModels owner, OperationModel operationModel) { operationModel.getModelProperty(OperationComponentModelModelProperty.class) .ifPresent(operationComponentModelModelProperty -> { searchAndValidate(extensionModel.getXmlDslModel().getPrefix(), operationModel, operationComponentModelModelProperty.getBodyComponentModel(), problemsReporter); }); } }.walk(extensionModel);
String getNamespaceUri(String prefix) { if (prefix.equals(CORE_PREFIX)) { importIfNotImported(createMuleImport()); return CORE_NAMESPACE; } if (prefix.equals(EE_PREFIX)) { importIfNotImported(createMuleEEImport()); return EE_NAMESPACE; } Optional<ExtensionModel> extensionModelFromPrefix = dslContext.getExtensions().stream() .filter((extensionModel) -> prefix.equals(extensionModel.getXmlDslModel().getPrefix())).findFirst(); if (extensionModelFromPrefix.isPresent()) { registerExtensionImport(extensionModelFromPrefix.get()); return extensionModelFromPrefix.get().getXmlDslModel().getNamespace(); } throw new IllegalArgumentException(String .format("prefix: %s inside substitutionGroup does not exist. It does not relate to any imported namespaces", prefix)); } }
public void generateSchemaTestResource(ExtensionModel model, File generatedResourcesDirectory) { String xsdFileName = model.getXmlDslModel().getXsdFileName(); try { ExtensionSchemaGenerator schemaGenerator = getSchemaGenerator(); Set<ExtensionModel> models = new HashSet<>(extensionManager.getExtensions()); models.add(MuleExtensionModelProvider.getExtensionModel()); String schema = schemaGenerator.generate(model, DslResolvingContext.getDefault(models)); File xsd = FileUtils.newFile(generatedResourcesDirectory, xsdFileName); FileUtils.copyStreamToFile(new ByteArrayInputStream(schema.getBytes()), xsd); } catch (IOException e) { throw new RuntimeException(format("Error generating test xsd resource [%s]: " + e.getMessage(), xsdFileName, e)); } }
private Optional<ConfigurationModel> looForConfiguration(ComponentModel componentModel) { final ComponentIdentifier identifier = componentModel.getIdentifier(); return identifier.getNamespace().equals(extensionModel.getXmlDslModel().getPrefix()) ? extensionModel.getConfigurationModel(identifier.getName()) : empty(); }
/** * Looks for an operation exposed in the current {@link ExtensionModel}. * * @param componentModel operation to look for. * @return the operation if found, {@link Optional#empty()} otherwise. */ private Optional<OperationModel> lookForOperation(ComponentModel componentModel) { return lookForOperation(componentModel.getIdentifier(), extensionModel.getXmlDslModel().getPrefix()); }
private XmlDslModel registerExtensionImport(ExtensionModel extension) { XmlDslModel languageModel = extension.getXmlDslModel(); Import schemaImport = new Import(); schemaImport.setNamespace(languageModel.getNamespace()); schemaImport.setSchemaLocation(languageModel.getSchemaLocation()); if (!schema.getIncludeOrImportOrRedefine().contains(schemaImport)) { schema.getIncludeOrImportOrRedefine().add(schemaImport); } return languageModel; }
private Optional<NestableElementModel> findNestableElementModel(ComponentIdentifier componentIdentifier) { try { return extensionNestableElementModelByComponentIdentifier.get(componentIdentifier, () -> { String componentName = toCamelCase(componentIdentifier.getName(), COMPONENT_NAME_SEPARATOR); for (ExtensionModel extensionModel : extensionsModels) { if (extensionModel.getXmlDslModel().getPrefix().equals(componentIdentifier.getNamespace())) { Optional<NestableElementModel> elementModelOptional = searchNestableElementModel(extensionModel, componentName); if (elementModelOptional.isPresent()) { return elementModelOptional; } return searchNestableElementModel(extensionModel, componentIdentifier.getName()); } } return empty(); }); } catch (ExecutionException e) { throw new MuleRuntimeException(e); } }
@Test public void consistentWithSchema() { assertThat(coreExtensionModel.getXmlDslModel().getPrefix(), is(CORE_PREFIX)); assertThat(coreExtensionModel.getXmlDslModel().getNamespace(), is("http://www.mulesoft.org/schema/mule/core")); assertThat(coreExtensionModel.getXmlDslModel().getSchemaLocation(), is("http://www.mulesoft.org/schema/mule/core/current/mule.xsd")); assertThat(coreExtensionModel.getXmlDslModel().getSchemaVersion(), is(MULE_VERSION)); assertThat(coreExtensionModel.getXmlDslModel().getXsdFileName(), is("mule.xsd")); }
@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"); }
@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); }
@Before public void setUp() { XmlDslModel.XmlDslModelBuilder builder = XmlDslModel.builder(); builder.setPrefix(EXTENSION_PREFIX); XmlDslModel xmlDslModel = builder.build(); typeRepository = createDefaultErrorTypeRepository(); typeLocator = createDefaultErrorTypeLocator(typeRepository); when(muleContext.getErrorTypeRepository()).thenReturn(typeRepository); when(((PrivilegedMuleContext) muleContext).getErrorTypeLocator()).thenReturn(typeLocator); errorsRegistrant = new ExtensionErrorsRegistrant(muleContext.getErrorTypeRepository(), ((PrivilegedMuleContext) muleContext).getErrorTypeLocator()); when(extensionModel.getOperationModels()).thenReturn(asList(operationWithError, operationWithoutErrors)); when(extensionModel.getXmlDslModel()).thenReturn(xmlDslModel); when(extensionModel.getName()).thenReturn(TEST_EXTENSION_NAME); when(operationWithError.getErrorModels()).thenReturn(singleton(extensionConnectivityError)); when(operationWithError.getName()).thenReturn(OPERATION_NAME); when(operationWithError.getModelProperty(any())).thenReturn(empty()); when(operationWithoutErrors.getName()).thenReturn("operationWithoutError"); when(operationWithoutErrors.getErrorModels()).thenReturn(emptySet()); when(operationWithoutErrors.getModelProperty(any())).thenReturn(empty()); visitableMock(operationWithError, operationWithoutErrors); }
private void registerExpressionFunctions(ExtensionModel extensionModel) { if (extensionModel.getFunctionModels().isEmpty()) { return; } ExpressionModule.Builder moduleBuilder = new DefaultExpressionModuleBuilder(new ModuleNamespace(extensionModel .getXmlDslModel().getPrefix())); registerExpressionFunctions(extensionModel.getFunctionModels().stream(), moduleBuilder); try { final BindingContext bindingContext = new DefaultBindingContextBuilder().addModule(moduleBuilder.build()).build(); registerObject(muleContext, extensionModel.getName() + "GlobalBindingContextProvider", (GlobalBindingContextProvider) () -> bindingContext); } catch (Exception e) { throw new MuleRuntimeException(createStaticMessage(e.getMessage()), e); } }