@@ -1236,39 +1236,41 @@ public static <T extends Object> JSONObject parse(@NotNull final RequestMethod m
12361236			if  (ifIsStr ) {
12371237				String  ifStr  = (String ) _if ;
12381238				int  ind  = ifStr .indexOf (":" );
1239- 				String  lang  = ind  < 0  ? null  : ifStr .substring (0 , ind );
1240- 				ScriptEngine  engine  = getScriptEngine (StringUtil .isName (lang ) ? lang  : null );
1241- 				engine .eval (preCode  + "\n "  + _if );
1239+ 				String  lang  = ind  < 0  || ind  > 20  ? null  : ifStr .substring (0 , ind );
1240+ 				boolean  isName  = StringUtil .isName (lang );
1241+ 				ScriptEngine  engine  = getScriptEngine (isName  ? lang  : null );
1242+ 				engine .eval (preCode  + "\n "  + (isName  ? ifStr .substring (ind  + 1 ) : ifStr ));
12421243			}
12431244			else  {
12441245				for  (Map .Entry <String , Object > entry  : ifSet ) {
12451246					String  k  = entry  == null  ? null  : entry .getKey ();
1246- //				if (condKeys.contains(k)) { 
1247- //					throw new IllegalArgumentException("Request 表 structure 配置的 " + ON.name() 
1248- //							+ ":{ " + k + ":value } 中 key 不合法,不允许传 [" + StringUtil.join(condKeys.toArray(new String[]{})) + "] 中的任何一个 !"); 
1249- //				} 
1247+ //					 if (condKeys.contains(k)) { 
1248+ //						 throw new IllegalArgumentException("Request 表 structure 配置的 " + ON.name() 
1249+ //								 + ":{ " + k + ":value } 中 key 不合法,不允许传 [" + StringUtil.join(condKeys.toArray(new String[]{})) + "] 中的任何一个 !"); 
1250+ //					 } 
12501251
12511252					Object  v  = k  == null  ? null  : entry .getValue ();
12521253					if  (v  instanceof  String ) {
12531254						int  ind  = k .indexOf (":" );
1254- 						String  lang  = ind  < 0  ? null  : k .substring (0 , ind );
1255- 						ScriptEngine  engine  = getScriptEngine (StringUtil .isName (lang ) ? lang  : null );
1256- 						k  =  ind  < 0  ? k  : k .substring (ind  + 1 );
1255+ 						String  lang  = ind  < 0  || ind  > 20  ? null  : k .substring (0 , ind );
1256+ 						boolean  isName  = StringUtil .isName (lang );
1257+ 						ScriptEngine  engine  = getScriptEngine (isName  ? lang  : null );
1258+ 						k  = isName  ? k .substring (ind  + 1 ) : k ;
12571259
12581260						boolean  isElse  = StringUtil .isEmpty (k , false ); // 其它直接报错,不允许传 StringUtil.isEmpty(k, true) || "ELSE".equals(k); 
12591261//						String code = preCode + "\n\n" + (StringUtil.isEmpty(v, false) ? k : (isElse ? v : "if (" + k + ") {\n  " + v + "\n}")); 
12601262						String  code  = preCode  + "\n \n "  + (isElse  ? v  : "if ("  + k  + ") {\n   "  + v  + "\n }" );
12611263
1262- //					ScriptExecutor executor = new JavaScriptExecutor(); 
1263- //					executor.execute(null, real, ) 
1264+ //						 ScriptExecutor executor = new JavaScriptExecutor(); 
1265+ //						 executor.execute(null, real, ) 
12641266
12651267						engine .eval (code );
12661268
1267- //					PARSER_CREATOR.createFunctionParser() 
1268- //							.setCurrentObject(real) 
1269- //							.setKey(k) 
1270- //							.setMethod(method) 
1271- //							.invoke() 
1269+ //						 PARSER_CREATOR.createFunctionParser() 
1270+ //								 .setCurrentObject(real) 
1271+ //								 .setKey(k) 
1272+ //								 .setMethod(method) 
1273+ //								 .invoke() 
12721274						continue ;
12731275					}
12741276
@@ -1288,22 +1290,11 @@ public static <T extends Object> JSONObject parse(@NotNull final RequestMethod m
12881290	}
12891291
12901292	public  static  ScriptEngine  getScriptEngine (String  lang ) {
1291- 		List <ScriptEngineFactory > list  = StringUtil .isEmpty (lang , true ) ? null  : SCRIPT_ENGINE_MANAGER .getEngineFactories ();
1292- 
1293- 		ScriptEngine  engine  = null ;
1294- 		if  (list  == null  || list .isEmpty ()) {
1295- 			engine  = SCRIPT_ENGINE ; // StringUtil.isEmpty(lang) ? SCRIPT_ENGINE : null; 
1296- 		}
1297- 		else  {
1298- 			for  (ScriptEngineFactory  sef  : list ) {
1299- 				if  (sef  != null  && lang .equals (sef .getEngineName ())) {
1300- 					engine  = sef .getScriptEngine ();
1301- 				}
1302- 			}
1303- 		}
1293+ 		boolean  isEmpty  = StringUtil .isEmpty (lang , true );
1294+ 		ScriptEngine  engine  = isEmpty  ? SCRIPT_ENGINE  : SCRIPT_ENGINE_MANAGER .getEngineByName (lang );
13041295
13051296		if  (engine  == null ) {
1306- 			throw  new  NullPointerException ("找不到可执行 "  + (StringUtil . isEmpty ( lang ,  true )  ? "js"  : lang ) + " 脚本的引擎!engine == null!" );
1297+ 			throw  new  NullPointerException ("找不到可执行 "  + (isEmpty  ? "js"  : lang ) + " 脚本的引擎!engine == null!" );
13071298		}
13081299
13091300		return  engine ;
0 commit comments