From c5b8dab9103b225f72523939652bdc6356f0937c Mon Sep 17 00:00:00 2001 From: Gintas Grigelionis Date: Sat, 17 Nov 2018 12:39:27 +0100 Subject: [PATCH] Fix backwards compatibility --- src/main/org/apache/tools/ant/taskdefs/Jar.java | 2 +- .../org/apache/tools/ant/taskdefs/Manifest.java | 13 ++++++++----- .../org/apache/tools/ant/taskdefs/ManifestTask.java | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Jar.java b/src/main/org/apache/tools/ant/taskdefs/Jar.java index 53e333b68..0a43fbd41 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Jar.java +++ b/src/main/org/apache/tools/ant/taskdefs/Jar.java @@ -533,7 +533,7 @@ public class Jar extends Zip { JAR_MARKER); // time to write the manifest ByteArrayOutputStream baos = new ByteArrayOutputStream(); - OutputStreamWriter osw = new OutputStreamWriter(baos, Manifest.JAR_ENCODING); + OutputStreamWriter osw = new OutputStreamWriter(baos, Manifest.JAR_CHARSET); PrintWriter writer = new PrintWriter(osw); manifest.write(writer, flattenClassPaths); if (writer.checkError()) { diff --git a/src/main/org/apache/tools/ant/taskdefs/Manifest.java b/src/main/org/apache/tools/ant/taskdefs/Manifest.java index 3f17aed05..db38cdcb2 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Manifest.java +++ b/src/main/org/apache/tools/ant/taskdefs/Manifest.java @@ -91,8 +91,11 @@ public class Manifest { public static final String ERROR_FROM_FORBIDDEN = "Manifest attributes should not start " + "with \"" + ATTRIBUTE_FROM + "\" in \""; + /** Charset to be used for JAR files. */ + public static final Charset JAR_CHARSET = StandardCharsets.UTF_8; /** Encoding to be used for JAR files. */ - public static final Charset JAR_ENCODING = StandardCharsets.UTF_8; + @Deprecated + public static final String JAR_ENCODING = JAR_CHARSET.name(); private static final String ATTRIBUTE_MANIFEST_VERSION_LC = ATTRIBUTE_MANIFEST_VERSION.toLowerCase(Locale.ENGLISH); @@ -342,7 +345,7 @@ public class Manifest { private void writeValue(PrintWriter writer, String value) throws IOException { String line; - int nameLength = name.getBytes(JAR_ENCODING).length; + int nameLength = name.getBytes(JAR_CHARSET).length; if (nameLength > MAX_NAME_VALUE_LENGTH) { if (nameLength > MAX_NAME_LENGTH) { throw new IOException("Unable to write manifest line " @@ -353,14 +356,14 @@ public class Manifest { } else { line = name + ": " + value; } - while (line.getBytes(JAR_ENCODING).length > MAX_SECTION_LENGTH) { + while (line.getBytes(JAR_CHARSET).length > MAX_SECTION_LENGTH) { // try to find a MAX_LINE_LENGTH byte section int breakIndex = MAX_SECTION_LENGTH; if (breakIndex >= line.length()) { breakIndex = line.length() - 1; } String section = line.substring(0, breakIndex); - while (section.getBytes(JAR_ENCODING).length > MAX_SECTION_LENGTH + while (section.getBytes(JAR_CHARSET).length > MAX_SECTION_LENGTH && breakIndex > 0) { breakIndex--; section = line.substring(0, breakIndex); @@ -756,7 +759,7 @@ public class Manifest { throw new BuildException("Could not find default manifest: %s", defManifest); } - Manifest defaultManifest = new Manifest(new InputStreamReader(in, JAR_ENCODING)); + Manifest defaultManifest = new Manifest(new InputStreamReader(in, JAR_CHARSET)); String version = System.getProperty("java.runtime.version"); if (version == null) { version = System.getProperty("java.vm.version"); diff --git a/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java b/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java index d90a04952..a96a84d8f 100644 --- a/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java @@ -264,7 +264,7 @@ public class ManifestTask extends Task { } try (PrintWriter w = new PrintWriter(new OutputStreamWriter( - Files.newOutputStream(manifestFile.toPath()), Manifest.JAR_ENCODING))) { + Files.newOutputStream(manifestFile.toPath()), Manifest.JAR_CHARSET))) { toWrite.write(w, flattenClassPaths); if (w.checkError()) { throw new IOException("Encountered an error writing manifest");