From eceb794e265f06affad72365856ce96bf5b35b25 Mon Sep 17 00:00:00 2001 From: Naoto Sato Date: Tue, 5 Apr 2016 09:13:30 -0700 Subject: [PATCH] 8152742: jlink --include-locales th fails with ArrayIndexOutOfBoundsException Reviewed-by: mchung, okutsu --- .../internal/plugins/IncludeLocalesPlugin.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/IncludeLocalesPlugin.java b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/IncludeLocalesPlugin.java index b373f85b935..4630d0992eb 100644 --- a/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/IncludeLocalesPlugin.java +++ b/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/IncludeLocalesPlugin.java @@ -41,12 +41,13 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; import jdk.internal.org.objectweb.asm.ClassReader; -import jdk.tools.jlink.plugin.TransformerPlugin; -import jdk.tools.jlink.plugin.Pool; -import jdk.tools.jlink.plugin.PluginException; import jdk.tools.jlink.internal.ResourcePrevisitor; import jdk.tools.jlink.internal.StringTable; import jdk.tools.jlink.internal.Utils; +import jdk.tools.jlink.plugin.PluginException; +import jdk.tools.jlink.plugin.Pool; +import jdk.tools.jlink.plugin.Pool.ModuleDataType; +import jdk.tools.jlink.plugin.TransformerPlugin; /** * Plugin to explicitly specify the locale data included in jdk.localedata @@ -84,8 +85,8 @@ public final class IncludeLocalesPlugin implements TransformerPlugin, ResourcePr private static final String METAINFONAME = "LocaleDataMetaInfo"; private static final String META_FILES = "*module-info.class," + - "*LocaleDataProvider*," + - "*" + METAINFONAME + "*,"; + "*LocaleDataProvider.class," + + "*" + METAINFONAME + ".class,"; private static final String INCLUDE_LOCALE_FILES = "*sun/text/resources/ext/[^\\/]+_%%.class," + "*sun/util/resources/ext/[^\\/]+_%%.class," + @@ -116,7 +117,8 @@ public final class IncludeLocalesPlugin implements TransformerPlugin, ResourcePr if (resource.getModule().equals(MODULENAME)) { String path = resource.getPath(); resource = predicate.test(path) ? resource: null; - if (resource != null) { + if (resource != null && + resource.getType().equals(ModuleDataType.CLASS_OR_RESOURCE)) { byte[] bytes = resource.getBytes(); ClassReader cr = new ClassReader(bytes); if (Arrays.stream(cr.getInterfaces()) @@ -249,10 +251,10 @@ public final class IncludeLocalesPlugin implements TransformerPlugin, ResourcePr files += INCLUDE_LOCALE_FILES.replaceAll("%%", isoSpecial + "_[0-9]{3}"); } - // Add Thai BreakIterator related files + // Add Thai BreakIterator related data files if (lang.equals("th")) { files += "*sun/text/resources/thai_dict," + - "*sun/text/resources/[^\\/]+_th,"; + "*sun/text/resources/[^\\/]+BreakIteratorData_th,"; } // Add Taiwan resource bundles for Hong Kong