From 6dcb2ae3ad0f1089fae434f600ce26b064315cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jovan=20Vuki=C4=87evi=C4=87?= Date: Wed, 18 Feb 2026 12:54:09 +0100 Subject: [PATCH] =?UTF-8?q?Revert=20"Remove=20the=20usage=20of=20the=20glo?= =?UTF-8?q?bal=20metadata/index.json=20from=20the=20nbt=20plugi=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit fe065ce83317da0f6dcfc194cf6a6d0d48aa79e8. --- .../internal/index/artifacts/Artifact.java | 8 +- ...duleJsonVersionToConfigDirectoryIndex.java | 19 ++- ...ileSystemModuleToConfigDirectoryIndex.java | 73 ++------- .../JsonModuleToConfigDirectoryIndex.java | 139 ++++++++++++++++++ ...dLocationModuleToConfigDirectoryIndex.java | 63 ++++++++ .../internal/FileSystemRepositoryTest.java | 2 +- ...JsonVersionToConfigDirectoryIndexTest.java | 8 +- ...ystemModuleToConfigDirectoryIndexTest.java | 15 +- .../JsonModuleToConfigDirectoryIndexTest.java | 90 ++++++++++++ ...ationModuleToConfigDirectoryIndexTest.java | 78 ++++++++++ .../artifact-1/com.foo/bar-all/index.json | 3 - .../json/artifact-1/com.foo/bar/index.json | 4 - .../test/resources/json/artifact-1/index.json | 5 + .../json/artifact-2/com.foo/bar/index.json | 4 - .../json/artifact-2/com.foo/baz/index.json | 3 - .../test/resources/json/artifact-2/index.json | 5 + .../json/modules/multi-dirs/index.json | 7 + .../multi-dirs/io.netty/netty-all/index.json | 8 - .../{org.jline => }/jline/placeholder.txt | 0 .../json/modules/single-dir/index.json | 7 + .../single-dir/io.netty/netty-all/index.json | 8 - .../{org.jline => }/jline/placeholder.txt | 0 .../src/test/resources/repos/repo1/index.json | 3 + .../resources/repos/repo1/org/foo/index.json | 2 + ...metadata-library-index-schema-v1.0.0.json} | 0 .../metadata-root-index-schema-v1.0.0.json} | 0 .../src/test/resources/repos/repo2/index.json | 6 + .../resources/repos/repo2/org/foo/index.json | 6 +- .../metadata-library-index-schema-v1.0.0.json | 0 .../metadata-root-index-schema-v1.0.0.json | 1 + .../utils/SchemaValidationUtils.java | 3 +- gradle/libs.versions.toml | 2 +- samples/layered-java-application/build.gradle | 2 +- samples/metadata-repo-integration/pom.xml | 4 +- .../config-directory/index.json | 1 + .../library-with-reflection/index.json | 1 + .../metadata-library-index-schema-v1.0.0.json | 1 + .../metadata-root-index-schema-v1.0.0.json | 1 + 38 files changed, 464 insertions(+), 118 deletions(-) create mode 100644 common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/JsonModuleToConfigDirectoryIndex.java create mode 100644 common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/StandardLocationModuleToConfigDirectoryIndex.java create mode 100644 common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/JsonModuleToConfigDirectoryIndexTest.java create mode 100644 common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/StandardLocationModuleToConfigDirectoryIndexTest.java delete mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/com.foo/bar-all/index.json delete mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/com.foo/bar/index.json create mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/index.json delete mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/com.foo/bar/index.json delete mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/com.foo/baz/index.json create mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/index.json create mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/index.json delete mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/io.netty/netty-all/index.json rename common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/{org.jline => }/jline/placeholder.txt (100%) create mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/index.json delete mode 100644 common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/io.netty/netty-all/index.json rename common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/{org.jline => }/jline/placeholder.txt (100%) create mode 100644 common/graalvm-reachability-metadata/src/test/resources/repos/repo1/index.json rename common/graalvm-reachability-metadata/src/test/resources/repos/repo1/schemas/{metadata-library-index-schema-v2.0.0.json => metadata-library-index-schema-v1.0.0.json} (100%) rename common/graalvm-reachability-metadata/src/test/resources/repos/{repo2/schemas/metadata-library-index-schema-v2.0.0.json => repo1/schemas/metadata-root-index-schema-v1.0.0.json} (100%) create mode 100644 common/graalvm-reachability-metadata/src/test/resources/repos/repo2/index.json rename samples/native-config-integration/config-directory/schemas/metadata-library-index-schema-v2.0.0.json => common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-library-index-schema-v1.0.0.json (100%) create mode 100644 common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-root-index-schema-v1.0.0.json create mode 100644 samples/native-config-integration/config-directory/index.json create mode 100644 samples/native-config-integration/config-directory/schemas/metadata-library-index-schema-v1.0.0.json create mode 100644 samples/native-config-integration/config-directory/schemas/metadata-root-index-schema-v1.0.0.json diff --git a/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/artifacts/Artifact.java b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/artifacts/Artifact.java index e7f95d670..1409293e5 100644 --- a/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/artifacts/Artifact.java +++ b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/artifacts/Artifact.java @@ -44,14 +44,16 @@ import java.util.regex.Pattern; public class Artifact { + private final String module; private final Set versions; private final String directory; private final boolean latest; private final boolean override; private final Pattern defaultForPattern; - public Artifact(Set versions, String directory, + public Artifact(String module, Set versions, String directory, boolean latest, boolean override, String defaultFor) { + this.module = module; this.versions = versions; this.directory = directory; this.latest = latest; @@ -59,6 +61,10 @@ public Artifact(Set versions, String directory, this.defaultForPattern = (defaultFor == null ? null : Pattern.compile(defaultFor)); } + public String getModule() { + return module; + } + public Set getVersions() { return versions; } diff --git a/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/artifacts/SingleModuleJsonVersionToConfigDirectoryIndex.java b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/artifacts/SingleModuleJsonVersionToConfigDirectoryIndex.java index af1fc5c71..cd0be44d7 100644 --- a/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/artifacts/SingleModuleJsonVersionToConfigDirectoryIndex.java +++ b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/artifacts/SingleModuleJsonVersionToConfigDirectoryIndex.java @@ -51,20 +51,22 @@ import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.function.Predicate; +import java.util.stream.Collectors; public class SingleModuleJsonVersionToConfigDirectoryIndex implements VersionToConfigDirectoryIndex { private final Path moduleRoot; - private final List artifacts; + private final Map> index; public SingleModuleJsonVersionToConfigDirectoryIndex(Path moduleRoot) { this.moduleRoot = moduleRoot; - this.artifacts = parseIndexFile(moduleRoot); + this.index = parseIndexFile(moduleRoot); } - private List parseIndexFile(Path rootPath) { + private Map> parseIndexFile(Path rootPath) { Path indexFile = rootPath.resolve("index.json"); try { String fileContent = Files.readString(indexFile); @@ -73,7 +75,8 @@ private List parseIndexFile(Path rootPath) { for (int i = 0; i < json.length(); i++) { entries.add(fromJson(json.getJSONObject(i))); } - return entries; + return entries.stream() + .collect(Collectors.groupingBy(Artifact::getModule)); } catch (IOException e) { throw new UncheckedIOException(e); } @@ -118,10 +121,13 @@ public Optional findLatestConfigurationFor(String groupI private Optional findConfigurationFor(String groupId, String artifactId, String version, Predicate predicate) { - if (artifacts.isEmpty()) { + String module = groupId + ":" + artifactId; + List artifacts = index.get(module); + if (artifacts == null) { return Optional.empty(); } return artifacts.stream() + .filter(artifact -> artifact.getModule().equals(module)) .filter(predicate) .findFirst() .map(artifact -> new DirectoryConfiguration(groupId, artifactId, version, @@ -129,12 +135,13 @@ private Optional findConfigurationFor(String groupId, St } private Artifact fromJson(JSONObject json) { + String module = json.optString("module", null); Set testVersions = readTestedVersions(json.optJSONArray("tested-versions")); String directory = json.optString("metadata-version", null); boolean latest = json.optBoolean("latest"); boolean override = json.optBoolean("override"); String defaultFor = json.optString("default-for", null); - return new Artifact(testVersions, directory, latest, override, defaultFor); + return new Artifact(module, testVersions, directory, latest, override, defaultFor); } private Set readTestedVersions(JSONArray array) { diff --git a/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/FileSystemModuleToConfigDirectoryIndex.java b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/FileSystemModuleToConfigDirectoryIndex.java index 7d16c2680..78d6a8604 100644 --- a/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/FileSystemModuleToConfigDirectoryIndex.java +++ b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/FileSystemModuleToConfigDirectoryIndex.java @@ -40,77 +40,36 @@ */ package org.graalvm.reachability.internal.index.modules; -import com.github.openjson.JSONArray; -import com.github.openjson.JSONObject; -import org.graalvm.reachability.internal.UncheckedIOException; - -import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; -import java.util.Collections; -import java.util.LinkedHashSet; import java.util.Set; /** - * Module-to-config index which: - * - Resolves the primary module directory by conventional layout (groupId/artifactId), - * - Reads requires from the inner metadata/group/artifact/index.json and adds their conventional directories. + * This is the default index from module to configuration directory, which first + * looks into the JSON index file, and if a module isn't found there, would try + * to find it in the standard FS location. */ public class FileSystemModuleToConfigDirectoryIndex implements ModuleToConfigDirectoryIndex { - private final Path rootPath; + private final JsonModuleToConfigDirectoryIndex jsonIndex; + private final StandardLocationModuleToConfigDirectoryIndex fsIndex; public FileSystemModuleToConfigDirectoryIndex(Path rootPath) { - this.rootPath = rootPath; + this.jsonIndex = new JsonModuleToConfigDirectoryIndex(rootPath); + this.fsIndex = new StandardLocationModuleToConfigDirectoryIndex(rootPath); } /** - * Returns the directories containing the candidate configurations for the given module. - *

