This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-shared-jar.git
The following commit(s) were added to refs/heads/master by this push:
new 6d4cb41 [MSHARED-1411] Allow access the root entries if it is a
multi-release JAR file
6d4cb41 is described below
commit 6d4cb413fdd52850520a163b5d2f1f06100c53c9
Author: Gabriel Belingueres <[email protected]>
AuthorDate: Fri Jun 14 05:33:36 2024 +0200
[MSHARED-1411] Allow access the root entries if it is a multi-release JAR
file
This closes #40
---
src/main/java/org/apache/maven/shared/jar/JarData.java | 17 +++++++++++++++++
.../maven/shared/jar/classes/JarClassesAnalysis.java | 16 +++++++++-------
.../maven/shared/jar/classes/JarVersionedRuntime.java | 4 ++++
.../shared/jar/classes/JarClassesAnalyzerTest.java | 12 +++++++++---
4 files changed, 39 insertions(+), 10 deletions(-)
diff --git a/src/main/java/org/apache/maven/shared/jar/JarData.java
b/src/main/java/org/apache/maven/shared/jar/JarData.java
index de2781f..d6f6b1c 100644
--- a/src/main/java/org/apache/maven/shared/jar/JarData.java
+++ b/src/main/java/org/apache/maven/shared/jar/JarData.java
@@ -77,6 +77,11 @@ public final class JarData {
*/
private final List<JarEntry> entries;
+ /**
+ * The JAR entries of the root content, when it is a multi-release JAR
+ */
+ private List<JarEntry> rootEntries;
+
/**
* Information about the JAR's identifying features.
*/
@@ -109,6 +114,14 @@ public final class JarData {
return entries;
}
+ public List<JarEntry> getRootEntries() {
+ return rootEntries;
+ }
+
+ public void setRootEntries(List<JarEntry> rootEntries) {
+ this.rootEntries = rootEntries;
+ }
+
public Manifest getManifest() {
return manifest;
}
@@ -153,6 +166,10 @@ public final class JarData {
return entries.size();
}
+ public int getNumRootEntries() {
+ return rootEntries.size();
+ }
+
public int getNumClasses() {
return jarClasses.getClassNames().size();
}
diff --git
a/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
b/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
index bd9cb22..1c6663f 100644
--- a/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
+++ b/src/main/java/org/apache/maven/shared/jar/classes/JarClassesAnalysis.java
@@ -61,8 +61,8 @@ public class JarClassesAnalysis {
private final Logger logger = LoggerFactory.getLogger(getClass());
/**
- * Constant representing the classes in the root of a Multi-Release JAR
file.
- * Meaning outside of any given META-INF/versions/NN/... entry.
+ * Constant representing the root content of a Multi-Release JAR file,
thus outside of
+ * any given META-INF/versions/NN/... entry.
*/
private static final Integer ROOT = 0;
@@ -145,10 +145,12 @@ public class JarClassesAnalysis {
runtimeVersionsMap.put(runtimeVersion, new
JarVersionedRuntime(runtimeVersionEntryList, classes));
}
- JarVersionedRuntime baseJarRelease = runtimeVersionsMap.remove(ROOT);
- JarClasses baseJarClasses = baseJarRelease.getJarClasses();
+ JarData jarData = jarAnalyzer.getJarData();
- jarAnalyzer.getJarData().setJarClasses(baseJarClasses);
+ JarVersionedRuntime rootContentVersionedRuntime =
runtimeVersionsMap.remove(ROOT);
+ jarData.setRootEntries(rootContentVersionedRuntime.getEntries());
+ JarClasses rootJarClasses =
rootContentVersionedRuntime.getJarClasses();
+ jarData.setJarClasses(rootJarClasses);
// Paranoid?
for (Map.Entry<Integer, JarVersionedRuntime> runtimeVersionEntry :
runtimeVersionsMap.entrySet()) {
@@ -163,9 +165,9 @@ public class JarClassesAnalysis {
}
}
- jarAnalyzer.getJarData().setVersionedRuntimes(new
JarVersionedRuntimes(runtimeVersionsMap));
+ jarData.setVersionedRuntimes(new
JarVersionedRuntimes(runtimeVersionsMap));
- return baseJarClasses;
+ return rootJarClasses;
}
private JarClasses analyzeRoot(JarAnalyzer jarAnalyzer) {
diff --git
a/src/main/java/org/apache/maven/shared/jar/classes/JarVersionedRuntime.java
b/src/main/java/org/apache/maven/shared/jar/classes/JarVersionedRuntime.java
index f76cd30..6a4b90b 100644
--- a/src/main/java/org/apache/maven/shared/jar/classes/JarVersionedRuntime.java
+++ b/src/main/java/org/apache/maven/shared/jar/classes/JarVersionedRuntime.java
@@ -48,4 +48,8 @@ public class JarVersionedRuntime {
public JarClasses getJarClasses() {
return jarClasses;
}
+
+ public int getNumEntries() {
+ return entries.size();
+ }
}
diff --git
a/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
b/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
index dc7c1db..3862712 100644
---
a/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
+++
b/src/test/java/org/apache/maven/shared/jar/classes/JarClassesAnalyzerTest.java
@@ -152,7 +152,9 @@ class JarClassesAnalyzerTest extends
AbstractJarAnalyzerTestCase {
@Test
void testAnalyzeJarWithOnlyModuleInfoClass() throws Exception {
JarData jarData = getJarData("module-info-only-test-0.0.1.jar");
- // root level classes
+ assertEquals(10, jarData.getNumEntries());
+ // root level information
+ assertEquals(9, jarData.getNumRootEntries());
JarClasses jclass = jarData.getJarClasses();
assertTrue(jclass.getImports().isEmpty());
assertTrue(jclass.getPackages().isEmpty());
@@ -174,15 +176,17 @@ class JarClassesAnalyzerTest extends
AbstractJarAnalyzerTestCase {
assertEquals("", jarClasses11.getPackages().get(0));
assertEquals(1, jarClasses11.getClassNames().size());
assertTrue(jarClasses11.getMethods().isEmpty());
- assertEquals(1, jarVersionedRuntime11.getEntries().size());
+ assertEquals(1, jarVersionedRuntime11.getNumEntries());
assertEntriesContains(jarVersionedRuntime11.getEntries(),
"META-INF/versions/11/module-info.class");
}
@Test
void testAnalyzeMultiReleaseJarVersion() throws Exception {
JarData jarData = getJarData("multi-release-test-0.0.1.jar");
+ assertEquals(37, jarData.getNumEntries());
+ // root level information
+ assertEquals(19, jarData.getNumRootEntries());
JarClasses jclass = jarData.getJarClasses();
-
assertEquals("1.8", jclass.getJdkRevision());
assertFalse(jclass.getImports().isEmpty());
assertEquals(1, jclass.getPackages().size());
@@ -203,6 +207,7 @@ class JarClassesAnalyzerTest extends
AbstractJarAnalyzerTestCase {
assertEquals(1, jarClasses9.getPackages().size());
assertEquals(1, jarClasses9.getClassNames().size());
assertFalse(jarClasses9.getMethods().isEmpty());
+ assertEquals(9, jarVersionedRuntime9.getNumEntries());
assertEntriesContains(jarVersionedRuntime9.getEntries(),
"META-INF/versions/9/resource.txt");
JarVersionedRuntime jarVersionedRuntime11 =
jarVersionedRuntimes.getJarVersionedRuntime(11);
@@ -212,6 +217,7 @@ class JarClassesAnalyzerTest extends
AbstractJarAnalyzerTestCase {
assertEquals(1, jarClasses11.getPackages().size());
assertEquals(1, jarClasses11.getClassNames().size());
assertFalse(jarClasses11.getMethods().isEmpty());
+ assertEquals(9, jarVersionedRuntime11.getNumEntries());
assertEntriesContains(jarVersionedRuntime11.getEntries(),
"META-INF/versions/11/resource.txt");
// test ordering