diff --git a/pom.xml b/pom.xml
index 283f0b427f..2fccd6052e 100755
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
-->
com.alibaba
fastjson
- 1.2.25.internal.v9
+ 1.2.25
jar
fastjson
diff --git a/src/main/java/com/alibaba/fastjson/parser/ParserConfig.java b/src/main/java/com/alibaba/fastjson/parser/ParserConfig.java
index 869a860b14..00407554d9 100644
--- a/src/main/java/com/alibaba/fastjson/parser/ParserConfig.java
+++ b/src/main/java/com/alibaba/fastjson/parser/ParserConfig.java
@@ -113,7 +113,7 @@
* @author wenshao[szujobs@hotmail.com]
*/
public class ParserConfig {
-
+
public final static String DENY_PROPERTY = "fastjson.parser.deny";
public final static String AUTOTYPE_ACCEPT = "fastjson.parser.autoTypeAccept";
public final static String AUTOTYPE_SUPPORT_PROPERTY = "fastjson.parser.autoTypeSupport";
@@ -132,7 +132,11 @@ public class ParserConfig {
}
{
String property = IOUtils.getStringProperty(AUTOTYPE_ACCEPT);
- AUTO_TYPE_ACCEPT_LIST = splitItemsFormProperty(property);
+ String[] items = splitItemsFormProperty(property);
+ if (items == null) {
+ items = new String[0];
+ }
+ AUTO_TYPE_ACCEPT_LIST = items;
}
}
@@ -159,7 +163,7 @@ public static ParserConfig getGlobalInstance() {
private boolean autoTypeSupport = AUTO_SUPPORT;
private String[] denyList = "bsh,com.mchange,com.sun.,java.lang.Thread,java.net.Socket,java.rmi,javax.xml,org.apache.bcel,org.apache.commons.beanutils,org.apache.commons.collections.Transformer,org.apache.commons.collections.functors,org.apache.commons.collections4.comparators,org.apache.commons.fileupload,org.apache.myfaces.context.servlet,org.apache.tomcat,org.apache.wicket.util,org.codehaus.groovy.runtime,org.hibernate,org.jboss,org.mozilla.javascript,org.python.core,org.springframework".split(",");
- private String[] acceptList = new String[0];
+ private String[] acceptList = AUTO_TYPE_ACCEPT_LIST;
public ParserConfig(){
this(null, null);
diff --git a/src/main/java/com/alibaba/fastjson/util/TypeUtils.java b/src/main/java/com/alibaba/fastjson/util/TypeUtils.java
index eb68b90f07..36e679bf3f 100755
--- a/src/main/java/com/alibaba/fastjson/util/TypeUtils.java
+++ b/src/main/java/com/alibaba/fastjson/util/TypeUtils.java
@@ -1010,8 +1010,8 @@ private static void addBaseClassMappings() {
java.util.TreeSet.class,
java.util.concurrent.TimeUnit.class,
java.util.concurrent.ConcurrentHashMap.class,
- java.util.concurrent.ConcurrentSkipListMap.class,
- java.util.concurrent.ConcurrentSkipListSet.class,
+ loadClass("java.util.concurrent.ConcurrentSkipListMap"),
+ loadClass("java.util.concurrent.ConcurrentSkipListSet"),
java.util.concurrent.atomic.AtomicInteger.class,
java.util.concurrent.atomic.AtomicLong.class,
java.util.Collections.EMPTY_MAP.getClass(),
@@ -1024,6 +1024,7 @@ private static void addBaseClassMappings() {
java.sql.Date.class,
java.sql.Timestamp.class,
java.text.SimpleDateFormat.class,
+ com.alibaba.fastjson.JSONObject.class,
loadClass("java.awt.Rectangle"),
loadClass("java.awt.Point"),
loadClass("java.awt.Font"),
diff --git a/src/test/java/com/alibaba/json/bvt/fullSer/ToJavaObjectTest.java b/src/test/java/com/alibaba/json/bvt/fullSer/ToJavaObjectTest.java
new file mode 100644
index 0000000000..5fcd3d82fa
--- /dev/null
+++ b/src/test/java/com/alibaba/json/bvt/fullSer/ToJavaObjectTest.java
@@ -0,0 +1,20 @@
+package com.alibaba.json.bvt.fullSer;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import junit.framework.TestCase;
+
+/**
+ * Created by wenshao on 04/02/2017.
+ */
+public class ToJavaObjectTest extends TestCase {
+ public void test_for_toJavaObject() throws Exception {
+ JSONObject obj = JSON.parseObject("{\"id\":123}");
+ Model model = obj.toJavaObject(Model.class);
+ assertEquals(123, model.id);
+ }
+
+ public static class Model {
+ public int id;
+ }
+}
diff --git a/src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest16.java b/src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest16.java
new file mode 100644
index 0000000000..7d45b385d3
--- /dev/null
+++ b/src/test/java/com/alibaba/json/bvt/parser/deser/deny/DenyTest16.java
@@ -0,0 +1,28 @@
+package com.alibaba.json.bvt.parser.deser.deny;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.util.TypeUtils;
+import junit.framework.TestCase;
+
+/**
+ * Created by wenshao on 29/01/2017.
+ */
+public class DenyTest16 extends TestCase {
+ public void test_deny() throws Exception {
+ JSONObject object = new JSONObject();
+ object.put("@type", "com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase");
+
+ Throwable error = null;
+ try {
+ TypeUtils.castToJavaBean(object, Object.class);
+ } catch (Exception ex) {
+ error = ex;
+ }
+ assertNotNull(error);
+ }
+
+ public static class Model {
+ public Throwable value;
+ }
+}
diff --git a/src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Collection.java b/src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Collection.java
index 5ef8536016..f002d9cbbe 100755
--- a/src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Collection.java
+++ b/src/test/java/com/alibaba/json/bvt/writeClassName/WriteClassNameTest_Collection.java
@@ -12,7 +12,7 @@
public class WriteClassNameTest_Collection extends TestCase {
protected void setUp() throws Exception {
- ParserConfig.global.addAccept("com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Collection");
+ com.alibaba.fastjson.parser.ParserConfig.global.addAccept("com.alibaba.json.bvt.writeClassName.WriteClassNameTest_Collection");
}
public void test_list() throws Exception {
diff --git a/src/test/java/com/alibaba/json/test/a/CompilerTest.java b/src/test/java/com/alibaba/json/test/a/CompilerTest.java
new file mode 100644
index 0000000000..4f4391fe55
--- /dev/null
+++ b/src/test/java/com/alibaba/json/test/a/CompilerTest.java
@@ -0,0 +1,52 @@
+package com.alibaba.json.test.a;
+
+import com.alibaba.fastjson.JSON;
+import junit.framework.TestCase;
+
+import java.io.*;
+
+/**
+ * Created by wenshao on 04/02/2017.
+ */
+public class CompilerTest extends TestCase {
+ public void test_for_compiler() throws Exception {
+ byte[] bytes;
+ {
+ Model model = new Model();
+ model.id = 123;
+
+ bytes = toBytes(model);
+ }
+
+ perf(bytes);
+ for (int i = 0; i < 10; ++i) {
+ long start = System.currentTimeMillis();
+ perf(bytes);
+ long millis = System.currentTimeMillis() - start;
+ System.out.println("millis : " + millis);
+ }
+ }
+
+ private void perf(byte[] bytes) throws IOException, ClassNotFoundException {
+ for (int i = 0; i < 1000; ++i) {
+ ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));
+ Model model = (Model) in.readObject();
+ assertEquals(123, model.id);
+ }
+ }
+
+ private byte[] toBytes(Model model) throws IOException {
+ ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+ ObjectOutputStream out = new ObjectOutputStream(byteOut);
+
+ out.writeObject(model);
+ out.flush();
+ byte[] bytes = byteOut.toByteArray();
+ out.close();
+ return bytes;
+ }
+
+ public static class Model implements Serializable {
+ public int id;
+ }
+}
diff --git a/src/test/java/com/alibaba/json/test/a/GsonTest.java b/src/test/java/com/alibaba/json/test/a/GsonTest.java
new file mode 100644
index 0000000000..fd1594c5c0
--- /dev/null
+++ b/src/test/java/com/alibaba/json/test/a/GsonTest.java
@@ -0,0 +1,24 @@
+package com.alibaba.json.test.a;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.Gson;
+import junit.framework.TestCase;
+
+/**
+ * Created by wenshao on 04/02/2017.
+ */
+public class GsonTest extends TestCase {
+ public void test_0() throws Exception {
+ String text = "{\"loader\":\"com.sun.org.apache.bcel.internal.util.ClassLoader\"}";
+
+// Gson gson = new Gson();
+// gson.fromJson(text, Model.class);
+
+ ObjectMapper mapper = new ObjectMapper();
+ mapper.readValue(text, Model.class);
+ }
+
+ public static class Model {
+ public ClassLoader loader;
+ }
+}