Skip to content

Commit

Permalink
1.2.26
Browse files Browse the repository at this point in the history
  • Loading branch information
wenshao committed Feb 9, 2017
1 parent d9bc118 commit bb60393
Show file tree
Hide file tree
Showing 18 changed files with 1,304 additions and 39 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Expand Up @@ -11,7 +11,7 @@
-->
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.25</version>
<version>1.2.26</version>

<packaging>jar</packaging>
<name>fastjson</name>
Expand Down Expand Up @@ -386,7 +386,7 @@
<dependency>
<groupId>com.jsoniter</groupId>
<artifactId>jsoniter</artifactId>
<version>0.9.4</version>
<version>0.9.8</version>
<scope>test</scope>
</dependency>

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/alibaba/fastjson/JSON.java
Expand Up @@ -964,5 +964,5 @@ public static <T> void handleResovleTask(DefaultJSONParser parser, T value) {
parser.handleResovleTask(value);
}

public final static String VERSION = "1.2.25";
public final static String VERSION = "1.2.26";
}
41 changes: 36 additions & 5 deletions src/main/java/com/alibaba/fastjson/JSONPath.java
Expand Up @@ -248,6 +248,10 @@ public boolean remove(Object rootObject) {
}

public boolean set(Object rootObject, Object value) {
return set(rootObject, value, true);
}

