Skip to content

Commit ff40a5d

Browse files
authored
Merge pull request Tencent#525 from cloudAndMonkey/master
优化crud method判断逻辑
2 parents aaff2d3 + 9ea9593 commit ff40a5d

File tree

1 file changed

+44
-38
lines changed

1 file changed

+44
-38
lines changed

APIJSONORM/src/main/java/apijson/orm/AbstractParser.java

Lines changed: 44 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import javax.management.ObjectName;
2323
import javax.management.Query;
2424

25+
2526
import apijson.JSON;
2627
import apijson.JSONRequest;
2728
import apijson.JSONResponse;
@@ -2093,52 +2094,46 @@ protected JSONObject batchVerify(RequestMethod method, String tag, int version,
20932094

20942095
// @post、@get等RequestMethod
20952096
try {
2096-
if (key.startsWith("@")) {
2097-
try {
2098-
// 如果不匹配,异常不处理即可
2099-
RequestMethod _method = RequestMethod.valueOf(key.substring(1).toUpperCase());
2100-
removeTmpKeys.add(key);
2097+
if (key.startsWith("@") && getEnum(RequestMethod.class, key.substring(1).toUpperCase(), null) != null) {
2098+
// 如果不匹配,异常不处理即可
2099+
RequestMethod _method = RequestMethod.valueOf(key.substring(1).toUpperCase());
2100+
removeTmpKeys.add(key);
21012101

2102-
JSONObject obj = request.getJSONObject(key);
2103-
Set<String> set = obj == null ? new HashSet<>() : obj.keySet();
2102+
JSONObject obj = request.getJSONObject(key);
2103+
Set<String> set = obj == null ? new HashSet<>() : obj.keySet();
21042104

2105-
for (String objKey : set) {
2106-
if (objKey == null) {
2107-
continue;
2108-
}
2105+
for (String objKey : set) {
2106+
if (objKey == null) {
2107+
continue;
2108+
}
21092109

2110-
Map<String, Object> objAttrMap = new HashMap<>();
2111-
objAttrMap.put(apijson.JSONObject.KEY_METHOD, _method);
2112-
keyObjectAttributesMap.put(objKey, objAttrMap);
2113-
JSONObject objAttrJson = obj.getJSONObject(objKey);
2114-
Set<Entry<String, Object>> objSet = objAttrJson == null ? new HashSet<>() : objAttrJson.entrySet();
2110+
Map<String, Object> objAttrMap = new HashMap<>();
2111+
objAttrMap.put(apijson.JSONObject.KEY_METHOD, _method);
2112+
keyObjectAttributesMap.put(objKey, objAttrMap);
2113+
JSONObject objAttrJson = obj.getJSONObject(objKey);
2114+
Set<Entry<String, Object>> objSet = objAttrJson == null ? new HashSet<>() : objAttrJson.entrySet();
21152115

2116-
for (Entry<String, Object> entry : objSet) {
2117-
String objAttrKey = entry == null ? null : entry.getKey();
2118-
if (objAttrKey == null) {
2119-
continue;
2120-
}
2116+
for (Entry<String, Object> entry : objSet) {
2117+
String objAttrKey = entry == null ? null : entry.getKey();
2118+
if (objAttrKey == null) {
2119+
continue;
2120+
}
21212121

2122-
switch (objAttrKey) {
2123-
case apijson.JSONObject.KEY_DATASOURCE:
2124-
case apijson.JSONObject.KEY_SCHEMA:
2125-
case apijson.JSONObject.KEY_DATABASE:
2126-
case JSONRequest.KEY_VERSION:
2127-
case apijson.JSONObject.KEY_ROLE:
2128-
case JSONRequest.KEY_TAG:
2129-
objAttrMap.put(objAttrKey, entry.getValue());
2130-
break;
2131-
default:
2132-
break;
2133-
}
2122+
switch (objAttrKey) {
2123+
case apijson.JSONObject.KEY_DATASOURCE:
2124+
case apijson.JSONObject.KEY_SCHEMA:
2125+
case apijson.JSONObject.KEY_DATABASE:
2126+
case JSONRequest.KEY_VERSION:
2127+
case apijson.JSONObject.KEY_ROLE:
2128+
case JSONRequest.KEY_TAG:
2129+
objAttrMap.put(objAttrKey, entry.getValue());
2130+
break;
2131+
default:
2132+
break;
21342133
}
21352134
}
2136-
2137-
continue;
2138-
}
2139-
catch (Exception e) {
2140-
e.printStackTrace();
21412135
}
2136+
continue;
21422137
}
21432138

21442139
// 1、非crud,对于没有显式声明操作方法的,直接用 URL(/get, /post 等) 对应的默认操作方法
@@ -2259,6 +2254,17 @@ protected JSONObject batchVerify(RequestMethod method, String tag, int version,
22592254
return jsonObject;
22602255
}
22612256

2257+
public static <E extends Enum<E>> E getEnum(final Class<E> enumClass, final String enumName, final E defaultEnum) {
2258+
if (enumName == null) {
2259+
return defaultEnum;
2260+
}
2261+
try {
2262+
return Enum.valueOf(enumClass, enumName);
2263+
} catch (final IllegalArgumentException ex) {
2264+
return defaultEnum;
2265+
}
2266+
}
2267+
22622268
protected void setRequestAttribute(String key, boolean isArray, String attrKey, @NotNull JSONObject request) {
22632269
Map<String, Object> attrMap = keyObjectAttributesMap.get(isArray ? key + apijson.JSONObject.KEY_ARRAY : key);
22642270
Object attrVal = attrMap == null ? null : attrMap.get(attrKey);

0 commit comments

Comments
 (0)