changeset 60291:1bc5f223df65

8240235: jdk.test.lib.util.JarUtils updates jar files incorrectly Reviewed-by: martin, clanger, lancea
author simonis
date Tue, 03 Mar 2020 11:24:20 +0100
parents 370822016750
children de17bc931bbe
files test/lib/jdk/test/lib/util/JarUtils.java
diffstat 1 files changed, 16 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/test/lib/jdk/test/lib/util/JarUtils.java	Tue Mar 03 10:29:05 2020 +0100
+++ b/test/lib/jdk/test/lib/util/JarUtils.java	Tue Mar 03 11:24:20 2020 +0100
@@ -1,5 +1,5 @@
 /*
- * 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
@@ -158,7 +158,7 @@
                 while (jentries.hasMoreElements()) {
                     JarEntry jentry = jentries.nextElement();
                     if (!names.contains(jentry.getName())) {
-                        jos.putNextEntry(jentry);
+                        jos.putNextEntry(copyEntry(jentry));
                         jf.getInputStream(jentry).transferTo(jos);
                     }
                 }
@@ -291,7 +291,7 @@
                         changes.remove(name);
                     } else {
                         System.out.println(String.format("- Copy %s", name));
-                        jos.putNextEntry(entry);
+                        jos.putNextEntry(copyEntry(entry));
                         srcJarFile.getInputStream(entry).transferTo(jos);
                     }
                 }
@@ -361,4 +361,17 @@
         }
         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;
+    }
 }