From 7cea73b2c1db456337a180d52e9cb8618ef062bb Mon Sep 17 00:00:00 2001 From: wenshao Date: Tue, 21 Aug 2012 15:46:10 +0800 Subject: [PATCH] remove fastjson dependency --- .../stat/DruidDataSourceStatManager.java | 1 + .../druid/support/json/JSONWriter.java | 77 ++++++++++++++++--- .../com/alibaba/druid/Bug_for_alibank.java | 8 +- .../bvt/pool/ha/CobarDataSourceTest.java | 15 ++-- .../bvt/proxy/filter/StatFilterTest.java | 4 +- .../pool/TestOracle_DruidDataSource.java | 11 ++- .../com/alibaba/druid/proxy/TestOracle.java | 8 +- .../com/alibaba/druid/sql/TestMigrate.java | 6 +- .../com/alibaba/druid/sql/TestTransform.java | 4 +- 9 files changed, 94 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java index a418297023..337a698238 100644 --- a/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java +++ b/src/main/java/com/alibaba/druid/stat/DruidDataSourceStatManager.java @@ -207,6 +207,7 @@ public class DruidDataSourceStatManager implements DruidDataSourceStatManagerMBe @SuppressWarnings("unchecked") public static Set getDruidDataSourceInstances() { + getInstances(); return dataSources.keySet(); } diff --git a/src/main/java/com/alibaba/druid/support/json/JSONWriter.java b/src/main/java/com/alibaba/druid/support/json/JSONWriter.java index 23ae09c746..2f0448bde6 100644 --- a/src/main/java/com/alibaba/druid/support/json/JSONWriter.java +++ b/src/main/java/com/alibaba/druid/support/json/JSONWriter.java @@ -5,6 +5,9 @@ import java.util.Collection; import java.util.Date; import java.util.Map; +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.TabularData; + import com.alibaba.druid.util.IOUtils; public class JSONWriter { @@ -24,16 +27,6 @@ public class JSONWriter { return; } - if (o instanceof Map) { - writeMap((Map) o); - return; - } - - if (o instanceof Collection) { - writeArray((Collection) o); - return; - } - if (o instanceof String) { writeString((String) o); return; @@ -54,6 +47,11 @@ public class JSONWriter { return; } + if (o instanceof Collection) { + writeArray((Collection) o); + return; + } + if (o instanceof Throwable) { writeError((Throwable) o); return; @@ -85,6 +83,21 @@ public class JSONWriter { return; } + if (o instanceof TabularData) { + writeTabularData((TabularData) o); + return; + } + + if (o instanceof CompositeData) { + writeCompositeData((CompositeData) o); + return; + } + + if (o instanceof Map) { + writeMap((Map) o); + return; + } + throw new IllegalArgumentException("not support type : " + o.getClass()); } @@ -169,6 +182,50 @@ public class JSONWriter { write('"'); } + public void writeTabularData(TabularData tabularData) { + if (tabularData == null) { + write("null"); + return; + } + + int entryIndex = 0; + write('['); + + for (Object item : tabularData.values()) { + if (entryIndex != 0) { + write(','); + } + CompositeData row = (CompositeData) item; + writeCompositeData(row); + + entryIndex++; + } + write(']'); + } + + public void writeCompositeData(CompositeData compositeData) { + if (compositeData == null) { + write("null"); + return; + } + + int entryIndex = 0; + write('{'); + + for (Object key : compositeData.getCompositeType().keySet()) { + if (entryIndex != 0) { + write(','); + } + writeString((String) key); + write(':'); + Object value = compositeData.get((String) key); + writeObject(value); + entryIndex++; + } + + write('}'); + } + public void writeMap(Map map) { if (map == null) { write("null"); diff --git a/src/test/java/com/alibaba/druid/Bug_for_alibank.java b/src/test/java/com/alibaba/druid/Bug_for_alibank.java index e5a263cd41..3fb922d834 100644 --- a/src/test/java/com/alibaba/druid/Bug_for_alibank.java +++ b/src/test/java/com/alibaba/druid/Bug_for_alibank.java @@ -2,14 +2,14 @@ package com.alibaba.druid; import junit.framework.TestCase; -import com.alibaba.fastjson.JSON; +import com.alibaba.druid.support.json.JSONUtils; public class Bug_for_alibank extends TestCase { public void test_bug() throws Exception { - String jsonStrz = "{addContact:[{\"address\":\"=\\\\\\\\\\\'\'\\");|]*{%0d%0a<%00\"}]}"; + String jsonStrz = "{\"addContact\":[{\"address\":\"=\\\\\\\\\\\'\'\\");|]*{%0d%0a<%00\"}]}"; System.out.println(jsonStrz); - Object o = JSON.parseObject(jsonStrz.replaceAll("\\\\", "")); - System.out.println(JSON.toJSONString(o)); + Object o = JSONUtils.parse(jsonStrz.replaceAll("\\\\", "")); + System.out.println(JSONUtils.toJSONString(o)); } } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/ha/CobarDataSourceTest.java b/src/test/java/com/alibaba/druid/bvt/pool/ha/CobarDataSourceTest.java index f1321edb34..66dada4207 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/ha/CobarDataSourceTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/ha/CobarDataSourceTest.java @@ -4,6 +4,8 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; import java.util.concurrent.atomic.AtomicBoolean; import junit.framework.TestCase; @@ -15,19 +17,18 @@ import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.ha.cobar.CobarConfigLoader; import com.alibaba.druid.pool.ha.cobar.CobarDataSource; import com.alibaba.druid.pool.ha.cobar.CobarFailureDetecter; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.druid.support.json.JSONUtils; public class CobarDataSourceTest extends TestCase { public void test_cobarDataSource() throws Exception { String url = "jdbc:cobar://127.0.0.1:8080/druid"; - final JSONObject config = new JSONObject(); + final HashMap config = new HashMap(); - JSONArray cobarList = new JSONArray(); + ArrayList cobarList = new ArrayList(); - JSONObject cobarA = new JSONObject(); + HashMap cobarA = new HashMap(); cobarA.put("ip", "mock"); cobarA.put("port", 80); cobarA.put("schema", "cobarA"); @@ -35,7 +36,7 @@ public class CobarDataSourceTest extends TestCase { cobarList.add(cobarA); - JSONObject cobarB = new JSONObject(); + HashMap cobarB = new HashMap(); cobarB.put("ip", "mock"); cobarB.put("port", 81); cobarB.put("schema", "cobarB"); @@ -62,7 +63,7 @@ public class CobarDataSourceTest extends TestCase { CobarConfigLoader configLoader = new CobarConfigLoader(dataSource) { public void load() throws SQLException { - responseMessage = config.toJSONString(); + responseMessage = JSONUtils.toJSONString(config); handleResponseMessage(); } diff --git a/src/test/java/com/alibaba/druid/bvt/proxy/filter/StatFilterTest.java b/src/test/java/com/alibaba/druid/bvt/proxy/filter/StatFilterTest.java index c73cbe876d..ad0e6ef389 100644 --- a/src/test/java/com/alibaba/druid/bvt/proxy/filter/StatFilterTest.java +++ b/src/test/java/com/alibaba/druid/bvt/proxy/filter/StatFilterTest.java @@ -12,7 +12,7 @@ import junit.framework.Assert; import junit.framework.TestCase; import com.alibaba.druid.stat.JdbcStatManager; -import com.alibaba.fastjson.JSON; +import com.alibaba.druid.support.json.JSONUtils; public class StatFilterTest extends TestCase { @@ -52,6 +52,6 @@ public class StatFilterTest extends TestCase { } Assert.assertEquals(true, count > 0); - System.out.println(JSON.toJSONString(sqlList)); + System.out.println(JSONUtils.toJSONString(sqlList)); } } diff --git a/src/test/java/com/alibaba/druid/pool/TestOracle_DruidDataSource.java b/src/test/java/com/alibaba/druid/pool/TestOracle_DruidDataSource.java index e575765a93..f3f2ef467b 100644 --- a/src/test/java/com/alibaba/druid/pool/TestOracle_DruidDataSource.java +++ b/src/test/java/com/alibaba/druid/pool/TestOracle_DruidDataSource.java @@ -10,8 +10,7 @@ import junit.framework.TestCase; import com.alibaba.druid.pool.vendor.OracleExceptionSorter; import com.alibaba.druid.stat.JdbcStatManager; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.druid.support.json.JSONUtils; public class TestOracle_DruidDataSource extends TestCase { @@ -69,13 +68,13 @@ public class TestOracle_DruidDataSource extends TestCase { endLatch.await(); for (Object item : JdbcStatManager.getInstance().getDataSourceList().values()) { - String text = JSON.toJSONString(item, SerializerFeature.UseISO8601DateFormat); - System.out.println(JSON.toJSONString(JSON.parseObject(text, TreeMap.class), true)); + String text = JSONUtils.toJSONString(item); + System.out.println(text); } for (Object item : JdbcStatManager.getInstance().getSqlList().values()) { - String text = JSON.toJSONString(item, SerializerFeature.UseISO8601DateFormat); - System.out.println(JSON.toJSONString(JSON.parseObject(text, TreeMap.class), true)); + String text = JSONUtils.toJSONString(item); + System.out.println(text); } } } diff --git a/src/test/java/com/alibaba/druid/proxy/TestOracle.java b/src/test/java/com/alibaba/druid/proxy/TestOracle.java index 93c6a9b6f9..1183f2b1ff 100644 --- a/src/test/java/com/alibaba/druid/proxy/TestOracle.java +++ b/src/test/java/com/alibaba/druid/proxy/TestOracle.java @@ -4,15 +4,13 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; -import java.util.TreeMap; import javax.management.openmbean.TabularData; import junit.framework.TestCase; import com.alibaba.druid.stat.JdbcStatManager; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.druid.support.json.JSONUtils; public class TestOracle extends TestCase { @@ -38,8 +36,8 @@ public class TestOracle extends TestCase { TabularData dataSourcesList = JdbcStatManager.getInstance().getDataSourceList(); for (Object item : dataSourcesList.values()) { - String text = JSON.toJSONString(item, SerializerFeature.UseISO8601DateFormat); - System.out.println(JSON.toJSONString(JSON.parseObject(text, TreeMap.class), true)); + String text = JSONUtils.toJSONString(item); + System.out.println(text); } } diff --git a/src/test/java/com/alibaba/druid/sql/TestMigrate.java b/src/test/java/com/alibaba/druid/sql/TestMigrate.java index 789ff996e9..5d516e9f1f 100644 --- a/src/test/java/com/alibaba/druid/sql/TestMigrate.java +++ b/src/test/java/com/alibaba/druid/sql/TestMigrate.java @@ -7,8 +7,6 @@ import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import junit.framework.Assert; import oracle.jdbc.OracleStatement; @@ -17,7 +15,7 @@ import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; -import com.alibaba.fastjson.JSON; +import com.alibaba.druid.support.json.JSONUtils; public class TestMigrate extends OracleTest { @@ -340,7 +338,7 @@ public class TestMigrate extends OracleTest { } public String toString() { - return JSON.toJSONString(this); + return JSONUtils.toJSONString(this); } } } diff --git a/src/test/java/com/alibaba/druid/sql/TestTransform.java b/src/test/java/com/alibaba/druid/sql/TestTransform.java index ca871b4082..6b35944861 100644 --- a/src/test/java/com/alibaba/druid/sql/TestTransform.java +++ b/src/test/java/com/alibaba/druid/sql/TestTransform.java @@ -17,7 +17,7 @@ import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; -import com.alibaba.fastjson.JSON; +import com.alibaba.druid.support.json.JSONUtils; public class TestTransform extends OracleTest { @@ -440,7 +440,7 @@ public class TestTransform extends OracleTest { } public String toString() { - return JSON.toJSONString(this); + return JSONUtils.toJSONString(this); } } }