< prev index next >
test/lib/jdk/test/lib/util/JarUtils.java
Print this page
rev 58207 : 8240235: jdk.test.lib.util.JarUtils updates jar files incorrectly
Reviewed-by: martin, clanger
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -156,11 +156,11 @@
try (JarFile jf = new JarFile(jarfile.toString())) {
Enumeration<JarEntry> jentries = jf.entries();
while (jentries.hasMoreElements()) {
JarEntry jentry = jentries.nextElement();
if (!names.contains(jentry.getName())) {
- jos.putNextEntry(jentry);
+ jos.putNextEntry(copyEntry(jentry));
jf.getInputStream(jentry).transferTo(jos);
}
}
}
@@ -289,11 +289,11 @@
System.out.println(String.format("- Update %s", name));
updateEntry(jos, name, changes.get(name));
changes.remove(name);
} else {
System.out.println(String.format("- Copy %s", name));
- jos.putNextEntry(entry);
+ jos.putNextEntry(copyEntry(entry));
srcJarFile.getInputStream(entry).transferTo(jos);
}
}
}
for (Map.Entry<String, Object> e : changes.entrySet()) {
@@ -359,6 +359,19 @@
.forEach(entries::add);
}
}
return entries;
}
+
+ private static JarEntry copyEntry(JarEntry e1) {
+ JarEntry e2 = new JarEntry(e1.getName());
+ e2.setMethod(e1.getMethod());
+ e2.setTime(e1.getTime());
+ e2.setComment(e1.getComment());
+ e2.setExtra(e1.getExtra());
+ if (e1.getMethod() == JarEntry.STORED) {
+ e2.setSize(e1.getSize());
+ e2.setCrc(e1.getCrc());
+ }
+ return e2;
+ }
}
< prev index next >