Skip to content

Commit

Permalink
1.2.7
Browse files Browse the repository at this point in the history
  • Loading branch information
wenshao committed Feb 14, 2017
1 parent bb60393 commit 5bbb3f7
Show file tree
Hide file tree
Showing 49 changed files with 1,228 additions and 161 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Expand Up @@ -11,7 +11,7 @@
--> -->
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>1.2.26</version> <version>1.2.27</version>


<packaging>jar</packaging> <packaging>jar</packaging>
<name>fastjson</name> <name>fastjson</name>
Expand Down
15 changes: 13 additions & 2 deletions src/main/java/com/alibaba/fastjson/JSON.java
Expand Up @@ -109,9 +109,20 @@ public abstract class JSON implements JSONStreamAware, JSONAware {
features |= SerializerFeature.SkipTransientField.getMask(); features |= SerializerFeature.SkipTransientField.getMask();
features |= SerializerFeature.WriteEnumUsingName.getMask(); features |= SerializerFeature.WriteEnumUsingName.getMask();
features |= SerializerFeature.SortField.getMask(); features |= SerializerFeature.SortField.getMask();

{
String featuresProperty = IOUtils.getStringProperty("fastjson.serializerFeatures.MapSortField");
int mask = SerializerFeature.MapSortField.getMask();
if ("true".equals(featuresProperty)) {
features |= mask;
} else if ("false".equals(featuresProperty)) {
features &= ~mask;
}
}

DEFAULT_GENERATE_FEATURE = features; DEFAULT_GENERATE_FEATURE = features;
} }

/** /**
* config default type key * config default type key
* @since 1.2.14 * @since 1.2.14
Expand Down Expand Up @@ -964,5 +975,5 @@ public static <T> void handleResovleTask(DefaultJSONParser parser, T value) {
parser.handleResovleTask(value); parser.handleResovleTask(value);
} }


public final static String VERSION = "1.2.26"; public final static String VERSION = "1.2.27";
} }
4 changes: 3 additions & 1 deletion src/main/java/com/alibaba/fastjson/asm/Opcodes.java
Expand Up @@ -39,6 +39,7 @@
* @author Eugene Kuleshov * @author Eugene Kuleshov
*/ */
public interface Opcodes { public interface Opcodes {
int T_INT = 10;


// versions // versions


Expand Down Expand Up @@ -80,6 +81,7 @@ public interface Opcodes {
int FSTORE = 56; // - int FSTORE = 56; // -
int DSTORE = 57; // - int DSTORE = 57; // -
int ASTORE = 58; // - int ASTORE = 58; // -
int IASTORE = 79; // visitInsn


int POP = 87; // - int POP = 87; // -
// int POP2 = 88; // - // int POP2 = 88; // -
Expand Down Expand Up @@ -123,7 +125,7 @@ public interface Opcodes {
int INVOKEINTERFACE = 185; // - int INVOKEINTERFACE = 185; // -
// int INVOKEDYNAMIC = 186; // - // int INVOKEDYNAMIC = 186; // -
int NEW = 187; // visitTypeInsn int NEW = 187; // visitTypeInsn
// int NEWARRAY = 188; // visitIntInsn int NEWARRAY = 188; // visitIntInsn
// int ANEWARRAY = 189; // visitTypeInsn // int ANEWARRAY = 189; // visitTypeInsn
// int ARRAYLENGTH = 190; // visitInsn // int ARRAYLENGTH = 190; // visitInsn
// int ATHROW = 191; // - // int ATHROW = 191; // -
Expand Down
226 changes: 142 additions & 84 deletions src/main/java/com/alibaba/fastjson/parser/JSONScanner.java
Expand Up @@ -705,8 +705,17 @@ public int scanFieldInt(char[] fieldName) {
return 0; return 0;
} }


if (ch == ',' || ch == '}') { for (;;) {
bp = index - 1; if (ch == ',' || ch == '}') {
bp = index - 1;
break;
} else if(isWhitespace(ch)) {
ch = charAt(index++);
continue;
} else {
matchStat = NOT_MATCH;
return 0;
}
} }
} else { } else {
matchStat = NOT_MATCH; matchStat = NOT_MATCH;
Expand All @@ -721,23 +730,33 @@ public int scanFieldInt(char[] fieldName) {
} }


if (ch == '}') { if (ch == '}') {
bp = index - 1;
ch = charAt(++bp); ch = charAt(++bp);
if (ch == ',') { for (; ; ) {
token = JSONToken.COMMA; if (ch == ',') {
this.ch = charAt(++bp); token = JSONToken.COMMA;
} else if (ch == ']') { this.ch = charAt(++bp);
token = JSONToken.RBRACKET; break;
this.ch = charAt(++bp); } else if (ch == ']') {
} else if (ch == '}') { token = JSONToken.RBRACKET;
token = JSONToken.RBRACE; this.ch = charAt(++bp);
this.ch = charAt(++bp); break;
} else if (ch == EOI) { } else if (ch == '}') {
token = JSONToken.EOF; token = JSONToken.RBRACE;
} else { this.ch = charAt(++bp);
this.bp = startPos; break;
this.ch = startChar; } else if (ch == EOI) {
matchStat = NOT_MATCH; token = JSONToken.EOF;
return 0; break;
} else if (isWhitespace(ch)) {
ch = charAt(++bp);
continue;
} else {
this.bp = startPos;
this.ch = startChar;
matchStat = NOT_MATCH;
return 0;
}
} }
matchStat = END; matchStat = END;
} }
Expand Down Expand Up @@ -797,14 +816,20 @@ public String scanFieldString(char[] fieldName) {


ch = charAt(endIndex + 1); ch = charAt(endIndex + 1);


if (ch == ',' || ch == '}') { for (;;) {
bp = endIndex + 1; if (ch == ',' || ch == '}') {
this.ch = ch; bp = endIndex + 1;
strVal = stringVal; this.ch = ch;
} else { strVal = stringVal;
matchStat = NOT_MATCH; break;
} else if (isWhitespace(ch)) {
endIndex++;
ch = charAt(endIndex + 1);
} else {
matchStat = NOT_MATCH;


return stringDefaultValue(); return stringDefaultValue();
}
} }
} }


Expand Down Expand Up @@ -869,33 +894,39 @@ public long scanFieldSymbol(char[] fieldName) {
hash *= 0x1000193; hash *= 0x1000193;
} }