public boolean set(Object rootObject, Object value, boolean p) {
if (rootObject == null) {
return false;
}
Expand All @@ -273,13 +277,29 @@ public boolean set(Object rootObject, Object value) {

Object newObj = null;
if (nextSegement instanceof PropertySegement) {
Class<?> parentClass = parentObject.getClass();
JavaBeanSerializer beanSerializer = getJavaBeanSerializer(parentClass);
if (beanSerializer != null) {
return false;
JavaBeanDeserializer beanDeserializer = null;
Class<?> fieldClass = null;
if (segment instanceof PropertySegement) {
String propertyName = ((PropertySegement) segment).propertyName;
Class<?> parentClass = parentObject.getClass();
JavaBeanDeserializer parentBeanDeserializer = getJavaBeanDeserializer(parentClass);
if (parentBeanDeserializer != null) {
FieldDeserializer fieldDeserializer = parentBeanDeserializer.getFieldDeserializer(propertyName);
fieldClass = fieldDeserializer.fieldInfo.fieldClass;
beanDeserializer = getJavaBeanDeserializer(fieldClass);
}
}

newObj = new JSONObject();
if (beanDeserializer != null) {

if (beanDeserializer.beanInfo.defaultConstructor != null) {
newObj = beanDeserializer.createInstance(null, fieldClass);
} else {
return false;
}
} else {
newObj = new JSONObject();
}
} else if (nextSegement instanceof ArrayAccessSegement) {
newObj = new JSONArray();
}
Expand Down Expand Up @@ -2300,6 +2320,17 @@ protected JavaBeanSerializer getJavaBeanSerializer(final Class<?> currentClass)
return beanSerializer;
}

protected JavaBeanDeserializer getJavaBeanDeserializer(final Class<?> currentClass) {
JavaBeanDeserializer beanDeserializer = null;
{
ObjectDeserializer deserializer = parserConfig.getDeserializer(currentClass);
if (deserializer instanceof JavaBeanDeserializer) {
beanDeserializer = (JavaBeanDeserializer) deserializer;
}
}
return beanDeserializer;
}

@SuppressWarnings("rawtypes")
int evalSize(Object currentObject) {
if (currentObject == null) {
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/alibaba/fastjson/TypeReference.java
Expand Up @@ -3,6 +3,7 @@
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

Expand Down Expand Up @@ -82,4 +83,6 @@ protected TypeReference(Type... actualTypeArguments){
public Type getType() {
return type;
}

public final static Type LIST_STRING = new TypeReference<List<String>>() {}.getType();
}
58 changes: 34 additions & 24 deletions src/main/java/com/alibaba/fastjson/parser/DefaultJSONParser.java
Expand Up @@ -64,10 +64,7 @@
import com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import com.alibaba.fastjson.parser.deserializer.ResolveFieldDeserializer;
import com.alibaba.fastjson.serializer.BeanContext;
import com.alibaba.fastjson.serializer.IntegerCodec;
import com.alibaba.fastjson.serializer.LongCodec;
import com.alibaba.fastjson.serializer.StringCodec;
import com.alibaba.fastjson.serializer.*;
import com.alibaba.fastjson.util.TypeUtils;

/**
Expand Down Expand Up @@ -102,29 +99,38 @@ public class DefaultJSONParser implements Closeable {
private List<ExtraTypeProvider> extraTypeProviders = null;
private List<ExtraProcessor> extraProcessors = null;
protected FieldTypeResolver fieldTypeResolver = null;


private boolean autoTypeEnable;
private String[] autoTypeAccept = null;

protected transient BeanContext lastBeanContext;

static {
primitiveClasses.add(boolean.class);
primitiveClasses.add(byte.class);
primitiveClasses.add(short.class);
primitiveClasses.add(int.class);
primitiveClasses.add(long.class);
primitiveClasses.add(float.class);
primitiveClasses.add(double.class);

primitiveClasses.add(Boolean.class);
primitiveClasses.add(Byte.class);
primitiveClasses.add(Short.class);
primitiveClasses.add(Integer.class);
primitiveClasses.add(Long.class);
primitiveClasses.add(Float.class);
primitiveClasses.add(Double.class);

primitiveClasses.add(BigInteger.class);
primitiveClasses.add(BigDecimal.class);
primitiveClasses.add(String.class);
Class<?>[] classes = new Class[] {
boolean.class,
byte.class,
short.class,
int.class,
long.class,
float.class,
double.class,

Boolean.class,
Byte.class,
Short.class,
Integer.class,
Long.class,
Float.class,
Double.class,

BigInteger.class,
BigDecimal.class,
String.class
};

for (Class<?> clazz : classes) {
primitiveClasses.add(clazz);
}
}

public String getDateFomartPattern() {
Expand Down Expand Up @@ -1501,5 +1507,9 @@ public void parseExtra(Object object, String key) {
process.processExtra(object, key, value);
}
}

if (resolveStatus == NeedToResolve) {
resolveStatus = NONE;
}
}
}
Expand Up @@ -66,6 +66,8 @@ public class FastJsonConfig {
*/
private String dateFormat;

protected boolean writeContentLength = true;

/**
* init param.
*/
Expand Down Expand Up @@ -201,4 +203,12 @@ public Charset getCharset() {
public void setCharset(Charset charset) {
this.charset = charset;
}

public boolean isWriteContentLength() {
return writeContentLength;
}

public void setWriteContentLength(boolean writeContentLength) {
this.writeContentLength = writeContentLength;
}
}
Expand Up @@ -156,7 +156,11 @@ protected void writeInternal(Object obj, HttpOutputMessage outputMessage)
fastJsonConfig.getDateFormat(), //
JSON.DEFAULT_GENERATE_FEATURE, //
fastJsonConfig.getSerializerFeatures());
headers.setContentLength(len);

if (fastJsonConfig.isWriteContentLength()) {
headers.setContentLength(len);
}

OutputStream out = outputMessage.getBody();
outnew.writeTo(out);
outnew.close();
Expand Down
Expand Up @@ -27,7 +27,6 @@
*/
public class FastJsonHttpMessageConverter4 //
extends AbstractGenericHttpMessageConverter<Object> {

/**
* with fastJson config
*/
Expand Down Expand Up @@ -86,7 +85,9 @@ protected void writeInternal(Object obj, //
fastJsonConfig.getDateFormat(), //
JSON.DEFAULT_GENERATE_FEATURE, //
fastJsonConfig.getSerializerFeatures());
headers.setContentLength(len);
if (fastJsonConfig.isWriteContentLength()) {
headers.setContentLength(len);
}
OutputStream out = outputMessage.getBody();
outnew.writeTo(out);
outnew.close();
Expand Down
Expand Up @@ -147,7 +147,9 @@ protected void writeInternal(Object obj, Type type, HttpOutputMessage outputMess
JSON.DEFAULT_GENERATE_FEATURE, //
fastJsonConfig.getSerializerFeatures());
len += writeSuffix(outnew, obj);
headers.setContentLength(len);
if (fastJsonConfig.isWriteContentLength()) {
headers.setContentLength(len);
}
OutputStream out = outputMessage.getBody();
outnew.writeTo(out);
outnew.close();
Expand Down

0 comments on commit bb60393

Please sign in to comment.