Merge branch '2.1.x'

Closes gh-18168
pull/18172/head
Andy Wilkinson 5 years ago
commit ff1983c9ae

@ -123,4 +123,10 @@ class CentralDirectoryEndRecord {
return (int) numberOfRecords;
}
String getComment() {
int commentLength = (int) Bytes.littleEndianValue(this.block, this.offset + COMMENT_LENGTH_OFFSET, 2);
AsciiBytes comment = new AsciiBytes(this.block, this.offset + COMMENT_LENGTH_OFFSET + 2, commentLength);
return comment.toString();
}
}

@ -80,6 +80,8 @@ public class JarFile extends java.util.jar.JarFile {
private boolean signed;
private String comment;
/**
* Create a new {@link JarFile} backed by the specified file.
* @param file the root jar file
@ -146,6 +148,7 @@ public class JarFile extends java.util.jar.JarFile {
@Override
public void visitStart(CentralDirectoryEndRecord endRecord, RandomAccessData centralDirectoryData) {
JarFile.this.comment = endRecord.getComment();
}
@Override
@ -290,6 +293,11 @@ public class JarFile extends java.util.jar.JarFile {
JarFileType.NESTED_JAR);
}
@Override
public String getComment() {
return this.comment;
}
@Override
public int size() {
return this.entries.getSize();

@ -41,6 +41,7 @@ public abstract class TestJarCreator {
public static void createTestJar(File file, boolean unpackNested) throws Exception {
FileOutputStream fileOutputStream = new FileOutputStream(file);
try (JarOutputStream jarOutputStream = new JarOutputStream(fileOutputStream)) {
jarOutputStream.setComment("outer");
writeManifest(jarOutputStream, "j1");
writeEntry(jarOutputStream, "1.dat", 1);
writeEntry(jarOutputStream, "2.dat", 2);
@ -88,6 +89,7 @@ public abstract class TestJarCreator {
private static byte[] getNestedJarData(boolean multiRelease) throws Exception {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
JarOutputStream jarOutputStream = new JarOutputStream(byteArrayOutputStream);
jarOutputStream.setComment("nested");
writeManifest(jarOutputStream, "j2", multiRelease);
if (multiRelease) {
writeEntry(jarOutputStream, "multi-release.dat", 8);

@ -86,6 +86,7 @@ class JarFileTests {
void jdkJarFile() throws Exception {
// Sanity checks to see how the default jar file operates
java.util.jar.JarFile jarFile = new java.util.jar.JarFile(this.rootJarFile);
assertThat(jarFile.getComment()).isEqualTo("outer");
Enumeration<java.util.jar.JarEntry> entries = jarFile.entries();
assertThat(entries.nextElement().getName()).isEqualTo("META-INF/");
assertThat(entries.nextElement().getName()).isEqualTo("META-INF/MANIFEST.MF");
@ -168,6 +169,11 @@ class JarFileTests {
assertThat(inputStream.read()).isEqualTo(-1);
}
@Test
void getComment() {
assertThat(this.jarFile.getComment()).isEqualTo("outer");
}
@Test
void getName() {
assertThat(this.jarFile.getName()).isEqualTo(this.rootJarFile.getPath());
@ -252,6 +258,7 @@ class JarFileTests {
@Test
void getNestedJarFile() throws Exception {
try (JarFile nestedJarFile = this.jarFile.getNestedJarFile(this.jarFile.getEntry("nested.jar"))) {
assertThat(nestedJarFile.getComment()).isEqualTo("nested");
Enumeration<java.util.jar.JarEntry> entries = nestedJarFile.entries();
assertThat(entries.nextElement().getName()).isEqualTo("META-INF/");
assertThat(entries.nextElement().getName()).isEqualTo("META-INF/MANIFEST.MF");

Loading…
Cancel
Save