Skip to content

Commit d955657

Browse files
committed
解决全局 datasource, namespace, catalog 未用于参数校验
1 parent a303055 commit d955657

6 files changed

Lines changed: 118 additions & 66 deletions

File tree

APIJSONORM/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.github.Tencent</groupId>
77
<artifactId>APIJSON</artifactId>
8-
<version>8.1.5</version>
8+
<version>8.1.6</version>
99
<packaging>jar</packaging>
1010

1111
<name>APIJSONORM</name>

APIJSONORM/src/main/java/apijson/Log.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class Log {
2121

2222
public static String LEVEL = LEVEL_WARN;
2323

24-
public static final String VERSION = "8.1.5";
24+
public static final String VERSION = "8.1.6";
2525
public static final String KEY_SYSTEM_INFO_DIVIDER = "\n---|-----APIJSON SYSTEM INFO-----|---\n";
2626

2727
public static final String OS_NAME;

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1516,10 +1516,10 @@ else if (childKeys.length == 1 && isTableKey(childKeys[0])) { // 可能无需
15161516
JOIN_COPY_KEY_LIST = new ArrayList<String>();
15171517
JOIN_COPY_KEY_LIST.add(KEY_ROLE);
15181518
JOIN_COPY_KEY_LIST.add(KEY_DATABASE);
1519+
JOIN_COPY_KEY_LIST.add(KEY_DATASOURCE);
15191520
JOIN_COPY_KEY_LIST.add(KEY_NAMESPACE);
15201521
JOIN_COPY_KEY_LIST.add(KEY_CATALOG);
15211522
JOIN_COPY_KEY_LIST.add(KEY_SCHEMA);
1522-
JOIN_COPY_KEY_LIST.add(KEY_DATASOURCE);
15231523
JOIN_COPY_KEY_LIST.add(KEY_COLUMN);
15241524
JOIN_COPY_KEY_LIST.add(KEY_NULL);
15251525
JOIN_COPY_KEY_LIST.add(KEY_CAST);
@@ -2382,9 +2382,11 @@ protected M batchVerify(RequestMethod method, String tag, int version, String na
23822382
}
23832383

23842384
switch (objAttrKey) {
2385+
case KEY_DATABASE:
23852386
case KEY_DATASOURCE:
2387+
case KEY_NAMESPACE:
2388+
case KEY_CATALOG:
23862389
case KEY_SCHEMA:
2387-
case KEY_DATABASE:
23882390
case KEY_VERSION:
23892391
case KEY_ROLE:
23902392
objAttrMap.put(objAttrKey, entry.getValue());
@@ -2432,17 +2434,21 @@ protected M batchVerify(RequestMethod method, String tag, int version, String na
24322434
}
24332435
} else {
24342436
setRequestAttribute(key, true, KEY_METHOD, request);
2437+
setRequestAttribute(key, true, KEY_DATABASE, request);
24352438
setRequestAttribute(key, true, KEY_DATASOURCE, request);
2439+
setRequestAttribute(key, true, KEY_NAMESPACE, request);
2440+
setRequestAttribute(key, true, KEY_CATALOG, request);
24362441
setRequestAttribute(key, true, KEY_SCHEMA, request);
2437-
setRequestAttribute(key, true, KEY_DATABASE, request);
24382442
setRequestAttribute(key, true, KEY_VERSION, request);
24392443
setRequestAttribute(key, true, KEY_ROLE, request);
24402444
}
24412445
} else {
24422446
setRequestAttribute(key, false, KEY_METHOD, request);
2447+
setRequestAttribute(key, false, KEY_DATABASE, request);
24432448
setRequestAttribute(key, false, KEY_DATASOURCE, request);
2449+
setRequestAttribute(key, false, KEY_NAMESPACE, request);
2450+
setRequestAttribute(key, false, KEY_CATALOG, request);
24442451
setRequestAttribute(key, false, KEY_SCHEMA, request);
2445-
setRequestAttribute(key, false, KEY_DATABASE, request);
24462452
setRequestAttribute(key, false, KEY_VERSION, request);
24472453
setRequestAttribute(key, false, KEY_ROLE, request);
24482454
}
@@ -2569,7 +2575,9 @@ protected M objectVerify(RequestMethod method, String tag, int version, String n
25692575
// 获取指定的JSON结构 >>>>>>>>>>>>>>
25702576
M target = wrapRequest(method, tag, object, true);
25712577
// Map<String, Object> clone 浅拷贝没用,Structure.parse 会导致 structure 里面被清空,第二次从缓存里取到的就是 {}
2572-
return getVerifier().setParser(this).verifyRequest(method, name, target, request, maxUpdateCount, getGlobalDatabase(), getGlobalSchema());
2578+
return getVerifier().setParser(this).verifyRequest(method, name, target, request, maxUpdateCount
2579+
, getGlobalDatabase(), getGlobalDatasource(), getGlobalNamespace(), getGlobalCatalog(), getGlobalSchema()
2580+
);
25732581
}
25742582

25752583
/***

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

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5490,7 +5490,7 @@ public static <T, M extends Map<String, Object>, L extends List<Object>> SQLConf
54905490
String catalog = getString(request, KEY_CATALOG);
54915491
String schema = getString(request, KEY_SCHEMA);
54925492

5493-
SQLConfig<T, M, L> config = (SQLConfig<T, M, L>) callback.getSQLConfig(method, database, schema, datasource, table);
5493+
SQLConfig<T, M, L> config = (SQLConfig<T, M, L>) callback.getSQLConfig(method, database, datasource, namespace, catalog, schema, table);
54945494
config.setAlias(alias);
54955495

54965496
config.setDatabase(database); // 不删,后面表对象还要用的,必须放在 parseJoin 前
@@ -5511,9 +5511,9 @@ public static <T, M extends Map<String, Object>, L extends List<Object>> SQLConf
55115511

55125512
// 对 id, id{}, userId, userId{} 处理,这些只要不为 null 就一定会作为 AND 条件 <<<<<<<<<<<<<<<<<<<<<<<<<
55135513

5514-
String idKey = callback.getIdKey(datasource, database, schema, table);
5514+
String idKey = callback.getIdKey(database, datasource, namespace, catalog, schema, table);
55155515
String idInKey = idKey + "{}";
5516-
String userIdKey = callback.getUserIdKey(datasource, database, schema, table);
5516+
String userIdKey = callback.getUserIdKey(database, datasource, namespace, catalog, schema, table);
55175517
String userIdInKey = userIdKey + "{}";
55185518

55195519
Object idIn = request.get(idInKey); // 可能是 id{}:">0"
@@ -5539,7 +5539,7 @@ public static <T, M extends Map<String, Object>, L extends List<Object>> SQLConf
55395539

55405540
Object id = request.get(idKey);
55415541
if (id == null && method == POST) {
5542-
id = callback.newId(method, database, schema, datasource, table); // null 表示数据库自增 id
5542+
id = callback.newId(method, database, datasource, namespace, catalog, schema, table); // null 表示数据库自增 id
55435543
}
55445544

55455545
if (id != null) { // null 无效
@@ -6532,44 +6532,59 @@ public static interface IdCallback<T> {
65326532
/**为 post 请求新建 id, 只能是 Long 或 String
65336533
* @param method
65346534
* @param database
6535+
* @param datasource
6536+
* @param namespace
6537+
* @param catalog
65356538
* @param schema
65366539
* @param table
65376540
* @return
65386541
*/
6539-
T newId(RequestMethod method, String database, String schema, String datasource, String table);
6542+
T newId(RequestMethod method, String database, String datasource, String namespace, String catalog, String schema, String table);
65406543

65416544

65426545
/**获取主键名
65436546
* @param database
6547+
* @param datasource
6548+
* @param namespace
6549+
* @param catalog
65446550
* @param schema
65456551
* @param table
65466552
* @return
65476553
*/
6548-
String getIdKey(String database, String schema, String datasource, String table);
6554+
String getIdKey(String database, String datasource, String namespace, String catalog, String schema, String table);
65496555

65506556
/**获取 User 的主键名
65516557
* @param database
6558+
* @param datasource
6559+
* @param namespace
6560+
* @param catalog
65526561
* @param schema
65536562
* @param table
65546563
* @return
65556564
*/
6556-
String getUserIdKey(String database, String schema, String datasource, String table);
6565+
String getUserIdKey(String database, String datasource, String namespace, String catalog, String schema, String table);
65576566
}
65586567

