private static String getConfigModulePrefixFromImport(final Module currentModule) { for (ModuleImport currentImport : currentModule.getImports()) { if (currentImport.getModuleName().equals(ConfigConstants.CONFIG_MODULE)) { return currentImport.getPrefix(); } } throw new IllegalArgumentException("Cannot find import " + ConfigConstants.CONFIG_MODULE + " in " + currentModule); }
@Override protected boolean isKnown(final Collection<SourceIdentifier> haystack, final ModuleImport mi) { final SourceIdentifier msi = RevisionSourceIdentifier.create(mi.getModuleName(), mi.getRevision()); // Quick lookup if (haystack.contains(msi)) { return true; } // Slow revision-less walk return !mi.getRevision().isPresent() && findWildcard(haystack, mi.getModuleName()) != null; }
@Override protected boolean isKnown(final Collection<SourceIdentifier> haystack, final ModuleImport mi) { final SourceIdentifier msi = RevisionSourceIdentifier.create(mi.getModuleName(), mi.getRevision()); // Quick lookup if (haystack.contains(msi)) { return true; } // Slow revision-less walk return !mi.getRevision().isPresent() && findWildcard(haystack, mi.getModuleName()) != null; }
private Optional<QNameModule> getQNameModuleForImportPrefix(final Module targetModule, final String prefix) { final ModuleImport moduleImport = getModuleImport(targetModule, prefix); if (moduleImport == null) { return Optional.empty(); } final String moduleName = moduleImport.getModuleName(); final Optional<Revision> revision = moduleImport.getRevision(); return schemaContext.findModule(moduleName, revision).map(Module::getQNameModule); }
private Module findModuleFromImports(final Set<ModuleImport> imports, final String prefix) { for (final ModuleImport imp : imports) { if (imp.getPrefix().equals(prefix)) { return schemaContext.findModule(imp.getModuleName(), imp.getRevision()).orElse(null); } } return null; }
private Optional<QNameModule> getQNameModuleForImportPrefix(final Module targetModule, final String prefix) { final ModuleImport moduleImport = getModuleImport(targetModule, prefix); if (moduleImport == null) { return Optional.empty(); } final String moduleName = moduleImport.getModuleName(); final Optional<Revision> revision = moduleImport.getRevision(); return schemaContext.findModule(moduleName, revision).map(Module::getQNameModule); }
private Module findModuleFromImports(final Set<ModuleImport> imports, final String prefix) { for (final ModuleImport imp : imports) { if (imp.getPrefix().equals(prefix)) { return schemaContext.findModuleByName(imp.getModuleName(), imp.getRevision()); } } return null; }
@Override protected boolean isKnown(final Collection<SourceIdentifier> haystack, final ModuleImport mi) { final SemVerSourceIdentifier msi = SemVerSourceIdentifier.create(mi.getModuleName(), mi.getRevision(), mi.getSemanticVersion().orElse(null)); // Quick lookup if (haystack.contains(msi)) { return true; } // Slow revision-less walk return findCompatibleVersion(haystack, mi) != null; }
private static ServiceInterfaceEntry findSIE(final String prefixAndIdentityLocalName, final Module currentModule, final Map<QName, ServiceInterfaceEntry> qNamesToSIEs, final SchemaContext schemaContext) { Matcher m = PREFIX_COLON_LOCAL_NAME.matcher(prefixAndIdentityLocalName); Module foundModule; String localSIName; if (m.matches()) { // if there is a prefix, look for ModuleImport with this prefix. Get // Module from SchemaContext String prefix = m.group(1); ModuleImport moduleImport = findModuleImport(currentModule, prefix); foundModule = schemaContext.findModuleByName(moduleImport.getModuleName(), moduleImport.getRevision()); checkNotNull(foundModule, format("Module not found in SchemaContext by %s", moduleImport)); localSIName = m.group(2); } else { foundModule = currentModule; // no prefix => SIE is in currentModule localSIName = prefixAndIdentityLocalName; } QName siQName = QName.create(foundModule.getNamespace(), foundModule.getRevision(), localSIName); ServiceInterfaceEntry sie = qNamesToSIEs.get(siQName); checkState(sie != null, "Cannot find referenced Service Interface by " + prefixAndIdentityLocalName); return sie; }
@Override protected boolean isKnown(final Collection<SourceIdentifier> haystack, final ModuleImport mi) { final SemVerSourceIdentifier msi = SemVerSourceIdentifier.create(mi.getModuleName(), mi.getRevision(), mi.getSemanticVersion().orElse(null)); // Quick lookup if (haystack.contains(msi)) { return true; } // Slow revision-less walk return findCompatibleVersion(haystack, mi) != null; }
private static Map<String, URI> prefixToNamespace(final SchemaContext ctx, final Module module) { final BiMap<String, URI> prefixMap = HashBiMap.create(module.getImports().size() + 1); prefixMap.put(module.getPrefix(), module.getNamespace()); for (final ModuleImport imp : module.getImports()) { final String prefix = imp.getPrefix(); final URI namespace = getModuleNamespace(ctx, imp.getModuleName()); prefixMap.put(prefix, namespace); } return prefixMap; }
private static Map<String, URI> prefixToNamespace(final SchemaContext ctx, final Module module) { final BiMap<String, URI> prefixMap = HashBiMap.create(module.getImports().size() + 1); prefixMap.put(module.getPrefix(), module.getNamespace()); for (final ModuleImport imp : module.getImports()) { final String prefix = imp.getPrefix(); final URI namespace = getModuleNamespace(ctx, imp.getModuleName()); prefixMap.put(prefix, namespace); } return prefixMap; }
private QName createQName(final String prefix, final String localName) { final Module module = schemaContext.findModule(schemaNode.getQName().getModule()).get(); if (prefix.isEmpty() || module.getPrefix().equals(prefix)) { return QName.create(module.getQNameModule(), localName); } for (final ModuleImport moduleImport : module.getImports()) { if (prefix.equals(moduleImport.getPrefix())) { final Module importedModule = schemaContext.findModule(moduleImport.getModuleName(), moduleImport.getRevision()).get(); return QName.create(importedModule.getQNameModule(),localName); } } throw new IllegalArgumentException(String.format("Failed to lookup a module for prefix %s", prefix)); }
private QName createQName(final String prefix, final String localName) { final Module module = schemaContext.findModule(schemaNode.getQName().getModule()).get(); if (prefix.isEmpty() || module.getPrefix().equals(prefix)) { return QName.create(module.getQNameModule(), localName); } for (final ModuleImport moduleImport : module.getImports()) { if (prefix.equals(moduleImport.getPrefix())) { final Module importedModule = schemaContext.findModule(moduleImport.getModuleName(), moduleImport.getRevision()).get(); return QName.create(importedModule.getQNameModule(),localName); } } throw new IllegalArgumentException(String.format("Failed to lookup a module for prefix %s", prefix)); }
protected static SourceIdentifier findCompatibleVersion(final Iterable<SourceIdentifier> haystack, final ModuleImport mi) { final String requestedModuleName = mi.getModuleName(); for (SourceIdentifier r : haystack) { if (requestedModuleName.equals(r.getName()) && isCompatible(((SemVerSourceIdentifier) r).getSemanticVersion(), mi.getSemanticVersion())) { return r; } } return null; }
protected static SourceIdentifier findCompatibleVersion(final Iterable<SourceIdentifier> haystack, final ModuleImport mi) { final String requestedModuleName = mi.getModuleName(); for (SourceIdentifier r : haystack) { if (requestedModuleName.equals(r.getName()) && isCompatible(((SemVerSourceIdentifier) r).getSemanticVersion(), mi.getSemanticVersion())) { return r; } } return null; }
private static Collection<Module> getImportedModules(final Map<ModuleId, Module> allModules, final Set<Module> baseModules, final TreeMultimap<String, Module> nameToModulesAll) { List<Module> relatedModules = Lists.newLinkedList(); for (Module module : baseModules) { for (ModuleImport moduleImport : module.getImports()) { Optional<Revision> revisionDate = moduleImport.getRevision(); if (!revisionDate.isPresent()) { revisionDate = nameToModulesAll.get(moduleImport.getModuleName()).first().getRevision(); } ModuleId key = new ModuleId(moduleImport.getModuleName(), revisionDate); Module importedModule = allModules.get(key); Preconditions.checkArgument(importedModule != null, "Invalid schema, cannot find imported module: %s from module: %s, %s, modules:%s", key, module.getQNameModule(), module.getName(), allModules); relatedModules.add(importedModule); //calling imports recursive relatedModules.addAll(getImportedModules(allModules, Collections.singleton(importedModule), nameToModulesAll)); } } return relatedModules; }
private void emitImport(final ModuleImport importNode) { super.writer.startImportNode(importNode.getModuleName()); emitDocumentedNode(importNode); emitPrefixNode(importNode.getPrefix()); importNode.getRevision().ifPresent(this::emitRevisionDateNode); super.writer.endNode(); }
private boolean checkModuleDependency(final Module module, final Collection<ModuleId> rootModules) { for (ModuleId rootModule : rootModules) { if (rootModule.equals(new ModuleId(module.getName(), module.getRevision()))) { return true; } //handling/checking imports regarding root modules for (ModuleImport moduleImport : module.getImports()) { if (moduleImport.getModuleName().equals(rootModule.getName())) { return !moduleImport.getRevision().isPresent() || moduleImport.getRevision().equals(rootModule.getRev()); } } //submodules handling for (Module moduleSub : module.getSubmodules()) { return checkModuleDependency(moduleSub, rootModules); } } return false; }
private boolean checkModuleDependency(final Module module, final Collection<ModuleId> rootModules) { for (ModuleId rootModule : rootModules) { if (rootModule.equals(new ModuleId(module.getName(), module.getRevision()))) { return true; } //handling/checking imports regarding root modules for (ModuleImport moduleImport : module.getImports()) { if (moduleImport.getModuleName().equals(rootModule.getName())) { return !moduleImport.getRevision().isPresent() || moduleImport.getRevision().equals(rootModule.getRev()); } } //submodules handling for (Module moduleSub : module.getSubmodules()) { return checkModuleDependency(moduleSub, rootModules); } } return false; }