8209880: tzdb.dat is not reproducibly built
Reviewed-by: erikj, rriggs
This commit is contained in:
parent
794a0e072d
commit
e71557a2d9
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2018, 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
|
||||
@ -65,8 +65,6 @@ import java.nio.file.Paths;
|
||||
import java.text.ParsePosition;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
@ -76,6 +74,7 @@ import java.util.TreeMap;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.MatchResult;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* A compiler that reads a set of TZDB time-zone files and builds a single
|
||||
@ -256,8 +255,10 @@ public final class TzdbZoneRulesCompiler {
|
||||
for (String regionId : regionArray) {
|
||||
out.writeUTF(regionId);
|
||||
}
|
||||
// rules -- hashset -> remove the dup
|
||||
List<ZoneRules> rulesList = new ArrayList<>(new HashSet<>(builtZones.values()));
|
||||
// rules -- remove the dup
|
||||
List<ZoneRules> rulesList = builtZones.values().stream()
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
out.writeShort(rulesList.size());
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
|
||||
for (ZoneRules rules : rulesList) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2018, 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
|
||||
@ -33,8 +33,6 @@ import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
@ -43,7 +41,7 @@ import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentSkipListMap;
|
||||
import java.time.*;
|
||||
import java.time.Year;
|
||||
import java.time.chrono.IsoChronology;
|
||||
@ -131,18 +129,18 @@ class TzdbZoneRulesProvider {
|
||||
/**
|
||||
* Zone region to rules mapping
|
||||
*/
|
||||
private final Map<String, Object> zones = new ConcurrentHashMap<>();
|
||||
private final Map<String, Object> zones = new ConcurrentSkipListMap<>();
|
||||
|
||||
/**
|
||||
* compatibility list
|
||||
*/
|
||||
private static HashSet<String> excludedZones;
|
||||
private static Set<String> excludedZones;
|
||||
static {
|
||||
// (1) exclude EST, HST and MST. They are supported
|
||||
// via the short-id mapping
|
||||
// (2) remove UTC and GMT
|
||||
// (3) remove ROC, which is not supported in j.u.tz
|
||||
excludedZones = new HashSet<>(10);
|
||||
excludedZones = new TreeSet<>();
|
||||
excludedZones.add("EST");
|
||||
excludedZones.add("HST");
|
||||
excludedZones.add("MST");
|
||||
@ -151,8 +149,8 @@ class TzdbZoneRulesProvider {
|
||||
excludedZones.add("ROC");
|
||||
}
|
||||
|
||||
private Map<String, String> links = new HashMap<>(150);
|
||||
private Map<String, List<RuleLine>> rules = new HashMap<>(500);
|
||||
private Map<String, String> links = new TreeMap<>();
|
||||
private Map<String, List<RuleLine>> rules = new TreeMap<>();
|
||||
|
||||
private void load(List<Path> files) throws IOException {
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user