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>
<artifactId>fastjson</artifactId>
<version>1.2.26</version>
<version>1.2.27</version>

<packaging>jar</packaging>
<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.WriteEnumUsingName.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;
}

/**
* config default type key
* @since 1.2.14
Expand Down Expand Up @@ -964,5 +975,5 @@ public static <T> void handleResovleTask(DefaultJSONParser parser, T 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
*/
public interface Opcodes {
int T_INT = 10;

// versions

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

int POP = 87; // -
// int POP2 = 88; // -
Expand Down Expand Up @@ -123,7 +125,7 @@ public interface Opcodes {
int INVOKEINTERFACE = 185; // -
// int INVOKEDYNAMIC = 186; // -
int NEW = 187; // visitTypeInsn
// int NEWARRAY = 188; // visitIntInsn
int NEWARRAY = 188; // visitIntInsn
// int ANEWARRAY = 189; // visitTypeInsn
// int ARRAYLENGTH = 190; // visitInsn
// 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;
}

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

if (ch == '}') {
bp = index - 1;
ch = charAt(++bp);
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 {
this.bp = startPos;
this.ch = startChar;
matchStat = NOT_MATCH;
return 0;
for (; ; ) {
if (ch == ',') {
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);
continue;
} else {
this.bp = startPos;
this.ch = startChar;
matchStat = NOT_MATCH;
return 0;
}
}
matchStat = END;
}
Expand Down Expand Up @@ -797,14 +816,20 @@ public String scanFieldString(char[] fieldName) {

ch = charAt(endIndex + 1);

if (ch == ',' || ch == '}') {
bp = endIndex + 1;
this.ch = ch;
strVal = stringVal;
} else {
matchStat = NOT_MATCH;
for (;;) {
if (ch == ',' || ch == '}') {
bp = endIndex + 1;
this.ch = ch;
strVal = stringVal;
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;
}

if (ch == ',') {
this.ch = charAt(++bp);
matchStat = VALUE;
return hash;
} else if (ch == '}') {
next();
skipWhitespace();
ch = getCurrent();
for (;;) {
if (ch == ',') {
token = JSONToken.COMMA;
this.ch = charAt(++bp);
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp);
matchStat = VALUE;
return hash;
} else if (ch == '}') {
token = JSONToken.RBRACE;
this.ch = charAt(++bp);
} else if (ch == EOI) {
token = JSONToken.EOF;
next();
skipWhitespace();
ch = getCurrent();
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 {
matchStat = NOT_MATCH;
return 0;
}
matchStat = END;
} else {
matchStat = NOT_MATCH;
return 0;
}

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

if (ch == ',') {
this.ch = charAt(++bp);
matchStat = VALUE;
token = JSONToken.COMMA;
return negative ? -value : value;
} else if (ch == '}') {
ch = charAt(++bp);
for (;;) {
if (ch == ',') {
token = JSONToken.COMMA;
this.ch = charAt(++bp);
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp);
matchStat = VALUE;
token = JSONToken.COMMA;
return negative ? -value : value;
} else if (ch == '}') {
token = JSONToken.RBRACE;
this.ch = charAt(++bp);
} else if (ch == EOI) {
token = JSONToken.EOF;
ch = charAt(++bp);
for (;;) {
if (ch == ',') {
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 {
this.bp = startPos;
this.ch = startChar;
matchStat = NOT_MATCH;
return 0;
}
matchStat = END;
} else {
matchStat = NOT_MATCH;
return 0;
}

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

if (ch == ',') {
this.ch = charAt(++bp);
matchStat = VALUE;
token = JSONToken.COMMA;
} else if (ch == '}') {
ch = charAt(++bp);
for (;;) {
if (ch == ',') {
token = JSONToken.COMMA;
this.ch = charAt(++bp);
} else if (ch == ']') {
token = JSONToken.RBRACKET;
this.ch = charAt(++bp);
matchStat = VALUE;
token = JSONToken.COMMA;
break;
} else if (ch == '}') {
token = JSONToken.RBRACE;
this.ch = charAt(++bp);
} else if (ch == EOI) {
token = JSONToken.EOF;
ch = charAt(++bp);
for (;;) {
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 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 {
matchStat = NOT_MATCH;
return false;
}
matchStat = END;
} else {
matchStat = NOT_MATCH;
return false;
}

return value;
Expand Down

0 comments on commit 5bbb3f7

Please sign in to comment.