|
23 | 23 | import java.io.InputStream; |
24 | 24 | import java.io.InputStreamReader; |
25 | 25 | import java.text.MessageFormat; |
26 | | -import java.util.ArrayList; |
27 | | -import java.util.List; |
28 | | -import java.util.Locale; |
29 | | -import java.util.Properties; |
| 26 | +import java.util.*; |
30 | 27 | import java.util.concurrent.Callable; |
31 | 28 | import java.util.concurrent.ConcurrentHashMap; |
32 | 29 | import java.util.concurrent.ConcurrentMap; |
@@ -153,6 +150,41 @@ public void setBasename(String basename) { |
153 | 150 | setBasenames(basename); |
154 | 151 | } |
155 | 152 |
|
| 153 | + /** |
| 154 | + * Retrieves all codes from one or multiple basenames |
| 155 | + * @param locale the locale |
| 156 | + * @param basenames the basenames of the bundle |
| 157 | + * @return a list with all codes from valid registered bundles |
| 158 | + */ |
| 159 | + public Set<String> getBundleCodes(Locale locale,String...basenames){ |
| 160 | + List<String> validBaseNames = getValidBasenames(basenames); |
| 161 | + |
| 162 | + Set<String> codes = new HashSet<>(); |
| 163 | + for(String basename: validBaseNames){ |
| 164 | + List<Pair<String, Resource>> filenamesAndResources = calculateAllFilenames(basename,locale); |
| 165 | + for (Pair<String, Resource> filenameAndResource : filenamesAndResources) { |
| 166 | + if(filenameAndResource.getbValue() != null) { |
| 167 | + PropertiesHolder propHolder = getProperties(filenameAndResource.getaValue(), filenameAndResource.getbValue()); |
| 168 | + codes.addAll(propHolder.getProperties().stringPropertyNames()); |
| 169 | + } |
| 170 | + } |
| 171 | + } |
| 172 | + return codes; |
| 173 | + } |
| 174 | + |
| 175 | + protected List<String> getValidBasenames(String[] basenames){ |
| 176 | + List<String> validBaseNames = new LinkedList<>(); |
| 177 | + for(String basename:basenames){ |
| 178 | + for(int i=0;i<this.basenames.length;i++){ |
| 179 | + if(basenames[i].equals(basename)){ |
| 180 | + validBaseNames.add(basename); |
| 181 | + break; |
| 182 | + } |
| 183 | + } |
| 184 | + } |
| 185 | + return validBaseNames; |
| 186 | + } |
| 187 | + |
156 | 188 | /** |
157 | 189 | * Set an array of basenames, each following the basic ResourceBundle convention |
158 | 190 | * of not specifying file extension or language codes, but in contrast to |
|
0 commit comments