From a49ccb959b7e50ee67b1ab4feca47c34bdbc14fe Mon Sep 17 00:00:00 2001 From: Naoto Sato Date: Thu, 5 Jan 2023 17:49:24 +0000 Subject: [PATCH] 8299292: Missing elements in aliased String array Reviewed-by: iris, joehw --- .../tools/cldrconverter/CLDRConverter.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java b/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java index 290226e5a1d..d6c502252e0 100644 --- a/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java +++ b/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2023, 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 @@ -34,8 +34,6 @@ import java.text.MessageFormat; import java.time.*; import java.util.*; import java.util.ResourceBundle.Control; -import java.util.logging.Level; -import java.util.logging.Logger; import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.Stream; @@ -609,16 +607,19 @@ public class CLDRConverter { * Translate the aliases into the real entries in the bundle map. */ static void handleAliases(Map bundleMap) { - Set bundleKeys = bundleMap.keySet(); - try { - for (String key : aliases.keySet()) { - String targetKey = aliases.get(key); - if (bundleKeys.contains(targetKey)) { - bundleMap.putIfAbsent(key, bundleMap.get(targetKey)); + for (String key : aliases.keySet()) { + var source = bundleMap.get(aliases.get(key)); + if (source != null) { + if (bundleMap.get(key) instanceof String[] sa) { + // fill missing elements in case of String array + for (int i = 0; i < sa.length; i++) { + if (sa[i] == null && ((String[])source)[i] != null) { + sa[i] = ((String[])source)[i]; + } + } } + bundleMap.putIfAbsent(key, source); } - } catch (Exception ex) { - Logger.getLogger(CLDRConverter.class.getName()).log(Level.SEVERE, null, ex); } }