- * - Always includes the conventional module directory if present: rootPath/groupId/artifactId - * - Additionally includes conventional directories of any modules listed in "requires" of the inner index.json - * - Only a single-level requires expansion is performed + * Returns the directory containing the candidate configurations for the given module. + * + * @param groupId the group of the module + * @param artifactId the artifact of the module + * @return the configuration directory */ @Override public Set findConfigurationDirectories(String groupId, String artifactId) { - Path base = rootPath.resolve(groupId + "/" + artifactId); - if (!Files.isDirectory(base)) { - return Collections.emptySet(); - } - - Path indexFile = base.resolve("index.json"); - if (Files.isRegularFile(indexFile)) { - Set result = new LinkedHashSet<>(); - // Always include the base directory so its index.json is parsed, - // even if it doesn't contain configuration files itself. - result.add(base); - try { - String content = Files.readString(indexFile); - JSONArray entries = new JSONArray(content); - for (int i = 0; i < entries.length(); i++) { - JSONObject entry = entries.getJSONObject(i); - JSONArray requires = entry.optJSONArray("requires"); - if (requires == null) { - continue; - } - for (int j = 0; j < requires.length(); j++) { - String req = requires.getString(j); - int sep = req.indexOf(':'); - if (sep > 0) { - String reqGroup = req.substring(0, sep); - String reqArtifact = req.substring(sep + 1); - Path reqDir = rootPath.resolve(reqGroup + "/" + reqArtifact); - if (Files.isDirectory(reqDir)) { - result.add(reqDir); - } - } - } - } - } catch (IOException e) { - throw new UncheckedIOException(e); - } - return result; + Set fromIndex = jsonIndex.findConfigurationDirectories(groupId, artifactId); + if (!fromIndex.isEmpty()) { + return fromIndex; } - - return Collections.singleton(base); + return fsIndex.findConfigurationDirectories(groupId, artifactId); } } diff --git a/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/JsonModuleToConfigDirectoryIndex.java b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/JsonModuleToConfigDirectoryIndex.java new file mode 100644 index 000000000..a58532230 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/JsonModuleToConfigDirectoryIndex.java @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * The Universal Permissive License (UPL), Version 1.0 + * + * Subject to the condition set forth below, permission is hereby granted to any + * person obtaining a copy of this software, associated documentation and/or + * data (collectively the "Software"), free of charge and under any and all + * copyright rights in the Software, and any and all patent rights owned or + * freely licensable by each licensor hereunder covering either (i) the + * unmodified Software as contributed to or provided by such licensor, or (ii) + * the Larger Works (as defined below), to deal in both + * + * (a) the Software, and + * + * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if + * one is included with the Software each a "Larger Work" to which the Software + * is contributed by such licensors), + * + * without restriction, including without limitation the rights to copy, create + * derivative works of, display, perform, and distribute the Software and make, + * use, sell, offer for sale, import, export, have made, and have sold the + * Software and the Larger Work(s), and to sublicense the foregoing rights on + * either these or other terms. + * + * This license is subject to the following condition: + * + * The above copyright notice and either this complete permission notice or at a + * minimum a reference to the UPL must be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.graalvm.reachability.internal.index.modules; + +import com.github.openjson.JSONArray; +import com.github.openjson.JSONObject; +import org.graalvm.reachability.internal.UncheckedIOException; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class JsonModuleToConfigDirectoryIndex implements ModuleToConfigDirectoryIndex { + private final Path rootPath; + private final Map> index; + + public JsonModuleToConfigDirectoryIndex(Path rootPath) { + this.rootPath = rootPath; + this.index = parseIndexFile(rootPath); + } + + private Map> parseIndexFile(Path rootPath) { + Path indexFile = rootPath.resolve("index.json"); + try { + String fileContent = Files.readString(indexFile); + JSONArray json = new JSONArray(fileContent); + List entries = new ArrayList<>(); + for (int i = 0; i < json.length(); i++) { + entries.add(fromJson(json.getJSONObject(i))); + } + Map> moduleToEntries = entries.stream() + .collect(Collectors.groupingBy(ModuleEntry::getModule)); + Map> index = new HashMap<>(moduleToEntries.size()); + for (Map.Entry> entry : moduleToEntries.entrySet()) { + String key = entry.getKey(); + Set dirs = entry.getValue() + .stream() + .flatMap(module -> Stream.concat( + Stream.of(module.getModuleDirectory()), + module.getRequires().stream().flatMap(e -> { + List moduleEntries = moduleToEntries.get(e); + if (moduleEntries == null) { + throw new IllegalStateException("Module " + module.getModule() + " requires module " + e + " which is not found in index"); + } + return moduleEntries.stream().map(ModuleEntry::getModuleDirectory); + }) + )) + .filter(Objects::nonNull) + .map(rootPath::resolve) + .collect(Collectors.toSet()); + index.put(key, dirs); + } + return index; + } catch (IOException e) { + throw new UncheckedIOException(e); + } + + } + + private ModuleEntry fromJson(JSONObject json) { + String module = json.optString("module", null); + String moduleDirectory = json.optString("directory", null); + List requires = readRequires(json.optJSONArray("requires")); + return new ModuleEntry(module, moduleDirectory, requires); + } + + private List readRequires(JSONArray array) { + List requires = new ArrayList<>(); + if (array != null) { + for (int i = 0; i < array.length(); i++) { + requires.add(array.getString(i)); + } + } + return requires; + } + + /** + * Returns the directory containing the candidate configurations for the given module. + * + * @param groupId the group of the module + * @param artifactId the artifact of the module + * @return the configuration directory + */ + @Override + public Set findConfigurationDirectories(String groupId, String artifactId) { + String key = groupId + ":" + artifactId; + if (!index.containsKey(key)) { + return Collections.emptySet(); + } + return index.get(key); + } +} diff --git a/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/StandardLocationModuleToConfigDirectoryIndex.java b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/StandardLocationModuleToConfigDirectoryIndex.java new file mode 100644 index 000000000..d93330f14 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/main/java/org/graalvm/reachability/internal/index/modules/StandardLocationModuleToConfigDirectoryIndex.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * The Universal Permissive License (UPL), Version 1.0 + * + * Subject to the condition set forth below, permission is hereby granted to any + * person obtaining a copy of this software, associated documentation and/or + * data (collectively the "Software"), free of charge and under any and all + * copyright rights in the Software, and any and all patent rights owned or + * freely licensable by each licensor hereunder covering either (i) the + * unmodified Software as contributed to or provided by such licensor, or (ii) + * the Larger Works (as defined below), to deal in both + * + * (a) the Software, and + * + * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if + * one is included with the Software each a "Larger Work" to which the Software + * is contributed by such licensors), + * + * without restriction, including without limitation the rights to copy, create + * derivative works of, display, perform, and distribute the Software and make, + * use, sell, offer for sale, import, export, have made, and have sold the + * Software and the Larger Work(s), and to sublicense the foregoing rights on + * either these or other terms. + * + * This license is subject to the following condition: + * + * The above copyright notice and either this complete permission notice or at a + * minimum a reference to the UPL must be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package org.graalvm.reachability.internal.index.modules; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Collections; +import java.util.Set; + +public class StandardLocationModuleToConfigDirectoryIndex implements ModuleToConfigDirectoryIndex { + private final Path rootPath; + + public StandardLocationModuleToConfigDirectoryIndex(Path rootPath) { + this.rootPath = rootPath; + } + + @Override + public Set findConfigurationDirectories(String groupId, String artifactId) { + Path candidate = rootPath.resolve(groupId + "/" + artifactId); + if (Files.isDirectory(candidate)) { + return Collections.singleton(candidate); + } + return Collections.emptySet(); + } +} diff --git a/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/FileSystemRepositoryTest.java b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/FileSystemRepositoryTest.java index 06ecd3c28..b9206c89a 100644 --- a/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/FileSystemRepositoryTest.java +++ b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/FileSystemRepositoryTest.java @@ -88,7 +88,7 @@ void testRepo1() { void testRepo2() { // when: withRepo("repo2"); - lookup("org:foo:1.1"); + lookup("org:bar:2.1"); // then: result.hasSinglePath("org/foo/1.1"); diff --git a/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/artifacts/SingleModuleJsonVersionToConfigDirectoryIndexTest.java b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/artifacts/SingleModuleJsonVersionToConfigDirectoryIndexTest.java index 93830d8af..de42eaf2f 100644 --- a/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/artifacts/SingleModuleJsonVersionToConfigDirectoryIndexTest.java +++ b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/artifacts/SingleModuleJsonVersionToConfigDirectoryIndexTest.java @@ -60,7 +60,7 @@ class SingleModuleJsonVersionToConfigDirectoryIndexTest { @Test void checkIndex() throws URISyntaxException { - withIndex("artifact-1/com.foo/bar"); + withIndex("artifact-1"); Optional config = index.findConfiguration("com.foo", "bar", "1.0"); assertTrue(config.isPresent()); @@ -80,7 +80,6 @@ void checkIndex() throws URISyntaxException { config = index.findConfiguration("com.foo", "bar", "2.5"); assertFalse(config.isPresent()); - withIndex("artifact-1/com.foo/bar-all"); config = index.findConfiguration("com.foo", "bar-all", "2.0"); assertTrue(config.isPresent()); assertEquals(repoPath.resolve("2.0"), config.get().getDirectory()); @@ -89,7 +88,6 @@ void checkIndex() throws URISyntaxException { config = index.findConfiguration("com.foo", "nope", "1.0"); assertFalse(config.isPresent()); - withIndex("artifact-1/com.foo/bar"); Optional latest = index.findLatestConfigurationFor("com.foo", "bar", "123"); assertTrue(latest.isPresent()); assertEquals(repoPath.resolve("2.0"), latest.get().getDirectory()); @@ -99,7 +97,7 @@ void checkIndex() throws URISyntaxException { @Test void checkIndexWithDefaultFor() throws URISyntaxException { - withIndex("artifact-2/com.foo/bar"); + withIndex("artifact-2"); Optional config = index.findConfiguration("com.foo", "bar", "1.0"); assertTrue(config.isPresent()); @@ -117,12 +115,10 @@ void checkIndexWithDefaultFor() throws URISyntaxException { assertTrue(config.isPresent()); assertEquals(repoPath.resolve("2.0"), config.get().getDirectory()); - withIndex("artifact-2/com.foo/baz"); config = index.findConfiguration("com.foo", "baz", "1.1"); assertTrue(config.isPresent()); assertEquals(repoPath.resolve("1.0"), config.get().getDirectory()); - withIndex("artifact-2/com.foo/bar"); Optional latest = index.findLatestConfigurationFor("com.foo", "bar", "123"); assertTrue(latest.isPresent()); assertEquals(repoPath.resolve("2.0"), latest.get().getDirectory()); diff --git a/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/FileSystemModuleToConfigDirectoryIndexTest.java b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/FileSystemModuleToConfigDirectoryIndexTest.java index 23baf09f1..229d0bc11 100644 --- a/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/FileSystemModuleToConfigDirectoryIndexTest.java +++ b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/FileSystemModuleToConfigDirectoryIndexTest.java @@ -44,6 +44,7 @@ import org.junit.jupiter.api.Test; import java.io.File; +import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Path; import java.util.HashSet; @@ -59,30 +60,26 @@ class FileSystemModuleToConfigDirectoryIndexTest { private FileSystemModuleToConfigDirectoryIndex index; @Test - void returnsSingleDirectory() throws URISyntaxException { + void returnsSingleDirectory() throws IOException, URISyntaxException { writeIndex("single-dir"); Set configurationDirectories = index.findConfigurationDirectories("io.netty", "netty-core"); assertEquals(singleton(repoPath.resolve("io.netty/netty-core")), configurationDirectories); configurationDirectories = index.findConfigurationDirectories("io.netty", "netty-all"); - assertEquals(new HashSet<>(asList( - repoPath.resolve("io.netty/netty-all"), - repoPath.resolve("io.netty/netty-core") - )), configurationDirectories); + assertEquals(singleton(repoPath.resolve("io.netty/netty-core")), configurationDirectories); configurationDirectories = index.findConfigurationDirectories("org", "bar"); assertEquals(singleton(repoPath.resolve("org/bar")), configurationDirectories); } @Test - void returnsMultipleDirectories() throws URISyntaxException { + void returnsMultipleDirectories() throws IOException, URISyntaxException { writeIndex("multi-dirs"); Set configurationDirectories = index.findConfigurationDirectories("io.netty", "netty-all"); assertEquals(new HashSet<>(asList( - repoPath.resolve("io.netty/netty-all"), repoPath.resolve("io.netty/netty-core"), - repoPath.resolve("org.jline/jline") - )), configurationDirectories); + repoPath.resolve("jline") + )), configurationDirectories); configurationDirectories = index.findConfigurationDirectories("org", "bar"); assertEquals(singleton(repoPath.resolve("org/bar")), configurationDirectories); diff --git a/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/JsonModuleToConfigDirectoryIndexTest.java b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/JsonModuleToConfigDirectoryIndexTest.java new file mode 100644 index 000000000..c0d6f8380 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/JsonModuleToConfigDirectoryIndexTest.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * The Universal Permissive License (UPL), Version 1.0 + * + * Subject to the condition set forth below, permission is hereby granted to any + * person obtaining a copy of this software, associated documentation and/or + * data (collectively the "Software"), free of charge and under any and all + * copyright rights in the Software, and any and all patent rights owned or + * freely licensable by each licensor hereunder covering either (i) the + * unmodified Software as contributed to or provided by such licensor, or (ii) + * the Larger Works (as defined below), to deal in both + * + * (a) the Software, and + * + * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if + * one is included with the Software each a "Larger Work" to which the Software + * is contributed by such licensors), + * + * without restriction, including without limitation the rights to copy, create + * derivative works of, display, perform, and distribute the Software and make, + * use, sell, offer for sale, import, export, have made, and have sold the + * Software and the Larger Work(s), and to sublicense the foregoing rights on + * either these or other terms. + * + * This license is subject to the following condition: + * + * The above copyright notice and either this complete permission notice or at a + * minimum a reference to the UPL must be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package org.graalvm.reachability.internal.index.modules; + +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.util.HashSet; +import java.util.Set; + +import static java.util.Arrays.asList; +import static java.util.Collections.emptySet; +import static java.util.Collections.singleton; +import static org.junit.jupiter.api.Assertions.assertEquals; + +class JsonModuleToConfigDirectoryIndexTest { + private Path repoPath; + + private JsonModuleToConfigDirectoryIndex index; + + @Test + void returnsSingleDirectory() throws URISyntaxException { + writeIndex("single-dir"); + Set configurationDirectories = index.findConfigurationDirectories("io.netty", "netty-core"); + assertEquals(singleton(repoPath.resolve("io.netty/netty-core")), configurationDirectories); + + configurationDirectories = index.findConfigurationDirectories("io.netty", "netty-all"); + assertEquals(singleton(repoPath.resolve("io.netty/netty-core")), configurationDirectories); + + configurationDirectories = index.findConfigurationDirectories("org", "bar"); + assertEquals(emptySet(), configurationDirectories); + } + + @Test + void returnsMultipleDirectories() throws URISyntaxException { + writeIndex("multi-dirs"); + Set configurationDirectories = index.findConfigurationDirectories("io.netty", "netty-all"); + assertEquals(new HashSet<>(asList( + repoPath.resolve("io.netty/netty-core"), + repoPath.resolve("jline") + )), configurationDirectories); + + } + + private void writeIndex(String json) throws URISyntaxException { + repoPath = new File(FileSystemModuleToConfigDirectoryIndexTest.class.getResource("/json/modules/" + json).toURI()).toPath(); + index = new JsonModuleToConfigDirectoryIndex(repoPath); + } +} diff --git a/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/StandardLocationModuleToConfigDirectoryIndexTest.java b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/StandardLocationModuleToConfigDirectoryIndexTest.java new file mode 100644 index 000000000..adcbeb65b --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/java/org/graalvm/reachability/internal/index/modules/StandardLocationModuleToConfigDirectoryIndexTest.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2020, 2022 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * The Universal Permissive License (UPL), Version 1.0 + * + * Subject to the condition set forth below, permission is hereby granted to any + * person obtaining a copy of this software, associated documentation and/or + * data (collectively the "Software"), free of charge and under any and all + * copyright rights in the Software, and any and all patent rights owned or + * freely licensable by each licensor hereunder covering either (i) the + * unmodified Software as contributed to or provided by such licensor, or (ii) + * the Larger Works (as defined below), to deal in both + * + * (a) the Software, and + * + * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if + * one is included with the Software each a "Larger Work" to which the Software + * is contributed by such licensors), + * + * without restriction, including without limitation the rights to copy, create + * derivative works of, display, perform, and distribute the Software and make, + * use, sell, offer for sale, import, export, have made, and have sold the + * Software and the Larger Work(s), and to sublicense the foregoing rights on + * either these or other terms. + * + * This license is subject to the following condition: + * + * The above copyright notice and either this complete permission notice or at a + * minimum a reference to the UPL must be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package org.graalvm.reachability.internal.index.modules; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Set; + +import static java.util.Collections.emptySet; +import static java.util.Collections.singleton; +import static org.junit.jupiter.api.Assertions.assertEquals; + +class StandardLocationModuleToConfigDirectoryIndexTest { + @TempDir + private Path tempDir; + + private StandardLocationModuleToConfigDirectoryIndex index; + + @BeforeEach + void setUp() { + index = new StandardLocationModuleToConfigDirectoryIndex(tempDir); + } + + @Test + void returnsConventionalConfigLocation() throws IOException { + Path localDir = tempDir.resolve("org.module/foo"); + Files.createDirectories(localDir); + Set configurationDirectories = index.findConfigurationDirectories("org.module", "foo"); + assertEquals(singleton(localDir), configurationDirectories); + + configurationDirectories = index.findConfigurationDirectories("org", "bar"); + assertEquals(emptySet(), configurationDirectories); + } +} diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/com.foo/bar-all/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/com.foo/bar-all/index.json deleted file mode 100644 index b3da60239..000000000 --- a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/com.foo/bar-all/index.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - { "tested-versions": ["2.0", "2.1"], "metadata-version": "2.0", "allowed-packages": [] } -] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/com.foo/bar/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/com.foo/bar/index.json deleted file mode 100644 index c1a3ff93f..000000000 --- a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/com.foo/bar/index.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - { "tested-versions": ["1.0", "1.1", "1.2", "1.3"], "metadata-version": "1.0", "allowed-packages": [] }, - { "tested-versions": ["2.0", "2.1"], "metadata-version": "2.0", "allowed-packages": [], "latest": true, "override": true } -] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/index.json new file mode 100644 index 000000000..d2f3b3d07 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/resources/json/artifact-1/index.json @@ -0,0 +1,5 @@ +[ + { "module": "com.foo:bar", "tested-versions": ["1.0", "1.1", "1.2", "1.3"], "metadata-version": "1.0" }, + { "module": "com.foo:bar", "tested-versions": ["2.0", "2.1"], "metadata-version": "2.0", "latest": true, "override": true }, + { "module": "com.foo:bar-all", "tested-versions": ["2.0", "2.1"], "metadata-version": "2.0" } +] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/com.foo/bar/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/com.foo/bar/index.json deleted file mode 100644 index 2aada474a..000000000 --- a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/com.foo/bar/index.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - { "tested-versions": ["1.0"], "metadata-version": "1.0", "allowed-packages": [], "default-for": "1\\..*" }, - { "tested-versions": ["2.0", "2.1"], "metadata-version": "2.0", "allowed-packages": [], "latest": true } -] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/com.foo/baz/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/com.foo/baz/index.json deleted file mode 100644 index c10067bca..000000000 --- a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/com.foo/baz/index.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - { "tested-versions": ["1.0"], "metadata-version": "1.0", "allowed-packages": [], "default-for": "1.*" } -] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/index.json new file mode 100644 index 000000000..53b35b5cc --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/resources/json/artifact-2/index.json @@ -0,0 +1,5 @@ +[ + { "module": "com.foo:bar", "tested-versions": ["1.0"], "metadata-version": "1.0", "default-for": "1\\..*" }, + { "module": "com.foo:bar", "tested-versions": ["2.0", "2.1"], "metadata-version": "2.0", "latest": true }, + { "module": "com.foo:baz", "tested-versions": ["1.0"], "metadata-version": "1.0", "default-for": "1.*" } +] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/index.json new file mode 100644 index 000000000..f0b9f5906 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/index.json @@ -0,0 +1,7 @@ +[ + { "module": "io.netty:netty-core", "directory": "io.netty/netty-core"}, + { "module": "org.jline:jline", "directory": "jline"}, + { + "module": "io.netty:netty-all", "requires": ["io.netty:netty-core", "org.jline:jline"] + } +] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/io.netty/netty-all/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/io.netty/netty-all/index.json deleted file mode 100644 index f3361c532..000000000 --- a/common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/io.netty/netty-all/index.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "metadata-version": "1", - "tested-versions": ["1.0"], - "allowed-packages": [], - "requires": ["io.netty:netty-core", "org.jline:jline"] - } -] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/org.jline/jline/placeholder.txt b/common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/jline/placeholder.txt similarity index 100% rename from common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/org.jline/jline/placeholder.txt rename to common/graalvm-reachability-metadata/src/test/resources/json/modules/multi-dirs/jline/placeholder.txt diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/index.json new file mode 100644 index 000000000..674513410 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/index.json @@ -0,0 +1,7 @@ +[ + { "module": "io.netty:netty-core", "directory": "io.netty/netty-core"}, + { "module": "org.jline:jline", "directory": "jline"}, + { + "module": "io.netty:netty-all", "requires": ["io.netty:netty-core"] + } +] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/io.netty/netty-all/index.json b/common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/io.netty/netty-all/index.json deleted file mode 100644 index a3b4fd54a..000000000 --- a/common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/io.netty/netty-all/index.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - { - "metadata-version": "1", - "tested-versions": ["1.0"], - "allowed-packages": [], - "requires": ["io.netty:netty-core"] - } -] diff --git a/common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/org.jline/jline/placeholder.txt b/common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/jline/placeholder.txt similarity index 100% rename from common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/org.jline/jline/placeholder.txt rename to common/graalvm-reachability-metadata/src/test/resources/json/modules/single-dir/jline/placeholder.txt diff --git a/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/index.json b/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/index.json new file mode 100644 index 000000000..41b42e677 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/index.json @@ -0,0 +1,3 @@ +[ + +] diff --git a/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/org/foo/index.json b/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/org/foo/index.json index c34195b16..70f6d9c33 100644 --- a/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/org/foo/index.json +++ b/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/org/foo/index.json @@ -1,11 +1,13 @@ [ { + "module": "org:foo", "tested-versions": [ "1.0" ], "metadata-version": "1.0" }, { + "module": "org:foo", "tested-versions": [ "1.1" ], diff --git a/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/schemas/metadata-library-index-schema-v2.0.0.json b/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/schemas/metadata-library-index-schema-v1.0.0.json similarity index 100% rename from common/graalvm-reachability-metadata/src/test/resources/repos/repo1/schemas/metadata-library-index-schema-v2.0.0.json rename to common/graalvm-reachability-metadata/src/test/resources/repos/repo1/schemas/metadata-library-index-schema-v1.0.0.json diff --git a/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-library-index-schema-v2.0.0.json b/common/graalvm-reachability-metadata/src/test/resources/repos/repo1/schemas/metadata-root-index-schema-v1.0.0.json similarity index 100% rename from common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-library-index-schema-v2.0.0.json rename to common/graalvm-reachability-metadata/src/test/resources/repos/repo1/schemas/metadata-root-index-schema-v1.0.0.json diff --git a/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/index.json b/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/index.json new file mode 100644 index 000000000..5ffe83bb0 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/index.json @@ -0,0 +1,6 @@ +[ + { + "module": "org:bar", + "directory": "org/foo" + } +] diff --git a/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/org/foo/index.json b/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/org/foo/index.json index 8c165b4b3..b2d751163 100644 --- a/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/org/foo/index.json +++ b/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/org/foo/index.json @@ -1,5 +1,5 @@ [ - { "tested-versions": ["1.0"], "metadata-version": "1.0" }, - { "tested-versions": ["1.1"], "metadata-version": "1.1" }, - { "tested-versions": ["2.1"], "metadata-version": "1.1" } + { "module": "org:foo", "tested-versions": ["1.0"], "metadata-version": "1.0" }, + { "module": "org:foo", "tested-versions": ["1.1"], "metadata-version": "1.1" }, + { "module": "org:bar", "tested-versions": ["2.1"], "metadata-version": "1.1" } ] diff --git a/samples/native-config-integration/config-directory/schemas/metadata-library-index-schema-v2.0.0.json b/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-library-index-schema-v1.0.0.json similarity index 100% rename from samples/native-config-integration/config-directory/schemas/metadata-library-index-schema-v2.0.0.json rename to common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-library-index-schema-v1.0.0.json diff --git a/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-root-index-schema-v1.0.0.json b/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-root-index-schema-v1.0.0.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/common/graalvm-reachability-metadata/src/test/resources/repos/repo2/schemas/metadata-root-index-schema-v1.0.0.json @@ -0,0 +1 @@ +{} diff --git a/common/utils/src/main/java/org/graalvm/buildtools/utils/SchemaValidationUtils.java b/common/utils/src/main/java/org/graalvm/buildtools/utils/SchemaValidationUtils.java index 691903b40..b40172e9c 100644 --- a/common/utils/src/main/java/org/graalvm/buildtools/utils/SchemaValidationUtils.java +++ b/common/utils/src/main/java/org/graalvm/buildtools/utils/SchemaValidationUtils.java @@ -26,7 +26,8 @@ public final class SchemaValidationUtils { */ private static final RequiredSchema[] REQUIRED_SCHEMAS = new RequiredSchema[] { new RequiredSchema("library-and-framework-list-schema", 1), - new RequiredSchema("metadata-library-index-schema", 2), + new RequiredSchema("metadata-library-index-schema", 1), + new RequiredSchema("metadata-root-index-schema", 1) }; /** diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 465141884..14f3eaa4d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] # Project versions nativeBuildTools = "0.11.5-SNAPSHOT" -metadataRepository = "0.3.34" +metadataRepository = "0.3.33" # External dependencies spock = "2.1-groovy-3.0" diff --git a/samples/layered-java-application/build.gradle b/samples/layered-java-application/build.gradle index 2263eeab5..93fd5f81d 100644 --- a/samples/layered-java-application/build.gradle +++ b/samples/layered-java-application/build.gradle @@ -57,7 +57,7 @@ def junitVersion = providers.gradleProperty('junit.jupiter.version') dependencies { implementation("org.slf4j:slf4j-api:2.0.17") - runtimeOnly("ch.qos.logback:logback-classic:1.5.6") + runtimeOnly("ch.qos.logback:logback-classic:1.5.18") testImplementation(platform("org.junit:junit-bom:${junitVersion}")) testImplementation('org.junit.jupiter:junit-jupiter') testRuntimeOnly('org.junit.platform:junit-platform-launcher') diff --git a/samples/metadata-repo-integration/pom.xml b/samples/metadata-repo-integration/pom.xml index d03916e97..446e4e4ee 100644 --- a/samples/metadata-repo-integration/pom.xml +++ b/samples/metadata-repo-integration/pom.xml @@ -136,7 +136,7 @@ true - 0.3.34 + 0.3.33 @@ -193,7 +193,7 @@ - 0.3.34 + 0.3.33 diff --git a/samples/native-config-integration/config-directory/index.json b/samples/native-config-integration/config-directory/index.json new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/samples/native-config-integration/config-directory/index.json @@ -0,0 +1 @@ +[] diff --git a/samples/native-config-integration/config-directory/org.graalvm.internal/library-with-reflection/index.json b/samples/native-config-integration/config-directory/org.graalvm.internal/library-with-reflection/index.json index e81aac7c1..0e78c26de 100644 --- a/samples/native-config-integration/config-directory/org.graalvm.internal/library-with-reflection/index.json +++ b/samples/native-config-integration/config-directory/org.graalvm.internal/library-with-reflection/index.json @@ -1,5 +1,6 @@ [ { + "module": "org.graalvm.internal:library-with-reflection", "tested-versions": [ "1.0", "1.1", diff --git a/samples/native-config-integration/config-directory/schemas/metadata-library-index-schema-v1.0.0.json b/samples/native-config-integration/config-directory/schemas/metadata-library-index-schema-v1.0.0.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/samples/native-config-integration/config-directory/schemas/metadata-library-index-schema-v1.0.0.json @@ -0,0 +1 @@ +{} diff --git a/samples/native-config-integration/config-directory/schemas/metadata-root-index-schema-v1.0.0.json b/samples/native-config-integration/config-directory/schemas/metadata-root-index-schema-v1.0.0.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/samples/native-config-integration/config-directory/schemas/metadata-root-index-schema-v1.0.0.json @@ -0,0 +1 @@ +{}