Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/classes/sun/util/resources/TimeZoneNamesBundle.java
38918 views
1
/*
2
* Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
/*
27
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
28
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
29
*
30
* The original version of this source code and documentation
31
* is copyrighted and owned by Taligent, Inc., a wholly-owned
32
* subsidiary of IBM. These materials are provided under terms
33
* of a License Agreement between Taligent and Sun. This technology
34
* is protected by multiple US and International patents.
35
*
36
* This notice and attribution to Taligent may not be removed.
37
* Taligent is a registered trademark of Taligent, Inc.
38
*
39
*/
40
41
package sun.util.resources;
42
43
import java.util.Map;
44
import java.util.LinkedHashMap;
45
import java.util.LinkedHashSet;
46
import java.util.MissingResourceException;
47
import java.util.Objects;
48
import java.util.Set;
49
50
/**
51
* Subclass of <code>ResourceBundle</code> with special
52
* functionality for time zone names. The additional functionality:
53
* <ul>
54
* <li>Preserves the order of entries in the <code>getContents</code>
55
* array for the enumeration returned by <code>getKeys</code>.
56
* <li>Inserts the time zone ID (the key of the bundle entries) into
57
* the string arrays returned by <code>handleGetObject</code>.
58
* <ul>
59
* All <code>TimeZoneNames</code> resource bundles must extend this
60
* class and implement the <code>getContents</code> method.
61
*/
62
public abstract class TimeZoneNamesBundle extends OpenListResourceBundle {
63
64
/**
65
* Maps time zone IDs to locale-specific names.
66
* The value returned is an array of five strings:
67
* <ul>
68
* <li>The time zone ID (same as the key, not localized).
69
* <li>The long name of the time zone in standard time (localized).
70
* <li>The short name of the time zone in standard time (localized).
71
* <li>The long name of the time zone in daylight savings time (localized).
72
* <li>The short name of the time zone in daylight savings time (localized).
73
* <li>The long name of the time zone in generic form (localized).
74
* <li>The short name of the time zone in generic form (localized).
75
* </ul>
76
* The localized names come from the subclasses's
77
* <code>getContents</code> implementations, while the time zone
78
* ID is inserted into the returned array by this method.
79
*/
80
@Override
81
public Object handleGetObject(String key) {
82
String[] contents = (String[]) super.handleGetObject(key);
83
if (Objects.isNull(contents)) {
84
return null;
85
}
86
int clen = contents.length;
87
String[] tmpobj = new String[7];
88
tmpobj[0] = key;
89
System.arraycopy(contents, 0, tmpobj, 1, clen);
90
return tmpobj;
91
}
92
93
/**
94
* Use LinkedHashMap to preserve the order of bundle entries.
95
*/
96
@Override
97
protected <K, V> Map<K, V> createMap(int size) {
98
return new LinkedHashMap<>(size);
99
}
100
101
/**
102
* Use LinkedHashSet to preserve the key order.
103
* @param <E> the type of elements
104
* @return a Set
105
*/
106
@Override
107
protected <E> Set<E> createSet() {
108
return new LinkedHashSet<>();
109
}
110
111
/**
112
* Provides key/value mappings for a specific
113
* resource bundle. Each entry of the array
114
* returned must be an array with two elements:
115
* <ul>
116
* <li>The key, which must be a string.
117
* <li>The value, which must be an array of
118
* four strings:
119
* <ul>
120
* <li>The long name of the time zone in standard time.
121
* <li>The short name of the time zone in standard time.
122
* <li>The long name of the time zone in daylight savings time.
123
* <li>The short name of the time zone in daylight savings time.
124
* </ul>
125
* </ul>
126
*/
127
protected abstract Object[][] getContents();
128
}
129
130