Skip to content

Commit 6c405b3

Browse files
committed
Android:APIJSONTest 自动化单元测试优化 MethodUtil 扫描 class 相关代码
1 parent 53882da commit 6c405b3

File tree

2 files changed

+19
-70
lines changed

2 files changed

+19
-70
lines changed

APIJSON-Android/APIJSONTest/app/src/main/java/apijson/demo/MethodUtil.java

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.alibaba.fastjson.JSONObject;
44

5-
import java.io.File;
65
import java.io.IOException;
76
import java.util.ArrayList;
87
import java.util.Enumeration;
@@ -56,47 +55,6 @@ public List<Class<?>> loadClassList(String packageOrFileName, String className,
5655
}
5756

5857
public static JSONObject listMethod(String request) {
59-
if (CLASS_LOADER_CALLBACK == null) {
60-
CLASS_LOADER_CALLBACK = new ClassLoaderCallback() {
61-
62-
@Override
63-
public Class<?> loadClass(String className) {
64-
return null;
65-
}
66-
67-
@Override
68-
public List<Class<?>> loadClassList(String packageOrFileName, String className, boolean ignoreError) throws ClassNotFoundException, IOException {
69-
List<Class<?>> list = new ArrayList<Class<?>>();
70-
int index = className.indexOf("<");
71-
if (index >= 0) {
72-
className = className.substring(0, index);
73-
}
74-
75-
boolean allPackage = isEmpty(packageOrFileName, true);
76-
boolean allName = isEmpty(className, true);
77-
78-
//将包名替换成目录 TODO 应该一层层查找进去,实时判断是 package 还是 class,如果已经是 class 还有下一级,应该用 $ 隔开内部类。简单点也可以认为大驼峰是类
79-
String fileName = allPackage ? File.separator : dot2Separator(packageOrFileName);
80-
81-
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
82-
83-
DexFile dex = new DexFile(DemoApplication.getInstance().getPackageResourcePath());
84-
Enumeration<String> entries = dex.entries();
85-
while (entries.hasMoreElements()) {
86-
String entryName = entries.nextElement();
87-
if (allPackage || entryName.startsWith(fileName)) {
88-
Class<?> entryClass = Class.forName(entryName, true, classLoader);
89-
90-
if (allName || className.equals(entryClass.getSimpleName())) {
91-
list.add(entryClass);
92-
}
93-
}
94-
}
95-
96-
return list;
97-
}
98-
};
99-
}
10058
return apijson.demo.server.MethodUtil.listMethod(request);
10159
}
10260

APIJSON-Android/APIJSONTest/app/src/main/java/apijson/demo/server/MethodUtil.java

Lines changed: 19 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package apijson.demo.server;
22

3-
import android.content.Context;
4-
53
import com.alibaba.fastjson.JSON;
64
import com.alibaba.fastjson.JSONArray;
75
import com.alibaba.fastjson.JSONObject;
@@ -24,7 +22,6 @@
2422
import java.lang.reflect.Type;
2523
import java.util.ArrayList;
2624
import java.util.Collection;
27-
import java.util.Enumeration;
2825
import java.util.HashMap;
2926
import java.util.HashSet;
3027
import java.util.List;
@@ -33,8 +30,6 @@
3330
import java.util.Objects;
3431
import java.util.Set;
3532

36-
import dalvik.system.DexFile;
37-
import dalvik.system.PathClassLoader;
3833
import zuo.biao.apijson.StringUtil;
3934

4035
import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
@@ -101,36 +96,32 @@ public interface ClassLoaderCallback {
10196
public static String KEY_CALL_MAP = "call(){}";
10297

10398

104-
public static ClassLoaderCallback CLASS_LOADER_CALLBACK;
105-
public static Callback CALLBACK;
99+
public static ClassLoaderCallback CLASS_LOADER_CALLBACK = null; //不能在 static 代码块赋值,否则 MethodUtil 子类中 static 代码块对它赋值的代码不会执行!
100+
public static Callback CALLBACK = new Callback() { //不能在 static 代码块赋值,否则 MethodUtil 子类中 static 代码块对它赋值的代码不会执行!
101+
102+
@Override
103+
public JSONObject newSuccessResult() {
104+
JSONObject result = new JSONObject(true);
105+
result.put(KEY_CODE, CODE_SUCCESS);
106+
result.put(KEY_MSG, MSG_SUCCESS);
107+
return result;
108+
}
109+
110+
@Override
111+
public JSONObject newErrorResult(Exception e) {
112+
JSONObject result = new JSONObject(true);
113+
result.put(KEY_CODE, CODE_SERVER_ERROR);
114+
result.put(KEY_MSG, e.getMessage());
115+
return result;
116+
}
117+
};
106118

107119
// Map<class, <constructorArgs, instance>>
108120
public static final Map<Class<?>, Map<Object, Object>> INSTANCE_MAP;
109121
public static final Map<String, Class<?>> PRIMITIVE_CLASS_MAP;
110122
public static final Map<String, Class<?>> BASE_CLASS_MAP;
111123
public static final Map<String, Class<?>> CLASS_MAP;
112124
static {
113-
CLASS_LOADER_CALLBACK = null;
114-
CALLBACK = new Callback() {
115-
116-
@Override
117-
public JSONObject newSuccessResult() {
118-
JSONObject result = new JSONObject(true);
119-
result.put(KEY_CODE, CODE_SUCCESS);
120-
result.put(KEY_MSG, MSG_SUCCESS);
121-
return result;
122-
}
123-
124-
@Override
125-
public JSONObject newErrorResult(Exception e) {
126-
JSONObject result = new JSONObject(true);
127-
result.put(KEY_CODE, CODE_SERVER_ERROR);
128-
result.put(KEY_MSG, e.getMessage());
129-
return result;
130-
}
131-
};
132-
133-
134125
INSTANCE_MAP = new HashMap<>();
135126

136127
PRIMITIVE_CLASS_MAP = new HashMap<String, Class<?>>();

0 commit comments

Comments
 (0)