< prev index next >
make/jdk/src/classes/build/tools/cldrconverter/MetaZonesParseHandler.java
Print this page
rev 49854 : 8181157: CLDR Timezone name fallback implementation
Reviewed-by: sherman
*** 33,42 ****
--- 33,44 ----
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
class MetaZonesParseHandler extends AbstractLDMLHandler<String> {
+ final static String NO_METAZONE_KEY = "no.metazone.defined";
+
private String tzid, metazone;
// for java.time.format.ZoneNames.java
private List<String> mzoneMapEntryList = new ArrayList<>();
private Map<String, String> zones = new HashMap<>();
*** 99,112 ****
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
assert qName.equals(currentContainer.getqName()) : "current=" + currentContainer.getqName() + ", param=" + qName;
switch (qName) {
case "timezone":
! if (tzid == null || metazone == null) {
throw new InternalError();
! }
put(tzid, metazone);
break;
}
currentContainer = currentContainer.getParent();
}
--- 101,121 ----
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
assert qName.equals(currentContainer.getqName()) : "current=" + currentContainer.getqName() + ", param=" + qName;
switch (qName) {
case "timezone":
! if (tzid == null) {
throw new InternalError();
! } else if (metazone == null) {
! String no_meta = get(NO_METAZONE_KEY);
! put(NO_METAZONE_KEY, no_meta == null ? tzid : no_meta + " " + tzid);
! CLDRConverter.info("No metazone defined for %s%n", tzid);
! } else {
put(tzid, metazone);
+ }
+ tzid = null;
+ metazone = null;
break;
}
currentContainer = currentContainer.getParent();
}
< prev index next >