@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 setUp() { when(extensionModel.getXmlDslModel()).thenReturn(XmlDslModel.builder().setPrefix("test-extension").build()); when(extensionModel.getName()).thenReturn("Test Extension"); when(operationModel.getName()).thenReturn("testOperation"); }
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); }
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 static String getExtensionsNamespace(XmlDslModel dslModel) { return dslModel.getPrefix().toUpperCase(); }
/** * Calculates all the used namespaces of the given <module/> leaving behind the (possible) cyclic reference if there are * {@link MacroExpansionModuleModel#TNS_PREFIX} references by removing the current namespace generation. * * @param moduleModel XML of the <module/> * @param xmlDslModel the {@link XmlDslModel} for the current {@link ExtensionModel} generation * @return a {@link XmlExtensionModelProperty} which contains all the namespaces dependencies. Among them could be dependencies * that must be macro expanded and others which might not, but that job is left for the * {@link MacroExpansionModulesModel#getDirectExpandableNamespaceDependencies(ComponentModel, Set)} */ private XmlExtensionModelProperty getXmlExtensionModelProperty(ComponentModel moduleModel, XmlDslModel xmlDslModel) { final Set<String> namespaceDependencies = getUsedNamespaces(moduleModel).stream() .filter(namespace -> !xmlDslModel.getNamespace().equals(namespace)) .collect(Collectors.toSet()); return new XmlExtensionModelProperty(namespaceDependencies); }
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 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 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))); }
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(); }
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 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 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)); } }
@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)))); }
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)); }
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)); } }
final Map<String, ExtensionModel> allExtensionsByNamespace = extensions.stream() .filter(extensionModel -> extensionModel.getModelProperty(XmlExtensionModelProperty.class).isPresent()) .collect(Collectors.toMap(extModel -> extModel.getXmlDslModel().getNamespace(), Function.identity()));
@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 enrichWithDefaultValues() { extensionDeclarer.named(EXTENSION_NAME).onVersion(EXTENSION_VERSION); XmlDslModel dslModel = enrich(NoXmlSupport.class); assertThat(dslModel, is(notNullValue())); assertThat(dslModel.getSchemaVersion(), is(EXTENSION_VERSION)); assertThat(dslModel.getPrefix(), is(EXTENSION_HYPHENAZED_NAME)); assertThat(dslModel.getNamespace(), equalTo(String.format(DEFAULT_NAMESPACE_LOCATION_MASK, EXTENSION_HYPHENAZED_NAME))); assertThat(dslModel.getXsdFileName(), is(String.format(XSD_FILENAME_MASK, EXTENSION_HYPHENAZED_NAME))); assertThat(dslModel.getSchemaLocation(), is(String.format(DEFAULT_SCHEMA_LOCATION_MASK, String.format(DEFAULT_NAMESPACE_LOCATION_MASK, EXTENSION_HYPHENAZED_NAME), String.format(XSD_FILENAME_MASK, EXTENSION_HYPHENAZED_NAME)))); }