Skip to content
This repository was archived by the owner on Oct 23, 2024. It is now read-only.

Commit d707854

Browse files
committed
1.2.25.internal.v6
1 parent 90af6aa commit d707854

24 files changed

Lines changed: 310 additions & 161 deletions

src/main/java/com/alibaba/fastjson/JSON.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,7 @@ public static final int writeJSONString(OutputStream os, //
731731
int defaultFeatures, //
732732
SerializerFeature... features) throws IOException {
733733
return writeJSONString(os, //
734-
IOUtils.UTF8, //
734+
IOUtils.UTF8, //
735735
object, //
736736
SerializeConfig.globalInstance, //
737737
null, //

src/main/java/com/alibaba/fastjson/parser/DefaultJSONParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ public final Object parseObject(final Map object, Object fieldName) {
319319

320320
if (key == JSON.DEFAULT_TYPE_KEY && !lexer.isEnabled(Feature.DisableSpecialKeyDetect)) {
321321
String typeName = lexer.scanSymbol(symbolTable, '"');
322-
Class<?> clazz = config.checkAutoType(typeName);
322+
Class<?> clazz = config.checkAutoType(typeName, null);
323323

324324
if (clazz == null) {
325325
object.put(JSON.DEFAULT_TYPE_KEY, typeName);

src/main/java/com/alibaba/fastjson/parser/ParserConfig.java

Lines changed: 154 additions & 129 deletions
Large diffs are not rendered by default.

src/main/java/com/alibaba/fastjson/parser/deserializer/AbstractDateDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public <T> T deserialze(DefaultJSONParser parser, Type clazz, Object fieldName,
9292
parser.accept(JSONToken.COLON);
9393

9494
String typeName = lexer.stringVal();
95-
Class<?> type = TypeUtils.loadClass(typeName, parser.getConfig().getDefaultClassLoader());
95+
Class<?> type = parser.getConfig().checkAutoType(typeName, null);
9696
if (type != null) {
9797
clazz = type;
9898
}

src/main/java/com/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -548,15 +548,9 @@ protected <T> T deserialze(DefaultJSONParser parser, //
548548
ObjectDeserializer deserizer = getSeeAlso(config, this.beanInfo, typeName);
549549
Class<?> userType = null;
550550
if (deserizer == null) {
551-
userType = TypeUtils.loadClass(typeName, config.getDefaultClassLoader());
552-
553551
Class<?> expectClass = TypeUtils.getClass(type);
554-
if (expectClass == null ||
555-
(userType != null && expectClass.isAssignableFrom(userType))) {
556-
deserizer = parser.getConfig().getDeserializer(userType);
557-
} else {
558-
throw new JSONException("type not match");
559-
}
552+
userType = config.checkAutoType(typeName, expectClass);
553+
deserizer = parser.getConfig().getDeserializer(userType);
560554
}
561555

562556
return (T) deserizer.deserialze(parser, userType, fieldName);

src/main/java/com/alibaba/fastjson/parser/deserializer/MapDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public static Map parseMap(DefaultJSONParser parser, Map<String, Object> map, Ty
127127
String typeName = lexer.scanSymbol(parser.getSymbolTable(), '"');
128128
final ParserConfig config = parser.getConfig();
129129

130-
Class<?> clazz = config.checkAutoType(typeName);
130+
Class<?> clazz = config.checkAutoType(typeName, null);
131131

132132
if (Map.class.isAssignableFrom(clazz) ) {
133133
lexer.nextToken(JSONToken.COMMA);

src/main/java/com/alibaba/fastjson/parser/deserializer/ThrowableDeserializer.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
7272
if (JSON.DEFAULT_TYPE_KEY.equals(key)) {
7373
if (lexer.token() == JSONToken.LITERAL_STRING) {
7474
String exClassName = lexer.stringVal();
75-
exClass = TypeUtils.loadClass(exClassName, parser.getConfig().getDefaultClassLoader());
75+
exClass = parser.getConfig().checkAutoType(exClassName, Throwable.class);
7676
} else {
7777
throw new JSONException("syntax error");
7878
}
@@ -105,6 +105,10 @@ public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
105105
if (exClass == null) {
106106
ex = new Exception(message, cause);
107107
} else {
108+
if (!Throwable.class.isAssignableFrom(exClass)) {
109+
throw new JSONException("type not match, not Throwable. " + exClass.getName());
110+
}
111+
108112
try {
109113
ex = createException(message, cause, exClass);
110114
if (ex == null) {

src/main/java/com/alibaba/fastjson/serializer/SerializeWriter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
* @author wenshao[szujobs@hotmail.com]
3333
*/
3434
public final class SerializeWriter extends Writer {
35+
private final static Charset UTF8 = Charset.forName("UTF-8");
3536

3637
private final static ThreadLocal<char[]> bufLocal = new ThreadLocal<char[]>();
3738
private final static ThreadLocal<byte[]> bytesBufLocal = new ThreadLocal<byte[]>();
@@ -322,7 +323,7 @@ public int writeToEx(OutputStream out, Charset charset) throws IOException {
322323
throw new UnsupportedOperationException("writer not null");
323324
}
324325

325-
if (charset == IOUtils.UTF8) {
326+
if (charset == UTF8) {
326327
return encodeToUTF8(out);
327328
} else {
328329
byte[] bytes = new String(buf, 0, count).getBytes(charset);
@@ -362,7 +363,7 @@ public char[] toCharArrayForSpringWebSocket() {
362363

363364
public byte[] toBytes(String charsetName) {
364365
return toBytes(charsetName == null || "UTF-8".equals(charsetName) //
365-
? IOUtils.UTF8 //
366+
? UTF8 //
366367
: Charset.forName(charsetName));
367368
}
368369

@@ -371,7 +372,7 @@ public byte[] toBytes(Charset charset) {
371372
throw new UnsupportedOperationException("writer not null");
372373
}
373374

374-
if (charset == IOUtils.UTF8) {
375+
if (charset == UTF8) {
375376
return encodeToUTF8Bytes();
376377
} else {
377378
return new String(buf, 0, count).getBytes(charset);

src/main/java/com/alibaba/fastjson/support/config/FastJsonConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public class FastJsonConfig {
7171
*/
7272
public FastJsonConfig() {
7373

74-
this.charset = IOUtils.UTF8;
74+
this.charset = Charset.forName("UTF-8");
7575

7676
this.serializeConfig = SerializeConfig.getGlobalInstance();
7777
this.parserConfig = new ParserConfig();

src/main/java/com/alibaba/fastjson/support/jaxrs/FastJsonProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@
3939
@Produces({MediaType.WILDCARD})
4040
public class FastJsonProvider //
4141
implements MessageBodyReader<Object>, MessageBodyWriter<Object> {
42-
4342
@Deprecated
44-
protected Charset charset = IOUtils.UTF8;
43+
protected Charset charset = Charset.forName("UTF-8");
4544

4645
@Deprecated
4746
protected SerializerFeature[] features = new SerializerFeature[0];

0 commit comments

Comments
 (0)