65596568
public static interface Callback<T, M extends Map<String, Object>, L extends List<Object>> extends IdCallback<T> {
65606569
/**获取 SQLConfig<T, M, L> 的实例
65616570
* @param method
65626571
* @param database
6572+
* @param datasource
6573+
* @param namespace
6574+
* @param catalog
65636575
* @param schema
65646576
* @param table
65656577
* @return
65666578
*/
6567-
SQLConfig<T, M, L> getSQLConfig(RequestMethod method, String database, String schema, String datasource, String table);
6579+
SQLConfig<T, M, L> getSQLConfig(RequestMethod method, String database, String datasource, String namespace, String catalog, String schema, String table);
65686580

65696581
/**combine 里的 key 在 request 中 value 为 null 或不存在,即 request 中缺少用来作为 combine 条件的 key: value
6582+
* @param name
6583+
* @param request
65706584
* @param combine
6585+
* @param item
65716586
* @param key
6572-
* @param request
6587+
* @throws Exception
65736588
*/
65746589
void onMissingKey4Combine(String name, M request, String combine, String item, String key) throws Exception;
65756590
}
@@ -6583,7 +6598,7 @@ public static abstract class SimpleCallback<T, M extends Map<String, Object>, L
65836598

65846599
@SuppressWarnings("unchecked")
65856600
@Override
6586-
public T newId(RequestMethod method, String database, String schema, String datasource, String table) {
6601+
public T newId(RequestMethod method, String database, String datasource, String namespace, String catalog, String schema, String table) {
65876602
Long id = System.currentTimeMillis();
65886603
if (id <= LAST_ID) {
65896604
id = LAST_ID + 1; // 解决高并发下 id 冲突导致新增记录失败
@@ -6594,12 +6609,12 @@ public T newId(RequestMethod method, String database, String schema, String data
65946609
}
65956610

65966611
@Override
6597-
public String getIdKey(String database, String schema, String datasource, String table) {
6612+
public String getIdKey(String database, String datasource, String namespace, String catalog, String schema, String table) {
65986613
return KEY_ID;
65996614
}
66006615

66016616
@Override
6602-
public String getUserIdKey(String database, String schema, String datasource, String table) {
6617+
public String getUserIdKey(String database, String datasource, String namespace, String catalog, String schema, String table) {
66036618
return KEY_USER_ID;
66046619
}
66056620

0 commit comments

Comments
 (0)