@@ -196,48 +196,48 @@ public AbstractObjectParser parse(String name, boolean isReuse) throws Exception
196196
197197			breakParse  = false ;
198198
199- 			response  = new  JSONObject (true );// must init
200- 			sqlResponse  = null ;// must init
199+ 			response  = new  JSONObject (true );  //  must init
200+ 			sqlResponse  = null ;  //  must init
201201
202202			if  (isReuse  == false ) {
203- 				sqlRequest  = new  JSONObject (true );// must init
203+ 				sqlRequest  = new  JSONObject (true );  //  must init
204204
205- 				customMap  = null ;// must init
206- 				functionMap  = null ;// must init
207- 				childMap  = null ;// must init
205+ 				customMap  = null ;  //  must init
206+ 				functionMap  = null ;  //  must init
207+ 				childMap  = null ;  //  must init
208208
209209				Set <Entry <String , Object >> set  = request .isEmpty () ? null  : new  LinkedHashSet <>(request .entrySet ());
210- 				if  (set  != null  && set .isEmpty () == false ) {// 判断换取少几个变量的初始化是否值得?
211- 					if  (isTable ) {// 非Table下必须保证原有顺序!否则 count,page 会丢, total@:"/[]/total" 会在[]:{}前执行!
210+ 				if  (set  != null  && set .isEmpty () == false ) {  //  判断换取少几个变量的初始化是否值得?
211+ 					if  (isTable ) {  //  非Table下必须保证原有顺序!否则 count,page 会丢, total@:"/[]/total" 会在[]:{}前执行!
212212						customMap  = new  LinkedHashMap <String , Object >();
213213						childMap  = new  LinkedHashMap <String , JSONObject >();
214214					}
215215					functionMap  = new  LinkedHashMap <String , Map <String , String >>();//必须执行 
216216
217- 					//条件 <<<<<<<<<<<<<<<<<<< 
217+ 					// 条件  <<<<<<<<<<<<<<<<<<< 
218218					List <String > whereList  = null ;
219- 					if  (method  == PUT ) { //这里只有PUTArray需要处理  || method == DELETE) { 
219+ 					if  (method  == PUT ) { //  这里只有PUTArray需要处理  || method == DELETE) { 
220220						String [] combine  = StringUtil .split (request .getString (KEY_COMBINE ));
221221						if  (combine  != null ) {
222222							String  w ;
223- 							for  (int  i  = 0 ; i  < combine .length ; i ++) { //去除 &,|,! 前缀 
223+ 							for  (int  i  = 0 ; i  < combine .length ; i ++) { //  去除 &,|,! 前缀 
224224								w  = combine [i ];
225225								if  (w  != null  && (w .startsWith ("&" ) || w .startsWith ("|" ) || w .startsWith ("!" ))) {
226226									combine [i ] = w .substring (1 );
227227								}
228228							}
229229						}
230- 						//Arrays.asList()返回值不支持add方法 ! 
230+ 						//  Arrays.asList() 返回值不支持 add 方法 ! 
231231						whereList  = new  ArrayList <String >(Arrays .asList (combine  != null  ? combine  : new  String []{}));
232232						whereList .add (apijson .JSONRequest .KEY_ID );
233233						whereList .add (apijson .JSONRequest .KEY_ID_IN );
234234						//						whereList.add(apijson.JSONRequest.KEY_USER_ID); 
235235						//						whereList.add(apijson.JSONRequest.KEY_USER_ID_IN); 
236236					}
237- 					//条件>>>>>>>>>>>>>>>>>>> 
237+ 					//  条件>>>>>>>>>>>>>>>>>>> 
238238
239239					int  index  = 0 ;
240-                     //hasOtherKeyNotFun = false; 
240+                     //  hasOtherKeyNotFun = false; 
241241
242242					for  (Entry <String , Object > entry  : set ) {
243243						if  (isBreakParse ()) {
@@ -261,9 +261,9 @@ public AbstractObjectParser parse(String name, boolean isReuse) throws Exception
261261
262262						try  {
263263                            boolean  startsWithAt  = key .startsWith ("@" );
264-                             //if (startsWithAt || (key.endsWith("()") == false)) { 
265-                             //    hasOtherKeyNotFun = true; 
266-                             //} 
264+                             //  if (startsWithAt || (key.endsWith("()") == false)) { 
265+                             //      hasOtherKeyNotFun = true; 
266+                             //  } 
267267
268268							if  (startsWithAt  || key .endsWith ("@" ) || (key .endsWith ("<>" ) && value  instanceof  JSONObject )) {
269269								if  (onParse (key , value ) == false ) {
@@ -287,7 +287,7 @@ else if (_method == PUT && value instanceof JSONArray && (whereList == null || w
287287									&& StringUtil .isName (key .replaceFirst ("[+-]$" , "" ))) {  // PUT JSONArray 
288288								onPUTArrayParse (key , (JSONArray ) value );
289289							}
290- 							else  {  // JSONArray或其它Object ,直接填充 
290+ 							else  {  // JSONArray 或其它 Object ,直接填充 
291291								if  (onParse (key , value ) == false ) {
292292									invalidate ();
293293								}
@@ -313,7 +313,7 @@ else if (_method == PUT && value instanceof JSONArray && (whereList == null || w
313313						sqlRequest .put (JSONRequest .KEY_DATASOURCE , parser .getGlobalDatasource ());
314314					}
315315
316- 					if  (isSubquery  == false ) {   // 解决 SQL 语法报错,子查询不能 EXPLAIN
316+ 					if  (isSubquery  == false ) { //  解决 SQL 语法报错,子查询不能 EXPLAIN
317317						if  (parser .getGlobalExplain () != null  && sqlRequest .get (JSONRequest .KEY_EXPLAIN ) == null ) {
318318							sqlRequest .put (JSONRequest .KEY_EXPLAIN , parser .getGlobalExplain ());
319319						}
@@ -363,7 +363,6 @@ public boolean onParse(@NotNull String key, @NotNull Object value) throws Except
363363                            + JSONRequest .SUBQUERY_RANGE_ALL  + ", "  + JSONRequest .SUBQUERY_RANGE_ANY  + "] 中的一个!" );
364364				}
365365
366- 
367366				JSONArray  arr  = parser .onArrayParse (subquery , path , key , true );
368367
369368				JSONObject  obj  = arr  == null  || arr .isEmpty () ? null  : arr .getJSONObject (0 );
@@ -391,7 +390,7 @@ public boolean onParse(@NotNull String key, @NotNull Object value) throws Except
391390					throw  new  IllegalArgumentException ("子查询 "  + path  + "/" 
392391                            + key  + ":{ from:value } 中 value 对应的主表对象 "  + from  + ":{} 不存在!" );
393392				}
394- 				 // 
393+ 
395394				SQLConfig  cfg  = (SQLConfig ) arrObj .get (AbstractParser .KEY_CONFIG );
396395				if  (cfg  == null ) {
397396					throw  new  NotExistException (TAG  + ".onParse  cfg == null" );
@@ -415,38 +414,41 @@ public boolean onParse(@NotNull String key, @NotNull Object value) throws Except
415414			else  if  (value  instanceof  String ) { // //key{}@ getRealKey, 引用赋值路径 
416415				String  replaceKey  = key .substring (0 , key .length () - 1 );
417416
418- 				//						 System.out.println("getObject  key.endsWith(@) >> parseRelation = " + parseRelation); 
417+ 				//  System.out.println("getObject  key.endsWith(@) >> parseRelation = " + parseRelation); 
419418				String  targetPath  = AbstractParser .getValuePath (type  == TYPE_ITEM  ? path  : parentPath , (String ) value );
420419
421- 				//先尝试获取,尽量保留缺省依赖路径,这样就不需要担心路径改变 
420+ 				//  先尝试获取,尽量保留缺省依赖路径,这样就不需要担心路径改变 
422421				Object  target  = onReferenceParse (targetPath );
423422				Log .i (TAG , "onParse targetPath = "  + targetPath  + "; target = "  + target );
424423
425- 				if  (target  == null ) {// String#equals(null)会出错
424+ 				if  (target  == null ) {  //  String#equals(null)会出错
426425					Log .d (TAG , "onParse  target == null  >>  return true;" );
427426					return  true ;
428427				}
429- 				if  (target  instanceof  Map ) { //target可能是从requestObject里取出的 {} 
430- 					if  (isTable  || targetPath .endsWith ("[]/"  + JSONResponse .KEY_INFO ) == false ) {
431- 						Log .d (TAG , "onParse  target instanceof Map  >>  return false;" );
432- 						return  false ; //FIXME 这个判断现在来看是否还有必要?为啥不允许为 JSONObject ?以前可能因为防止二次遍历再解析,现在只有一次遍历 
433- 					}
434- 				}
435- 				if  (targetPath .equals (target )) {//必须valuePath和保证getValueByPath传进去的一致! 
436- 					Log .d (TAG , "onParse  targetPath.equals(target)  >>" );
437- 
438- 					//非查询关键词 @key 不影响查询,直接跳过 
439- 					if  (isTable  && (key .startsWith ("@" ) == false  || JSONRequest .TABLE_KEY_LIST .contains (key ))) {
440- 						Log .e (TAG , "onParse  isTable && (key.startsWith(@) == false" 
441- 								+ " || JSONRequest.TABLE_KEY_LIST.contains(key)) >>  return null;" );
442- 						return  false ;//获取不到就不用再做无效的query了。不考虑 Table:{Table:{}}嵌套 
443- 					} else  {
444- 						Log .d (TAG , "onParse  isTable(table) == false >> return true;" );
445- 						return  true ;//舍去,对Table无影响 
446- 					}
447- 				}
448428
449- 				//直接替换原来的key@:path为key:target 
429+ //				if (target instanceof Map) { // target 可能是从 requestObject 里取出的 {} 
430+ //					if (isTable || targetPath.endsWith("[]/" + JSONResponse.KEY_INFO) == false) { 
431+ //						Log.d(TAG, "onParse  target instanceof Map  >>  return false;"); 
432+ //						return false; // FIXME 这个判断现在来看是否还有必要?为啥不允许为 JSONObject ?以前可能因为防止二次遍历再解析,现在只有一次遍历 
433+ //					} 
434+ //				} 
435+ // 
436+ //				// FIXME 这个判断现在来看是否还有必要?为啥不允许为 JSONObject ?以前可能因为防止二次遍历再解析,现在只有一次遍历 
437+ //				if (targetPath.equals(target)) { // 必须 valuePath 和保证 getValueByPath 传进去的一致! 
438+ //					Log.d(TAG, "onParse  targetPath.equals(target)  >>"); 
439+ // 
440+ //					//非查询关键词 @key 不影响查询,直接跳过 
441+ //					if (isTable && (key.startsWith("@") == false || JSONRequest.TABLE_KEY_LIST.contains(key))) { 
442+ //						Log.e(TAG, "onParse  isTable && (key.startsWith(@) == false" 
443+ //								+ " || JSONRequest.TABLE_KEY_LIST.contains(key)) >>  return null;"); 
444+ //						return false;//获取不到就不用再做无效的query了。不考虑 Table:{Table:{}}嵌套 
445+ //					} else { 
446+ //						Log.d(TAG, "onParse  isTable(table) == false >> return true;"); 
447+ //						return true;//舍去,对Table无影响 
448+ //					} 
449+ //				} 
450+ 
451+ 				// 直接替换原来的 key@: path 为 key: target 
450452				Log .i (TAG , "onParse    >>  key = replaceKey; value = target;" );
451453				key  = replaceKey ;
452454				value  = target ;
0 commit comments