Browse Source

Pull request #1418: DEC-16125 fix: resin和weblogic下存在joda时区加载不到的问题

Merge in CORE/base-third from ~LIDONGY/base-third:release/10.0 to release/10.0

* commit 'e4d2b7b5e594b5cc244a42613b5fc4943628d6bd':
  DEC-16125 fix: 少了一个GMT+12,third包单元测试跑不到,移到decision
  DEC-16125 fix: resin和weblogic下存在joda时区加载不到的问题
release/10.0
lidongy 4 years ago
parent
commit
882068cd3c
  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;
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,12 +221,18 @@ public class ZoneInfoProvider implements Provider {
}
});
if (in == null) {
StringBuilder buf = new StringBuilder(40)
.append("Resource not found: \"")
.append(path)
.append("\" ClassLoader: ")
.append(iLoader != null ? iLoader.toString() : "system");
throw new IOException(buf.toString());
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)
.append("\" ClassLoader: ")
.append(iLoader != null ? iLoader.toString() : "system");
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