mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2024-12-22 16:14:10 -08:00
classlib: add ResourceBundle.getBaseBundleName
This commit is contained in:
parent
500d72d596
commit
e625409562
|
@ -27,6 +27,7 @@ import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -58,7 +59,8 @@ public class ResourceBundleImpl {
|
||||||
Set<String> implementations = new LinkedHashSet<>();
|
Set<String> implementations = new LinkedHashSet<>();
|
||||||
while (urls.hasMoreElements()) {
|
while (urls.hasMoreElements()) {
|
||||||
URL url = urls.nextElement();
|
URL url = urls.nextElement();
|
||||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),
|
||||||
|
StandardCharsets.UTF_8))) {
|
||||||
while (true) {
|
while (true) {
|
||||||
String line = reader.readLine();
|
String line = reader.readLine();
|
||||||
if (line == null) {
|
if (line == null) {
|
||||||
|
|
|
@ -51,6 +51,8 @@ public abstract class TResourceBundle {
|
||||||
private static final Map<String, Supplier<ResourceBundle>> bundleProviders =
|
private static final Map<String, Supplier<ResourceBundle>> bundleProviders =
|
||||||
ResourceBundleImpl.createBundleMap(false);
|
ResourceBundleImpl.createBundleMap(false);
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
public TResourceBundle() {
|
public TResourceBundle() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,6 +120,10 @@ public abstract class TResourceBundle {
|
||||||
return locale;
|
return locale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getBaseBundleName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
public final Object getObject(String key) {
|
public final Object getObject(String key) {
|
||||||
TResourceBundle last;
|
TResourceBundle last;
|
||||||
TResourceBundle theParent = this;
|
TResourceBundle theParent = this;
|
||||||
|
@ -173,6 +179,7 @@ public abstract class TResourceBundle {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cache.put(bundleName, bundle);
|
cache.put(bundleName, bundle);
|
||||||
|
bundle.name = base;
|
||||||
return bundle;
|
return bundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,6 +187,7 @@ public abstract class TResourceBundle {
|
||||||
bundle = handleGetBundle(base, extension, loadBase);
|
bundle = handleGetBundle(base, extension, loadBase);
|
||||||
if (bundle != null) {
|
if (bundle != null) {
|
||||||
cache.put(bundleName, bundle);
|
cache.put(bundleName, bundle);
|
||||||
|
bundle.name = base;
|
||||||
return bundle;
|
return bundle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -219,7 +227,7 @@ public abstract class TResourceBundle {
|
||||||
}
|
}
|
||||||
country = name.substring(index + 1, nextIndex);
|
country = name.substring(index + 1, nextIndex);
|
||||||
if (nextIndex + 1 < name.length()) {
|
if (nextIndex + 1 < name.length()) {
|
||||||
variant = name.substring(nextIndex + 1, name.length());
|
variant = name.substring(nextIndex + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,19 @@ public class ResourceBundleTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void simpleBundle() {
|
||||||
|
ResourceBundle bundle = ResourceBundle.getBundle("testBundle", Locale.ENGLISH);
|
||||||
|
assertEquals("testBundle", bundle.getBaseBundleName());
|
||||||
|
assertEquals("Test passed", bundle.getString("a"));
|
||||||
|
try {
|
||||||
|
bundle.getString("b");
|
||||||
|
fail("MissingResourceException not thrown");
|
||||||
|
} catch (MissingResourceException e) {
|
||||||
|
assertEquals("b", e.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* the class and constructor must be public so ResourceBundle has the
|
* the class and constructor must be public so ResourceBundle has the
|
||||||
* possibility to instantiate
|
* possibility to instantiate
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
#
|
||||||
|
# Copyright 2022 Alexey Andreev.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
testBundle_en
|
17
tests/src/test/resources/testBundle_en.properties
Normal file
17
tests/src/test/resources/testBundle_en.properties
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#
|
||||||
|
# Copyright 2022 Alexey Andreev.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
a=Test passed
|
Loading…
Reference in New Issue
Block a user