Browse Source

Merge pull request #1426 in CORE/base-third from release/10.0 to bugfix/10.0

* commit '882068cd3c2abb8302aadc25f56aa1dbba5c662b':
  DEC-16125 fix: 少了一个GMT+12,third包单元测试跑不到,移到decision
  DEC-16125 fix: resin和weblogic下存在joda时区加载不到的问题
bugfix/10.0
superman 4 years ago
parent
commit
3bb86e0da5
  1. 37
      fine-joda/src/main/java/com/fr/third/joda/time/tz/ZoneInfoProvider.java

37
fine-joda/src/main/java/com/fr/third/joda/time/tz/ZoneInfoProvider.java

@ -15,6 +15,7 @@
*/ */
package com.fr.third.joda.time.tz; package com.fr.third.joda.time.tz;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream; import java.io.DataInputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
@ -24,6 +25,7 @@ import java.lang.ref.SoftReference;
import java.security.AccessController; import java.security.AccessController;
import java.security.PrivilegedAction; import java.security.PrivilegedAction;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
@ -52,6 +54,8 @@ public class ZoneInfoProvider implements Provider {
private final Map<String, Object> iZoneInfoMap; private final Map<String, Object> iZoneInfoMap;
/** Maps ids to strings or SoftReferences to DateTimeZones. */ /** Maps ids to strings or SoftReferences to DateTimeZones. */
private final Set<String> iZoneInfoKeys; private final Set<String> iZoneInfoKeys;
/** 内置可能加载不到的带加号的资源文件. */
private static Map<String, byte[]> GMTData = new HashMap();
/** /**
* Search the default classloader resource path for compiled data files. * Search the default classloader resource path for compiled data files.
@ -217,12 +221,18 @@ public class ZoneInfoProvider implements Provider {
} }
}); });
if (in == null) { if (in == null) {
StringBuilder buf = new StringBuilder(40) if (name.contains("+")) {
.append("Resource not found: \"") name = name.substring(name.indexOf("/") + 1);
.append(path) byte[] data = GMTData.get(name);
.append("\" ClassLoader: ") return new ByteArrayInputStream(data);
.append(iLoader != null ? iLoader.toString() : "system"); } else {
throw new IOException(buf.toString()); StringBuilder buf = new StringBuilder(40)
.append("Resource not found: \"")
.append(path)
.append("\" ClassLoader: ")
.append(iLoader != null ? iLoader.toString() : "system");
throw new IOException(buf.toString());
}
} }
} }
return in; return in;
@ -302,4 +312,19 @@ public class ZoneInfoProvider implements Provider {
} }
} }
static {
GMTData.put("GMT+1", new byte[]{70, 0, 3, 45, 48, 49, 62, 62});
GMTData.put("GMT+2", new byte[]{70, 0, 3, 45, 48, 50, 60, 60});
GMTData.put("GMT+3", new byte[]{70, 0, 3, 45, 48, 51, 58, 58});
GMTData.put("GMT+4", new byte[]{70, 0, 3, 45, 48, 52, 56, 56});
GMTData.put("GMT+5", new byte[]{70, 0, 3, 45, 48, 53, 54, 54});
GMTData.put("GMT+6", new byte[]{70, 0, 3, 45, 48, 54, 52, 52});
GMTData.put("GMT+7", new byte[]{70, 0, 3, 45, 48, 55, 50, 50});
GMTData.put("GMT+8", new byte[]{70, 0, 3, 45, 48, 56, 48, 48});
GMTData.put("GMT+9", new byte[]{70, 0, 3, 45, 48, 57, 46, 46});
GMTData.put("GMT+10", new byte[]{70, 0, 3, 45, 49, 48, 44, 44});
GMTData.put("GMT+11", new byte[]{70, 0, 3, 45, 49, 49, 42, 42});
GMTData.put("GMT+12", new byte[]{70, 0, 3, 45, 49, 50, 40, 40});
}
} }

Loading…
Cancel
Save