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. 25
      fine-joda/src/main/java/com/fr/third/joda/time/tz/ZoneInfoProvider.java

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

@ -15,6 +15,7 @@
*/
package com.fr.third.joda.time.tz;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
@ -24,6 +25,7 @@ import java.lang.ref.SoftReference;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
@ -52,6 +54,8 @@ public class ZoneInfoProvider implements Provider {
private final Map<String, Object> iZoneInfoMap;
/** Maps ids to strings or SoftReferences to DateTimeZones. */
private final Set<String> iZoneInfoKeys;
/** 内置可能加载不到的带加号的资源文件. */
private static Map<String, byte[]> GMTData = new HashMap();
/**
* Search the default classloader resource path for compiled data files.
@ -217,6 +221,11 @@ public class ZoneInfoProvider implements Provider {
}
});
if (in == null) {
if (name.contains("+")) {
name = name.substring(name.indexOf("/") + 1);
byte[] data = GMTData.get(name);
return new ByteArrayInputStream(data);
} else {
StringBuilder buf = new StringBuilder(40)
.append("Resource not found: \"")
.append(path)
@ -225,6 +234,7 @@ public class ZoneInfoProvider implements Provider {
throw new IOException(buf.toString());
}
}
}
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