if (ch == ',') { for (;;) {
this.ch = charAt(++bp);
matchStat = VALUE;
return hash;
} else if (ch == '}') {
next();
skipWhitespace();
ch = getCurrent();
if (ch == ',') { if (ch == ',') {
token = JSONToken.COMMA;
this.ch = charAt(++bp);
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp); this.ch = charAt(++bp);
matchStat = VALUE;
return hash;
} else if (ch == '}') { } else if (ch == '}') {
token = JSONToken.RBRACE; next();
this.ch = charAt(++bp); skipWhitespace();
} else if (ch == EOI) { ch = getCurrent();
token = JSONToken.EOF; if (ch == ',') {
token = JSONToken.COMMA;
this.ch = charAt(++bp);
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp);
} else if (ch == '}') {
token = JSONToken.RBRACE;
this.ch = charAt(++bp);
} else if (ch == EOI) {
token = JSONToken.EOF;
} else {
matchStat = NOT_MATCH;
return 0;
}
matchStat = END;
break;
} else if (isWhitespace(ch)) {
ch = charAt(++bp);
continue;
} else { } else {
matchStat = NOT_MATCH; matchStat = NOT_MATCH;
return 0; return 0;
} }
matchStat = END;
} else {
matchStat = NOT_MATCH;
return 0;
} }


return hash; return hash;
Expand Down Expand Up @@ -1102,34 +1133,49 @@ public long scanFieldLong(char[] fieldName) {
return 0; return 0;
} }


if (ch == ',') { for (;;) {
this.ch = charAt(++bp);
matchStat = VALUE;
token = JSONToken.COMMA;
return negative ? -value : value;
} else if (ch == '}') {
ch = charAt(++bp);
if (ch == ',') { if (ch == ',') {
token = JSONToken.COMMA;
this.ch = charAt(++bp);
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp); this.ch = charAt(++bp);
matchStat = VALUE;
token = JSONToken.COMMA;
return negative ? -value : value;
} else if (ch == '}') { } else if (ch == '}') {
token = JSONToken.RBRACE; ch = charAt(++bp);
this.ch = charAt(++bp); for (;;) {
} else if (ch == EOI) { if (ch == ',') {
token = JSONToken.EOF; token = JSONToken.COMMA;
this.ch = charAt(++bp);
break;
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp);
break;
} else if (ch == '}') {
token = JSONToken.RBRACE;
this.ch = charAt(++bp);
break;
} else if (ch == EOI) {
token = JSONToken.EOF;
break;
} else if (isWhitespace(ch)) {
ch = charAt(++bp);
} else {
this.bp = startPos;
this.ch = startChar;
matchStat = NOT_MATCH;
return 0;
}
}
matchStat = END;
break;
} else if (isWhitespace(ch)) {
bp = index;
ch = charAt(index++);
continue;
} else { } else {
this.bp = startPos;
this.ch = startChar;
matchStat = NOT_MATCH; matchStat = NOT_MATCH;
return 0; return 0;
} }
matchStat = END;
} else {
matchStat = NOT_MATCH;
return 0;
} }


return negative ? -value : value; return negative ? -value : value;
Expand Down Expand Up @@ -1191,31 +1237,43 @@ public boolean scanFieldBoolean(char[] fieldName) {
return false; return false;
} }


if (ch == ',') { for (;;) {
this.ch = charAt(++bp);
matchStat = VALUE;
token = JSONToken.COMMA;
} else if (ch == '}') {
ch = charAt(++bp);
if (ch == ',') { if (ch == ',') {
token = JSONToken.COMMA;
this.ch = charAt(++bp);
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp); this.ch = charAt(++bp);
matchStat = VALUE;
token = JSONToken.COMMA;
break;
} else if (ch == '}') { } else if (ch == '}') {
token = JSONToken.RBRACE; ch = charAt(++bp);
this.ch = charAt(++bp); for (;;) {
} else if (ch == EOI) { if (ch == ',') {
token = JSONToken.EOF; token = JSONToken.COMMA;
this.ch = charAt(++bp);
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp);
} else if (ch == '}') {
token = JSONToken.RBRACE;
this.ch = charAt(++bp);
} else if (ch == EOI) {
token = JSONToken.EOF;
} else if (isWhitespace(ch)) {
ch = charAt(++bp);
continue;
} else {
matchStat = NOT_MATCH;
return false;
}
break;
}
matchStat = END;
break;
} else if (isWhitespace(ch)) {
ch = charAt(++bp);
} else { } else {
matchStat = NOT_MATCH; matchStat = NOT_MATCH;
return false; return false;
} }
matchStat = END;
} else {
matchStat = NOT_MATCH;
return false;
} }


return value; return value;
Expand Down

0 comments on commit 5bbb3f7

Please sign in to comment.