From dee213ae37a2af5a10c05b88b77edb7611c6e615 Mon Sep 17 00:00:00 2001 From: Bill <1594805355@qq.com> Date: Wed, 8 Feb 2023 19:38:41 +0800 Subject: [PATCH 01/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=B8=BA=20jakarta.ser?= =?UTF-8?q?vlet-api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 ++++--- src/main/java/apijson/framework/APIJSONController.java | 9 +++++---- .../java/apijson/framework/APIJSONFunctionParser.java | 3 ++- src/main/java/apijson/framework/APIJSONObjectParser.java | 2 +- src/main/java/apijson/framework/APIJSONParser.java | 2 +- src/main/java/apijson/framework/APIJSONVerifier.java | 3 ++- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index b653093..26de988 100644 --- a/pom.xml +++ b/pom.xml @@ -19,9 +19,10 @@ - javax.servlet - javax.servlet-api - 4.0.1 + jakarta.servlet + jakarta.servlet-api + 6.0.0 + provided diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index b786fc9..f25587d 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -36,10 +36,7 @@ import java.rmi.ServerException; import java.util.Map; -import javax.servlet.AsyncContext; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; + import com.alibaba.fastjson.JSONObject; @@ -51,6 +48,10 @@ import apijson.orm.AbstractParser; import apijson.orm.Parser; import apijson.orm.Visitor; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; import unitauto.MethodUtil; import unitauto.MethodUtil.InterfaceProxy; diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index bfe25c6..afa2ac5 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -31,7 +31,7 @@ import java.util.List; import java.util.Map; -import javax.servlet.http.HttpSession; + import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -46,6 +46,7 @@ import apijson.orm.JSONRequest; import apijson.orm.script.JavaScriptExecutor; import apijson.orm.script.ScriptExecutor; +import jakarta.servlet.http.HttpSession; import unitauto.MethodUtil; import unitauto.MethodUtil.Argument; diff --git a/src/main/java/apijson/framework/APIJSONObjectParser.java b/src/main/java/apijson/framework/APIJSONObjectParser.java index da2b588..f713cd9 100755 --- a/src/main/java/apijson/framework/APIJSONObjectParser.java +++ b/src/main/java/apijson/framework/APIJSONObjectParser.java @@ -16,7 +16,6 @@ import java.util.List; -import javax.servlet.http.HttpSession; import com.alibaba.fastjson.JSONObject; @@ -26,6 +25,7 @@ import apijson.orm.AbstractParser; import apijson.orm.Join; import apijson.orm.SQLConfig; +import jakarta.servlet.http.HttpSession; /**简化Parser,getObject和getArray(getArrayConfig)都能用 diff --git a/src/main/java/apijson/framework/APIJSONParser.java b/src/main/java/apijson/framework/APIJSONParser.java index a6c65a9..2036c12 100755 --- a/src/main/java/apijson/framework/APIJSONParser.java +++ b/src/main/java/apijson/framework/APIJSONParser.java @@ -21,7 +21,6 @@ import java.util.Map; import java.util.Set; -import javax.servlet.http.HttpSession; import com.alibaba.fastjson.JSONObject; @@ -33,6 +32,7 @@ import apijson.orm.SQLConfig; import apijson.orm.SQLExecutor; import apijson.orm.Verifier; +import jakarta.servlet.http.HttpSession; /**请求解析器 diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 64016ca..83adc07 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -27,7 +27,7 @@ import java.util.SortedMap; import java.util.TreeMap; -import javax.servlet.http.HttpSession; + import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -41,6 +41,7 @@ import apijson.orm.AbstractVerifier; import apijson.orm.JSONRequest; import apijson.orm.Visitor; +import jakarta.servlet.http.HttpSession; /**权限验证器 From c9a0558b30383d41c05103018a1d514d585b239e Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Fri, 28 Apr 2023 04:05:30 +0800 Subject: [PATCH 02/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=20=E5=8F=8A?= =?UTF-8?q?=E8=87=AA=E8=BA=AB=206.1.0=EF=BC=8CUnitAuto=202.9.0=EF=BC=8CMyS?= =?UTF-8?q?QL=20JDBC=208.0.33=EF=BC=8CPostgreSQL=20JDBC=2042.3.8=EF=BC=9B?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 13 +++++++------ .../apijson/framework/APIJSONFunctionParser.java | 6 ++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/pom.xml b/pom.xml index b653093..6913975 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 6.0.0 + 6.1.0 jar APIJSONFramework @@ -34,19 +34,19 @@ com.github.Tencent APIJSON - 6.0.0 + 6.1.0 mysql mysql-connector-java - 8.0.29 + 8.0.33 org.postgresql postgresql - 42.3.4 + 42.3.8 @@ -55,12 +55,12 @@ com.github.TommyLemon unitauto-java - 2.7.2 + 2.9.0 com.github.TommyLemon unitauto-jar - 2.7.2 + 2.9.0 @@ -71,6 +71,7 @@ org.apache.maven.plugins maven-compiler-plugin + 3.8.1 1.8 1.8 diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index bfe25c6..efd5499 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -712,8 +712,7 @@ public String getMethodArguments(@NotNull JSONObject curObj, String methodArgsKe /**改用 getMethodDefinition */ @Deprecated - public String getMethodDefination(@NotNull JSONObject curObj) - throws IllegalArgumentException, ClassNotFoundException, IOException { + public String getMethodDefination(@NotNull JSONObject curObj) throws IllegalArgumentException { // curObj.put("arguments", removeComment(curObj.getString("methodArgs"))); return getMethodDefination(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); } @@ -725,8 +724,7 @@ public String getMethodDefination(@NotNull JSONObject curObj) * @throws ClassNotFoundException * @throws IllegalArgumentException */ - public String getMethodDefinition(@NotNull JSONObject curObj) - throws IllegalArgumentException, ClassNotFoundException, IOException { + public String getMethodDefinition(@NotNull JSONObject curObj) throws IllegalArgumentException { // curObj.put("arguments", removeComment(curObj.getString("methodArgs"))); return getMethodDefinition(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); } From 412f0750e2e89d36fd81a676192195f487d3e0b9 Mon Sep 17 00:00:00 2001 From: Bill <1594805355@qq.com> Date: Sat, 6 May 2023 16:06:02 +0800 Subject: [PATCH 03/59] =?UTF-8?q?=E8=B0=83=E6=95=B4artifactId=20=E5=8C=BA?= =?UTF-8?q?=E5=88=86springboot=E9=80=82=E9=85=8D=E7=89=88=E6=9C=AC=20apijs?= =?UTF-8?q?on-framework-spring-boot3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1deddcc..82f1e6c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 apijson.framework - apijson-framework + apijson-framework-spring-boot3 6.1.0 jar From 7fcbda3b9c3432672ec51e70651f91bc034a14ff Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sat, 6 May 2023 22:13:18 +0800 Subject: [PATCH 04/59] =?UTF-8?q?=E5=9B=9E=E6=BB=9A=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E4=BF=9D=E6=8C=81=20master=20=E4=B8=BB=E5=88=86?= =?UTF-8?q?=E6=94=AF=E6=94=AF=E6=8C=81=20SpringBoot=201.x-2.x=EF=BC=8C?= =?UTF-8?q?=E5=AF=B9=20SpringBoot=203.x=20=E5=B7=B2=E5=BC=80=E6=96=B0?= =?UTF-8?q?=E5=88=86=E6=94=AF=20springboot=5F3=EF=BC=8C=E6=84=9F=E8=B0=A2?= =?UTF-8?q?=20=20csx-bill=20=E7=9A=84=E8=B4=A1=E7=8C=AE=20#20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert "新增支持 SpringBoot3,感谢 csx-bill 的贡献 #19" This reverts commit 314b1f65ad96e3a4ed7584a28e9382c9144a19e9, reversing changes made to c9a0558b30383d41c05103018a1d514d585b239e. --- pom.xml | 7 +++---- src/main/java/apijson/framework/APIJSONController.java | 9 ++++----- .../java/apijson/framework/APIJSONFunctionParser.java | 3 +-- src/main/java/apijson/framework/APIJSONObjectParser.java | 2 +- src/main/java/apijson/framework/APIJSONParser.java | 2 +- src/main/java/apijson/framework/APIJSONVerifier.java | 3 +-- 6 files changed, 11 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index 1deddcc..6913975 100644 --- a/pom.xml +++ b/pom.xml @@ -19,10 +19,9 @@ - jakarta.servlet - jakarta.servlet-api - 6.0.0 - provided + javax.servlet + javax.servlet-api + 4.0.1 diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index f25587d..b786fc9 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -36,7 +36,10 @@ import java.rmi.ServerException; import java.util.Map; - +import javax.servlet.AsyncContext; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; import com.alibaba.fastjson.JSONObject; @@ -48,10 +51,6 @@ import apijson.orm.AbstractParser; import apijson.orm.Parser; import apijson.orm.Visitor; -import jakarta.servlet.AsyncContext; -import jakarta.servlet.ServletResponse; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpSession; import unitauto.MethodUtil; import unitauto.MethodUtil.InterfaceProxy; diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index cf49cd7..efd5499 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -31,7 +31,7 @@ import java.util.List; import java.util.Map; - +import javax.servlet.http.HttpSession; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -46,7 +46,6 @@ import apijson.orm.JSONRequest; import apijson.orm.script.JavaScriptExecutor; import apijson.orm.script.ScriptExecutor; -import jakarta.servlet.http.HttpSession; import unitauto.MethodUtil; import unitauto.MethodUtil.Argument; diff --git a/src/main/java/apijson/framework/APIJSONObjectParser.java b/src/main/java/apijson/framework/APIJSONObjectParser.java index f713cd9..da2b588 100755 --- a/src/main/java/apijson/framework/APIJSONObjectParser.java +++ b/src/main/java/apijson/framework/APIJSONObjectParser.java @@ -16,6 +16,7 @@ import java.util.List; +import javax.servlet.http.HttpSession; import com.alibaba.fastjson.JSONObject; @@ -25,7 +26,6 @@ import apijson.orm.AbstractParser; import apijson.orm.Join; import apijson.orm.SQLConfig; -import jakarta.servlet.http.HttpSession; /**简化Parser,getObject和getArray(getArrayConfig)都能用 diff --git a/src/main/java/apijson/framework/APIJSONParser.java b/src/main/java/apijson/framework/APIJSONParser.java index 2036c12..a6c65a9 100755 --- a/src/main/java/apijson/framework/APIJSONParser.java +++ b/src/main/java/apijson/framework/APIJSONParser.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Set; +import javax.servlet.http.HttpSession; import com.alibaba.fastjson.JSONObject; @@ -32,7 +33,6 @@ import apijson.orm.SQLConfig; import apijson.orm.SQLExecutor; import apijson.orm.Verifier; -import jakarta.servlet.http.HttpSession; /**请求解析器 diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 83adc07..64016ca 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -27,7 +27,7 @@ import java.util.SortedMap; import java.util.TreeMap; - +import javax.servlet.http.HttpSession; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -41,7 +41,6 @@ import apijson.orm.AbstractVerifier; import apijson.orm.JSONRequest; import apijson.orm.Visitor; -import jakarta.servlet.http.HttpSession; /**权限验证器 From f97e2627a8c8a7666bd5e81dab4737750a697082 Mon Sep 17 00:00:00 2001 From: Bill <1594805355@qq.com> Date: Mon, 8 May 2023 11:14:19 +0800 Subject: [PATCH 05/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7jdk=2017?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 82f1e6c..c4ad829 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ UTF-8 UTF-8 - 1.8 + 17 @@ -74,8 +74,8 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 17 + 17 From 1439e2923234bcfaa4980832e7c16b59f75b2baa Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 14 May 2023 23:38:25 +0800 Subject: [PATCH 06/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON-6.1.0.jar,?= =?UTF-8?q?=20unitauto-java-2.9.0.jar,=20unitauto-jar-2.9.0.jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/APIJSON-5.4.0.jar | Bin 210243 -> 0 bytes libs/APIJSON-6.1.0.jar | Bin 0 -> 224932 bytes libs/unitauto-2.7.2.jar | Bin 97978 -> 0 bytes libs/unitauto-jar-2.7.2.jar | Bin 5218 -> 0 bytes libs/unitauto-jar-2.9.0.jar | Bin 0 -> 4902 bytes libs/unitauto-java-2.9.0.jar | Bin 0 -> 63125 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 libs/APIJSON-5.4.0.jar create mode 100644 libs/APIJSON-6.1.0.jar delete mode 100644 libs/unitauto-2.7.2.jar delete mode 100644 libs/unitauto-jar-2.7.2.jar create mode 100644 libs/unitauto-jar-2.9.0.jar create mode 100644 libs/unitauto-java-2.9.0.jar diff --git a/libs/APIJSON-5.4.0.jar b/libs/APIJSON-5.4.0.jar deleted file mode 100644 index 21c6e95aae50a7e820410dd083293644f2ee1fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210243 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�Y``WUb)NNc=cti)d!1-biO8Ek;y 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�r4FLHD(?)`9689)!B&9 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∋XpgIS6a0)qh<4Bd~+kBlF}?&Azv) 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%0DqhLi}rx>Sjpl3R3 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%0DFO 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

V6i655K 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

oQs>%2H* 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 m{Qj5*d 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 Date: Sun, 14 May 2023 23:40:33 +0800 Subject: [PATCH 07/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON-6.1.0.jar,?= =?UTF-8?q?=20unitauto-java-2.9.0.jar,=20unitauto-jar-2.9.0.jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/APIJSON-5.4.0.jar | Bin 210243 -> 0 bytes libs/APIJSON-6.1.0.jar | Bin 0 -> 224932 bytes libs/unitauto-2.7.2.jar | Bin 97978 -> 0 bytes libs/unitauto-jar-2.7.2.jar | Bin 5218 -> 0 bytes libs/unitauto-jar-2.9.0.jar | Bin 0 -> 4902 bytes libs/unitauto-java-2.9.0.jar | Bin 0 -> 63125 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 libs/APIJSON-5.4.0.jar create mode 100644 libs/APIJSON-6.1.0.jar delete mode 100644 libs/unitauto-2.7.2.jar delete mode 100644 libs/unitauto-jar-2.7.2.jar create mode 100644 libs/unitauto-jar-2.9.0.jar create mode 100644 libs/unitauto-java-2.9.0.jar diff --git a/libs/APIJSON-5.4.0.jar b/libs/APIJSON-5.4.0.jar deleted file mode 100644 index 21c6e95aae50a7e820410dd083293644f2ee1fb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210243 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�Y``WUb)NNc=cti)d!1-biO8Ek;y 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�r4FLHD(?)`9689)!B&9 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∋XpgIS6a0)qh<4Bd~+kBlF}?&Azv) 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%0DqhLi}rx>Sjpl3R3 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%0DFO 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

V6i655K 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

oQs>%2H* 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 m{Qj5*d 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 Date: Sun, 4 Jun 2023 02:19:09 +0800 Subject: [PATCH 08/59] =?UTF-8?q?=E9=9B=86=E6=88=90=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=20apijson-column=EF=BC=8C=E9=80=9A=E8=BF=87?= =?UTF-8?q?=20ENABLE=5FVERIFY=5FCOLUMN=20=E5=90=AF=E7=94=A8=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E5=8F=8A=E6=A0=A1=E9=AA=8C=EF=BC=8C=E9=80=9A?= =?UTF-8?q?=E8=BF=87=20ENABLE=5FCOLUMN=5FCONFIG=20=E5=90=AF=E7=94=A8?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 + .../apijson/framework/APIJSONApplication.java | 2 +- .../apijson/framework/APIJSONController.java | 2 +- .../apijson/framework/APIJSONSQLConfig.java | 21 +- .../apijson/framework/APIJSONSQLExecutor.java | 13 ++ .../apijson/framework/APIJSONVerifier.java | 217 ++++++++++++------ 6 files changed, 183 insertions(+), 77 deletions(-) diff --git a/pom.xml b/pom.xml index 6913975..e4ac900 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,11 @@ APIJSON 6.1.0 + + + + + diff --git a/src/main/java/apijson/framework/APIJSONApplication.java b/src/main/java/apijson/framework/APIJSONApplication.java index 8aa46b2..239c072 100755 --- a/src/main/java/apijson/framework/APIJSONApplication.java +++ b/src/main/java/apijson/framework/APIJSONApplication.java @@ -82,7 +82,7 @@ public static void init(boolean shutdownWhenServerError, @Not } catch (Throwable e) { e.printStackTrace(); if (shutdownWhenServerError) { - onServerError("权Access 限校验配置 初始化失败!", shutdownWhenServerError); + onServerError("Access 权限校验配置 初始化失败!", shutdownWhenServerError); } } System.out.println("\n完成初始化: Access 权限校验配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index b786fc9..0024d2a 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -108,7 +108,7 @@ public String parseByTag(RequestMethod method, String tag, Map p //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一些路由解析性能来提升一点开发效率 + /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一点路由解析性能来提升一些开发效率 * @param method * @param tag * @param params diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 4d10e77..2d59631 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; +import apijson.column.ColumnUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.annotation.JSONField; @@ -38,6 +39,8 @@ public class APIJSONSQLConfig extends AbstractSQLConfig { public static final String TAG = "APIJSONSQLConfig"; + public static boolean ENABLE_COLUMN_CONFIG = false; + public static Callback SIMPLE_CALLBACK; public static APIJSONCreator APIJSON_CREATOR; @@ -261,6 +264,22 @@ public boolean isFakeDelete() { @Override public void onFakeDelete(Map map) { - } + + // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column + @Override + public AbstractSQLConfig setColumn(List column) { + if (ENABLE_COLUMN_CONFIG) { + column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion()); + } + return super.setColumn(column); + } + @Override + public String getKey(String key) { + if (ENABLE_COLUMN_CONFIG) { + key = ColumnUtil.compatInputKey(key, getTable(), getMethod(), getVersion(), ! isConfigTable()); + } + return super.getKey(key); + } + } diff --git a/src/main/java/apijson/framework/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/APIJSONSQLExecutor.java index cd3c2f3..191977a 100755 --- a/src/main/java/apijson/framework/APIJSONSQLExecutor.java +++ b/src/main/java/apijson/framework/APIJSONSQLExecutor.java @@ -20,6 +20,7 @@ import java.sql.SQLException; import java.util.Map; +import apijson.column.ColumnUtil; import org.postgresql.util.PGobject; import com.alibaba.fastjson.JSONObject; @@ -94,5 +95,17 @@ protected Object getValue(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd return value instanceof PGobject ? JSON.parse(((PGobject) value).getValue()) : value; } + // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column + @Override + protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table, + int columnIndex, Map childMap) throws Exception { + + String key = super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap); + if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { + return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); + } + + return key; + } } diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 64016ca..c7796c2 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -20,15 +20,12 @@ import static apijson.framework.APIJSONConstant.VISITOR_ID; import java.rmi.ServerException; -import java.util.Comparator; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.SortedMap; -import java.util.TreeMap; +import java.util.*; import javax.servlet.http.HttpSession; +import apijson.column.ColumnUtil; +import apijson.orm.*; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -38,9 +35,6 @@ import apijson.NotNull; import apijson.RequestMethod; import apijson.StringUtil; -import apijson.orm.AbstractVerifier; -import apijson.orm.JSONRequest; -import apijson.orm.Visitor; /**权限验证器 @@ -49,6 +43,8 @@ public class APIJSONVerifier extends AbstractVerifier { public static final String TAG = "APIJSONVerifier"; + public static boolean ENABLE_VERIFY_COLUMN = true; + // 由 init 方法读取数据库 Access 表来替代手动输入配置 // // > // // > @@ -62,37 +58,41 @@ public class APIJSONVerifier extends AbstractVerifier { // } public static APIJSONCreator APIJSON_CREATOR; + static { APIJSON_CREATOR = new APIJSONCreator<>(); } /**初始化,加载所有权限配置和请求校验配置 - * @return + * @return * @throws ServerException */ public static JSONObject init() throws ServerException { return init(false); } + /**初始化,加载所有权限配置和请求校验配置 - * @param shutdownWhenServerError - * @return + * @param shutdownWhenServerError + * @return * @throws ServerException */ public static JSONObject init(boolean shutdownWhenServerError) throws ServerException { return init(shutdownWhenServerError, null); } + /**初始化,加载所有权限配置和请求校验配置 - * @param creator - * @return + * @param creator + * @return * @throws ServerException */ public static JSONObject init(APIJSONCreator creator) throws ServerException { return init(false, creator); } + /**初始化,加载所有权限配置和请求校验配置 - * @param shutdownWhenServerError - * @param creator - * @return + * @param shutdownWhenServerError + * @param creator + * @return * @throws ServerException */ public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { @@ -107,42 +107,46 @@ public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreato } /**初始化,加载所有权限配置 - * @return + * @return * @throws ServerException */ public static JSONObject initAccess() throws ServerException { return initAccess(false); } + /**初始化,加载所有权限配置 - * @param shutdownWhenServerError - * @return + * @param shutdownWhenServerError + * @return * @throws ServerException */ public static JSONObject initAccess(boolean shutdownWhenServerError) throws ServerException { return initAccess(shutdownWhenServerError, null); } + /**初始化,加载所有权限配置 - * @param creator - * @return + * @param creator + * @return * @throws ServerException */ public static JSONObject initAccess(APIJSONCreator creator) throws ServerException { return initAccess(false, creator); } + /**初始化,加载所有权限配置 - * @param shutdownWhenServerError - * @param creator - * @return + * @param shutdownWhenServerError + * @param creator + * @return * @throws ServerException */ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return initAccess(shutdownWhenServerError, creator, null); } + /**初始化,加载所有权限配置 - * @param shutdownWhenServerError - * @param creator + * @param shutdownWhenServerError + * @param creator * @param table 表内自定义数据过滤条件 - * @return + * @return * @throws ServerException */ @SuppressWarnings("unchecked") @@ -180,11 +184,13 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON } Log.d(TAG, "initAccess < for ACCESS_MAP.size() = " + ACCESS_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<"); - + Map> newMap = new LinkedHashMap<>(); Map> fakeDeleteMap = new LinkedHashMap<>(); Map newTKMap = new LinkedHashMap<>(); - + + SortedMap>> versionedTableColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); + SortedMap>> versionedKeyColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); for (int i = 0; i < size; i++) { JSONObject item = list.getJSONObject(i); if (item == null) { @@ -199,10 +205,10 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON map.put(RequestMethod.POST, JSON.parseObject(item.getString("post"), String[].class)); map.put(RequestMethod.PUT, JSON.parseObject(item.getString("put"), String[].class)); map.put(RequestMethod.DELETE, JSON.parseObject(item.getString("delete"), String[].class)); - + String name = item.getString("name"); String alias = item.getString("alias"); - + Map fakemap = new HashMap<>(); if(StringUtil.isNotEmpty(item.getString("deletedKey"), true)) { if (StringUtil.isEmpty(item.getString("deletedValue"), true)) { @@ -212,7 +218,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON fakemap.put("deletedValue", item.getString("deletedValue")); } - /**TODO + /**TODO * 以下判断写得比较复杂,因为表设计不够好,但为了兼容旧版 APIJSON 服务 和 APIAuto 工具而保留了下来。 * 如果是 name 为接口传参的 表对象 的 key,对应一个可缺省的 tableName,判断就会简单不少。 */ @@ -226,32 +232,93 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON onServerError("name: " + name + "不合法!字段 alias 的值为空时,name 必须为合法表名!", shutdownWhenServerError); } - newMap.put(name, map); - fakeDeleteMap.put(name, fakemap); - } - else { - if (JSONRequest.isTableKey(alias) == false) { - onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError); - } - - newMap.put(alias, map); - fakeDeleteMap.put(alias, fakemap); + alias = name; + } else if (JSONRequest.isTableKey(alias) == false) { + onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError); } + newMap.put(alias, map); + fakeDeleteMap.put(alias, fakemap); newTKMap.put(alias, name); + + if (ENABLE_VERIFY_COLUMN) { + JSONObject columns = item.getJSONObject("columns"); + Set> set = columns == null ? null : columns.entrySet(); + if (set != null) { + + for (Map.Entry entry : set) { + Integer version = entry == null ? null : Integer.valueOf(entry.getKey()); // null is not possible + Object val = version == null ? null : entry.getValue(); + if (val == null) { + continue; + } + + Map> kcm = new LinkedHashMap<>(); // versionedKeyColumnMap.get(version); + Map cm = new LinkedHashMap<>(); // kcm.get(alias); + + String[] cs = StringUtil.split(String.valueOf(val)); + List l = new ArrayList<>(); + for (int j = 0; j < cs.length; j++) { + String s = cs[j]; + Entry ety = Pair.parseEntry(s, true); + String k = ety == null ? null : ety.getKey(); + String v = ety == null ? null : ety.getValue(); + if (StringUtil.isName(k) == false || (v != null && StringUtil.isName(v) == false)) { + throw new IllegalArgumentException("后端 Access 表中 name: " + name + " 对应 columns 字段的值 " + + version + ":value 中第 " + j + " 个字段 column:alias 中字符 " + s + " 不合法!" + + "alias 可缺省,但 column, alias 都必须为合法的变量名!" + + " ! !ety == null || StringUtil.isName(ety.getKey()) == false " + + " || (ety.getValue() != null && StringUtil.isName(ety.getValue()) == false)"); + } + + l.add(k); + + cm.put(v == null ? k : v, k); + +// if (v != null) { +//// if (kcm == null) { +//// kcm = new LinkedHashMap<>(); +//// } +//// if (m == null) { +//// m = new LinkedHashMap<>(); +//// kcm.put(alias, m); +//// } +// cm.put(v, k); +// } + } + + Map> m = new LinkedHashMap<>(); + m.put(alias, l); + versionedTableColumnMap.put(version, m); + + kcm.put(alias, cm); + versionedKeyColumnMap.put(version, kcm); + } + } + } } if (isAll) { // 全量更新 ACCESS_MAP = newMap; ACCESS_FAKE_DELETE_MAP = fakeDeleteMap; APIJSONSQLConfig.TABLE_KEY_MAP = newTKMap; - } - else { + } else { ACCESS_MAP.putAll(newMap); ACCESS_FAKE_DELETE_MAP.putAll(fakeDeleteMap); APIJSONSQLConfig.TABLE_KEY_MAP.putAll(newTKMap); } - + + if (ENABLE_VERIFY_COLUMN) { + if (isAll) { // 全量更新 + ColumnUtil.VERSIONED_TABLE_COLUMN_MAP = versionedTableColumnMap; + ColumnUtil.VERSIONED_KEY_COLUMN_MAP = versionedKeyColumnMap; + } else { + ColumnUtil.VERSIONED_TABLE_COLUMN_MAP.putAll(versionedTableColumnMap); + ColumnUtil.VERSIONED_KEY_COLUMN_MAP.putAll(versionedKeyColumnMap); + } + ColumnUtil.init(); + } + Log.d(TAG, "initAccess for /> ACCESS_MAP.size() = " + ACCESS_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>"); return response; @@ -259,42 +326,46 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON /**初始化,加载所有请求校验配置 - * @return + * @return * @throws ServerException */ public static JSONObject initRequest() throws ServerException { return initRequest(false); } + /**初始化,加载所有请求校验配置 - * @param shutdownWhenServerError - * @return + * @param shutdownWhenServerError + * @return * @throws ServerException */ public static JSONObject initRequest(boolean shutdownWhenServerError) throws ServerException { return initRequest(shutdownWhenServerError, null); } + /**初始化,加载所有请求校验配置 - * @param creator - * @return + * @param creator + * @return * @throws ServerException */ public static JSONObject initRequest(APIJSONCreator creator) throws ServerException { return initRequest(false, creator); } + /**初始化,加载所有请求校验配置 - * @param shutdownWhenServerError - * @param creator - * @return + * @param shutdownWhenServerError + * @param creator + * @return * @throws ServerException */ public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return initRequest(shutdownWhenServerError, creator, null); } + /**初始化,加载所有请求校验配置 - * @param shutdownWhenServerError - * @param creator + * @param shutdownWhenServerError + * @param creator * @param table 表内自定义数据过滤条件 - * @return + * @return * @throws ServerException */ @SuppressWarnings("unchecked") @@ -372,9 +443,8 @@ public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSO if (apijson.JSONObject.isTableKey(key)) { if (isArrayKey) { //自动为 tag = Comment:[] 的 { ... } 新增键值对 "Comment[]":[] 为 { "Comment[]":[], ... } - target.put(key + "[]", new JSONArray()); - } - else { //自动为 tag = Comment 的 { ... } 包一层为 { "Comment": { ... } } + target.put(key + "[]", new JSONArray()); + } else { //自动为 tag = Comment 的 { ... } 包一层为 { "Comment": { ... } } target = new JSONObject(true); target.put(tag, structure); } @@ -401,14 +471,13 @@ public int compare(Integer o1, Integer o2) { versionedMap.put(Integer.valueOf(version), item); newMap.put(cacheKey, versionedMap); } - + if (isAll) { // 全量更新 REQUEST_MAP = newMap; - } - else { + } else { REQUEST_MAP.putAll(newMap); } - + Log.d(TAG, "initRequest for /> REQUEST_MAP.size() = " + REQUEST_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>"); return response; @@ -421,9 +490,10 @@ public static void test() throws Exception { static final String requestConfig = "{\"Comment\":{\"REFUSE\": \"id\", \"MUST\": \"userId,momentId,content\"}, \"INSERT\":{\"@role\":\"OWNER\"}}"; static final String responseConfig = "{\"User\":{\"REMOVE\": \"phone\", \"REPLACE\":{\"sex\":2}, \"INSERT\":{\"name\":\"api\"}, \"UPDATE\":{\"verifyURLList-()\":\"verifyURLList(pictureList)\"}}}"; + /** * 测试 Request 和 Response 的数据结构校验 - * @throws Exception + * @throws Exception */ public static void testStructure() throws Exception { JSONObject request; @@ -436,7 +506,7 @@ public static void testStructure() throws Exception { } Log.d(TAG, "测试 Operation.MUST 校验缺少字段:成功"); } - try { + try { request = JSON.parseObject("{\"Comment\":{\"id\":0, \"userId\":0, \"momentId\":0, \"content\":\"apijson\"}}"); Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); } catch (Throwable e) { @@ -455,7 +525,6 @@ public static void testStructure() throws Exception { } - JSONObject response; try { response = JSON.parseObject("{\"User\":{\"userId\":0}}"); @@ -493,19 +562,17 @@ public static void testStructure() throws Exception { } - protected static void onServerError(String msg, boolean shutdown) throws ServerException { Log.e(TAG, "\n校验配置测试未通过!\n请修改 Access/Request 表里的记录!\n保证所有配置都是正确的!!!\n\n原因:\n" + msg); if (shutdown) { - System.exit(1); + System.exit(1); } else { throw new ServerException(msg); } } - @SuppressWarnings("unchecked") @NotNull @Override @@ -516,7 +583,7 @@ public APIJSONParser createParser() { } /**登录校验 - * @author + * @author * @modifier Lemon * @param session * @throws Exception @@ -530,14 +597,14 @@ public static void verifyLogin(HttpSession session) throws Exception { /**获取来访用户的id * @author Lemon * @param session - * @return + * @return */ @SuppressWarnings("unchecked") public static T getVisitorId(HttpSession session) { if (session == null) { return null; } - + T id = (T) session.getAttribute(VISITOR_ID); if (id == null) { id = (T) getVisitor(session); @@ -545,6 +612,7 @@ public static T getVisitorId(HttpSession session) { } return id; } + /**获取来访用户 * @param session * @return @@ -555,15 +623,16 @@ public static Visitor getVisitor(HttpSession session) { } - @Override public String getIdKey(String database, String schema, String datasource, String table) { return APIJSONSQLConfig.SIMPLE_CALLBACK.getIdKey(database, schema, datasource, table); } + @Override public String getUserIdKey(String database, String schema, String datasource, String table) { return APIJSONSQLConfig.SIMPLE_CALLBACK.getUserIdKey(database, schema, datasource, table); } + @SuppressWarnings("unchecked") @Override public T newId(RequestMethod method, String database, String schema, String datasource, String table) { From 5c47fb6b79ecea7b7d4ee7d2c262054262ce46c7 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 4 Jun 2023 03:49:37 +0800 Subject: [PATCH 09/59] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=87=AA=E6=A3=80=E8=BF=9C=E7=A8=8B=E5=87=BD=E6=95=B0=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=8A=A5=E9=94=99=20tag=20=E4=B8=8D=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/apijson/framework/APIJSONFunctionParser.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index efd5499..332c80f 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -296,12 +296,13 @@ public static JSONObject init(boolean shutdownWhenServerError methods = ALL_METHODS; } + demo.put(JSONRequest.KEY_TAG, item.get(JSONRequest.KEY_TAG)); + demo.put(JSONRequest.KEY_VERSION, item.get(JSONRequest.KEY_VERSION)); + for (String method : methods) { JSONObject r = APIJSON_CREATOR.createParser() .setMethod(RequestMethod.valueOf(method)) .setNeedVerify(false) - .setTag(item.getString(JSONRequest.KEY_TAG)) - .setVersion(item.getIntValue(JSONRequest.KEY_VERSION)) .parseResponse(demo); if (JSONResponse.isSuccess(r) == false) { From 7d92e49c7396899518be749d369def9a416b091a Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 4 Jun 2023 06:31:19 +0800 Subject: [PATCH 10/59] =?UTF-8?q?=E8=A7=A3=E5=86=B3=20@column:"`toId`;(par?= =?UTF-8?q?entId)"=20=E7=AD=89=E5=86=99=E6=B3=95=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E7=BB=95=E8=BF=87=E5=AD=97=E6=AE=B5=E6=8F=92=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apijson/framework/APIJSONSQLConfig.java | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 2d59631..19514c9 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -164,31 +164,6 @@ public String getDBPassword() { return null; } - //取消注释后,默认的数据库类型会由 MySQL 改为 PostgreSQL - // @Override - // public String getDatabase() { - // String db = super.getDatabase(); - // return db == null ? DATABASE_POSTGRESQL : db; - // } - - //如果确定只用一种数据库,可以重写方法,这种数据库直接 return true,其它数据库直接 return false,来减少判断,提高性能 - // @Override - // public boolean isMySQL() { - // return true; - // } - // @Override - // public boolean isPostgreSQL() { - // return false; - // } - // @Override - // public boolean isSQLServer() { - // return false; - // } - // @Override - // public boolean isOracle() { - // return false; - // } - /**获取 APIJSON 配置表所在数据库模式 database,默认与业务表一块 * @return */ @@ -270,7 +245,7 @@ public void onFakeDelete(Map map) { @Override public AbstractSQLConfig setColumn(List column) { if (ENABLE_COLUMN_CONFIG) { - column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion()); + column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); } return super.setColumn(column); } From aa31231b756781f67cba6719d3a700b87a0b2272 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Mon, 10 Jul 2023 00:41:10 +0800 Subject: [PATCH 11/59] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=81=87=E5=88=A0?= =?UTF-8?q?=E9=99=A4=EF=BC=8C=E6=94=AF=E6=8C=81=20notDeletedValue=EF=BC=8C?= =?UTF-8?q?=E9=80=82=E9=85=8D=20deletedTime=20=3D=20NULL=20=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA=E6=9C=AA=E5=88=A0=E9=99=A4=E7=AD=89=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apijson/framework/APIJSONSQLConfig.java | 8 ------- .../apijson/framework/APIJSONVerifier.java | 21 ++++++++++++++----- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 19514c9..4bc5ada 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -232,14 +232,6 @@ public static SQLConfig newSQLConfig(RequestMethod method, String table, String return newSQLConfig(method, table, alias, request, joinList, isProcedure, SIMPLE_CALLBACK); } - @Override - public boolean isFakeDelete() { - return false; - } - - @Override - public void onFakeDelete(Map map) { - } // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column @Override diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index c7796c2..b558da9 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -210,12 +210,23 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON String alias = item.getString("alias"); Map fakemap = new HashMap<>(); - if(StringUtil.isNotEmpty(item.getString("deletedKey"), true)) { - if (StringUtil.isEmpty(item.getString("deletedValue"), true)) { - onServerError("Access表 id= "+ item.getString("id") +", deletedKey,deletedValue 的值不能为空!", shutdownWhenServerError); + String deletedKey = item.getString(AbstractSQLConfig.KEY_DELETED_KEY); + if(StringUtil.isNotEmpty(deletedKey, true)) { + boolean containNotDeletedValue = item.containsKey(AbstractSQLConfig.KEY_NOT_DELETED_VALUE); + Object deletedValue = item.getString(AbstractSQLConfig.KEY_DELETED_VALUE); + if (containNotDeletedValue == false && StringUtil.isEmpty(deletedValue, true)) { + onServerError( + "Access表 id = " + item.getString("id") + " 对应的 " + + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " + + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" + , shutdownWhenServerError + ); + } + fakemap.put(AbstractSQLConfig.KEY_DELETED_KEY, deletedKey); + fakemap.put(AbstractSQLConfig.KEY_DELETED_VALUE, deletedValue); + if (containNotDeletedValue) { + fakemap.put(AbstractSQLConfig.KEY_NOT_DELETED_VALUE, item.get(AbstractSQLConfig.KEY_NOT_DELETED_VALUE)); } - fakemap.put("deletedKey", item.getString("deletedKey")); - fakemap.put("deletedValue", item.getString("deletedValue")); } /**TODO From f3c99c91776b27c3dabb447a5856bf564441104b Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Mon, 10 Jul 2023 00:41:24 +0800 Subject: [PATCH 12/59] =?UTF-8?q?SQLConfig=20=E5=92=8C=20SQLExecutor=20?= =?UTF-8?q?=E4=B9=9F=E6=8C=87=E5=AE=9A=E4=B8=BB=E9=94=AE=E6=B3=9B=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/apijson/framework/APIJSONParser.java | 12 +++--------- .../java/apijson/framework/APIJSONSQLConfig.java | 3 ++- .../java/apijson/framework/APIJSONSQLExecutor.java | 2 +- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONParser.java b/src/main/java/apijson/framework/APIJSONParser.java index a6c65a9..62d30b2 100755 --- a/src/main/java/apijson/framework/APIJSONParser.java +++ b/src/main/java/apijson/framework/APIJSONParser.java @@ -125,6 +125,7 @@ public FunctionParser getFunctionParser() { public Object onFunctionParse(String key, String function, String parentPath, String currentName, JSONObject currentObject, boolean containRaw) throws Exception { if (functionParser == null) { functionParser = createFunctionParser(); + functionParser.setParser(this); functionParser.setMethod(getMethod()); functionParser.setTag(getTag()); functionParser.setVersion(getVersion()); @@ -157,11 +158,11 @@ public APIJSONObjectParser createObjectParser(JSONObject request, String parentP // return super.newQueryConfig(); // } - //导致最多评论的(Strong 30个)的那个动态详情界面Android(82001)无姓名和头像,即User=null + // 导致最多评论的(Strong 30个)的那个动态详情界面Android(82001)无姓名和头像,即User=null // @Override // protected void onComplete() { // if (response != null) { - // putQueryResult(path, response);//解决获取关联数据时requestObject里不存在需要的关联数据 + // putQueryResult(path, response); // 解决获取关联数据时requestObject里不存在需要的关联数据 // } // } @@ -179,13 +180,6 @@ public void onVerifyContent() throws Exception { } super.onVerifyContent(); } - - - // //可重写来设置最大查询数量 - // @Override - // public int getMaxQueryCount() { - // return 50; - // } } diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 4bc5ada..e6cf6b0 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -36,7 +36,7 @@ * TiDB 用法和 MySQL 一致 * @author Lemon */ -public class APIJSONSQLConfig extends AbstractSQLConfig { +public class APIJSONSQLConfig extends AbstractSQLConfig { public static final String TAG = "APIJSONSQLConfig"; public static boolean ENABLE_COLUMN_CONFIG = false; @@ -241,6 +241,7 @@ public AbstractSQLConfig setColumn(List column) { } return super.setColumn(column); } + @Override public String getKey(String key) { if (ENABLE_COLUMN_CONFIG) { diff --git a/src/main/java/apijson/framework/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/APIJSONSQLExecutor.java index 191977a..23b390a 100755 --- a/src/main/java/apijson/framework/APIJSONSQLExecutor.java +++ b/src/main/java/apijson/framework/APIJSONSQLExecutor.java @@ -35,7 +35,7 @@ /**executor for query(read) or update(write) MySQL database * @author Lemon */ -public class APIJSONSQLExecutor extends AbstractSQLExecutor { +public class APIJSONSQLExecutor extends AbstractSQLExecutor { public static final String TAG = "APIJSONSQLExecutor"; static { From fbcf3a520b3e3637da23cbca6104972934b17b89 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Wed, 9 Aug 2023 23:25:34 +0800 Subject: [PATCH 13/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON,=20apijson-c?= =?UTF-8?q?olumn,=20=E8=87=AA=E8=BA=AB=20=E7=89=88=E6=9C=AC=E5=88=86?= =?UTF-8?q?=E5=88=AB=E4=B8=BA=206.2.0,=201.7.0,=206.2.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index e4ac900..56d2e37 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 6.1.0 + 6.2.0 jar APIJSONFramework @@ -34,13 +34,13 @@ com.github.Tencent APIJSON - 6.1.0 + 6.2.0 + + + com.github.APIJSON + apijson-column + 1.7.0 - - - - - From 550fd946f46aed69f91d4808c2c24fe4302f784f Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 10 Sep 2023 03:13:30 +0800 Subject: [PATCH 14/59] =?UTF-8?q?=E4=B8=BB=E9=94=AE=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81=E5=85=A8=E9=9D=A2=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=B3=9B=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/APIJSONFunctionParser.java | 29 +++++-------------- .../framework/APIJSONObjectParser.java | 15 ++++------ .../java/apijson/framework/APIJSONParser.java | 4 +-- .../apijson/framework/APIJSONSQLConfig.java | 10 +++---- .../apijson/framework/APIJSONSQLExecutor.java | 6 ++-- 5 files changed, 23 insertions(+), 41 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index 332c80f..061a74b 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -53,7 +53,7 @@ /**可远程调用的函数类 * @author Lemon */ -public class APIJSONFunctionParser extends AbstractFunctionParser { +public class APIJSONFunctionParser extends AbstractFunctionParser { public static final String TAG = "APIJSONFunctionParser"; @NotNull @@ -79,23 +79,23 @@ public APIJSONFunctionParser(RequestMethod method, String tag, int version, JSON public HttpSession getSession() { return session; } - public APIJSONFunctionParser setSession(HttpSession session) { + public APIJSONFunctionParser setSession(HttpSession session) { this.session = session; return this; } @Override - public APIJSONFunctionParser setMethod(RequestMethod method) { + public APIJSONFunctionParser setMethod(RequestMethod method) { super.setMethod(method); return this; } @Override - public APIJSONFunctionParser setTag(String tag) { + public APIJSONFunctionParser setTag(String tag) { super.setTag(tag); return this; } @Override - public APIJSONFunctionParser setVersion(int version) { + public APIJSONFunctionParser setVersion(int version) { super.setVersion(version); return this; } @@ -283,7 +283,7 @@ public static JSONObject init(boolean shutdownWhenServerError if (item.get("language") != null) { String language = item.getString("language"); if (SCRIPT_EXECUTOR_MAP.get(language) == null) { - onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); + onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); } ScriptExecutor scriptExecutor = SCRIPT_EXECUTOR_MAP.get(language); scriptExecutor.load(name, scriptMap.get(name).getString("script")); @@ -337,7 +337,7 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE public static void test() throws Exception { test(null); } - public static void test(APIJSONFunctionParser function) throws Exception { + public static void test(APIJSONFunctionParser function) throws Exception { int i0 = 1, i1 = -2; JSONObject request = new JSONObject(); request.put("id", 10); @@ -710,14 +710,6 @@ public String getMethodArguments(@NotNull JSONObject curObj, String methodArgsKe } - /**改用 getMethodDefinition - */ - @Deprecated - public String getMethodDefination(@NotNull JSONObject curObj) throws IllegalArgumentException { - // curObj.put("arguments", removeComment(curObj.getString("methodArgs"))); - return getMethodDefination(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); - } - /**获取方法的定义 * @param curObj * @return @@ -729,13 +721,6 @@ public String getMethodDefinition(@NotNull JSONObject curObj) throws IllegalArgu // curObj.put("arguments", removeComment(curObj.getString("methodArgs"))); return getMethodDefinition(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); } - /**改用 getMethodDefinition - */ - @Deprecated - public String getMethodDefination(@NotNull JSONObject curObj, String method, String arguments - , String type, String exceptions, String language) throws IllegalArgumentException { - return getMethodDefinition(curObj, method, arguments, type, exceptions, language); - } /**获取方法的定义 * @param curObj * @param method diff --git a/src/main/java/apijson/framework/APIJSONObjectParser.java b/src/main/java/apijson/framework/APIJSONObjectParser.java index da2b588..26c898e 100755 --- a/src/main/java/apijson/framework/APIJSONObjectParser.java +++ b/src/main/java/apijson/framework/APIJSONObjectParser.java @@ -18,20 +18,17 @@ import javax.servlet.http.HttpSession; +import apijson.orm.*; import com.alibaba.fastjson.JSONObject; import apijson.NotNull; import apijson.RequestMethod; -import apijson.orm.AbstractObjectParser; -import apijson.orm.AbstractParser; -import apijson.orm.Join; -import apijson.orm.SQLConfig; /**简化Parser,getObject和getArray(getArrayConfig)都能用 * @author Lemon */ -public class APIJSONObjectParser extends AbstractObjectParser { +public class APIJSONObjectParser extends AbstractObjectParser { public static final String TAG = "APIJSONObjectParser"; /**for single object @@ -44,26 +41,26 @@ public class APIJSONObjectParser extends AbstractObjectParser { * @param isArrayMainTable * @throws Exception */ - public APIJSONObjectParser(HttpSession session, @NotNull JSONObject request, String parentPath, SQLConfig arrayConfig + public APIJSONObjectParser(HttpSession session, @NotNull JSONObject request, String parentPath, SQLConfig arrayConfig , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { super(request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable); } @Override - public APIJSONObjectParser setMethod(RequestMethod method) { + public APIJSONObjectParser setMethod(RequestMethod method) { super.setMethod(method); return this; } @Override - public APIJSONObjectParser setParser(AbstractParser parser) { + public APIJSONObjectParser setParser(Parser parser) { super.setParser(parser); return this; } @Override - public SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { + public SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { return APIJSONSQLConfig.newSQLConfig(method, table, alias, request, joinList, isProcedure); } diff --git a/src/main/java/apijson/framework/APIJSONParser.java b/src/main/java/apijson/framework/APIJSONParser.java index 62d30b2..ebb1e1f 100755 --- a/src/main/java/apijson/framework/APIJSONParser.java +++ b/src/main/java/apijson/framework/APIJSONParser.java @@ -145,10 +145,10 @@ public Object onFunctionParse(String key, String function, String parentPath, St @Override - public APIJSONObjectParser createObjectParser(JSONObject request, String parentPath, SQLConfig arrayConfig + public APIJSONObjectParser createObjectParser(JSONObject request, String parentPath, SQLConfig arrayConfig , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { - return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { + return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { // @Override // protected APIJSONSQLConfig newQueryConfig() { diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index e6cf6b0..af4eb91 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -59,8 +59,8 @@ public class APIJSONSQLConfig extends AbstractSQLConfig { SIMPLE_CALLBACK = new SimpleCallback() { @Override - public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { - SQLConfig config = APIJSON_CREATOR.createSQLConfig(); + public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { + SQLConfig config = APIJSON_CREATOR.createSQLConfig(); config.setMethod(method); config.setDatabase(database); config.setDatasource(datasource); @@ -228,14 +228,14 @@ public APIJSONSQLConfig(RequestMethod method, int count, int page) { * @return * @throws Exception */ - public static SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { - return newSQLConfig(method, table, alias, request, joinList, isProcedure, SIMPLE_CALLBACK); + public static SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { + return (SQLConfig) newSQLConfig(method, table, alias, request, joinList, isProcedure, SIMPLE_CALLBACK); } // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column @Override - public AbstractSQLConfig setColumn(List column) { + public AbstractSQLConfig setColumn(List column) { if (ENABLE_COLUMN_CONFIG) { column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); } diff --git a/src/main/java/apijson/framework/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/APIJSONSQLExecutor.java index 23b390a..c18b12e 100755 --- a/src/main/java/apijson/framework/APIJSONSQLExecutor.java +++ b/src/main/java/apijson/framework/APIJSONSQLExecutor.java @@ -73,7 +73,7 @@ public class APIJSONSQLExecutor extends AbstractSQLExecutor @Override - public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull PreparedStatement statement, int index, Object value) throws SQLException { + public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull PreparedStatement statement, int index, Object value) throws SQLException { if (config.isPostgreSQL() && JSON.isBooleanOrNumberOrString(value) == false) { PGobject o = new PGobject(); o.setType("jsonb"); @@ -87,7 +87,7 @@ public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull Prepare @Override - protected Object getValue(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, + protected Object getValue(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table, int columnIndex, String lable, Map childMap) throws Exception { Object value = super.getValue(config, rs, rsmd, tablePosition, table, columnIndex, lable, childMap); @@ -97,7 +97,7 @@ protected Object getValue(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column @Override - protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table, + protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table, int columnIndex, Map childMap) throws Exception { String key = super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap); From 1114898c2de419a130adea97fa70a556a09bd996 Mon Sep 17 00:00:00 2001 From: Bill <1594805355@qq.com> Date: Tue, 21 Nov 2023 14:34:44 +0800 Subject: [PATCH 15/59] =?UTF-8?q?6.2.0=20=E7=89=88=E6=9C=AC=20=20javax.ser?= =?UTF-8?q?vlet-api=20=E5=8D=87=E7=BA=A7=20jakarta.servlet-api=20=20jdk=20?= =?UTF-8?q?=E5=8D=87=E7=BA=A7=E4=B8=BA=2017?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 16 ++++++++++------ .../apijson/framework/APIJSONController.java | 8 ++++---- .../apijson/framework/APIJSONFunctionParser.java | 2 +- .../apijson/framework/APIJSONObjectParser.java | 2 +- .../java/apijson/framework/APIJSONParser.java | 2 +- .../java/apijson/framework/APIJSONVerifier.java | 2 +- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 56d2e37..4857efc 100644 --- a/pom.xml +++ b/pom.xml @@ -14,14 +14,18 @@ UTF-8 UTF-8 - 1.8 + 17 + UTF-8 + 17 + 17 - javax.servlet - javax.servlet-api - 4.0.1 + jakarta.servlet + jakarta.servlet-api + 6.0.0 + provided @@ -78,8 +82,8 @@ maven-compiler-plugin 3.8.1 - 1.8 - 1.8 + 17 + 17 diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index 0024d2a..6c5506f 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -36,10 +36,10 @@ import java.rmi.ServerException; import java.util.Map; -import javax.servlet.AsyncContext; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpSession; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; import com.alibaba.fastjson.JSONObject; diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index 061a74b..3af0e1d 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -31,7 +31,7 @@ import java.util.List; import java.util.Map; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSession; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; diff --git a/src/main/java/apijson/framework/APIJSONObjectParser.java b/src/main/java/apijson/framework/APIJSONObjectParser.java index 26c898e..4d423e6 100755 --- a/src/main/java/apijson/framework/APIJSONObjectParser.java +++ b/src/main/java/apijson/framework/APIJSONObjectParser.java @@ -16,7 +16,7 @@ import java.util.List; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSession; import apijson.orm.*; import com.alibaba.fastjson.JSONObject; diff --git a/src/main/java/apijson/framework/APIJSONParser.java b/src/main/java/apijson/framework/APIJSONParser.java index ebb1e1f..71d4e4b 100755 --- a/src/main/java/apijson/framework/APIJSONParser.java +++ b/src/main/java/apijson/framework/APIJSONParser.java @@ -21,7 +21,7 @@ import java.util.Map; import java.util.Set; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSession; import com.alibaba.fastjson.JSONObject; diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index b558da9..02d1ee0 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -22,7 +22,7 @@ import java.rmi.ServerException; import java.util.*; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSession; import apijson.column.ColumnUtil; import apijson.orm.*; From 6e2619f510329b0632c48c0f3621bf6efee840e4 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Tue, 12 Dec 2023 23:24:07 +0800 Subject: [PATCH 16/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=20=E5=8F=8A?= =?UTF-8?q?=E8=87=AA=E8=BA=AB=206.3.0=EF=BC=8Capijson-column=201.8.0?= =?UTF-8?q?=EF=BC=8Cunitauto-java=20=E5=8F=8A=20unitauto-jar=203.0.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 56d2e37..08f48dd 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 6.2.0 + 6.3.0 jar APIJSONFramework @@ -34,12 +34,12 @@ com.github.Tencent APIJSON - 6.2.0 + 6.3.0 com.github.APIJSON apijson-column - 1.7.0 + 1.8.0 @@ -60,12 +60,12 @@ com.github.TommyLemon unitauto-java - 2.9.0 + 3.0.5 com.github.TommyLemon unitauto-jar - 2.9.0 + 3.0.5 From bda7c76d9e8db47389599423620b8df95a8c0209 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Tue, 12 Dec 2023 23:24:07 +0800 Subject: [PATCH 17/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=20=E5=8F=8A?= =?UTF-8?q?=E8=87=AA=E8=BA=AB=206.3.0=EF=BC=8Capijson-column=201.8.0?= =?UTF-8?q?=EF=BC=8Cunitauto-java=20=E5=8F=8A=20unitauto-jar=203.0.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 6e2619f510329b0632c48c0f3621bf6efee840e4) --- .gitignore | 48 +++++++++++++------ pom.xml | 12 ++--- .../apijson/framework/APIJSONController.java | 3 -- 3 files changed, 39 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 7e1cc57..c2065bc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,37 @@ -# Compiled class file -*.class +HELP.md +.gradle +build/ +!gradle/wrapper/gradle-wrapper.jar +!**/src/main/**/build/ +!**/src/test/**/build/ -# Log file -*.log - -# BlueJ files -*.ctxt - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* -/target/ -bin +### STS ### +.apt_generated .classpath +.factorypath .project .settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ diff --git a/pom.xml b/pom.xml index 45130ef..737631b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ 4.0.0 apijson.framework - apijson-framework-spring-boot3 - 6.2.0 + apijson-framework + 6.3.0 jar APIJSONFramework @@ -38,12 +38,12 @@ com.github.Tencent APIJSON - 6.2.0 + 6.3.0 com.github.APIJSON apijson-column - 1.7.0 + 1.8.0 @@ -64,12 +64,12 @@ com.github.TommyLemon unitauto-java - 2.9.0 + 3.0.5 com.github.TommyLemon unitauto-jar - 2.9.0 + 3.0.5 diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index 6c5506f..567ffd5 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -110,8 +110,6 @@ public String parseByTag(RequestMethod method, String tag, Map p /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一点路由解析性能来提升一些开发效率 * @param method - * @param tag - * @param params * @param request * @param session * @return @@ -316,7 +314,6 @@ public String deleteByTag(String tag, Map params, String request /**重新加载配置 - * @param request * @return * @see *

From 6815798519d0ee35d4bcd31d1d5c0f01131ac13b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 21 Feb 2024 00:23:18 +0000
Subject: [PATCH 18/59] Bump org.postgresql:postgresql from 42.3.8 to 42.7.2

Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.3.8 to 42.7.2.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/commits)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] 
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 737631b..8b4a101 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,7 +55,7 @@
 		
 			org.postgresql
 			postgresql
-			42.3.8
+			42.7.2
 		
 		
 

From fd3092dd58f713dfd683c9dd496a0649ee0135f1 Mon Sep 17 00:00:00 2001
From: calmcc 
Date: Wed, 6 Mar 2024 15:12:15 +0800
Subject: [PATCH 19/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7apijson=E4=BE=9D?=
 =?UTF-8?q?=E8=B5=96=E5=88=B06.4.3-springboot3=20=E5=8D=87=E7=BA=A7maven-c?=
 =?UTF-8?q?ompiler-plugin=E7=89=88=E6=9C=AC=E5=88=B03.12.1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pom.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/pom.xml b/pom.xml
index 8b4a101..e80b429 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 
 	apijson.framework
 	apijson-framework
-	6.3.0
+	6.3.0-springboot3
 	jar
 
 	APIJSONFramework
@@ -38,7 +38,7 @@
 		
 			com.github.Tencent
 			APIJSON
-			6.3.0
+			6.4.3-springboot3
 		
 		
 			com.github.APIJSON
@@ -80,7 +80,7 @@
 			
 				org.apache.maven.plugins
 				maven-compiler-plugin
-				3.8.1
+				3.12.1
 				
 					17
 					17

From 1ca515b17bf4d30af767a912ced0298a28f8f7dd Mon Sep 17 00:00:00 2001
From: aozeyu <3484766443@qq.com>
Date: Mon, 11 Mar 2024 11:44:31 +0800
Subject: [PATCH 20/59] Simplify the code

---
 src/main/java/apijson/framework/AssertUtil.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/main/java/apijson/framework/AssertUtil.java b/src/main/java/apijson/framework/AssertUtil.java
index fd0c1c1..130c5d1 100644
--- a/src/main/java/apijson/framework/AssertUtil.java
+++ b/src/main/java/apijson/framework/AssertUtil.java
@@ -29,7 +29,7 @@ public static void assertEqual(Object a, Object b, String errorMessage) {
 			return;
 		}
 
-		if (a == null || b == null || a.equals(b) == false) {
+		if (a == null || !a.equals(b)) {
 			throw new AssertionError(errorMessage == null ? "assert fail: a != b" : errorMessage);
 		}
 	}

From f95ab9280f3ab862cbf2bca46f694697fc5e1884 Mon Sep 17 00:00:00 2001
From: aozeyu <3484766443@qq.com>
Date: Mon, 11 Mar 2024 11:45:51 +0800
Subject: [PATCH 21/59] misspelled word

---
 src/main/java/apijson/framework/APIJSONObjectParser.java | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/main/java/apijson/framework/APIJSONObjectParser.java b/src/main/java/apijson/framework/APIJSONObjectParser.java
index 26c898e..c4bd3d9 100755
--- a/src/main/java/apijson/framework/APIJSONObjectParser.java
+++ b/src/main/java/apijson/framework/APIJSONObjectParser.java
@@ -42,8 +42,8 @@ public class APIJSONObjectParser extends AbstractObjectParser<
 	 * @throws Exception
 	 */
 	public APIJSONObjectParser(HttpSession session, @NotNull JSONObject request, String parentPath, SQLConfig arrayConfig
-			, boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception {
-		super(request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable);
+			, boolean isSubQuery, boolean isTable, boolean isArrayMainTable) throws Exception {
+		super(request, parentPath, arrayConfig, isSubQuery, isTable, isArrayMainTable);
 	}
 
 	@Override

From e4a2e8d687665485754655496896237521f94a16 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Tue, 12 Mar 2024 20:07:21 +0800
Subject: [PATCH 22/59] Create jitpack.yml

---
 jitpack.yml | 6 ++++++
 1 file changed, 6 insertions(+)
 create mode 100644 jitpack.yml

diff --git a/jitpack.yml b/jitpack.yml
new file mode 100644
index 0000000..9e42c42
--- /dev/null
+++ b/jitpack.yml
@@ -0,0 +1,6 @@
+jdk:
+  - openjdk17
+  
+before_install:
+   - sdk install java 17.0.6-open
+   - sdk use java 17.0.6-open

From aecf3ce64cb45b439a501dcd59e7991636ebe426 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Tue, 12 Mar 2024 20:09:23 +0800
Subject: [PATCH 23/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E8=87=AA=E8=BA=AB?=
 =?UTF-8?q?=E7=89=88=E6=9C=AC=E4=B8=BA=206.4.3-springboot3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index e80b429..ed47858 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 
 	apijson.framework
 	apijson-framework
-	6.3.0-springboot3
+	6.4.3-springboot3
 	jar
 
 	APIJSONFramework

From 4c17ace28776db0b04bb9af93c485bbab5d64e65 Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Tue, 12 Mar 2024 21:03:34 +0800
Subject: [PATCH 24/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20apijson-column=201.9?=
 =?UTF-8?q?.3-springboot3=EF=BC=8C=E8=87=AA=E8=BA=AB=206.4.4-springboot3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index ed47858..2590fe1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 
 	apijson.framework
 	apijson-framework
-	6.4.3-springboot3
+	6.4.4-springboot3
 	jar
 
 	APIJSONFramework
@@ -43,7 +43,7 @@
 		
 			com.github.APIJSON
 			apijson-column
-			1.8.0
+			1.9.3-springboot3
 		
 
 		

From 6f3efbb6f195f85a7e82aa6d077f6e122fd6551e Mon Sep 17 00:00:00 2001
From: TommyLemon <1184482681@qq.com>
Date: Tue, 12 Mar 2024 21:08:43 +0800
Subject: [PATCH 25/59] Update pom.xml

---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 2590fe1..b8bebde 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
 
 	apijson.framework
 	apijson-framework
-	6.4.4-springboot3
+	6.4.3-springboot-3
 	jar
 
 	APIJSONFramework

From 99cb455a255acc4e356a867dfd235617521c154f Mon Sep 17 00:00:00 2001
From: TommyLemon 
Date: Sun, 19 May 2024 18:17:52 +0800
Subject: [PATCH 26/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=20=E5=92=8C?=
 =?UTF-8?q?=E8=87=AA=E8=BA=AB=207.0.0=EF=BC=8Capijson-column=202.0.0?=
 =?UTF-8?q?=EF=BC=8Cunitauto=203.0.5=EF=BC=8Cmysql=208.4.0=EF=BC=8Cpostgre?=
 =?UTF-8?q?sql=2042.6.0=EF=BC=9Bjavax.servlet-api=20=E6=94=B9=E4=B8=BA=20j?=
 =?UTF-8?q?akarta.servlet-api?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 libs/APIJSON-6.1.0.jar                        | Bin 224932 -> 0 bytes
 libs/APIJSON-7.0.0.jar                        | Bin 0 -> 247152 bytes
 libs/apijson-column-2.0.0.jar                 | Bin 0 -> 8212 bytes
 ...o-jar-2.9.0.jar => unitauto-jar-3.0.5.jar} | Bin 4902 -> 4905 bytes
 libs/unitauto-java-2.9.0.jar                  | Bin 63125 -> 0 bytes
 libs/unitauto-java-3.0.5.jar                  | Bin 0 -> 66868 bytes
 pom.xml                                       |  14 +++++++-------
 7 files changed, 7 insertions(+), 7 deletions(-)
 delete mode 100644 libs/APIJSON-6.1.0.jar
 create mode 100644 libs/APIJSON-7.0.0.jar
 create mode 100644 libs/apijson-column-2.0.0.jar
 rename libs/{unitauto-jar-2.9.0.jar => unitauto-jar-3.0.5.jar} (58%)
 delete mode 100644 libs/unitauto-java-2.9.0.jar
 create mode 100644 libs/unitauto-java-3.0.5.jar

diff --git a/libs/APIJSON-6.1.0.jar b/libs/APIJSON-6.1.0.jar
deleted file mode 100644
index d0d51de7b4a460978c80a148d40bbdb1878e0c0a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 224932
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%0DqhLi}rx>Sjpl3R3
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

?B2e(gOZ$KQCo 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 IA;7@?A1!2VU;qFB literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index b8bebde..a978ac7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 6.4.3-springboot-3 + 7.0.0 jar APIJSONFramework @@ -38,24 +38,24 @@ com.github.Tencent APIJSON - 6.4.3-springboot3 + 7.0.0 com.github.APIJSON apijson-column - 1.9.3-springboot3 + 2.0.0 - mysql - mysql-connector-java - 8.0.33 + com.mysql + mysql-connector-j + 8.4.0 org.postgresql postgresql - 42.7.2 + 42.7.3 From 3e5e6512c6d35827e61b3500323c6db57b9b4cad Mon Sep 17 00:00:00 2001 From: Bill <1594805355@qq.com> Date: Sun, 2 Jun 2024 17:03:06 +0800 Subject: [PATCH 27/59] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0=E5=92=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=20TABLE=5FSCHEMA=5FMAP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/apijson/framework/APIJSONVerifier.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 02d1ee0..54f7191 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -188,6 +188,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON Map> newMap = new LinkedHashMap<>(); Map> fakeDeleteMap = new LinkedHashMap<>(); Map newTKMap = new LinkedHashMap<>(); + Map tableSchemaMap = new LinkedHashMap<>(); SortedMap>> versionedTableColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); SortedMap>> versionedKeyColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); @@ -208,6 +209,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON String name = item.getString("name"); String alias = item.getString("alias"); + String schema = item.getString("schema"); Map fakemap = new HashMap<>(); String deletedKey = item.getString(AbstractSQLConfig.KEY_DELETED_KEY); @@ -251,6 +253,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON newMap.put(alias, map); fakeDeleteMap.put(alias, fakemap); newTKMap.put(alias, name); + tableSchemaMap.put(alias,schema); if (ENABLE_VERIFY_COLUMN) { JSONObject columns = item.getJSONObject("columns"); @@ -313,10 +316,12 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON ACCESS_MAP = newMap; ACCESS_FAKE_DELETE_MAP = fakeDeleteMap; APIJSONSQLConfig.TABLE_KEY_MAP = newTKMap; + APIJSONSQLConfig.TABLE_SCHEMA_MAP = tableSchemaMap; } else { ACCESS_MAP.putAll(newMap); ACCESS_FAKE_DELETE_MAP.putAll(fakeDeleteMap); APIJSONSQLConfig.TABLE_KEY_MAP.putAll(newTKMap); + APIJSONSQLConfig.TABLE_SCHEMA_MAP = tableSchemaMap; } if (ENABLE_VERIFY_COLUMN) { From 9b9cf814553eccb6c90563f22967f604d6f46061 Mon Sep 17 00:00:00 2001 From: TommyLemon <1184482681@qq.com> Date: Sun, 2 Jun 2024 17:17:30 +0800 Subject: [PATCH 28/59] Update APIJSONVerifier.java --- src/main/java/apijson/framework/APIJSONVerifier.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 54f7191..1a7643f 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -253,7 +253,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON newMap.put(alias, map); fakeDeleteMap.put(alias, fakemap); newTKMap.put(alias, name); - tableSchemaMap.put(alias,schema); + tableSchemaMap.put(alias, schema); if (ENABLE_VERIFY_COLUMN) { JSONObject columns = item.getJSONObject("columns"); From e5607d111ecbe6db0a4ba0bb41d6be3c981037ae Mon Sep 17 00:00:00 2001 From: TommyLemon <1184482681@qq.com> Date: Sun, 30 Jun 2024 23:48:06 +0800 Subject: [PATCH 29/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=20=E5=92=8C?= =?UTF-8?q?=E8=87=AA=E8=BA=AB=207.0.3=EF=BC=8Capijson-column=202.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index a978ac7..112b8f2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 7.0.0 + 7.0.3 jar APIJSONFramework @@ -38,12 +38,12 @@ com.github.Tencent APIJSON - 7.0.0 + 7.0.3 com.github.APIJSON apijson-column - 2.0.0 + 2.0.3 From 9457f9cfb1996264445ec1daacea5c68213e117d Mon Sep 17 00:00:00 2001 From: TommyLemon <1184482681@qq.com> Date: Thu, 4 Jul 2024 23:17:41 +0800 Subject: [PATCH 30/59] =?UTF-8?q?=E8=B4=A1=E7=8C=AE=E8=80=85=E5=8C=85?= =?UTF-8?q?=E6=8B=AC=201=20=E4=B8=AA=E8=85=BE=E8=AE=AF=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=B8=88=E3=80=811=20=E4=BA=AC=E4=B8=9C=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=B8=88=20=E7=AD=89=EF=BC=8C=E6=84=9F=E8=B0=A2=E5=A4=A7?= =?UTF-8?q?=E5=AE=B6=E7=9A=84=E8=B4=A1=E7=8C=AE~?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/APIJSON/apijson-framework/graphs/contributors --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 612ff2f..4e538ba 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,14 @@ https://github.com/Tencent/APIJSON/issues/36

-#### 点右上角 ⭐Star 支持一下,谢谢 ^_^ +### 贡献者 +### Contributors +1 个腾讯工程师、1 京东工程师 等,感谢大家的贡献~
+1 Tencent engineers, 1 JD engineer, etc. Thank you all~
+https://github.com/APIJSON/apijson-framework/graphs/contributors + +
+ +#### 创作不易、坚持更难,点右上角 ⭐Star 支持一下,谢谢 ^_^ #### Please ⭐Star this project ^_^ https://github.com/APIJSON/apijson-framework From bd78636c452b1255ba2e89d28fab2b9869ac6a4c Mon Sep 17 00:00:00 2001 From: TommyLemon <1184482681@qq.com> Date: Thu, 4 Jul 2024 23:18:28 +0800 Subject: [PATCH 31/59] =?UTF-8?q?=E8=B4=A1=E7=8C=AE=E8=80=85=E5=8C=85?= =?UTF-8?q?=E6=8B=AC=201=20=E4=B8=AA=E8=85=BE=E8=AE=AF=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=B8=88=E3=80=811=20=E4=BA=AC=E4=B8=9C=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E5=B8=88=20=E7=AD=89=EF=BC=8C=E6=84=9F=E8=B0=A2=E5=A4=A7?= =?UTF-8?q?=E5=AE=B6=E7=9A=84=E8=B4=A1=E7=8C=AE~?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/APIJSON/apijson-framework/graphs/contributors --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4e538ba..42144e6 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ https://github.com/Tencent/APIJSON/issues/36 ### 贡献者 ### Contributors 1 个腾讯工程师、1 京东工程师 等,感谢大家的贡献~
-1 Tencent engineers, 1 JD engineer, etc. Thank you all~
+1 Tencent engineer, 1 JD engineer, etc. Thank you all~
https://github.com/APIJSON/apijson-framework/graphs/contributors
From ec87dffe1c46cf6d3856bd86c1bbf89c53b58124 Mon Sep 17 00:00:00 2001 From: calmcc Date: Thu, 17 Oct 2024 10:29:14 +0800 Subject: [PATCH 32/59] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=202.=E5=A4=84=E7=90=86=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E5=87=BD=E6=95=B0language=E5=88=97=E5=86=85=E5=AE=B9=E4=B8=8D?= =?UTF-8?q?=E6=98=AFSCRIPT=5FEXECUTOR=5FMAP=E4=B8=AD=E7=9A=84=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E6=97=B6=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=203.=E5=A4=84=E7=90=86=E8=BF=9C=E7=A8=8B=E5=87=BD=E6=95=B0?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E4=B8=ADdemo=E5=92=8Ctest=E4=B8=8D=E9=80=9A?= =?UTF-8?q?=E8=BF=87=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E4=B9=8B=E5=90=8E=E7=9A=84=E8=BF=9C=E7=A8=8B=E5=87=BD?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E4=BB=8E=E8=80=8C=E5=BC=95=E8=B5=B7=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E8=B0=83=E7=94=A8=E7=9B=B8=E5=BA=94=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/APIJSONFunctionParser.java | 96 +++++++++---------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index 3af0e1d..db54c5e 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -14,15 +14,16 @@ package apijson.framework; -import static apijson.RequestMethod.DELETE; -import static apijson.RequestMethod.GET; -import static apijson.RequestMethod.GETS; -import static apijson.RequestMethod.HEAD; -import static apijson.RequestMethod.HEADS; -import static apijson.RequestMethod.POST; -import static apijson.RequestMethod.PUT; -import static apijson.framework.APIJSONConstant.FUNCTION_; -import static apijson.framework.APIJSONConstant.SCRIPT_; +import apijson.*; +import apijson.orm.AbstractFunctionParser; +import apijson.orm.JSONRequest; +import apijson.orm.script.JavaScriptExecutor; +import apijson.orm.script.ScriptExecutor; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import jakarta.servlet.http.HttpSession; +import unitauto.MethodUtil; +import unitauto.MethodUtil.Argument; import java.io.IOException; import java.rmi.ServerException; @@ -31,23 +32,9 @@ import java.util.List; import java.util.Map; -import jakarta.servlet.http.HttpSession; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; - -import apijson.JSON; -import apijson.JSONResponse; -import apijson.Log; -import apijson.NotNull; -import apijson.RequestMethod; -import apijson.StringUtil; -import apijson.orm.AbstractFunctionParser; -import apijson.orm.JSONRequest; -import apijson.orm.script.JavaScriptExecutor; -import apijson.orm.script.ScriptExecutor; -import unitauto.MethodUtil; -import unitauto.MethodUtil.Argument; +import static apijson.RequestMethod.*; +import static apijson.framework.APIJSONConstant.FUNCTION_; +import static apijson.framework.APIJSONConstant.SCRIPT_; /**可远程调用的函数类 @@ -188,7 +175,7 @@ public static JSONObject init(boolean shutdownWhenServerError { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< JSONObject function = isAll ? new JSONRequest() : table; - if (Log.DEBUG == false) { + if (!Log.DEBUG) { function.put(APIJSONConstant.KEY_DEBUG, 0); } item.put(FUNCTION_, function); @@ -206,7 +193,7 @@ public static JSONObject init(boolean shutdownWhenServerError JSONObject response = creator.createParser().setMethod(GET).setNeedVerify(true).parseResponse(request); - if (JSONResponse.isSuccess(response) == false) { + if (!JSONResponse.isSuccess(response)) { onServerError("\n\n\n\n\n !!!! 查询远程函数异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n", shutdownWhenServerError); } @@ -221,7 +208,7 @@ public static JSONObject init(boolean shutdownWhenServerError Map scriptMap = new HashMap<>(); JSONArray scriptList = response.getJSONArray("[]"); // response.getJSONArray(SCRIPT_ + "[]"); - if (scriptList != null && scriptList.isEmpty() == false) { + if (scriptList != null && !scriptList.isEmpty()) { //if (isAll) { // SCRIPT_MAP = new LinkedHashMap<>(); //} @@ -235,7 +222,7 @@ public static JSONObject init(boolean shutdownWhenServerError } String n = item.getString("name"); - if (StringUtil.isName(n) == false) { + if (!StringUtil.isName(n)) { onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); } @@ -251,7 +238,7 @@ public static JSONObject init(boolean shutdownWhenServerError JSONArray list = scriptList; // response.getJSONArray(FUNCTION_ + "[]"); int size = list == null ? 0 : list.size(); - if (isAll && size <= 0) { + if (isAll && size == 0) { Log.w(TAG, "init isAll && size <= 0,,没有可用的远程函数"); return response; } @@ -271,33 +258,42 @@ public static JSONObject init(boolean shutdownWhenServerError JSONObject demo = JSON.parseObject(item.getString("demo")); if (demo == null) { - onServerError("字段 demo 的值必须为合法且非 null 的 JSONObejct 字符串!", shutdownWhenServerError); + try { + onServerError("字段 demo 的值必须为合法且非 null 的 JSONObejct 字符串!", shutdownWhenServerError); + } catch (Exception e) { + throw new RuntimeException(e); + } } String name = item.getString("name"); - if (demo.containsKey("result()") == false) { - demo.put("result()", getFunctionCall(name, item.getString("arguments"))); - } - // demo.put(JSONRequest.KEY_TAG, item.getString(JSONRequest.KEY_TAG)); + // demo.put(JSONRequest.KEY_TAG, item.getString(JSONRequest.KEY_TAG)); // demo.put(JSONRequest.KEY_VERSION, item.getInteger(JSONRequest.KEY_VERSION)); //加载脚本 if (item.get("language") != null) { String language = item.getString("language"); - if (SCRIPT_EXECUTOR_MAP.get(language) == null) { - onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); + // if (SCRIPT_EXECUTOR_MAP.get(language) == null) { + // onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); + // } + //脚本语言执行 + if (SCRIPT_EXECUTOR_MAP.containsKey(language)){ + ScriptExecutor scriptExecutor = SCRIPT_EXECUTOR_MAP.get(language); + scriptExecutor.load(name, scriptMap.get(name).getString("script")); } - ScriptExecutor scriptExecutor = SCRIPT_EXECUTOR_MAP.get(language); - scriptExecutor.load(name, scriptMap.get(name).getString("script")); } newMap.put(name, item); // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! String[] methods = StringUtil.split(item.getString("methods")); - if (methods == null || methods.length <= 0) { + if (methods == null || methods.length == 0) { methods = ALL_METHODS; } - demo.put(JSONRequest.KEY_TAG, item.get(JSONRequest.KEY_TAG)); - demo.put(JSONRequest.KEY_VERSION, item.get(JSONRequest.KEY_VERSION)); + if (demo != null){ + if (!demo.containsKey("result()")) { + demo.put("result()", getFunctionCall(name, item.getString("arguments"))); + } + demo.put(JSONRequest.KEY_TAG, item.get(JSONRequest.KEY_TAG)); + demo.put(JSONRequest.KEY_VERSION, item.get(JSONRequest.KEY_VERSION)); + } for (String method : methods) { JSONObject r = APIJSON_CREATOR.createParser() @@ -305,8 +301,12 @@ public static JSONObject init(boolean shutdownWhenServerError .setNeedVerify(false) .parseResponse(demo); - if (JSONResponse.isSuccess(r) == false) { - onServerError(JSONResponse.getMsg(r), shutdownWhenServerError); + if (!JSONResponse.isSuccess(r)) { + try { + onServerError(JSONResponse.getMsg(r), shutdownWhenServerError); + } catch (Exception e) { + throw new RuntimeException(e); + } } } } @@ -400,7 +400,7 @@ public JSONObject getFunctionDemo(@NotNull JSONObject curObj) { if (demo == null) { demo = new JSONObject(); } - if (demo.containsKey("result()") == false) { + if (!demo.containsKey("result()")) { demo.put("result()", getFunctionCall(curObj.getString("name"), curObj.getString("arguments"))); } return demo; @@ -774,11 +774,11 @@ public String getMethodRequest(@NotNull JSONObject curObj) { req += "\n \"static\": " + true; comma = true; } - if (StringUtil.isEmpty(methodArgs, true) == false) { + if (!StringUtil.isEmpty(methodArgs, true)) { req += (comma ? "," : "") + "\n \"methodArgs\": " + methodArgs; comma = true; } - if (StringUtil.isEmpty(classArgs, true) == false) { + if (!StringUtil.isEmpty(classArgs, true)) { req += (comma ? "," : "") + "\n \"classArgs\": " + classArgs; } req += "\n}"; From 14f368945d1944c90f769b80cc61845374688467 Mon Sep 17 00:00:00 2001 From: TommyLemon <1184482681@qq.com> Date: Sat, 26 Oct 2024 23:54:29 +0800 Subject: [PATCH 33/59] =?UTF-8?q?=E5=A4=84=E7=90=86=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E8=BF=9C=E7=A8=8B=E5=87=BD=E6=95=B0=E4=B8=8D=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E5=BC=95=E8=B5=B7=E7=9A=84=E8=BF=9C=E7=A8=8B=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=8A=A0=E8=BD=BD=E4=B8=8D=E5=85=A8=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E6=84=9F=E8=B0=A2=20calmcc=20=E7=9A=84?= =?UTF-8?q?=E8=B4=A1=E7=8C=AE=20#28?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/APIJSON/apijson-framework/pull/28 --- .../framework/APIJSONFunctionParser.java | 165 +++++++++--------- 1 file changed, 80 insertions(+), 85 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index db54c5e..24a03e4 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -140,60 +140,60 @@ public static JSONObject init(boolean shutdownWhenServerError //if (Log.DEBUG == false) { // function.put(APIJSONConstant.KEY_DEBUG, 0); //} - // + // //JSONRequest functionItem = new JSONRequest(); //functionItem.put(FUNCTION_, function); - // - //JSONObject script = new JSONRequest(); // isAll ? new JSONRequest() : table; - //script.put("simple", 0); - //if (Log.DEBUG == false) { - // script.put(APIJSONConstant.KEY_DEBUG, 0); - //} - // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 - //{ // name{}@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - //JSONRequest nameInAt = new JSONRequest(); - //nameInAt.put("from", "Function"); - //{ // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // JSONRequest fun = new JSONRequest(); - // fun.setColumn("name"); - // nameInAt.put("Function", fun); - //} // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - //script.put("name{}@", nameInAt); - //} // name{}@ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + // + //JSONObject script = new JSONRequest(); // isAll ? new JSONRequest() : table; + //script.put("simple", 0); + //if (Log.DEBUG == false) { + // script.put(APIJSONConstant.KEY_DEBUG, 0); + //} + // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 + //{ // name{}@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + //JSONRequest nameInAt = new JSONRequest(); + //nameInAt.put("from", "Function"); + //{ // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // JSONRequest fun = new JSONRequest(); + // fun.setColumn("name"); + // nameInAt.put("Function", fun); + //} // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + //script.put("name{}@", nameInAt); + //} // name{}@ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> //JSONRequest scriptItem = new JSONRequest(); - //scriptItem.put(SCRIPT_, script); + //scriptItem.put(SCRIPT_, script); JSONObject request = new JSONObject(); //request.putAll(functionItem.toArray(0, 0, FUNCTION_)); //request.putAll(scriptItem.toArray(0, 0, SCRIPT_)); - // 可以用它,因为 Function 表必须存在,没有绕过校验的配置 // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 - { // [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONRequest item = new JSONRequest(); - - { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONObject function = isAll ? new JSONRequest() : table; - if (!Log.DEBUG) { - function.put(APIJSONConstant.KEY_DEBUG, 0); - } - item.put(FUNCTION_, function); - } // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - if (ENABLE_SCRIPT_FUNCTION) { // Script <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONRequest script = new JSONRequest(); - script.put("name@", "/Function/name"); - script.put("simple", 0); - item.put(SCRIPT_, script); - } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - request.putAll(item.toArray(0, 0)); - } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + // 可以用它,因为 Function 表必须存在,没有绕过校验的配置 // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 + { // [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + JSONRequest item = new JSONRequest(); + + { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + JSONObject function = isAll ? new JSONRequest() : table; + if (! Log.DEBUG) { + function.put(APIJSONConstant.KEY_DEBUG, 0); + } + item.put(FUNCTION_, function); + } // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + if (ENABLE_SCRIPT_FUNCTION) { // Script <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + JSONRequest script = new JSONRequest(); + script.put("name@", "/Function/name"); + script.put("simple", 0); + item.put(SCRIPT_, script); + } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + request.putAll(item.toArray(0, 0)); + } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> JSONObject response = creator.createParser().setMethod(GET).setNeedVerify(true).parseResponse(request); - if (!JSONResponse.isSuccess(response)) { + if (! JSONResponse.isSuccess(response)) { onServerError("\n\n\n\n\n !!!! 查询远程函数异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n", shutdownWhenServerError); } @@ -207,38 +207,38 @@ public static JSONObject init(boolean shutdownWhenServerError } Map scriptMap = new HashMap<>(); - JSONArray scriptList = response.getJSONArray("[]"); // response.getJSONArray(SCRIPT_ + "[]"); - if (scriptList != null && !scriptList.isEmpty()) { - //if (isAll) { - // SCRIPT_MAP = new LinkedHashMap<>(); - //} - Map newMap = new LinkedHashMap<>(); - - for (int i = 0; i < scriptList.size(); i++) { - JSONObject item = scriptList.getJSONObject(i); - item = item == null ? null : item.getJSONObject(SCRIPT_); - if (item == null) { // 关联查不到很正常 - continue; - } - - String n = item.getString("name"); - if (!StringUtil.isName(n)) { - onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); - } - - String s = item.getString("script"); - if (StringUtil.isEmpty(s, true)) { - onServerError("Script 表字段 script 的值 " + s + " 不合法!不能为空!", shutdownWhenServerError); - } - newMap.put(n, item); - } - - scriptMap = newMap; - } + JSONArray scriptList = response.getJSONArray("[]"); // response.getJSONArray(SCRIPT_ + "[]"); + if (scriptList != null && ! scriptList.isEmpty()) { + //if (isAll) { + // SCRIPT_MAP = new LinkedHashMap<>(); + //} + Map newMap = new LinkedHashMap<>(); + + for (int i = 0; i < scriptList.size(); i++) { + JSONObject item = scriptList.getJSONObject(i); + item = item == null ? null : item.getJSONObject(SCRIPT_); + if (item == null) { // 关联查不到很正常 + continue; + } + + String n = item.getString("name"); + if (! StringUtil.isName(n)) { + onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); + } + + String s = item.getString("script"); + if (StringUtil.isEmpty(s, true)) { + onServerError("Script 表字段 script 的值 " + s + " 不合法!不能为空!", shutdownWhenServerError); + } + newMap.put(n, item); + } + + scriptMap = newMap; + } JSONArray list = scriptList; // response.getJSONArray(FUNCTION_ + "[]"); int size = list == null ? 0 : list.size(); - if (isAll && size == 0) { + if (isAll && size <= 0) { Log.w(TAG, "init isAll && size <= 0,,没有可用的远程函数"); return response; } @@ -251,7 +251,7 @@ public static JSONObject init(boolean shutdownWhenServerError for (int i = 0; i < size; i++) { JSONObject item = list.getJSONObject(i); - item = item == null ? null : item.getJSONObject(FUNCTION_); + item = item == null ? null : item.getJSONObject(FUNCTION_); if (item == null) { continue; } @@ -265,7 +265,7 @@ public static JSONObject init(boolean shutdownWhenServerError } } String name = item.getString("name"); - // demo.put(JSONRequest.KEY_TAG, item.getString(JSONRequest.KEY_TAG)); + // demo.put(JSONRequest.KEY_TAG, item.getString(JSONRequest.KEY_TAG)); // demo.put(JSONRequest.KEY_VERSION, item.getInteger(JSONRequest.KEY_VERSION)); //加载脚本 if (item.get("language") != null) { @@ -283,12 +283,12 @@ public static JSONObject init(boolean shutdownWhenServerError String[] methods = StringUtil.split(item.getString("methods")); - if (methods == null || methods.length == 0) { + if (methods == null || methods.length <= 0) { methods = ALL_METHODS; } if (demo != null){ - if (!demo.containsKey("result()")) { + if (! demo.containsKey("result()")) { demo.put("result()", getFunctionCall(name, item.getString("arguments"))); } demo.put(JSONRequest.KEY_TAG, item.get(JSONRequest.KEY_TAG)); @@ -301,7 +301,7 @@ public static JSONObject init(boolean shutdownWhenServerError .setNeedVerify(false) .parseResponse(demo); - if (!JSONResponse.isSuccess(r)) { + if (! JSONResponse.isSuccess(r)) { try { onServerError(JSONResponse.getMsg(r), shutdownWhenServerError); } catch (Exception e) { @@ -385,11 +385,6 @@ public static void test(APIJSONFunctionParser function) th } - - - - - /**获取远程函数的demo,如果没有就自动补全 * @param curObj * @return @@ -400,7 +395,7 @@ public JSONObject getFunctionDemo(@NotNull JSONObject curObj) { if (demo == null) { demo = new JSONObject(); } - if (!demo.containsKey("result()")) { + if (! demo.containsKey("result()")) { demo.put("result()", getFunctionCall(curObj.getString("name"), curObj.getString("arguments"))); } return demo; @@ -774,11 +769,11 @@ public String getMethodRequest(@NotNull JSONObject curObj) { req += "\n \"static\": " + true; comma = true; } - if (!StringUtil.isEmpty(methodArgs, true)) { + if (! StringUtil.isEmpty(methodArgs, true)) { req += (comma ? "," : "") + "\n \"methodArgs\": " + methodArgs; comma = true; } - if (!StringUtil.isEmpty(classArgs, true)) { + if (! StringUtil.isEmpty(classArgs, true)) { req += (comma ? "," : "") + "\n \"classArgs\": " + classArgs; } req += "\n}"; @@ -792,4 +787,4 @@ public static String removeComment(String json) { return json == null ? null: json.replaceAll("(//.*)|(/\\*[\\s\\S]*?\\*/)", ""); } -} \ No newline at end of file +} From 432f1629d07700e4ee54588453607015a23a8609 Mon Sep 17 00:00:00 2001 From: TommyLemon <1184482681@qq.com> Date: Fri, 31 Jan 2025 17:43:05 +0800 Subject: [PATCH 34/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=207.1.0?= =?UTF-8?q?=EF=BC=8Capijson-column=202.1.0=EF=BC=8C=E8=87=AA=E8=BA=AB=207.?= =?UTF-8?q?1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 112b8f2..9de25d9 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 7.0.3 + 7.1.0 jar APIJSONFramework @@ -38,12 +38,12 @@ com.github.Tencent APIJSON - 7.0.3 + 7.1.0 com.github.APIJSON apijson-column - 2.0.3 + 2.1.0 From a890621db1fd614db4f32e5af418e56d73148758 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 2 Feb 2025 22:02:28 +0800 Subject: [PATCH 35/59] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20javax=20=E6=9D=A5?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=20JDK=201.8~16=20=E5=8F=8A=20SpringBoot=201.?= =?UTF-8?q?4~2.7=20=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + pom.xml | 10 +- .../apijson/framework/APIJSONCreator.java | 12 +- .../apijson/framework/APIJSONSQLConfig.java | 4 +- .../framework/javax/APIJSONApplication.java | 163 ++++ .../framework/javax/APIJSONConstant.java | 20 + .../framework/javax/APIJSONController.java | 452 ++++++++++ .../framework/javax/APIJSONCreator.java | 50 ++ .../javax/APIJSONFunctionParser.java | 790 ++++++++++++++++++ .../framework/javax/APIJSONObjectParser.java | 69 ++ .../framework/javax/APIJSONParser.java | 176 ++++ .../framework/javax/APIJSONSQLConfig.java | 248 ++++++ .../framework/javax/APIJSONSQLExecutor.java | 109 +++ .../framework/javax/APIJSONVerifier.java | 651 +++++++++++++++ .../apijson/framework/javax/AssertUtil.java | 21 + .../apijson/framework/javax/BaseModel.java | 21 + .../apijson/framework/javax/package-info.java | 8 + 17 files changed, 2797 insertions(+), 9 deletions(-) create mode 100755 src/main/java/apijson/framework/javax/APIJSONApplication.java create mode 100644 src/main/java/apijson/framework/javax/APIJSONConstant.java create mode 100755 src/main/java/apijson/framework/javax/APIJSONController.java create mode 100644 src/main/java/apijson/framework/javax/APIJSONCreator.java create mode 100755 src/main/java/apijson/framework/javax/APIJSONFunctionParser.java create mode 100755 src/main/java/apijson/framework/javax/APIJSONObjectParser.java create mode 100755 src/main/java/apijson/framework/javax/APIJSONParser.java create mode 100755 src/main/java/apijson/framework/javax/APIJSONSQLConfig.java create mode 100755 src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java create mode 100755 src/main/java/apijson/framework/javax/APIJSONVerifier.java create mode 100644 src/main/java/apijson/framework/javax/AssertUtil.java create mode 100755 src/main/java/apijson/framework/javax/BaseModel.java create mode 100755 src/main/java/apijson/framework/javax/package-info.java diff --git a/.gitignore b/.gitignore index c2065bc..e45ddb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ HELP.md .gradle build/ +target/ + !gradle/wrapper/gradle-wrapper.jar !**/src/main/**/build/ !**/src/test/**/build/ diff --git a/pom.xml b/pom.xml index 9de25d9..7be952b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 7.1.0 + 7.1.5 jar APIJSONFramework @@ -21,6 +21,7 @@ + jakarta.servlet jakarta.servlet-api @@ -28,6 +29,13 @@ provided + + + javax.servlet + javax.servlet-api + 4.0.1 + + com.alibaba fastjson diff --git a/src/main/java/apijson/framework/APIJSONCreator.java b/src/main/java/apijson/framework/APIJSONCreator.java index 355a5ba..9ae86c6 100644 --- a/src/main/java/apijson/framework/APIJSONCreator.java +++ b/src/main/java/apijson/framework/APIJSONCreator.java @@ -35,8 +35,8 @@ public Parser createParser() { } @Override - public FunctionParser createFunctionParser() { - return new APIJSONFunctionParser(); + public FunctionParser createFunctionParser() { + return new APIJSONFunctionParser<>(); } @Override @@ -45,13 +45,13 @@ public Verifier createVerifier() { } @Override - public SQLConfig createSQLConfig() { - return new APIJSONSQLConfig(); + public SQLConfig createSQLConfig() { + return new APIJSONSQLConfig<>(); } @Override - public SQLExecutor createSQLExecutor() { - return new APIJSONSQLExecutor(); + public SQLExecutor createSQLExecutor() { + return new APIJSONSQLExecutor<>(); } } diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index af4eb91..af6e888 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -56,11 +56,11 @@ public class APIJSONSQLConfig extends AbstractSQLConfig { APIJSON_CREATOR = new APIJSONCreator<>(); - SIMPLE_CALLBACK = new SimpleCallback() { + SIMPLE_CALLBACK = new SimpleCallback<>() { @Override public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { - SQLConfig config = APIJSON_CREATOR.createSQLConfig(); + SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); config.setMethod(method); config.setDatabase(database); config.setDatasource(datasource); diff --git a/src/main/java/apijson/framework/javax/APIJSONApplication.java b/src/main/java/apijson/framework/javax/APIJSONApplication.java new file mode 100755 index 0000000..5d9121a --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONApplication.java @@ -0,0 +1,163 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.Log; +import apijson.NotNull; +import apijson.orm.AbstractFunctionParser; +import apijson.orm.script.ScriptExecutor; + +import java.rmi.ServerException; + + +/**启动入口 Application + * 右键这个类 > Run As > Java Application + * @author Lemon + */ +public class APIJSONApplication { + public static final String TAG = "APIJSONApplication"; + + @NotNull + public static APIJSONCreator DEFAULT_APIJSON_CREATOR; + static { + DEFAULT_APIJSON_CREATOR = new APIJSONCreator<>(); + } + + + /**初始化,加载所有配置并校验 + * @return + * @throws Exception + */ + public static void init() throws Exception { + init(true, DEFAULT_APIJSON_CREATOR); + } + /**初始化,加载所有配置并校验 + * @param shutdownWhenServerError + * @return + * @throws Exception + */ + public static void init(boolean shutdownWhenServerError) throws Exception { + init(shutdownWhenServerError, DEFAULT_APIJSON_CREATOR); + } + /**初始化,加载所有配置并校验 + * @param creator + * @return + * @throws Exception + */ + public static void init(@NotNull APIJSONCreator creator) throws Exception { + init(true, creator); + } + /**初始化,加载所有配置并校验 + * @param shutdownWhenServerError + * @param creator + * @return + * @throws Exception + */ + public static void init(boolean shutdownWhenServerError, @NotNull APIJSONCreator creator) throws Exception { + System.out.println("\n\n\n\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON 开始启动 >>>>>>>>>>>>>>>>>>>>>>>>\n"); + DEFAULT_APIJSON_CREATOR = creator; + + // 统一用同一个 creator + APIJSONSQLConfig.APIJSON_CREATOR = creator; + APIJSONParser.APIJSON_CREATOR = creator; + APIJSONController.APIJSON_CREATOR = creator; + + + if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { + System.out.println("\n\n\n开始初始化: Access 权限校验配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); + try { + APIJSONVerifier.initAccess(shutdownWhenServerError, creator); + } catch (Throwable e) { + e.printStackTrace(); + if (shutdownWhenServerError) { + onServerError("Access 权限校验配置 初始化失败!", shutdownWhenServerError); + } + } + System.out.println("\n完成初始化: Access 权限校验配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + } + + + if (APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION) { + System.out.println("\n\n\n开始初始化: Function 远程函数配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); + try { + APIJSONFunctionParser.init(shutdownWhenServerError, creator); + } catch (Throwable e) { + e.printStackTrace(); + if (shutdownWhenServerError) { + onServerError("Function 远程函数配置 初始化失败!", shutdownWhenServerError); + } + } + System.out.println("\n完成初始化: Function 远程函数配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + + System.out.println("开始测试: Function 远程函数 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); + try { + APIJSONFunctionParser.test(); + } catch (Throwable e) { + e.printStackTrace(); + if (shutdownWhenServerError) { + onServerError("Function 远程函数配置 测试失败!", shutdownWhenServerError); + } + } + System.out.println("\n完成测试: Function 远程函数 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + } + + + if (APIJSONVerifier.ENABLE_VERIFY_CONTENT) { + System.out.println("\n\n\n开始初始化: Request 请求参数校验配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); + try { + APIJSONVerifier.initRequest(shutdownWhenServerError, creator); + } catch (Throwable e) { + e.printStackTrace(); + if (shutdownWhenServerError) { + onServerError("Request 请求参数校验配置 初始化失败!", shutdownWhenServerError); + } + } + System.out.println("\n完成初始化: Request 请求参数校验校验配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + + System.out.println("\n\n\n开始测试: Request 请求参数校验 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); + try { + APIJSONVerifier.testStructure(); + } catch (Throwable e) { + e.printStackTrace(); + if (shutdownWhenServerError) { + onServerError("Request 请求参数校验 测试失败!", shutdownWhenServerError); + } + } + System.out.println("\n完成测试: Request 请求参数校验 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + } + + + + System.out.println("官方网站: http://apijson.cn"); + System.out.println("设计规范: https://github.com/Tencent/APIJSON/blob/master/Document.md#3"); + System.out.println("测试链接: http://apijson.cn/api?type=JSON&url=http://localhost:8080/get"); + System.out.println("\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON 启动完成,试试调用零代码万能通用 API 吧 ^_^ >>>>>>>>>>>>>>>>>>>>>>>>\n"); + } + + protected static void onServerError(String msg, boolean shutdown) throws ServerException { + Log.e(TAG, "\n启动时自检测试未通过!原因:\n" + msg); + + if (shutdown) { + System.exit(1); + } else { + throw new ServerException(msg); + } + } + + public static void addScriptExecutor(String language, ScriptExecutor scriptExecutor) { + scriptExecutor.init(); + AbstractFunctionParser.SCRIPT_EXECUTOR_MAP.put(language, scriptExecutor); + } +} diff --git a/src/main/java/apijson/framework/javax/APIJSONConstant.java b/src/main/java/apijson/framework/javax/APIJSONConstant.java new file mode 100644 index 0000000..036d844 --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONConstant.java @@ -0,0 +1,20 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +/**APIJSON 常量类 + * @author Lemon + */ +public class APIJSONConstant extends apijson.framework.APIJSONConstant {} diff --git a/src/main/java/apijson/framework/javax/APIJSONController.java b/src/main/java/apijson/framework/javax/APIJSONController.java new file mode 100755 index 0000000..d4f0053 --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONController.java @@ -0,0 +1,452 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.*; +import apijson.orm.AbstractParser; +import apijson.orm.Parser; +import apijson.orm.Visitor; +import com.alibaba.fastjson.JSONObject; +import javax.servlet.AsyncContext; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import unitauto.MethodUtil; +import unitauto.MethodUtil.InterfaceProxy; + +import java.lang.reflect.Method; +import java.rmi.ServerException; +import java.util.Map; + +import static apijson.RequestMethod.*; +import static apijson.framework.javax.APIJSONConstant.*; + + +/**APIJSON base controller,建议在子项目被 @RestController 注解的类继承它或通过它的实例调用相关方法 + *
全通过 HTTP POST 来请求: + *
1.减少代码 - 客户端无需写 HTTP GET, HTTP PUT 等各种方式的请求代码 + *
2.提高性能 - 无需 URL encode 和 decode + *
3.调试方便 - 建议使用 APIAuto-机器学习自动化接口管理工具(https://github.com/TommyLemon/APIAuto) + * @author Lemon + */ +public class APIJSONController { + public static final String TAG = "APIJSONController"; + + @NotNull + public static APIJSONCreator APIJSON_CREATOR; + static { + APIJSON_CREATOR = new APIJSONCreator<>(); + } + + public String getRequestURL() { + return null; + } + + public Parser newParser(HttpSession session, RequestMethod method) { + @SuppressWarnings("unchecked") + Parser parser = (Parser) APIJSON_CREATOR.createParser(); + parser.setMethod(method); + if (parser instanceof APIJSONParser) { + ((APIJSONParser) parser).setSession(session); + } + // 可以更方便地通过日志排查错误 + if (parser instanceof AbstractParser) { + ((AbstractParser) parser).setRequestURL(getRequestURL()); + } + return parser; + } + + public String parse(RequestMethod method, String request, HttpSession session) { + return newParser(session, method).parse(request); + } + + public String parseByTag(RequestMethod method, String tag, Map params, String request, HttpSession session) { + + JSONObject req = AbstractParser.wrapRequest(method, tag, JSON.parseObject(request), false); + if (req == null) { + req = new JSONObject(true); + } + if (params != null && params.isEmpty() == false) { + req.putAll(params); + } + + return newParser(session, method).parse(req); + } + + //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一点路由解析性能来提升一些开发效率 + * @param method + * @param request + * @param session + * @return + */ + public String crud(String method, String request, HttpSession session) { + if (METHODS.contains(method)) { + return parse(RequestMethod.valueOf(method.toUpperCase()), request, session); + } + + return APIJSONParser.newErrorResult(new IllegalArgumentException("URL 路径 /{method} 中 method 值 " + method + + " 错误!只允许 " + METHODS + " 中的一个!")).toJSONString(); + } + + /**获取 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#GET} + */ + public String get(String request, HttpSession session) { + return parse(GET, request, session); + } + + /**计数 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#HEAD} + */ + public String head(String request, HttpSession session) { + return parse(HEAD, request, session); + } + + /**限制性GET,request和response都非明文,浏览器看不到,用于对安全性要求高的GET请求 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#GETS} + */ + public String gets(String request, HttpSession session) { + return parse(GETS, request, session); + } + + /**限制性HEAD,request和response都非明文,浏览器看不到,用于对安全性要求高的HEAD请求 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#HEADS} + */ + public String heads(String request, HttpSession session) { + return parse(HEADS, request, session); + } + + /**新增 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#POST} + */ + public String post(String request, HttpSession session) { + return parse(POST, request, session); + } + + /**修改 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#PUT} + */ + public String put(String request, HttpSession session) { + return parse(PUT, request, session); + } + + /**删除 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#DELETE} + */ + public String delete(String request, HttpSession session) { + return parse(DELETE, request, session); + } + + /**支持全局事物、批量执行多条语句 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#GET} + */ + public String crud(String request, HttpSession session) { + return parse(CRUD, request, session); + } + + //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + + //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + + /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一些路由解析性能来提升一点开发效率 + * @param method + * @param tag + * @param params + * @param request + * @param session + * @return + */ + public String crudByTag(String method, String tag, Map params, String request, HttpSession session) { + if (METHODS.contains(method)) { + return parseByTag(RequestMethod.valueOf(method.toUpperCase()), tag, params, request, session); + } + + return APIJSONParser.newErrorResult(new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + method + + " 错误!只允许 " + METHODS + " 中的一个!")).toJSONString(); + } + + +// /**获取列表 +// * @param request 只用String,避免encode后未decode +// * @param session +// * @return +// * @see {@link RequestMethod#GET} +// */ +// public String listByTag(String tag, String request, HttpSession session) { +// return parseByTag(GET, tag + JSONRequest.KEY_ARRAY, request, session); +// } + + /**获取 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#GET} + */ + public String getByTag(String tag, Map params, String request, HttpSession session) { + return parseByTag(GET, tag, params, request, session); + } + + + /**计数 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#HEAD} + */ + public String headByTag(String tag, Map params, String request, HttpSession session) { + return parseByTag(HEAD, tag, params, request, session); + } + + /**限制性GET,request和response都非明文,浏览器看不到,用于对安全性要求高的GET请求 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#GETS} + */ + public String getsByTag(String tag, Map params, String request, HttpSession session) { + return parseByTag(GETS, tag, params, request, session); + } + + /**限制性HEAD,request和response都非明文,浏览器看不到,用于对安全性要求高的HEAD请求 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#HEADS} + */ + public String headsByTag(String tag, Map params, String request, HttpSession session) { + return parseByTag(HEADS, tag, params, request, session); + } + + /**新增 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#POST} + */ + public String postByTag(String tag, Map params, String request, HttpSession session) { + return parseByTag(POST, tag, params, request, session); + } + + /**修改 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#PUT} + */ + public String putByTag(String tag, Map params, String request, HttpSession session) { + return parseByTag(PUT, tag, params, request, session); + } + + /**删除 + * @param request 只用String,避免encode后未decode + * @param session + * @return + * @see {@link RequestMethod#DELETE} + */ + public String deleteByTag(String tag, Map params, String request, HttpSession session) { + return parseByTag(DELETE, tag, params, request, session); + } + + //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + + + + /**重新加载配置 + * @return + * @see + *
+		{
+			"type": "ALL",  //重载对象,ALL, FUNCTION, REQUEST, ACCESS,非必须
+			"phone": "13000082001",
+			"verify": "1234567" //验证码,对应类型为 Verify.TYPE_RELOAD
+		}
+	 * 
+ */ + public JSONObject reload(String type) { + JSONObject result = APIJSONParser.newSuccessResult(); + + boolean reloadAll = StringUtil.isEmpty(type, true) || "ALL".equals(type); + + if (reloadAll || "ACCESS".equals(type)) { + try { + if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_ROLE == false) { + throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_ROLE == false 时不支持校验角色权限!" + + "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_ROLE = true !"); + } + + if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { + result.put(ACCESS_, APIJSONVerifier.initAccess()); + } + } catch (ServerException e) { + e.printStackTrace(); + result.put(ACCESS_, APIJSONParser.newErrorResult(e)); + } + } + + if (reloadAll || "FUNCTION".equals(type)) { + try { + if (reloadAll == false && APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION == false) { + throw new UnsupportedOperationException("AbstractFunctionParser.ENABLE_REMOTE_FUNCTION" + + " == false 时不支持远程函数!如需支持则设置 AbstractFunctionParser.ENABLE_REMOTE_FUNCTION = true !"); + } + + if (APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION) { + result.put(FUNCTION_, APIJSONFunctionParser.init()); + } + } catch (ServerException e) { + e.printStackTrace(); + result.put(FUNCTION_, APIJSONParser.newErrorResult(e)); + } + } + + if (reloadAll || "REQUEST".equals(type)) { + try { + if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_CONTENT == false) { + throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_CONTENT == false 时不支持校验请求传参内容!" + + "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_CONTENT = true !"); + } + + if (APIJSONVerifier.ENABLE_VERIFY_CONTENT) { + result.put(REQUEST_, APIJSONVerifier.initRequest()); + } + } catch (ServerException e) { + e.printStackTrace(); + result.put(REQUEST_, APIJSONParser.newErrorResult(e)); + } + } + + return result; + } + + + /**用户登录 + * @param session + * @param visitor + * @param version + * @param format + * @param defaults + * @return 返回类型设置为 Object 是为了子类重写时可以有返回值,避免因为冲突而另写一个有返回值的登录方法 + */ + public Object login(@NotNull HttpSession session, Visitor visitor, Integer version, Boolean format, JSONObject defaults) { + //登录状态保存至session + session.setAttribute(VISITOR_ID, visitor.getId()); //用户id + session.setAttribute(VISITOR_, visitor); //用户 + session.setAttribute(VERSION, version); //全局默认版本号 + session.setAttribute(FORMAT, format); //全局默认格式化配置 + session.setAttribute(DEFAULTS, defaults); //给每个请求JSON最外层加的字段 + return null; + } + + /**退出登录,清空session + * @param session + * @return 返回类型设置为 Object 是为了子类重写时可以有返回值,避免因为冲突而另写一个有返回值的登录方法 + */ + public Object logout(@NotNull HttpSession session) { + Object userId = APIJSONVerifier.getVisitorId(session);//必须在session.invalidate();前! + Log.d(TAG, "logout userId = " + userId + "; session.getId() = " + (session == null ? null : session.getId())); + session.invalidate(); + return null; + } + + + + public JSONObject listMethod(String request) { + if (Log.DEBUG == false) { + return APIJSONParser.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!")); + } + return MethodUtil.listMethod(request); + } + + public void invokeMethod(String request, HttpServletRequest servletRequest) { + AsyncContext asyncContext = servletRequest.startAsync(); + + final boolean[] called = new boolean[] { false }; + MethodUtil.Listener listener = new MethodUtil.Listener() { + + @Override + public void complete(JSONObject data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { + + ServletResponse servletResponse = called[0] ? null : asyncContext.getResponse(); + if (servletResponse == null) { // || servletResponse.isCommitted()) { // isCommitted 在高并发时可能不准,导致写入多次 + Log.w(TAG, "invokeMethod listener.complete servletResponse == null || servletResponse.isCommitted() >> return;"); + return; + } + called[0] = true; + + servletResponse.setCharacterEncoding(servletRequest.getCharacterEncoding()); + servletResponse.setContentType(servletRequest.getContentType()); + servletResponse.getWriter().println(data); + asyncContext.complete(); + } + }; + + if (Log.DEBUG == false) { + try { + listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!"))); + } + catch (Exception e1) { + e1.printStackTrace(); + asyncContext.complete(); + } + + return; + } + + + try { + MethodUtil.invokeMethod(request, null, listener); + } + catch (Exception e) { + Log.e(TAG, "invokeMethod try { JSONObject req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); + try { + listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(e)); + } + catch (Exception e1) { + e1.printStackTrace(); + asyncContext.complete(); + } + } + } + +} diff --git a/src/main/java/apijson/framework/javax/APIJSONCreator.java b/src/main/java/apijson/framework/javax/APIJSONCreator.java new file mode 100644 index 0000000..6e1c558 --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONCreator.java @@ -0,0 +1,50 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.orm.*; + + +/**APIJSON相关创建器 + * @author Lemon + */ +public class APIJSONCreator implements ParserCreator, VerifierCreator, SQLCreator { + + @Override + public Parser createParser() { + return new APIJSONParser<>(); + } + + @Override + public FunctionParser createFunctionParser() { + return new APIJSONFunctionParser<>(); + } + + @Override + public Verifier createVerifier() { + return new APIJSONVerifier<>(); + } + + @Override + public SQLConfig createSQLConfig() { + return new APIJSONSQLConfig<>(); + } + + @Override + public SQLExecutor createSQLExecutor() { + return new APIJSONSQLExecutor<>(); + } + +} diff --git a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java new file mode 100755 index 0000000..281295c --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java @@ -0,0 +1,790 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.*; +import apijson.orm.AbstractFunctionParser; +import apijson.orm.JSONRequest; +import apijson.orm.script.JavaScriptExecutor; +import apijson.orm.script.ScriptExecutor; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import javax.servlet.http.HttpSession; +import unitauto.MethodUtil; +import unitauto.MethodUtil.Argument; + +import java.io.IOException; +import java.rmi.ServerException; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static apijson.RequestMethod.*; +import static apijson.framework.javax.APIJSONConstant.FUNCTION_; +import static apijson.framework.javax.APIJSONConstant.SCRIPT_; + + +/**可远程调用的函数类 + * @author Lemon + */ +public class APIJSONFunctionParser extends AbstractFunctionParser { + public static final String TAG = "APIJSONFunctionParser"; + + @NotNull + public static APIJSONCreator APIJSON_CREATOR; + @NotNull + public static final String[] ALL_METHODS; + static { + APIJSON_CREATOR = new APIJSONCreator<>(); + ALL_METHODS = new String[]{ GET.name(), HEAD.name(), GETS.name(), HEADS.name(), POST.name(), PUT.name(), DELETE.name() }; + } + + private HttpSession session; + public APIJSONFunctionParser() { + this(null); + } + public APIJSONFunctionParser(HttpSession session) { + this(null, null, 0, null, session); + } + public APIJSONFunctionParser(RequestMethod method, String tag, int version, JSONObject curObj, HttpSession session) { + super(method, tag, version, curObj); + setSession(session); + } + public HttpSession getSession() { + return session; + } + public APIJSONFunctionParser setSession(HttpSession session) { + this.session = session; + return this; + } + + @Override + public APIJSONFunctionParser setMethod(RequestMethod method) { + super.setMethod(method); + return this; + } + @Override + public APIJSONFunctionParser setTag(String tag) { + super.setTag(tag); + return this; + } + @Override + public APIJSONFunctionParser setVersion(int version) { + super.setVersion(version); + return this; + } + + /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 + * @return + * @throws ServerException + */ + public static JSONObject init() throws ServerException { + return init(false); + } + /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 + * @param shutdownWhenServerError + * @return + * @throws ServerException + */ + public static JSONObject init(boolean shutdownWhenServerError) throws ServerException { + return init(shutdownWhenServerError, null); + } + /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 + * @param creator + * @return + * @throws ServerException + */ + public static JSONObject init(APIJSONCreator creator) throws ServerException { + return init(false, creator); + } + /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 + * @param shutdownWhenServerError + * @param creator + * @return + * @throws ServerException + */ + public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + return init(shutdownWhenServerError, creator, null); + } + /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 + * @param shutdownWhenServerError + * @param creator + * @param table 表内自定义数据过滤条件 + * @return + * @throws ServerException + */ + @SuppressWarnings("unchecked") + public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + if (creator == null) { + creator = (APIJSONCreator) APIJSON_CREATOR; + } + APIJSON_CREATOR = creator; + + + boolean isAll = table == null || table.isEmpty(); + + //JSONObject function = isAll ? new JSONRequest() : table; + //if (Log.DEBUG == false) { + // function.put(APIJSONConstant.KEY_DEBUG, 0); + //} + // + //JSONRequest functionItem = new JSONRequest(); + //functionItem.put(FUNCTION_, function); + // + //JSONObject script = new JSONRequest(); // isAll ? new JSONRequest() : table; + //script.put("simple", 0); + //if (Log.DEBUG == false) { + // script.put(APIJSONConstant.KEY_DEBUG, 0); + //} + // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 + //{ // name{}@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + //JSONRequest nameInAt = new JSONRequest(); + //nameInAt.put("from", "Function"); + //{ // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // JSONRequest fun = new JSONRequest(); + // fun.setColumn("name"); + // nameInAt.put("Function", fun); + //} // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + //script.put("name{}@", nameInAt); + //} // name{}@ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + //JSONRequest scriptItem = new JSONRequest(); + //scriptItem.put(SCRIPT_, script); + + JSONObject request = new JSONObject(); + //request.putAll(functionItem.toArray(0, 0, FUNCTION_)); + //request.putAll(scriptItem.toArray(0, 0, SCRIPT_)); + + // 可以用它,因为 Function 表必须存在,没有绕过校验的配置 // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 + { // [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + JSONRequest item = new JSONRequest(); + + { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + JSONObject function = isAll ? new JSONRequest() : table; + if (! Log.DEBUG) { + function.put(APIJSONConstant.KEY_DEBUG, 0); + } + item.put(FUNCTION_, function); + } // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + if (ENABLE_SCRIPT_FUNCTION) { // Script <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + JSONRequest script = new JSONRequest(); + script.put("name@", "/Function/name"); + script.put("simple", 0); + item.put(SCRIPT_, script); + } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + request.putAll(item.toArray(0, 0)); + } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + + JSONObject response = creator.createParser().setMethod(GET).setNeedVerify(true).parseResponse(request); + if (! JSONResponse.isSuccess(response)) { + onServerError("\n\n\n\n\n !!!! 查询远程函数异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n", shutdownWhenServerError); + } + + //初始化默认脚本引擎,避免增量 + if (isAll || SCRIPT_EXECUTOR_MAP.get("js") == null) { + ScriptExecutor javaScriptExecutor = new JavaScriptExecutor(); + javaScriptExecutor.init(); + SCRIPT_EXECUTOR_MAP.put("js", javaScriptExecutor); + SCRIPT_EXECUTOR_MAP.put("JavaScript", javaScriptExecutor); + SCRIPT_EXECUTOR_MAP.put("javascript", javaScriptExecutor); + } + + Map scriptMap = new HashMap<>(); + JSONArray scriptList = response.getJSONArray("[]"); // response.getJSONArray(SCRIPT_ + "[]"); + if (scriptList != null && ! scriptList.isEmpty()) { + //if (isAll) { + // SCRIPT_MAP = new LinkedHashMap<>(); + //} + Map newMap = new LinkedHashMap<>(); + + for (int i = 0; i < scriptList.size(); i++) { + JSONObject item = scriptList.getJSONObject(i); + item = item == null ? null : item.getJSONObject(SCRIPT_); + if (item == null) { // 关联查不到很正常 + continue; + } + + String n = item.getString("name"); + if (! StringUtil.isName(n)) { + onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); + } + + String s = item.getString("script"); + if (StringUtil.isEmpty(s, true)) { + onServerError("Script 表字段 script 的值 " + s + " 不合法!不能为空!", shutdownWhenServerError); + } + newMap.put(n, item); + } + + scriptMap = newMap; + } + + JSONArray list = scriptList; // response.getJSONArray(FUNCTION_ + "[]"); + int size = list == null ? 0 : list.size(); + if (isAll && size <= 0) { + Log.w(TAG, "init isAll && size <= 0,,没有可用的远程函数"); + return response; + } + + + if (isAll) { // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! 如果要做成完全校验通过才更新 FUNCTION_MAP,但又不提供 忽略校验 参数,似乎无解 + FUNCTION_MAP = new LinkedHashMap<>(); + } + Map newMap = FUNCTION_MAP; // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! new LinkedHashMap<>(); + + for (int i = 0; i < size; i++) { + JSONObject item = list.getJSONObject(i); + item = item == null ? null : item.getJSONObject(FUNCTION_); + if (item == null) { + continue; + } + + JSONObject demo = JSON.parseObject(item.getString("demo")); + if (demo == null) { + try { + onServerError("字段 demo 的值必须为合法且非 null 的 JSONObejct 字符串!", shutdownWhenServerError); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + String name = item.getString("name"); + // demo.put(JSONRequest.KEY_TAG, item.getString(JSONRequest.KEY_TAG)); + // demo.put(JSONRequest.KEY_VERSION, item.getInteger(JSONRequest.KEY_VERSION)); + //加载脚本 + if (item.get("language") != null) { + String language = item.getString("language"); + // if (SCRIPT_EXECUTOR_MAP.get(language) == null) { + // onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); + // } + //脚本语言执行 + if (SCRIPT_EXECUTOR_MAP.containsKey(language)){ + ScriptExecutor scriptExecutor = SCRIPT_EXECUTOR_MAP.get(language); + scriptExecutor.load(name, scriptMap.get(name).getString("script")); + } + } + newMap.put(name, item); // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! + + String[] methods = StringUtil.split(item.getString("methods")); + + if (methods == null || methods.length <= 0) { + methods = ALL_METHODS; + } + + if (demo != null){ + if (! demo.containsKey("result()")) { + demo.put("result()", getFunctionCall(name, item.getString("arguments"))); + } + demo.put(JSONRequest.KEY_TAG, item.get(JSONRequest.KEY_TAG)); + demo.put(JSONRequest.KEY_VERSION, item.get(JSONRequest.KEY_VERSION)); + } + + for (String method : methods) { + JSONObject r = APIJSON_CREATOR.createParser() + .setMethod(RequestMethod.valueOf(method)) + .setNeedVerify(false) + .parseResponse(demo); + + if (! JSONResponse.isSuccess(r)) { + try { + onServerError(JSONResponse.getMsg(r), shutdownWhenServerError); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + } + + // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! + // if (isAll) { + // FUNCTION_MAP = newMap; + // } + // else { + // FUNCTION_MAP.putAll(newMap); + // } + + return response; + } + + + protected static void onServerError(String msg, boolean shutdown) throws ServerException { + Log.e(TAG, "\n远程函数文档测试未通过!\n请新增 demo 里的函数,或修改 Function 表里的 demo 为已有的函数示例!\n保证前端看到的远程函数文档是正确的!!!\n\n原因:\n" + msg); + + if (shutdown) { + System.exit(1); + } else { + throw new ServerException(msg); + } + } + + + public static void test() throws Exception { + test(null); + } + public static void test(APIJSONFunctionParser function) throws Exception { + int i0 = 1, i1 = -2; + JSONObject request = new JSONObject(); + request.put("id", 10); + request.put("i0", i0); + request.put("i1", i1); + JSONArray arr = new JSONArray(); + arr.add(new JSONObject()); + request.put("arr", arr); + + JSONArray array = new JSONArray(); + array.add(1);//new JSONObject()); + array.add(2);//new JSONObject()); + array.add(4);//new JSONObject()); + array.add(10);//new JSONObject()); + request.put("array", array); + + request.put("position", 1); + request.put("@position", 0); + + request.put("key", "key"); + JSONObject object = new JSONObject(); + object.put("key", "success"); + request.put("object", object); + + if (function == null) { + function = new APIJSONFunctionParser(null, null, 1, null, null); + } + + // 等数据库 Function 表加上 plus 配置再过两个以上迭代(应该是到 5.0)后再取消注释 + // Log.i(TAG, "plus(1,-2) = " + function.invoke("plus(i0,i1)", request)); + // AssertUtil.assertEqual(-1, function.invoke("plus(i0,i1)", request)); + + Log.i(TAG, "count([1,2,4,10]) = " + function.invoke("countArray(array)", request)); + AssertUtil.assertEqual(4, function.invoke("countArray(array)", request)); + + Log.i(TAG, "isContain([1,2,4,10], 10) = " + function.invoke("isContain(array,id)", request)); + AssertUtil.assertEqual(true, function.invoke("isContain(array,id)", request)); + + Log.i(TAG, "getFromArray([1,2,4,10], 0) = " + function.invoke("getFromArray(array,@position)", request)); + AssertUtil.assertEqual(1, function.invoke("getFromArray(array,@position)", request)); + + Log.i(TAG, "getFromObject({key:\"success\"}, key) = " + function.invoke("getFromObject(object,key)", request)); + AssertUtil.assertEqual("success", function.invoke("getFromObject(object,key)", request)); + + } + + + /**获取远程函数的demo,如果没有就自动补全 + * @param curObj + * @return + * @throws ServerException + */ + public JSONObject getFunctionDemo(@NotNull JSONObject curObj) { + JSONObject demo = JSON.parseObject(curObj.getString("demo")); + if (demo == null) { + demo = new JSONObject(); + } + if (! demo.containsKey("result()")) { + demo.put("result()", getFunctionCall(curObj.getString("name"), curObj.getString("arguments"))); + } + return demo; + } + + /**获取远程函数的demo,如果没有就自动补全 + * @param curObj + * @return + */ + public String getFunctionDetail(@NotNull JSONObject curObj) { + return getFunctionCall(curObj.getString("name"), curObj.getString("arguments")) + + ": " + StringUtil.getTrimedString(curObj.getString("detail")); + } + /**获取函数调用代码 + * @param name + * @param arguments + * @return + */ + private static String getFunctionCall(String name, String arguments) { + return name + "(" + StringUtil.getTrimedString(arguments) + ")"; + } + + + public double plus(@NotNull JSONObject curObj, String i0, String i1) { + return curObj.getDoubleValue(i0) + curObj.getDoubleValue(i1); + } + public double minus(@NotNull JSONObject curObj, String i0, String i1) { + return curObj.getDoubleValue(i0) - curObj.getDoubleValue(i1); + } + public double multiply(@NotNull JSONObject curObj, String i0, String i1) { + return curObj.getDoubleValue(i0) * curObj.getDoubleValue(i1); + } + public double divide(@NotNull JSONObject curObj, String i0, String i1) { + return curObj.getDoubleValue(i0) / curObj.getDoubleValue(i1); + } + + public double plus(@NotNull JSONObject curObj, Number n0, Number n1) { + return n0.doubleValue() + n1.doubleValue(); + } + public double minus(@NotNull JSONObject curObj, Number n0, Number n1) { + return n0.doubleValue() - n1.doubleValue(); + } + public double multiply(@NotNull JSONObject curObj, Number n0, Number n1) { + return n0.doubleValue() * n1.doubleValue(); + } + public double divide(@NotNull JSONObject curObj, Number n0, Number n1) { + return n0.doubleValue() / n1.doubleValue(); + } + + //判断是否为空 <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /**判断array是否为空 + * @param curObj + * @param array + * @return + */ + public boolean isArrayEmpty(@NotNull JSONObject curObj, String array) { + return BaseModel.isEmpty(curObj.getJSONArray(array)); + } + /**判断object是否为空 + * @param curObj + * @param object + * @return + */ + public boolean isObjectEmpty(@NotNull JSONObject curObj, String object) { + return BaseModel.isEmpty(curObj.getJSONObject(object)); + } + //判断是否为空 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + //判断是否为包含 <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /**判断array是否包含value + * @param curObj + * @param array + * @param value + * @return + */ + public boolean isContain(@NotNull JSONObject curObj, String array, String value) { + //解决isContain((List) [82001,...], (Integer) 82001) == false及类似问题, list元素可能是从数据库查到的bigint类型的值 + // return BaseModel.isContain(curObj.getJSONArray(array), curObj.get(value)); + + //不用准确的的 curObj.getString(value).getClass() ,因为Long值转Integer崩溃,而且转成一种类型本身就和字符串对比效果一样了。 + List list = com.alibaba.fastjson.JSON.parseArray(curObj.getString(array), String.class); + return list != null && list.contains(curObj.getString(value)); + } + /**判断object是否包含key + * @param curObj + * @param object + * @param key + * @return + */ + public boolean isContainKey(@NotNull JSONObject curObj, String object, String key) { + return BaseModel.isContainKey(curObj.getJSONObject(object), curObj.getString(key)); + } + /**判断object是否包含value + * @param curObj + * @param object + * @param value + * @return + */ + public boolean isContainValue(@NotNull JSONObject curObj, String object, String value) { + return BaseModel.isContainValue(curObj.getJSONObject(object), curObj.get(value)); + } + //判断是否为包含 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + + //获取集合长度 <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /**获取数量 + * @param curObj + * @param array + * @return + */ + public int countArray(@NotNull JSONObject curObj, String array) { + return BaseModel.count(curObj.getJSONArray(array)); + } + /**获取数量 + * @param curObj + * @param object + * @return + */ + public int countObject(@NotNull JSONObject curObj, String object) { + return BaseModel.count(curObj.getJSONObject(object)); + } + //获取集合长度 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + + //根据键获取值 <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /**获取 + ** @param curObj + * @param array + * @param position 支持直接传数字,例如 getFromArray(array,0) ;或者引用当前对象的值,例如 "@position": 0, "result()": "getFromArray(array,@position)" + * @return + */ + public Object getFromArray(@NotNull JSONObject curObj, String array, String position) { + int p; + try { + p = Integer.parseInt(position); + } catch (Exception e) { + p = curObj.getIntValue(position); + } + return BaseModel.get(curObj.getJSONArray(array), p); + } + /**获取 + * @param curObj + * @param object + * @param key + * @return + */ + public Object getFromObject(@NotNull JSONObject curObj, String object, String key) { + return BaseModel.get(curObj.getJSONObject(object), curObj.getString(key)); + } + //根据键获取值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + //根据键移除值 <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /**移除 + ** @param curObj + * @param position 支持直接传数字,例如 getFromArray(array,0) ;或者引用当前对象的值,例如 "@position": 0, "result()": "getFromArray(array,@position)" + * @return + */ + public Object removeIndex(@NotNull JSONObject curObj, String position) { + int p; + try { + p = Integer.parseInt(position); + } catch (Exception e) { + p = curObj.getIntValue(position); + } + curObj.remove(p); + return null; + } + /**移除 + * @param curObj + * @param key + * @return + */ + public Object removeKey(@NotNull JSONObject curObj, String key) { + curObj.remove(key); + return null; + } + //根据键获取值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + + + //获取非基本类型对应基本类型的非空值 <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /**获取非空值 + * @param curObj + * @param value + * @return + */ + public boolean booleanValue(@NotNull JSONObject curObj, String value) { + return curObj.getBooleanValue(value); + } + /**获取非空值 + * @param curObj + * @param value + * @return + */ + public int intValue(@NotNull JSONObject curObj, String value) { + return curObj.getIntValue(value); + } + /**获取非空值 + * @param curObj + * @param value + * @return + */ + public long longValue(@NotNull JSONObject curObj, String value) { + return curObj.getLongValue(value); + } + /**获取非空值 + * @param curObj + * @param value + * @return + */ + public float floatValue(@NotNull JSONObject curObj, String value) { + return curObj.getFloatValue(value); + } + /**获取非空值 + * @param curObj + * @param value + * @return + */ + public double doubleValue(@NotNull JSONObject curObj, String value) { + return curObj.getDoubleValue(value); + } + //获取非基本类型对应基本类型的非空值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + /**获取value,当value为null时获取defaultValue + * @param curObj + * @param value + * @param defaultValue + * @return v == null ? curObj.get(defaultValue) : v + */ + public Object getWithDefault(@NotNull JSONObject curObj, String value, String defaultValue) { + Object v = curObj.get(value); + return v == null ? curObj.get(defaultValue) : v; + } + + + + /**获取方法参数的定义 + * @param curObj + * @return + * @throws IOException + * @throws ClassNotFoundException + * @throws IllegalArgumentException + */ + public String getMethodArguments(@NotNull JSONObject curObj) throws IllegalArgumentException, ClassNotFoundException, IOException { + return getMethodArguments(curObj, "methodArgs"); + } + /**获取方法参数的定义 + * @param curObj + * @param methodArgsKey + * @return + * @throws IllegalArgumentException + * @throws ClassNotFoundException + * @throws IOException + */ + public String getMethodArguments(@NotNull JSONObject curObj, String methodArgsKey) throws IllegalArgumentException, ClassNotFoundException, IOException { + JSONObject obj = curObj.getJSONObject("request"); + String argsStr = obj == null ? null : obj.getString(methodArgsKey); + if (StringUtil.isEmpty(argsStr, true)) { + argsStr = curObj.getString(methodArgsKey); + } + List methodArgs = JSON.parseArray(removeComment(argsStr), Argument.class); + if (methodArgs == null || methodArgs.isEmpty()) { + return ""; + } + + // Class[] types = new Class[methodArgs.size()]; + // Object[] args = new Object[methodArgs.size()]; + // MethodUtil.initTypesAndValues(methodArgs, types, args, true); + + String s = ""; + // if (types != null) { + // String sn; + // for (int i = 0; i < types.length; i++) { + // sn = types[i] == null ? null : types[i].getSimpleName(); + // if (sn == null) { + // sn = Object.class.getSimpleName(); + // } + // + // if (i > 0) { + // s += ","; + // } + // + // if (MethodUtil.CLASS_MAP.containsKey(sn)) { + // s += sn; + // } + // else { + // s += types[i].getName(); + // } + // } + // } + + for (int i = 0; i < methodArgs.size(); i++) { + Argument arg = methodArgs.get(i); + + String sn = arg == null ? null : arg.getType(); + if (sn == null) { + sn = arg.getValue() == null ? Object.class.getSimpleName() : MethodUtil.trimType(arg.getValue().getClass()); + } + + if (i > 0) { + s += ","; + } + s += sn; + } + + return s; + } + + + /**获取方法的定义 + * @param curObj + * @return + * @throws IOException + * @throws ClassNotFoundException + * @throws IllegalArgumentException + */ + public String getMethodDefinition(@NotNull JSONObject curObj) throws IllegalArgumentException { + // curObj.put("arguments", removeComment(curObj.getString("methodArgs"))); + return getMethodDefinition(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); + } + /**获取方法的定义 + * @param curObj + * @param method + * @param arguments + * @param type + * @return method(argType0,argType1...): returnType + * @throws IOException + * @throws ClassNotFoundException + * @throws IllegalArgumentException + */ + public String getMethodDefinition(@NotNull JSONObject curObj, String method, String arguments + , String type, String exceptions, String language) throws IllegalArgumentException { + String n = curObj.getString(method); + if (StringUtil.isEmpty(n, true)) { + throw new NullPointerException("getMethodDefination StringUtil.isEmpty(methodArgs, true) !"); + } + String a = curObj.getString(arguments); + String t = curObj.getString(type); + String e = curObj.getString(exceptions); + + if (language == null) { + language = ""; + } + switch (language) { + case "TypeScript": + return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + case "Go": + return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a ) + ")" + (StringUtil.isEmpty(t, true) ? "" : " " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + default: + //类型可能很长,Eclipse, Idea 代码提示都是类型放后面 return (StringUtil.isEmpty(t, true) ? "" : t + " ") + n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")"; + return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + } + } + + /** + * methodArgs 和 classArgs 都可以带注释 + */ + public String getMethodRequest(@NotNull JSONObject curObj) { + String req = curObj.getString("request"); + if (StringUtil.isEmpty(req, true) == false) { + return req; + } + + req = "{"; + Boolean isStatic = curObj.getBoolean("static"); + String methodArgs = curObj.getString("methodArgs"); + String classArgs = curObj.getString("classArgs"); + + boolean comma = false; + if (isStatic != null && isStatic) { + req += "\n \"static\": " + true; + comma = true; + } + if (! StringUtil.isEmpty(methodArgs, true)) { + req += (comma ? "," : "") + "\n \"methodArgs\": " + methodArgs; + comma = true; + } + if (! StringUtil.isEmpty(classArgs, true)) { + req += (comma ? "," : "") + "\n \"classArgs\": " + classArgs; + } + req += "\n}"; + return req; + } + + // public static JSONObject removeComment(String json) { + // return JSON.parseObject(removeComment(json)); + // } + public static String removeComment(String json) { + return json == null ? null: json.replaceAll("(//.*)|(/\\*[\\s\\S]*?\\*/)", ""); + } + +} diff --git a/src/main/java/apijson/framework/javax/APIJSONObjectParser.java b/src/main/java/apijson/framework/javax/APIJSONObjectParser.java new file mode 100755 index 0000000..97ee267 --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONObjectParser.java @@ -0,0 +1,69 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.NotNull; +import apijson.RequestMethod; +import apijson.orm.AbstractObjectParser; +import apijson.orm.Join; +import apijson.orm.Parser; +import apijson.orm.SQLConfig; +import com.alibaba.fastjson.JSONObject; +import javax.servlet.http.HttpSession; + +import java.util.List; + + +/**简化Parser,getObject和getArray(getArrayConfig)都能用 + * @author Lemon + */ +public class APIJSONObjectParser extends AbstractObjectParser { + public static final String TAG = "APIJSONObjectParser"; + + /**for single object + * @param session + * @param request + * @param parentPath + * @param arrayConfig + * @param isSubquery + * @param isTable + * @param isArrayMainTable + * @throws Exception + */ + public APIJSONObjectParser(HttpSession session, @NotNull JSONObject request, String parentPath, SQLConfig arrayConfig + , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { + super(request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable); + } + + @Override + public APIJSONObjectParser setMethod(RequestMethod method) { + super.setMethod(method); + return this; + } + + @Override + public APIJSONObjectParser setParser(Parser parser) { + super.setParser(parser); + return this; + } + + + @Override + public SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { + return APIJSONSQLConfig.newSQLConfig(method, table, alias, request, joinList, isProcedure); + } + + +} diff --git a/src/main/java/apijson/framework/javax/APIJSONParser.java b/src/main/java/apijson/framework/javax/APIJSONParser.java new file mode 100755 index 0000000..9a9f4af --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONParser.java @@ -0,0 +1,176 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.NotNull; +import apijson.RequestMethod; +import apijson.orm.*; +import com.alibaba.fastjson.JSONObject; +import javax.servlet.http.HttpSession; + +import java.util.Map; +import java.util.Set; + +import static apijson.framework.javax.APIJSONConstant.*; + + +/**请求解析器 + * @author Lemon + */ +public class APIJSONParser extends AbstractParser { + public static final String TAG = "APIJSONParser"; + + @NotNull + public static APIJSONCreator APIJSON_CREATOR; + static { + APIJSON_CREATOR = new APIJSONCreator<>(); + } + + + public APIJSONParser() { + super(); + } + public APIJSONParser(RequestMethod method) { + super(method); + } + public APIJSONParser(RequestMethod method, boolean needVerify) { + super(method, needVerify); + } + + private HttpSession session; + public HttpSession getSession() { + return session; + } + public APIJSONParser setSession(HttpSession session) { + this.session = session; + setVisitor(APIJSONVerifier.getVisitor(session)); + return this; + } + + @SuppressWarnings("unchecked") + @Override + public Parser createParser() { + return (Parser) APIJSON_CREATOR.createParser(); + } + @Override + public FunctionParser createFunctionParser() { + return APIJSON_CREATOR.createFunctionParser(); + } + + @SuppressWarnings("unchecked") + @Override + public Verifier createVerifier() { + return (Verifier) APIJSON_CREATOR.createVerifier(); + } + + @Override + public SQLConfig createSQLConfig() { + return APIJSON_CREATOR.createSQLConfig(); + } + @Override + public SQLExecutor createSQLExecutor() { + return APIJSON_CREATOR.createSQLExecutor(); + } + + + @Override + public JSONObject parseResponse(JSONObject request) { + //补充format + if (session != null && request != null) { + if (request.get(FORMAT) == null) { + request.put(FORMAT, session.getAttribute(FORMAT)); + } + if (request.get(DEFAULTS) == null) { + JSONObject defaults = (JSONObject) session.getAttribute(DEFAULTS); + Set> set = defaults == null ? null : defaults.entrySet(); + + if (set != null) { + for (Map.Entry e : set) { + if (e != null && request.get(e.getKey()) == null) { + request.put(e.getKey(), e.getValue()); + } + } + } + } + } + return super.parseResponse(request); + } + + private FunctionParser functionParser; + public FunctionParser getFunctionParser() { + return functionParser; + } + @Override + public Object onFunctionParse(String key, String function, String parentPath, String currentName, JSONObject currentObject, boolean containRaw) throws Exception { + if (functionParser == null) { + functionParser = createFunctionParser(); + functionParser.setParser(this); + functionParser.setMethod(getMethod()); + functionParser.setTag(getTag()); + functionParser.setVersion(getVersion()); + functionParser.setRequest(requestObject); + + if (functionParser instanceof APIJSONFunctionParser) { + ((APIJSONFunctionParser) functionParser).setSession(getSession()); + } + } + functionParser.setKey(key); + functionParser.setParentPath(parentPath); + functionParser.setCurrentName(currentName); + functionParser.setCurrentObject(currentObject); + + return functionParser.invoke(function, currentObject, containRaw); + } + + + @Override + public APIJSONObjectParser createObjectParser(JSONObject request, String parentPath, SQLConfig arrayConfig + , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { + + return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { + + // @Override + // protected APIJSONSQLConfig newQueryConfig() { + // if (itemConfig != null) { + // return itemConfig; + // } + // return super.newQueryConfig(); + // } + + // 导致最多评论的(Strong 30个)的那个动态详情界面Android(82001)无姓名和头像,即User=null + // @Override + // protected void onComplete() { + // if (response != null) { + // putQueryResult(path, response); // 解决获取关联数据时requestObject里不存在需要的关联数据 + // } + // } + + }.setMethod(getMethod()).setParser(this); + } + + + + @Override + public void onVerifyContent() throws Exception { + //补充全局缺省版本号 //可能在默认为1的前提下这个请求version就需要为0 requestObject.getIntValue(VERSION) <= 0) { + HttpSession session = getSession(); + if (session != null && requestObject.get(VERSION) == null) { + requestObject.put(VERSION, session.getAttribute(VERSION)); + } + super.onVerifyContent(); + } + + +} diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java new file mode 100755 index 0000000..07784e8 --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java @@ -0,0 +1,248 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.RequestMethod; +import apijson.column.ColumnUtil; +import apijson.orm.AbstractSQLConfig; +import apijson.orm.Join; +import apijson.orm.SQLConfig; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.annotation.JSONField; + +import java.util.List; + +import static apijson.framework.javax.APIJSONConstant.*; + + +/**SQL配置 + * TiDB 用法和 MySQL 一致 + * @author Lemon + */ +public class APIJSONSQLConfig extends AbstractSQLConfig { + public static final String TAG = "APIJSONSQLConfig"; + + public static boolean ENABLE_COLUMN_CONFIG = false; + + public static Callback SIMPLE_CALLBACK; + public static APIJSONCreator APIJSON_CREATOR; + + static { + DEFAULT_DATABASE = DATABASE_MYSQL; //TODO 默认数据库类型,改成你自己的 + DEFAULT_SCHEMA = "sys"; //TODO 默认模式名,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle: + // TABLE_KEY_MAP.put(Access.class.getSimpleName(), "apijson_access"); + + // 由 APIJSONVerifier.init 方法读取数据库 Access 表来替代手动输入配置 + // //表名映射,隐藏真实表名,对安全要求很高的表可以这么做 + // TABLE_KEY_MAP.put(User.class.getSimpleName(), "apijson_user"); + // TABLE_KEY_MAP.put(Privacy.class.getSimpleName(), "apijson_privacy"); + + APIJSON_CREATOR = new APIJSONCreator<>(); + + SIMPLE_CALLBACK = new SimpleCallback<>() { + + @Override + public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { + SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); + config.setMethod(method); + config.setDatabase(database); + config.setDatasource(datasource); + config.setSchema(schema); + config.setTable(table); + return config; + } + + //取消注释来实现自定义各个表的主键名 + // @Override + // public String getIdKey(String database, String schema, String datasource, String table) { + // return StringUtil.firstCase(table + "Id"); // userId, comemntId ... + // // return StringUtil.toLowerCase(t) + "_id"; // user_id, comemnt_id ... + // // return StringUtil.toUpperCase(t) + "_ID"; // USER_ID, COMMENT_ID ... + // } + + @Override + public String getUserIdKey(String database, String schema, String datasource, String table) { + return USER_.equals(table) || PRIVACY_.equals(table) ? ID : USER_ID; // id / userId + } + + //取消注释来实现数据库自增 id + // @Override + // public Object newId(RequestMethod method, String database, String schema, String datasource, String table) { + // return null; // return null 则不生成 id,一般用于数据库自增 id + // } + }; + + } + + + + @Override + public String getDBVersion() { + if (isMySQL()) { + return "5.7.22"; //"8.0.11"; //TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号 //MYSQL 8 和 7 使用的 JDBC 配置不一样 + } + if (isPostgreSQL()) { + return "9.6.15"; //TODO 改成你自己的 + } + if (isSQLServer()) { + return "2016"; //TODO 改成你自己的 + } + if (isOracle()) { + return "18c"; //TODO 改成你自己的 + } + return null; + } + + @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 + @Override + public String getDBUri() { + if (isMySQL()) { + return "jdbc:mysql://localhost:3306"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 + } + if (isPostgreSQL()) { + return "jdbc:postgresql://localhost:5432/postgres"; //TODO 改成你自己的 + } + if (isSQLServer()) { + return "jdbc:jtds:sqlserver://localhost:1433/pubs;instance=SQLEXPRESS"; //TODO 改成你自己的 + } + if (isOracle()) { + return "jdbc:oracle:thin:@localhost:1521:orcl"; //TODO 改成你自己的 + } + return null; + } + + @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 + @Override + public String getDBAccount() { + if (isMySQL()) { + return "root"; //TODO 改成你自己的 + } + if (isPostgreSQL()) { + return "postgres"; //TODO 改成你自己的 + } + if (isSQLServer()) { + return "sa"; //TODO 改成你自己的 + } + if (isOracle()) { + return "scott"; //TODO 改成你自己的 + } + return null; + } + + @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 + @Override + public String getDBPassword() { + if (isMySQL()) { + return "apijson"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 "" + } + if (isPostgreSQL()) { + return null; //TODO 改成你自己的 + } + if (isSQLServer()) { + return "apijson@123"; //TODO 改成你自己的 + } + if (isOracle()) { + return "tiger"; //TODO 改成你自己的 + } + return null; + } + + /**获取 APIJSON 配置表所在数据库模式 database,默认与业务表一块 + * @return + */ + public String getConfigDatabase() { + return getDatabase(); + } + /**获取 APIJSON 配置表所在数据库模式 schema,默认与业务表一块 + * @return + */ + public String getConfigSchema() { + return getSchema(); + } + /**是否为 APIJSON 配置表,如果和业务表一块,可以重写这个方法,固定 return false 来提高性能 + * @return + */ + public boolean isConfigTable() { + return CONFIG_TABLE_LIST.contains(getTable()); + } + @Override + public String getSQLDatabase() { + String db = isConfigTable() ? getConfigDatabase() : super.getSQLDatabase(); + return db == null ? DEFAULT_DATABASE : db; + } + @Override + public String getSQLSchema() { + String sch = isConfigTable() ? getConfigSchema() : super.getSQLSchema(); + return sch == null ? DEFAULT_SCHEMA : sch; + } + + + @Override + public String getIdKey() { + return SIMPLE_CALLBACK.getIdKey(getDatabase(), getSchema(), getDatasource(), getTable()); + } + + @Override + public String getUserIdKey() { + return SIMPLE_CALLBACK.getUserIdKey(getDatabase(), getSchema(), getDatasource(), getTable()); + } + + + public APIJSONSQLConfig() { + this(RequestMethod.GET); + } + public APIJSONSQLConfig(RequestMethod method) { + super(method); + } + public APIJSONSQLConfig(RequestMethod method, String table) { + super(method, table); + } + public APIJSONSQLConfig(RequestMethod method, int count, int page) { + super(method, count, page); + } + + + + /**获取SQL配置 + * @param table + * @param alias + * @param request + * @param isProcedure + * @return + * @throws Exception + */ + public static SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { + return (SQLConfig) newSQLConfig(method, table, alias, request, joinList, isProcedure, SIMPLE_CALLBACK); + } + + + // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column + @Override + public AbstractSQLConfig setColumn(List column) { + if (ENABLE_COLUMN_CONFIG) { + column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); + } + return super.setColumn(column); + } + + @Override + public String getKey(String key) { + if (ENABLE_COLUMN_CONFIG) { + key = ColumnUtil.compatInputKey(key, getTable(), getMethod(), getVersion(), ! isConfigTable()); + } + return super.getKey(key); + } + +} diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java new file mode 100755 index 0000000..88eb4db --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java @@ -0,0 +1,109 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.JSON; +import apijson.Log; +import apijson.NotNull; +import apijson.column.ColumnUtil; +import apijson.orm.AbstractSQLExecutor; +import apijson.orm.SQLConfig; +import com.alibaba.fastjson.JSONObject; +import org.postgresql.util.PGobject; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.Map; + + +/**executor for query(read) or update(write) MySQL database + * @author Lemon + */ +public class APIJSONSQLExecutor extends AbstractSQLExecutor { + public static final String TAG = "APIJSONSQLExecutor"; + + static { + try { //加载驱动程序 + Log.d(TAG, "尝试加载 MySQL 8 驱动 <<<<<<<<<<<<<<<<<<<<< "); + Class.forName("com.mysql.cj.jdbc.Driver"); + Log.d(TAG, "成功加载 MySQL 8 驱动!>>>>>>>>>>>>>>>>>>>>>"); + } + catch (ClassNotFoundException e) { + Log.e(TAG, "加载 MySQL 8 驱动失败,请检查 pom.xml 中 mysql-connector-java 版本是否存在以及可用 !!!"); + e.printStackTrace(); + + try { //加载驱动程序 + Log.d(TAG, "尝试加载 MySQL 7 及以下版本的 驱动 <<<<<<<<<<<<<<<<<<<<< "); + Class.forName("com.mysql.jdbc.Driver"); + Log.d(TAG, "成功加载 MySQL 7 及以下版本的 驱动!>>>>>>>>>>>>>>>>>>>>> "); + } + catch (ClassNotFoundException e2) { + Log.e(TAG, "加载 MySQL 7 及以下版本的 驱动失败,请检查 pom.xml 中 mysql-connector-java 版本是否存在以及可用 !!!"); + e2.printStackTrace(); + } + } + + try { //加载驱动程序 + Log.d(TAG, "尝试加载 PostgresSQL 驱动 <<<<<<<<<<<<<<<<<<<<< "); + Class.forName("org.postgresql.Driver"); + Log.d(TAG, "成功加载 PostgresSQL 驱动!>>>>>>>>>>>>>>>>>>>>> "); + } + catch (ClassNotFoundException e) { + e.printStackTrace(); + Log.e(TAG, "加载 PostgresSQL 驱动失败,请检查 libs 目录中 postgresql.jar 版本是否存在以及可用 !!!"); + } + + } + + + @Override + public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull PreparedStatement statement, int index, Object value) throws SQLException { + if (config.isPostgreSQL() && JSON.isBooleanOrNumberOrString(value) == false) { + PGobject o = new PGobject(); + o.setType("jsonb"); + o.setValue(value == null ? null : value.toString()); + statement.setObject(index + 1, o); //PostgreSQL 除了基本类型,其它的必须通过 PGobject 设置进去,否则 jsonb = varchar 等报错 + return statement; + } + + return super.setArgument(config, statement, index, value); + } + + + @Override + protected Object getValue(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, + JSONObject table, int columnIndex, String lable, Map childMap) throws Exception { + + Object value = super.getValue(config, rs, rsmd, tablePosition, table, columnIndex, lable, childMap); + + return value instanceof PGobject ? JSON.parse(((PGobject) value).getValue()) : value; + } + + // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column + @Override + protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table, + int columnIndex, Map childMap) throws Exception { + + String key = super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap); + if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { + return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); + } + + return key; + } + +} diff --git a/src/main/java/apijson/framework/javax/APIJSONVerifier.java b/src/main/java/apijson/framework/javax/APIJSONVerifier.java new file mode 100755 index 0000000..312a480 --- /dev/null +++ b/src/main/java/apijson/framework/javax/APIJSONVerifier.java @@ -0,0 +1,651 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.*; +import apijson.column.ColumnUtil; +import apijson.orm.JSONRequest; +import apijson.orm.*; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import javax.servlet.http.HttpSession; + +import java.rmi.ServerException; +import java.util.*; + +import static apijson.framework.javax.APIJSONConstant.*; + + +/**权限验证器 + * @author Lemon + */ +public class APIJSONVerifier extends AbstractVerifier { + public static final String TAG = "APIJSONVerifier"; + + public static boolean ENABLE_VERIFY_COLUMN = true; + + // 由 init 方法读取数据库 Access 表来替代手动输入配置 + // // > + // // > + // static { //注册权限 + // ACCESS_MAP.put(User.class.getSimpleName(), getAccessMap(User.class.getAnnotation(MethodAccess.class))); + // ACCESS_MAP.put(Privacy.class.getSimpleName(), getAccessMap(Privacy.class.getAnnotation(MethodAccess.class))); + // ACCESS_MAP.put(Moment.class.getSimpleName(), getAccessMap(Moment.class.getAnnotation(MethodAccess.class))); + // ACCESS_MAP.put(Comment.class.getSimpleName(), getAccessMap(Comment.class.getAnnotation(MethodAccess.class))); + // ACCESS_MAP.put(Verify.class.getSimpleName(), getAccessMap(Verify.class.getAnnotation(MethodAccess.class))); + // ACCESS_MAP.put(Login.class.getSimpleName(), getAccessMap(Login.class.getAnnotation(MethodAccess.class))); + // } + + public static APIJSONCreator APIJSON_CREATOR; + + static { + APIJSON_CREATOR = new APIJSONCreator<>(); + } + + /**初始化,加载所有权限配置和请求校验配置 + * @return + * @throws ServerException + */ + public static JSONObject init() throws ServerException { + return init(false); + } + + /**初始化,加载所有权限配置和请求校验配置 + * @param shutdownWhenServerError + * @return + * @throws ServerException + */ + public static JSONObject init(boolean shutdownWhenServerError) throws ServerException { + return init(shutdownWhenServerError, null); + } + + /**初始化,加载所有权限配置和请求校验配置 + * @param creator + * @return + * @throws ServerException + */ + public static JSONObject init(APIJSONCreator creator) throws ServerException { + return init(false, creator); + } + + /**初始化,加载所有权限配置和请求校验配置 + * @param shutdownWhenServerError + * @param creator + * @return + * @throws ServerException + */ + public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + JSONObject result = new JSONObject(true); + if (ENABLE_VERIFY_ROLE) { + result.put(ACCESS_, initAccess(shutdownWhenServerError, creator)); + } + if (ENABLE_VERIFY_CONTENT) { + result.put(REQUEST_, initRequest(shutdownWhenServerError, creator)); + } + return result; + } + + /**初始化,加载所有权限配置 + * @return + * @throws ServerException + */ + public static JSONObject initAccess() throws ServerException { + return initAccess(false); + } + + /**初始化,加载所有权限配置 + * @param shutdownWhenServerError + * @return + * @throws ServerException + */ + public static JSONObject initAccess(boolean shutdownWhenServerError) throws ServerException { + return initAccess(shutdownWhenServerError, null); + } + + /**初始化,加载所有权限配置 + * @param creator + * @return + * @throws ServerException + */ + public static JSONObject initAccess(APIJSONCreator creator) throws ServerException { + return initAccess(false, creator); + } + + /**初始化,加载所有权限配置 + * @param shutdownWhenServerError + * @param creator + * @return + * @throws ServerException + */ + public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + return initAccess(shutdownWhenServerError, creator, null); + } + + /**初始化,加载所有权限配置 + * @param shutdownWhenServerError + * @param creator + * @param table 表内自定义数据过滤条件 + * @return + * @throws ServerException + */ + @SuppressWarnings("unchecked") + public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + if (creator == null) { + creator = (APIJSONCreator) APIJSON_CREATOR; + } + APIJSON_CREATOR = creator; + + + boolean isAll = table == null || table.isEmpty(); + + JSONObject access = isAll ? new JSONRequest() : table; + if (Log.DEBUG == false) { + access.put(APIJSONConstant.KEY_DEBUG, 0); + } + JSONRequest accessItem = new JSONRequest(); + accessItem.put(ACCESS_, access); + + JSONRequest request = new JSONRequest(); + request.putAll(accessItem.toArray(0, 0, ACCESS_)); + + + JSONObject response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); + if (JSONResponse.isSuccess(response) == false) { + Log.e(TAG, "\n\n\n\n\n !!!! 查询权限配置异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n"); + onServerError("查询权限配置异常 !", shutdownWhenServerError); + } + + JSONArray list = response.getJSONArray(ACCESS_ + "[]"); + int size = list == null ? 0 : list.size(); + if (isAll && size <= 0) { + Log.w(TAG, "initAccess isAll && size <= 0,,没有可用的权限配置"); + return response; + } + + Log.d(TAG, "initAccess < for ACCESS_MAP.size() = " + ACCESS_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<"); + + Map> newMap = new LinkedHashMap<>(); + Map> fakeDeleteMap = new LinkedHashMap<>(); + Map newTKMap = new LinkedHashMap<>(); + Map tableSchemaMap = new LinkedHashMap<>(); + + SortedMap>> versionedTableColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); + SortedMap>> versionedKeyColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); + for (int i = 0; i < size; i++) { + JSONObject item = list.getJSONObject(i); + if (item == null) { + continue; + } + + Map map = new HashMap<>(); + map.put(RequestMethod.GET, JSON.parseObject(item.getString("get"), String[].class)); + map.put(RequestMethod.HEAD, JSON.parseObject(item.getString("head"), String[].class)); + map.put(RequestMethod.GETS, JSON.parseObject(item.getString("gets"), String[].class)); + map.put(RequestMethod.HEADS, JSON.parseObject(item.getString("heads"), String[].class)); + map.put(RequestMethod.POST, JSON.parseObject(item.getString("post"), String[].class)); + map.put(RequestMethod.PUT, JSON.parseObject(item.getString("put"), String[].class)); + map.put(RequestMethod.DELETE, JSON.parseObject(item.getString("delete"), String[].class)); + + String name = item.getString("name"); + String alias = item.getString("alias"); + String schema = item.getString("schema"); + + Map fakemap = new HashMap<>(); + String deletedKey = item.getString(AbstractSQLConfig.KEY_DELETED_KEY); + if(StringUtil.isNotEmpty(deletedKey, true)) { + boolean containNotDeletedValue = item.containsKey(AbstractSQLConfig.KEY_NOT_DELETED_VALUE); + Object deletedValue = item.getString(AbstractSQLConfig.KEY_DELETED_VALUE); + if (containNotDeletedValue == false && StringUtil.isEmpty(deletedValue, true)) { + onServerError( + "Access表 id = " + item.getString("id") + " 对应的 " + + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " + + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" + , shutdownWhenServerError + ); + } + fakemap.put(AbstractSQLConfig.KEY_DELETED_KEY, deletedKey); + fakemap.put(AbstractSQLConfig.KEY_DELETED_VALUE, deletedValue); + if (containNotDeletedValue) { + fakemap.put(AbstractSQLConfig.KEY_NOT_DELETED_VALUE, item.get(AbstractSQLConfig.KEY_NOT_DELETED_VALUE)); + } + } + + /**TODO + * 以下判断写得比较复杂,因为表设计不够好,但为了兼容旧版 APIJSON 服务 和 APIAuto 工具而保留了下来。 + * 如果是 name 为接口传参的 表对象 的 key,对应一个可缺省的 tableName,判断就会简单不少。 + */ + + if (StringUtil.isEmpty(name, true)) { + onServerError("字段 name 的值不能为空!", shutdownWhenServerError); + } + + if (StringUtil.isEmpty(alias, true)) { + if (JSONRequest.isTableKey(name) == false) { + onServerError("name: " + name + "不合法!字段 alias 的值为空时,name 必须为合法表名!", shutdownWhenServerError); + } + + alias = name; + } else if (JSONRequest.isTableKey(alias) == false) { + onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError); + } + + newMap.put(alias, map); + fakeDeleteMap.put(alias, fakemap); + newTKMap.put(alias, name); + tableSchemaMap.put(alias, schema); + + if (ENABLE_VERIFY_COLUMN) { + JSONObject columns = item.getJSONObject("columns"); + Set> set = columns == null ? null : columns.entrySet(); + if (set != null) { + + for (Map.Entry entry : set) { + Integer version = entry == null ? null : Integer.valueOf(entry.getKey()); // null is not possible + Object val = version == null ? null : entry.getValue(); + if (val == null) { + continue; + } + + Map> kcm = new LinkedHashMap<>(); // versionedKeyColumnMap.get(version); + Map cm = new LinkedHashMap<>(); // kcm.get(alias); + + String[] cs = StringUtil.split(String.valueOf(val)); + List l = new ArrayList<>(); + for (int j = 0; j < cs.length; j++) { + String s = cs[j]; + Entry ety = Pair.parseEntry(s, true); + String k = ety == null ? null : ety.getKey(); + String v = ety == null ? null : ety.getValue(); + if (StringUtil.isName(k) == false || (v != null && StringUtil.isName(v) == false)) { + throw new IllegalArgumentException("后端 Access 表中 name: " + name + " 对应 columns 字段的值 " + + version + ":value 中第 " + j + " 个字段 column:alias 中字符 " + s + " 不合法!" + + "alias 可缺省,但 column, alias 都必须为合法的变量名!" + + " ! !ety == null || StringUtil.isName(ety.getKey()) == false " + + " || (ety.getValue() != null && StringUtil.isName(ety.getValue()) == false)"); + } + + l.add(k); + + cm.put(v == null ? k : v, k); + +// if (v != null) { +//// if (kcm == null) { +//// kcm = new LinkedHashMap<>(); +//// } +//// if (m == null) { +//// m = new LinkedHashMap<>(); +//// kcm.put(alias, m); +//// } +// cm.put(v, k); +// } + } + + Map> m = new LinkedHashMap<>(); + m.put(alias, l); + versionedTableColumnMap.put(version, m); + + kcm.put(alias, cm); + versionedKeyColumnMap.put(version, kcm); + } + } + } + } + + if (isAll) { // 全量更新 + ACCESS_MAP = newMap; + ACCESS_FAKE_DELETE_MAP = fakeDeleteMap; + APIJSONSQLConfig.TABLE_KEY_MAP = newTKMap; + APIJSONSQLConfig.TABLE_SCHEMA_MAP = tableSchemaMap; + } else { + ACCESS_MAP.putAll(newMap); + ACCESS_FAKE_DELETE_MAP.putAll(fakeDeleteMap); + APIJSONSQLConfig.TABLE_KEY_MAP.putAll(newTKMap); + APIJSONSQLConfig.TABLE_SCHEMA_MAP = tableSchemaMap; + } + + if (ENABLE_VERIFY_COLUMN) { + if (isAll) { // 全量更新 + ColumnUtil.VERSIONED_TABLE_COLUMN_MAP = versionedTableColumnMap; + ColumnUtil.VERSIONED_KEY_COLUMN_MAP = versionedKeyColumnMap; + } else { + ColumnUtil.VERSIONED_TABLE_COLUMN_MAP.putAll(versionedTableColumnMap); + ColumnUtil.VERSIONED_KEY_COLUMN_MAP.putAll(versionedKeyColumnMap); + } + ColumnUtil.init(); + } + + Log.d(TAG, "initAccess for /> ACCESS_MAP.size() = " + ACCESS_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>"); + + return response; + } + + + /**初始化,加载所有请求校验配置 + * @return + * @throws ServerException + */ + public static JSONObject initRequest() throws ServerException { + return initRequest(false); + } + + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @return + * @throws ServerException + */ + public static JSONObject initRequest(boolean shutdownWhenServerError) throws ServerException { + return initRequest(shutdownWhenServerError, null); + } + + /**初始化,加载所有请求校验配置 + * @param creator + * @return + * @throws ServerException + */ + public static JSONObject initRequest(APIJSONCreator creator) throws ServerException { + return initRequest(false, creator); + } + + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @param creator + * @return + * @throws ServerException + */ + public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + return initRequest(shutdownWhenServerError, creator, null); + } + + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @param creator + * @param table 表内自定义数据过滤条件 + * @return + * @throws ServerException + */ + @SuppressWarnings("unchecked") + public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + if (creator == null) { + creator = (APIJSONCreator) APIJSON_CREATOR; + } + APIJSON_CREATOR = creator; + + + boolean isAll = table == null || table.isEmpty(); + JSONObject requestTable = isAll ? new JSONRequest().setOrder("version-,id+") : table; + if (Log.DEBUG == false) { + requestTable.put(APIJSONConstant.KEY_DEBUG, 0); + } + + JSONRequest requestItem = new JSONRequest(); + requestItem.put(REQUEST_, requestTable); // 方便查找 + + JSONRequest request = new JSONRequest(); + request.putAll(requestItem.toArray(0, 0, REQUEST_)); + + + JSONObject response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); + if (JSONResponse.isSuccess(response) == false) { + Log.e(TAG, "\n\n\n\n\n !!!! 查询请求校验规则配置异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n"); + onServerError("查询请求校验规则配置异常 !", shutdownWhenServerError); + } + + JSONArray list = response.getJSONArray(REQUEST_ + "[]"); + int size = list == null ? 0 : list.size(); + if (isAll && size <= 0) { + Log.w(TAG, "initRequest isAll && size <= 0,没有可用的请求校验规则配置"); + return response; + } + + Log.d(TAG, "initRequest < for REQUEST_MAP.size() = " + REQUEST_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<"); + + Map> newMap = new LinkedHashMap<>(); + + for (int i = 0; i < size; i++) { + JSONObject item = list.getJSONObject(i); + if (item == null) { + continue; + } + + String version = item.getString("version"); + if (StringUtil.isEmpty(version, true)) { + Log.e(TAG, "initRequest for StringUtil.isEmpty(version, true),Request 表中的 version 不能为空!"); + onServerError("服务器内部错误,Request 表中的 version 不能为空!", shutdownWhenServerError); + } + + String method = item.getString("method"); + if (StringUtil.isEmpty(method, true)) { + Log.e(TAG, "initRequest for StringUtil.isEmpty(method, true),Request 表中的 method 不能为空!"); + onServerError("服务器内部错误,Request 表中的 method 不能为空!", shutdownWhenServerError); + } + + String tag = item.getString("tag"); + if (StringUtil.isEmpty(tag, true)) { + Log.e(TAG, "initRequest for StringUtil.isEmpty(tag, true),Request 表中的 tag 不能为空!"); + onServerError("服务器内部错误,Request 表中的 tag 不能为空!", shutdownWhenServerError); + } + + JSONObject structure = JSON.parseObject(item.getString("structure")); + + JSONObject target = null; + + if (structure != null) { + target = structure; + if (structure.containsKey(tag) == false) { //tag 是 Table 名或 Table[] + + boolean isArrayKey = tag.endsWith(":[]"); // JSONRequest.isArrayKey(tag); + String key = isArrayKey ? tag.substring(0, tag.length() - 3) : tag; + + if (apijson.JSONObject.isTableKey(key)) { + if (isArrayKey) { //自动为 tag = Comment:[] 的 { ... } 新增键值对 "Comment[]":[] 为 { "Comment[]":[], ... } + target.put(key + "[]", new JSONArray()); + } else { //自动为 tag = Comment 的 { ... } 包一层为 { "Comment": { ... } } + target = new JSONObject(true); + target.put(tag, structure); + } + } + } + } + + if (target == null || target.isEmpty()) { + Log.e(TAG, "initRequest for target == null || target.isEmpty()"); + onServerError("服务器内部错误,Request 表中的 version = " + version + ", method = " + method + ", tag = " + tag + " 对应的 structure 不能为空!", shutdownWhenServerError); + } + + String cacheKey = getCacheKeyForRequest(method, tag); + SortedMap versionedMap = newMap.get(cacheKey); + if (versionedMap == null) { + versionedMap = new TreeMap<>(new Comparator() { + + @Override + public int compare(Integer o1, Integer o2) { + return o2 == null ? -1 : o2.compareTo(o1); // 降序 + } + }); + } + versionedMap.put(Integer.valueOf(version), item); + newMap.put(cacheKey, versionedMap); + } + + if (isAll) { // 全量更新 + REQUEST_MAP = newMap; + } else { + REQUEST_MAP.putAll(newMap); + } + + Log.d(TAG, "initRequest for /> REQUEST_MAP.size() = " + REQUEST_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>"); + + return response; + } + + + public static void test() throws Exception { + testStructure(); + } + + static final String requestConfig = "{\"Comment\":{\"REFUSE\": \"id\", \"MUST\": \"userId,momentId,content\"}, \"INSERT\":{\"@role\":\"OWNER\"}}"; + static final String responseConfig = "{\"User\":{\"REMOVE\": \"phone\", \"REPLACE\":{\"sex\":2}, \"INSERT\":{\"name\":\"api\"}, \"UPDATE\":{\"verifyURLList-()\":\"verifyURLList(pictureList)\"}}}"; + + /** + * 测试 Request 和 Response 的数据结构校验 + * @throws Exception + */ + public static void testStructure() throws Exception { + JSONObject request; + try { + request = JSON.parseObject("{\"Comment\":{\"userId\":0}}"); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); + } catch (Throwable e) { + if (e instanceof IllegalArgumentException == false || "POST请求,Comment 里面不能缺少 momentId 等[userId,momentId,content]内的任何字段!".equals(e.getMessage()) == false) { + throw e; + } + Log.d(TAG, "测试 Operation.MUST 校验缺少字段:成功"); + } + try { + request = JSON.parseObject("{\"Comment\":{\"id\":0, \"userId\":0, \"momentId\":0, \"content\":\"apijson\"}}"); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); + } catch (Throwable e) { + if (e instanceof IllegalArgumentException == false || "POST请求,/Comment 不能传 id !".equals(e.getMessage()) == false) { + throw e; + } + Log.d(TAG, "测试 Operation.REFUSE 校验不允许传字段:成功"); + } + try { + request = JSON.parseObject("{\"Comment\":{\"userId\":0, \"momentId\":0, \"content\":\"apijson\"}}"); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); + AssertUtil.assertEqual("OWNER", request.getString("@role")); + Log.d(TAG, "测试 Operation.INSERT 不存在字段时插入:成功"); + } catch (Throwable e) { + throw e; + } + + + JSONObject response; + try { + response = JSON.parseObject("{\"User\":{\"userId\":0}}"); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); + AssertUtil.assertEqual("verifyURLList(pictureList)", response.getJSONObject("User").getString("verifyURLList-()")); + Log.d(TAG, "测试 Operation.UPDATE 强制插入/替换:成功"); + } catch (Throwable e) { + throw e; + } + try { + response = JSON.parseObject("{\"User\":{\"userId\":0, \"phone\":\"12345678\"}}"); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); + AssertUtil.assertEqual(null, response.getJSONObject("User").get("phone")); + Log.d(TAG, "测试 Operation.REMOVE 强制移除:成功"); + } catch (Throwable e) { + throw e; + } + try { + response = JSON.parseObject("{\"User\":{\"userId\":0, \"phone\":\"12345678\", \"sex\":1}}"); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); + AssertUtil.assertEqual("api", response.getJSONObject("User").get("name")); + Log.d(TAG, "测试 Operation.INSERT 不存在字段时插入:成功"); + } catch (Throwable e) { + throw e; + } + try { + response = JSON.parseObject("{\"User\":{\"id\":0, \"name\":\"tommy\", \"phone\":\"12345678\", \"sex\":1}}"); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); + AssertUtil.assertEqual(2, response.getJSONObject("User").get("sex")); + Log.d(TAG, "测试 Operation.REPLACE 存在字段时替换:成功"); + } catch (Throwable e) { + throw e; + } + + } + + + protected static void onServerError(String msg, boolean shutdown) throws ServerException { + Log.e(TAG, "\n校验配置测试未通过!\n请修改 Access/Request 表里的记录!\n保证所有配置都是正确的!!!\n\n原因:\n" + msg); + + if (shutdown) { + System.exit(1); + } else { + throw new ServerException(msg); + } + } + + + @SuppressWarnings("unchecked") + @NotNull + @Override + public APIJSONParser createParser() { + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + parser.setVisitor(visitor); + return parser; + } + + /**登录校验 + * @author + * @modifier Lemon + * @param session + * @throws Exception + */ + public static void verifyLogin(HttpSession session) throws Exception { + Log.d(TAG, "verifyLogin session.getId() = " + (session == null ? null : session.getId())); + APIJSON_CREATOR.createVerifier().setVisitor(getVisitor(session)).verifyLogin(); + } + + + /**获取来访用户的id + * @author Lemon + * @param session + * @return + */ + @SuppressWarnings("unchecked") + public static T getVisitorId(HttpSession session) { + if (session == null) { + return null; + } + + T id = (T) session.getAttribute(VISITOR_ID); + if (id == null) { + id = (T) getVisitor(session); + session.setAttribute(VISITOR_ID, id); + } + return id; + } + + /**获取来访用户 + * @param session + * @return + */ + @SuppressWarnings("unchecked") + public static Visitor getVisitor(HttpSession session) { + return session == null ? null : (Visitor) session.getAttribute(VISITOR_); + } + + + @Override + public String getIdKey(String database, String schema, String datasource, String table) { + return APIJSONSQLConfig.SIMPLE_CALLBACK.getIdKey(database, schema, datasource, table); + } + + @Override + public String getUserIdKey(String database, String schema, String datasource, String table) { + return APIJSONSQLConfig.SIMPLE_CALLBACK.getUserIdKey(database, schema, datasource, table); + } + + @SuppressWarnings("unchecked") + @Override + public T newId(RequestMethod method, String database, String schema, String datasource, String table) { + return (T) APIJSONSQLConfig.SIMPLE_CALLBACK.newId(method, database, schema, datasource, table); + } + + + +} diff --git a/src/main/java/apijson/framework/javax/AssertUtil.java b/src/main/java/apijson/framework/javax/AssertUtil.java new file mode 100644 index 0000000..3424407 --- /dev/null +++ b/src/main/java/apijson/framework/javax/AssertUtil.java @@ -0,0 +1,21 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + + +/**简单断言工具类,不用额外引入 JUnit 等库 + * @author Lemon + */ +public class AssertUtil extends apijson.framework.AssertUtil {} diff --git a/src/main/java/apijson/framework/javax/BaseModel.java b/src/main/java/apijson/framework/javax/BaseModel.java new file mode 100755 index 0000000..251a058 --- /dev/null +++ b/src/main/java/apijson/framework/javax/BaseModel.java @@ -0,0 +1,21 @@ +/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +/**base model for reduce model codes + * @author Lemon + * @use extends BaseModel + */ +public abstract class BaseModel extends apijson.framework.BaseModel {} diff --git a/src/main/java/apijson/framework/javax/package-info.java b/src/main/java/apijson/framework/javax/package-info.java new file mode 100755 index 0000000..b888b35 --- /dev/null +++ b/src/main/java/apijson/framework/javax/package-info.java @@ -0,0 +1,8 @@ +/** + * 服务端框架,兼容 JDK 1.8~16,使用 javax.servlet + */ +/** + * @author Lemon + * + */ +package apijson.framework.javax; \ No newline at end of file From d6f9bef18a273da66bae3644cbdf736922669583 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sat, 15 Feb 2025 23:46:53 +0800 Subject: [PATCH 36/59] =?UTF-8?q?=E6=89=93=E5=8C=85=E7=94=A8=E7=9A=84=20JD?= =?UTF-8?q?K=2017=20=E6=94=B9=E4=B8=BA=201.8=EF=BC=8C=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E4=BD=8E=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jitpack.yml | 6 ------ pom.xml | 10 ++++------ 2 files changed, 4 insertions(+), 12 deletions(-) delete mode 100644 jitpack.yml diff --git a/jitpack.yml b/jitpack.yml deleted file mode 100644 index 9e42c42..0000000 --- a/jitpack.yml +++ /dev/null @@ -1,6 +0,0 @@ -jdk: - - openjdk17 - -before_install: - - sdk install java 17.0.6-open - - sdk use java 17.0.6-open diff --git a/pom.xml b/pom.xml index 7be952b..0c77b98 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 7.1.5 + 7.1.7 jar APIJSONFramework @@ -14,10 +14,8 @@ UTF-8 UTF-8 - 17 + 1.8 UTF-8 - 17 - 17 @@ -90,8 +88,8 @@ maven-compiler-plugin 3.12.1 - 17 - 17 + 1.8 + 1.8 From c07cf7a0cb9cc15b47fa768beb6c4379f93ac4e9 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sat, 15 Feb 2025 23:51:20 +0800 Subject: [PATCH 37/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=207.5.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0c77b98..be54bb9 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ com.github.Tencent APIJSON - 7.1.0 + 7.5.5 com.github.APIJSON From c7bbf6e953e0fec892098f7e2ef45c6010784c6f Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 16 Feb 2025 00:01:42 +0800 Subject: [PATCH 38/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20apijson-column=202.1?= =?UTF-8?q?.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index be54bb9..6774f87 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ com.github.APIJSON apijson-column - 2.1.0 + 2.1.5 From 53dd10f021cd366c000b1c3f9ca3f6413f6df800 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 16 Feb 2025 21:45:35 +0800 Subject: [PATCH 39/59] =?UTF-8?q?jakarta.servlet-api=20=E4=BB=8E=E5=9F=BA?= =?UTF-8?q?=E4=BA=8E=20JDK=2011=20=E7=9A=84=206.0.0=20=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=9F=BA=E4=BA=8E=20JDK=201.8=20=E7=9A=84=204.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- src/main/java/apijson/framework/javax/APIJSONSQLConfig.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 6774f87..c9fb440 100644 --- a/pom.xml +++ b/pom.xml @@ -23,8 +23,7 @@ jakarta.servlet jakarta.servlet-api - 6.0.0 - provided + 4.0.3 @@ -32,6 +31,7 @@ javax.servlet javax.servlet-api 4.0.1 + provided diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java index 07784e8..d9eac34 100755 --- a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java @@ -51,7 +51,7 @@ public class APIJSONSQLConfig extends AbstractSQLConfig { APIJSON_CREATOR = new APIJSONCreator<>(); - SIMPLE_CALLBACK = new SimpleCallback<>() { + SIMPLE_CALLBACK = new SimpleCallback() { @Override public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { From 6cfc35aeefe02a8dbfc4667cc8e9be01efe9a082 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 16 Feb 2025 22:30:41 +0800 Subject: [PATCH 40/59] =?UTF-8?q?jakarta.servlet-api=20=E4=BB=8E=E5=9F=BA?= =?UTF-8?q?=E4=BA=8E=20JDK=201.8=20=E7=9A=84=204.0.3=20=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=9F=BA=E4=BA=8E=20JDK=209=20=E7=9A=84=205.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 3 ++- src/main/java/apijson/framework/APIJSONSQLConfig.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index c9fb440..8680544 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,8 @@ jakarta.servlet jakarta.servlet-api - 4.0.3 + 5.0.0 + provided diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index af6e888..59392ce 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -54,9 +54,9 @@ public class APIJSONSQLConfig extends AbstractSQLConfig { // TABLE_KEY_MAP.put(User.class.getSimpleName(), "apijson_user"); // TABLE_KEY_MAP.put(Privacy.class.getSimpleName(), "apijson_privacy"); - APIJSON_CREATOR = new APIJSONCreator<>(); + APIJSON_CREATOR = new APIJSONCreator(); - SIMPLE_CALLBACK = new SimpleCallback<>() { + SIMPLE_CALLBACK = new SimpleCallback() { @Override public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { From df9ca577411b248f642c8ace72252925db858186 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 6 Apr 2025 23:50:21 +0800 Subject: [PATCH 41/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=208=20?= =?UTF-8?q?=E5=92=8C=20MySQL-JDBC=209.2=EF=BC=8C=E7=A7=BB=E9=99=A4=20fastj?= =?UTF-8?q?son=EF=BC=8C=E6=95=B4=E5=90=88=20apijson-column=EF=BC=8C?= =?UTF-8?q?=E6=9A=82=E6=97=B6=E7=A7=BB=E9=99=A4=20UnitAuto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +- pom.xml | 31 +- .../apijson/framework/APIJSONApplication.java | 10 +- .../apijson/framework/APIJSONController.java | 303 ++++---- .../apijson/framework/APIJSONCreator.java | 16 +- .../framework/APIJSONFunctionParser.java | 723 +++++++++--------- .../framework/APIJSONObjectParser.java | 18 +- .../java/apijson/framework/APIJSONParser.java | 76 +- .../apijson/framework/APIJSONSQLConfig.java | 67 +- .../apijson/framework/APIJSONSQLExecutor.java | 37 +- .../apijson/framework/APIJSONVerifier.java | 249 +++--- .../java/apijson/framework/BaseModel.java | 16 +- .../java/apijson/framework/ColumnUtil.java | 445 +++++++++++ .../framework/javax/APIJSONApplication.java | 11 +- .../framework/javax/APIJSONController.java | 175 ++--- .../framework/javax/APIJSONCreator.java | 16 +- .../javax/APIJSONFunctionParser.java | 558 +++++++------- .../framework/javax/APIJSONObjectParser.java | 16 +- .../framework/javax/APIJSONParser.java | 48 +- .../framework/javax/APIJSONSQLConfig.java | 65 +- .../framework/javax/APIJSONSQLExecutor.java | 37 +- .../framework/javax/APIJSONVerifier.java | 268 ++++--- .../apijson/framework/javax/ColumnUtil.java | 31 + 23 files changed, 1882 insertions(+), 1342 deletions(-) create mode 100644 src/main/java/apijson/framework/ColumnUtil.java mode change 100755 => 100644 src/main/java/apijson/framework/javax/APIJSONFunctionParser.java create mode 100644 src/main/java/apijson/framework/javax/ColumnUtil.java diff --git a/README.md b/README.md index 42144e6..ad8aa90 100644 --- a/README.md +++ b/README.md @@ -74,14 +74,14 @@ https://github.com/APIJSON/APIJSON-Demo/blob/master/APIJSON-Java-Server/APIJSOND ## 初始化 ## Initialization -#### 1.在你项目的主程序启动类 Application 的 static {} 代码块配置 APIJSONApplication.DEFAULT_APIJSON_CREATOR,至少重写 createSQLConfig 方法返回你自己继承 APIJSONSQLConfig 的子类 -#### 1.Configure APIJSONApplication.DEFAULT_APIJSON_CREATOR in static {} of your Application, at least override createSQLConfig method and return your SQLConfig extends APIJSONSQLConfig. +#### 1.在你项目的主程序启动类 Application 的 static {} 代码块配置 APIJSONApplication.DEFAULT_APIJSON_CREATOR,至少重写 createSQLConfig 方法返回你自己继承 APIJSONSQLConfig 的子类 +#### 1.Configure APIJSONApplication.DEFAULT_APIJSON_CREATOR in static {} of your Application, at least override createSQLConfig method and return your APIJSONSQLConfig extends APIJSONSQLConfig. ```java static { - APIJSONApplication.DEFAULT_APIJSON_CREATOR = new APIJSONCreator() { + APIJSONApplication.DEFAULT_APIJSON_CREATOR = new APIJSONCreator() { @Override - public SQLConfig createSQLConfig() { + public DemoSQLConfig createSQLConfig() { return new DemoSQLConfig(); } }; diff --git a/pom.xml b/pom.xml index 8680544..16872e2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 7.1.7 + 7.2.0 jar APIJSONFramework @@ -35,29 +35,18 @@ provided - - com.alibaba - fastjson - 1.2.83 - - com.github.Tencent APIJSON - 7.5.5 - - - com.github.APIJSON - apijson-column - 2.1.5 + 8.0.0.0 com.mysql mysql-connector-j - 8.4.0 + 9.2.0 org.postgresql @@ -66,20 +55,6 @@ - - - - com.github.TommyLemon - unitauto-java - 3.0.5 - - - com.github.TommyLemon - unitauto-jar - 3.0.5 - - - diff --git a/src/main/java/apijson/framework/APIJSONApplication.java b/src/main/java/apijson/framework/APIJSONApplication.java index 239c072..5d64ae1 100755 --- a/src/main/java/apijson/framework/APIJSONApplication.java +++ b/src/main/java/apijson/framework/APIJSONApplication.java @@ -15,6 +15,8 @@ package apijson.framework; import java.rmi.ServerException; +import java.util.List; +import java.util.Map; import apijson.Log; import apijson.NotNull; @@ -30,7 +32,7 @@ public class APIJSONApplication { public static final String TAG = "APIJSONApplication"; @NotNull - public static APIJSONCreator DEFAULT_APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> DEFAULT_APIJSON_CREATOR; static { DEFAULT_APIJSON_CREATOR = new APIJSONCreator<>(); } @@ -56,7 +58,8 @@ public static void init(boolean shutdownWhenServerError) throws Exception { * @return * @throws Exception */ - public static void init(@NotNull APIJSONCreator creator) throws Exception { + public static , L extends List> void init( + @NotNull APIJSONCreator creator) throws Exception { init(true, creator); } /**初始化,加载所有配置并校验 @@ -65,7 +68,8 @@ public static void init(@NotNull APIJSONCreator creator) t * @return * @throws Exception */ - public static void init(boolean shutdownWhenServerError, @NotNull APIJSONCreator creator) throws Exception { + public static , L extends List> void init( + boolean shutdownWhenServerError, @NotNull APIJSONCreator creator) throws Exception { System.out.println("\n\n\n\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON 开始启动 >>>>>>>>>>>>>>>>>>>>>>>>\n"); DEFAULT_APIJSON_CREATOR = creator; diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index 567ffd5..2f191fa 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -14,45 +14,20 @@ package apijson.framework; -import static apijson.RequestMethod.DELETE; -import static apijson.RequestMethod.GET; -import static apijson.RequestMethod.GETS; -import static apijson.RequestMethod.HEAD; -import static apijson.RequestMethod.HEADS; -import static apijson.RequestMethod.POST; -import static apijson.RequestMethod.PUT; -import static apijson.RequestMethod.CRUD; -import static apijson.framework.APIJSONConstant.ACCESS_; -import static apijson.framework.APIJSONConstant.METHODS; -import static apijson.framework.APIJSONConstant.DEFAULTS; -import static apijson.framework.APIJSONConstant.FORMAT; -import static apijson.framework.APIJSONConstant.FUNCTION_; -import static apijson.framework.APIJSONConstant.REQUEST_; -import static apijson.framework.APIJSONConstant.VERSION; -import static apijson.framework.APIJSONConstant.VISITOR_; -import static apijson.framework.APIJSONConstant.VISITOR_ID; - -import java.lang.reflect.Method; -import java.rmi.ServerException; -import java.util.Map; +import apijson.*; +import apijson.orm.AbstractParser; +import apijson.orm.Parser; +import apijson.orm.Visitor; -import jakarta.servlet.AsyncContext; -import jakarta.servlet.ServletResponse; -import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpSession; -import com.alibaba.fastjson.JSONObject; +import java.rmi.ServerException; +import java.util.List; +import java.util.Map; -import apijson.JSON; -import apijson.Log; -import apijson.NotNull; -import apijson.RequestMethod; -import apijson.StringUtil; -import apijson.orm.AbstractParser; -import apijson.orm.Parser; -import apijson.orm.Visitor; -import unitauto.MethodUtil; -import unitauto.MethodUtil.InterfaceProxy; +import static apijson.JSON.toJSONString; +import static apijson.RequestMethod.*; +import static apijson.framework.APIJSONConstant.*; /**APIJSON base controller,建议在子项目被 @RestController 注解的类继承它或通过它的实例调用相关方法 @@ -62,47 +37,42 @@ *
3.调试方便 - 建议使用 APIAuto-机器学习自动化接口管理工具(https://github.com/TommyLemon/APIAuto) * @author Lemon */ -public class APIJSONController { +public class APIJSONController, L extends List> { public static final String TAG = "APIJSONController"; - + @NotNull - public static APIJSONCreator APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { - APIJSON_CREATOR = new APIJSONCreator<>(); + APIJSON_CREATOR = new APIJSONCreator(); } - + public String getRequestURL() { return null; } - public Parser newParser(HttpSession session, RequestMethod method) { + public APIJSONParser newParser(HttpSession session, RequestMethod method) { @SuppressWarnings("unchecked") - Parser parser = (Parser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); parser.setMethod(method); - if (parser instanceof APIJSONParser) { - ((APIJSONParser) parser).setSession(session); - } - // 可以更方便地通过日志排查错误 - if (parser instanceof AbstractParser) { - ((AbstractParser) parser).setRequestURL(getRequestURL()); - } + parser.setSession(session); + parser.setRequestURL(getRequestURL()); return parser; } public String parse(RequestMethod method, String request, HttpSession session) { return newParser(session, method).parse(request); } - + public String parseByTag(RequestMethod method, String tag, Map params, String request, HttpSession session) { - - JSONObject req = AbstractParser.wrapRequest(method, tag, JSON.parseObject(request), false); + APIJSONParser parser = newParser(null, null); + M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false, (JSONCreator) APIJSON_CREATOR); if (req == null) { - req = new JSONObject(true); + req = JSON.createJSONObject(); } if (params != null && params.isEmpty() == false) { req.putAll(params); } - + return newParser(session, method).parse(req); } @@ -118,9 +88,12 @@ public String crud(String method, String request, HttpSession session) { if (METHODS.contains(method)) { return parse(RequestMethod.valueOf(method.toUpperCase()), request, session); } - - return APIJSONParser.newErrorResult(new IllegalArgumentException("URL 路径 /{method} 中 method 值 " + method - + " 错误!只允许 " + METHODS + " 中的一个!")).toJSONString(); + + Parser parser = newParser(null, null); + return toJSONString(parser.newErrorResult( + new IllegalArgumentException("URL 路径 /{method} 中 method 值 " + + method + " 错误!只允许 " + METHODS + " 中的一个!") + )); } /**获取 @@ -192,7 +165,7 @@ public String put(String request, HttpSession session) { public String delete(String request, HttpSession session) { return parse(DELETE, request, session); } - + /**支持全局事物、批量执行多条语句 * @param request 只用String,避免encode后未decode * @param session @@ -207,8 +180,8 @@ public String crud(String request, HttpSession session) { //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - + + /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一些路由解析性能来提升一点开发效率 * @param method * @param tag @@ -221,12 +194,15 @@ public String crudByTag(String method, String tag, Map params, S if (METHODS.contains(method)) { return parseByTag(RequestMethod.valueOf(method.toUpperCase()), tag, params, request, session); } - - return APIJSONParser.newErrorResult(new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + method - + " 错误!只允许 " + METHODS + " 中的一个!")).toJSONString(); + + Parser parser = newParser(null, null); + return toJSONString(parser.newErrorResult( + new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + + method + " 错误!只允许 " + METHODS + " 中的一个!") + )); } - + // /**获取列表 // * @param request 只用String,避免encode后未decode // * @param session @@ -234,7 +210,7 @@ public String crudByTag(String method, String tag, Map params, S // * @see {@link RequestMethod#GET} // */ // public String listByTag(String tag, String request, HttpSession session) { -// return parseByTag(GET, tag + JSONRequest.KEY_ARRAY, request, session); +// return parseByTag(GET, tag + apijson.JSONObject.KEY_ARRAY, request, session); // } /**获取 @@ -246,7 +222,7 @@ public String crudByTag(String method, String tag, Map params, S public String getByTag(String tag, Map params, String request, HttpSession session) { return parseByTag(GET, tag, params, request, session); } - + /**计数 * @param request 只用String,避免encode后未decode @@ -317,63 +293,64 @@ public String deleteByTag(String tag, Map params, String request * @return * @see *
-		{
-			"type": "ALL",  //重载对象,ALL, FUNCTION, REQUEST, ACCESS,非必须
-			"phone": "13000082001",
-			"verify": "1234567" //验证码,对应类型为 Verify.TYPE_RELOAD
-		}
+	{
+	"type": "ALL",  //重载对象,ALL, FUNCTION, REQUEST, ACCESS,非必须
+	"phone": "13000082001",
+	"verify": "1234567" //验证码,对应类型为 Verify.TYPE_RELOAD
+	}
 	 * 
*/ - public JSONObject reload(String type) { - JSONObject result = APIJSONParser.newSuccessResult(); + public M reload(String type) { + Parser parser = newParser(null, null); + M result = parser.newSuccessResult(); boolean reloadAll = StringUtil.isEmpty(type, true) || "ALL".equals(type); if (reloadAll || "ACCESS".equals(type)) { try { - if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_ROLE == false) { - throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_ROLE == false 时不支持校验角色权限!" + - "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_ROLE = true !"); - } - - if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { - result.put(ACCESS_, APIJSONVerifier.initAccess()); - } - } catch (ServerException e) { + if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_ROLE == false) { + throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_ROLE == false 时不支持校验角色权限!" + + "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_ROLE = true !"); + } + + if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { + result.put(ACCESS_, APIJSONVerifier.initAccess()); + } + } catch (ServerException e) { e.printStackTrace(); - result.put(ACCESS_, APIJSONParser.newErrorResult(e)); + result.put(ACCESS_, parser.newErrorResult(e)); } } if (reloadAll || "FUNCTION".equals(type)) { try { - if (reloadAll == false && APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION == false) { - throw new UnsupportedOperationException("AbstractFunctionParser.ENABLE_REMOTE_FUNCTION" + - " == false 时不支持远程函数!如需支持则设置 AbstractFunctionParser.ENABLE_REMOTE_FUNCTION = true !"); - } - - if (APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION) { - result.put(FUNCTION_, APIJSONFunctionParser.init()); - } + if (reloadAll == false && APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION == false) { + throw new UnsupportedOperationException("AbstractFunctionParser.ENABLE_REMOTE_FUNCTION" + + " == false 时不支持远程函数!如需支持则设置 AbstractFunctionParser.ENABLE_REMOTE_FUNCTION = true !"); + } + + if (APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION) { + result.put(FUNCTION_, APIJSONFunctionParser.init()); + } } catch (ServerException e) { e.printStackTrace(); - result.put(FUNCTION_, APIJSONParser.newErrorResult(e)); + result.put(FUNCTION_, parser.newErrorResult(e)); } } if (reloadAll || "REQUEST".equals(type)) { try { - if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_CONTENT == false) { - throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_CONTENT == false 时不支持校验请求传参内容!" + - "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_CONTENT = true !"); - } - - if (APIJSONVerifier.ENABLE_VERIFY_CONTENT) { - result.put(REQUEST_, APIJSONVerifier.initRequest()); - } + if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_CONTENT == false) { + throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_CONTENT == false 时不支持校验请求传参内容!" + + "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_CONTENT = true !"); + } + + if (APIJSONVerifier.ENABLE_VERIFY_CONTENT) { + result.put(REQUEST_, APIJSONVerifier.initRequest()); + } } catch (ServerException e) { e.printStackTrace(); - result.put(REQUEST_, APIJSONParser.newErrorResult(e)); + result.put(REQUEST_, parser.newErrorResult(e)); } } @@ -382,11 +359,11 @@ public JSONObject reload(String type) { /**用户登录 - * @param session - * @param visitor - * @param version - * @param format - * @param defaults + * @param session + * @param visitor + * @param version + * @param format + * @param defaults * @return 返回类型设置为 Object 是为了子类重写时可以有返回值,避免因为冲突而另写一个有返回值的登录方法 */ public Object login(@NotNull HttpSession session, Visitor visitor, Integer version, Boolean format, JSONObject defaults) { @@ -412,62 +389,62 @@ public Object logout(@NotNull HttpSession session) { - public JSONObject listMethod(String request) { - if (Log.DEBUG == false) { - return APIJSONParser.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!")); - } - return MethodUtil.listMethod(request); - } - - public void invokeMethod(String request, HttpServletRequest servletRequest) { - AsyncContext asyncContext = servletRequest.startAsync(); - - final boolean[] called = new boolean[] { false }; - MethodUtil.Listener listener = new MethodUtil.Listener() { - - @Override - public void complete(JSONObject data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { - - ServletResponse servletResponse = called[0] ? null : asyncContext.getResponse(); - if (servletResponse == null) { // || servletResponse.isCommitted()) { // isCommitted 在高并发时可能不准,导致写入多次 - Log.w(TAG, "invokeMethod listener.complete servletResponse == null || servletResponse.isCommitted() >> return;"); - return; - } - called[0] = true; - - servletResponse.setCharacterEncoding(servletRequest.getCharacterEncoding()); - servletResponse.setContentType(servletRequest.getContentType()); - servletResponse.getWriter().println(data); - asyncContext.complete(); - } - }; - - if (Log.DEBUG == false) { - try { - listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!"))); - } - catch (Exception e1) { - e1.printStackTrace(); - asyncContext.complete(); - } - - return; - } - - - try { - MethodUtil.invokeMethod(request, null, listener); - } - catch (Exception e) { - Log.e(TAG, "invokeMethod try { JSONObject req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); - try { - listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(e)); - } - catch (Exception e1) { - e1.printStackTrace(); - asyncContext.complete(); - } - } - } +// public JSONObject listMethod(String request) { +// if (Log.DEBUG == false) { +// return APIJSONParser.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!")); +// } +// return MethodUtil.listMethod(request); +// } +// +// public void invokeMethod(String request, HttpServletRequest servletRequest) { +// AsyncContext asyncContext = servletRequest.startAsync(); +// +// final boolean[] called = new boolean[] { false }; +// MethodUtil.Listener listener = new MethodUtil.Listener() { +// +// @Override +// public void complete(JSONObject data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { +// +// ServletResponse servletResponse = called[0] ? null : asyncContext.getResponse(); +// if (servletResponse == null) { // || servletResponse.isCommitted()) { // isCommitted 在高并发时可能不准,导致写入多次 +// Log.w(TAG, "invokeMethod listener.complete servletResponse == null || servletResponse.isCommitted() >> return;"); +// return; +// } +// called[0] = true; +// +// servletResponse.setCharacterEncoding(servletRequest.getCharacterEncoding()); +// servletResponse.setContentType(servletRequest.getContentType()); +// servletResponse.getWriter().println(data); +// asyncContext.complete(); +// } +// }; +// +// if (Log.DEBUG == false) { +// try { +// listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!"))); +// } +// catch (Exception e1) { +// e1.printStackTrace(); +// asyncContext.complete(); +// } +// +// return; +// } +// +// +// try { +// MethodUtil.invokeMethod(request, null, listener); +// } +// catch (Exception e) { +// Log.e(TAG, "invokeMethod try { JSONObject req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); +// try { +// listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(e)); +// } +// catch (Exception e1) { +// e1.printStackTrace(); +// asyncContext.complete(); +// } +// } +// } } diff --git a/src/main/java/apijson/framework/APIJSONCreator.java b/src/main/java/apijson/framework/APIJSONCreator.java index 9ae86c6..5845433 100644 --- a/src/main/java/apijson/framework/APIJSONCreator.java +++ b/src/main/java/apijson/framework/APIJSONCreator.java @@ -23,34 +23,38 @@ import apijson.orm.Verifier; import apijson.orm.VerifierCreator; +import java.util.List; +import java.util.Map; + /**APIJSON相关创建器 * @author Lemon */ -public class APIJSONCreator implements ParserCreator, VerifierCreator, SQLCreator { +public class APIJSONCreator, L extends List> + implements ParserCreator, VerifierCreator, SQLCreator { @Override - public Parser createParser() { + public APIJSONParser createParser() { return new APIJSONParser<>(); } @Override - public FunctionParser createFunctionParser() { + public APIJSONFunctionParser createFunctionParser() { return new APIJSONFunctionParser<>(); } @Override - public Verifier createVerifier() { + public APIJSONVerifier createVerifier() { return new APIJSONVerifier<>(); } @Override - public SQLConfig createSQLConfig() { + public APIJSONSQLConfig createSQLConfig() { return new APIJSONSQLConfig<>(); } @Override - public SQLExecutor createSQLExecutor() { + public APIJSONSQLExecutor createSQLExecutor() { return new APIJSONSQLExecutor<>(); } diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index 24a03e4..c4a76f3 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -16,22 +16,16 @@ import apijson.*; import apijson.orm.AbstractFunctionParser; -import apijson.orm.JSONRequest; import apijson.orm.script.JavaScriptExecutor; import apijson.orm.script.ScriptExecutor; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import jakarta.servlet.http.HttpSession; -import unitauto.MethodUtil; -import unitauto.MethodUtil.Argument; +//import unitauto.MethodUtil; +//import unitauto.MethodUtil.Argument; -import java.io.IOException; import java.rmi.ServerException; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import static apijson.JSON.*; import static apijson.RequestMethod.*; import static apijson.framework.APIJSONConstant.FUNCTION_; import static apijson.framework.APIJSONConstant.SCRIPT_; @@ -40,11 +34,11 @@ /**可远程调用的函数类 * @author Lemon */ -public class APIJSONFunctionParser extends AbstractFunctionParser { +public class APIJSONFunctionParser, L extends List> extends AbstractFunctionParser { public static final String TAG = "APIJSONFunctionParser"; @NotNull - public static APIJSONCreator APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; @NotNull public static final String[] ALL_METHODS; static { @@ -59,144 +53,147 @@ public APIJSONFunctionParser() { public APIJSONFunctionParser(HttpSession session) { this(null, null, 0, null, session); } - public APIJSONFunctionParser(RequestMethod method, String tag, int version, JSONObject curObj, HttpSession session) { + public APIJSONFunctionParser(RequestMethod method, String tag, int version, M curObj, HttpSession session) { super(method, tag, version, curObj); setSession(session); } + public HttpSession getSession() { return session; } - public APIJSONFunctionParser setSession(HttpSession session) { + public APIJSONFunctionParser setSession(HttpSession session) { this.session = session; return this; } @Override - public APIJSONFunctionParser setMethod(RequestMethod method) { + public APIJSONFunctionParser setMethod(RequestMethod method) { super.setMethod(method); return this; } @Override - public APIJSONFunctionParser setTag(String tag) { + public APIJSONFunctionParser setTag(String tag) { super.setTag(tag); return this; } @Override - public APIJSONFunctionParser setVersion(int version) { + public APIJSONFunctionParser setVersion(int version) { super.setVersion(version); return this; } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @return + * @return * @throws ServerException */ - public static JSONObject init() throws ServerException { + public static > M init() throws ServerException { return init(false); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @param shutdownWhenServerError - * @return + * @param shutdownWhenServerError + * @return * @throws ServerException */ - public static JSONObject init(boolean shutdownWhenServerError) throws ServerException { + public static > M init(boolean shutdownWhenServerError) throws ServerException { return init(shutdownWhenServerError, null); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @param creator - * @return + * @param creator + * @return * @throws ServerException */ - public static JSONObject init(APIJSONCreator creator) throws ServerException { + public static , L extends List> M init(APIJSONCreator creator) throws ServerException { return init(false, creator); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @param shutdownWhenServerError - * @param creator - * @return + * @param shutdownWhenServerError + * @param creator + * @return * @throws ServerException */ - public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + public static , L extends List> M init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return init(shutdownWhenServerError, creator, null); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @param shutdownWhenServerError - * @param creator + * @param shutdownWhenServerError + * @param creator * @param table 表内自定义数据过滤条件 - * @return + * @return * @throws ServerException */ @SuppressWarnings("unchecked") - public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + public static , L extends List> M init(boolean shutdownWhenServerError + , APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSON_CREATOR; } APIJSON_CREATOR = creator; boolean isAll = table == null || table.isEmpty(); - //JSONObject function = isAll ? new JSONRequest() : table; + //JSONRequest function = isAll ? JSON.createJSONObject() : table; //if (Log.DEBUG == false) { // function.put(APIJSONConstant.KEY_DEBUG, 0); //} - // - //JSONRequest functionItem = new JSONRequest(); + // + //JSONRequest functionItem = JSON.createJSONObject(); //functionItem.put(FUNCTION_, function); - // - //JSONObject script = new JSONRequest(); // isAll ? new JSONRequest() : table; - //script.put("simple", 0); - //if (Log.DEBUG == false) { - // script.put(APIJSONConstant.KEY_DEBUG, 0); - //} - // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 - //{ // name{}@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - //JSONRequest nameInAt = new JSONRequest(); - //nameInAt.put("from", "Function"); - //{ // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // JSONRequest fun = new JSONRequest(); - // fun.setColumn("name"); - // nameInAt.put("Function", fun); - //} // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - //script.put("name{}@", nameInAt); - //} // name{}@ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - //JSONRequest scriptItem = new JSONRequest(); - //scriptItem.put(SCRIPT_, script); - - JSONObject request = new JSONObject(); + // + //JSONRequest script = JSON.createJSONObject(); // isAll ? JSON.createJSONObject() : table; + //script.put("simple", 0); + //if (Log.DEBUG == false) { + // script.put(APIJSONConstant.KEY_DEBUG, 0); + //} + // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 + //{ // name{}@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + //JSONRequest nameInAt = JSON.createJSONObject(); + //nameInAt.put("from", "Function"); + //{ // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // JSONRequest fun = JSON.createJSONObject(); + // fun.setColumn("name"); + // nameInAt.put("Function", fun); + //} // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + //script.put("name{}@", nameInAt); + //} // name{}@ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + //JSONRequest scriptItem = JSON.createJSONObject(); + //scriptItem.put(SCRIPT_, script); + + M request = JSON.createJSONObject(); //request.putAll(functionItem.toArray(0, 0, FUNCTION_)); //request.putAll(scriptItem.toArray(0, 0, SCRIPT_)); - // 可以用它,因为 Function 表必须存在,没有绕过校验的配置 // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 - { // [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONRequest item = new JSONRequest(); - - { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONObject function = isAll ? new JSONRequest() : table; - if (! Log.DEBUG) { - function.put(APIJSONConstant.KEY_DEBUG, 0); - } - item.put(FUNCTION_, function); - } // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - if (ENABLE_SCRIPT_FUNCTION) { // Script <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONRequest script = new JSONRequest(); - script.put("name@", "/Function/name"); - script.put("simple", 0); - item.put(SCRIPT_, script); - } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - request.putAll(item.toArray(0, 0)); - } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - - JSONObject response = creator.createParser().setMethod(GET).setNeedVerify(true).parseResponse(request); + // 可以用它,因为 Function 表必须存在,没有绕过校验的配置 // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 + { // [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + M item = JSON.createJSONObject(); + + { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + M function = isAll ? JSON.createJSONObject() : table; + if (! Log.DEBUG) { + function.put(APIJSONConstant.KEY_DEBUG, 0); + } + item.put(FUNCTION_, function); + } // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + if (ENABLE_SCRIPT_FUNCTION) { // Script <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + M script = JSON.createJSONObject(); + script.put("name@", "/Function/name"); + script.put("simple", 0); + item.put(SCRIPT_, script); + } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + request.put("[]", item); + request.put(apijson.JSONRequest.KEY_COUNT, 0); + } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + + M response = creator.createParser().setMethod(GET).setNeedVerify(true).parseResponse(request); if (! JSONResponse.isSuccess(response)) { - onServerError("\n\n\n\n\n !!!! 查询远程函数异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n", shutdownWhenServerError); + onServerError("\n\n\n\n\n !!!! 查询远程函数异常 !!!\n" + response.get(JSONResponse.KEY_MSG) + "\n\n\n\n\n", shutdownWhenServerError); } - + //初始化默认脚本引擎,避免增量 if (isAll || SCRIPT_EXECUTOR_MAP.get("js") == null) { ScriptExecutor javaScriptExecutor = new JavaScriptExecutor(); @@ -206,37 +203,37 @@ public static JSONObject init(boolean shutdownWhenServerError SCRIPT_EXECUTOR_MAP.put("javascript", javaScriptExecutor); } - Map scriptMap = new HashMap<>(); - JSONArray scriptList = response.getJSONArray("[]"); // response.getJSONArray(SCRIPT_ + "[]"); - if (scriptList != null && ! scriptList.isEmpty()) { - //if (isAll) { - // SCRIPT_MAP = new LinkedHashMap<>(); - //} - Map newMap = new LinkedHashMap<>(); - - for (int i = 0; i < scriptList.size(); i++) { - JSONObject item = scriptList.getJSONObject(i); - item = item == null ? null : item.getJSONObject(SCRIPT_); - if (item == null) { // 关联查不到很正常 - continue; - } - - String n = item.getString("name"); - if (! StringUtil.isName(n)) { - onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); - } - - String s = item.getString("script"); - if (StringUtil.isEmpty(s, true)) { - onServerError("Script 表字段 script 的值 " + s + " 不合法!不能为空!", shutdownWhenServerError); - } - newMap.put(n, item); - } - - scriptMap = newMap; - } - - JSONArray list = scriptList; // response.getJSONArray(FUNCTION_ + "[]"); + Map scriptMap = new HashMap<>(); + L scriptList = (L) JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); + if (scriptList != null && ! scriptList.isEmpty()) { + //if (isAll) { + // SCRIPT_MAP = new LinkedHashMap<>(); + //} + Map newMap = new LinkedHashMap<>(); + + for (int i = 0; i < scriptList.size(); i++) { + M item = (M) JSON.get(scriptList, i); + item = item == null ? null : (M) JSON.get(item, SCRIPT_); + if (item == null) { // 关联查不到很正常 + continue; + } + + String n = getString(item, "name"); + if (! StringUtil.isName(n)) { + onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); + } + + String s = getString(item, "script"); + if (StringUtil.isEmpty(s, true)) { + onServerError("Script 表字段 script 的值 " + s + " 不合法!不能为空!", shutdownWhenServerError); + } + newMap.put(n, item); + } + + scriptMap = newMap; + } + + L list = scriptList; // response.getJSONArray(FUNCTION_ + "[]"); int size = list == null ? 0 : list.size(); if (isAll && size <= 0) { Log.w(TAG, "init isAll && size <= 0,,没有可用的远程函数"); @@ -247,16 +244,16 @@ public static JSONObject init(boolean shutdownWhenServerError if (isAll) { // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! 如果要做成完全校验通过才更新 FUNCTION_MAP,但又不提供 忽略校验 参数,似乎无解 FUNCTION_MAP = new LinkedHashMap<>(); } - Map newMap = FUNCTION_MAP; // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! new LinkedHashMap<>(); + Map> newMap = FUNCTION_MAP; // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! new LinkedHashMap<>(); for (int i = 0; i < size; i++) { - JSONObject item = list.getJSONObject(i); - item = item == null ? null : item.getJSONObject(FUNCTION_); + M item = JSON.get(list, i); + item = item == null ? null : JSON.get(item, FUNCTION_); if (item == null) { continue; } - JSONObject demo = JSON.parseObject(item.getString("demo")); + M demo = JSON.parseObject(getString(item, "demo")); if (demo == null) { try { onServerError("字段 demo 的值必须为合法且非 null 的 JSONObejct 字符串!", shutdownWhenServerError); @@ -264,24 +261,25 @@ public static JSONObject init(boolean shutdownWhenServerError throw new RuntimeException(e); } } - String name = item.getString("name"); - // demo.put(JSONRequest.KEY_TAG, item.getString(JSONRequest.KEY_TAG)); - // demo.put(JSONRequest.KEY_VERSION, item.getInteger(JSONRequest.KEY_VERSION)); + String name = getString(item, "name"); + // demo.put(apijson.JSONRequest.KEY_TAG, getString(item, apijson.JSONRequest.KEY_TAG)); + // demo.put(apijson.JSONRequest.KEY_VERSION, item.getInteger(apijson.JSONRequest.KEY_VERSION)); //加载脚本 if (item.get("language") != null) { - String language = item.getString("language"); + String language = getString(item, "language"); // if (SCRIPT_EXECUTOR_MAP.get(language) == null) { - // onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); + // onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); // } //脚本语言执行 if (SCRIPT_EXECUTOR_MAP.containsKey(language)){ ScriptExecutor scriptExecutor = SCRIPT_EXECUTOR_MAP.get(language); - scriptExecutor.load(name, scriptMap.get(name).getString("script")); + M script = scriptMap.get(name); + scriptExecutor.load(name, getString(script, "script")); } } - newMap.put(name, item); // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! + newMap.put(name, item); // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! - String[] methods = StringUtil.split(item.getString("methods")); + String[] methods = StringUtil.split(getString(item, "methods")); if (methods == null || methods.length <= 0) { methods = ALL_METHODS; @@ -289,15 +287,15 @@ public static JSONObject init(boolean shutdownWhenServerError if (demo != null){ if (! demo.containsKey("result()")) { - demo.put("result()", getFunctionCall(name, item.getString("arguments"))); + demo.put("result()", getFunctionCall(name, getString(item, "arguments"))); } - demo.put(JSONRequest.KEY_TAG, item.get(JSONRequest.KEY_TAG)); - demo.put(JSONRequest.KEY_VERSION, item.get(JSONRequest.KEY_VERSION)); + demo.put(apijson.JSONRequest.KEY_TAG, item.get(apijson.JSONRequest.KEY_TAG)); + demo.put(apijson.JSONRequest.KEY_VERSION, item.get(apijson.JSONRequest.KEY_VERSION)); } for (String method : methods) { - JSONObject r = APIJSON_CREATOR.createParser() - .setMethod(RequestMethod.valueOf(method)) + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + M r = parser.setMethod(RequestMethod.valueOf(method)) .setNeedVerify(false) .parseResponse(demo); @@ -311,7 +309,7 @@ public static JSONObject init(boolean shutdownWhenServerError } } - // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! + // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! // if (isAll) { // FUNCTION_MAP = newMap; // } @@ -327,7 +325,7 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE Log.e(TAG, "\n远程函数文档测试未通过!\n请新增 demo 里的函数,或修改 Function 表里的 demo 为已有的函数示例!\n保证前端看到的远程函数文档是正确的!!!\n\n原因:\n" + msg); if (shutdown) { - System.exit(1); + System.exit(1); } else { throw new ServerException(msg); } @@ -337,33 +335,33 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE public static void test() throws Exception { test(null); } - public static void test(APIJSONFunctionParser function) throws Exception { + public static , L extends List> void test(APIJSONFunctionParser function) throws Exception { int i0 = 1, i1 = -2; - JSONObject request = new JSONObject(); + M request = JSON.createJSONObject(); request.put("id", 10); request.put("i0", i0); request.put("i1", i1); JSONArray arr = new JSONArray(); - arr.add(new JSONObject()); + arr.add(JSON.createJSONObject()); request.put("arr", arr); - JSONArray array = new JSONArray(); - array.add(1);//new JSONObject()); - array.add(2);//new JSONObject()); - array.add(4);//new JSONObject()); - array.add(10);//new JSONObject()); + L array = JSON.createJSONArray(); + array.add(1);//JSON.createJSONObject()); + array.add(2);//JSON.createJSONObject()); + array.add(4);//JSON.createJSONObject()); + array.add(10);//JSON.createJSONObject()); request.put("array", array); request.put("position", 1); request.put("@position", 0); request.put("key", "key"); - JSONObject object = new JSONObject(); + M object = JSON.createJSONObject(); object.put("key", "success"); request.put("object", object); if (function == null) { - function = new APIJSONFunctionParser(null, null, 1, null, null); + function = new APIJSONFunctionParser<>(null, null, 1, null, null); } // 等数据库 Function 表加上 plus 配置再过两个以上迭代(应该是到 5.0)后再取消注释 @@ -388,15 +386,15 @@ public static void test(APIJSONFunctionParser function) th /**获取远程函数的demo,如果没有就自动补全 * @param curObj * @return - * @throws ServerException + * @throws ServerException */ - public JSONObject getFunctionDemo(@NotNull JSONObject curObj) { - JSONObject demo = JSON.parseObject(curObj.getString("demo")); + public M getFunctionDemo(@NotNull M curObj) { + M demo = JSON.parseObject(getString(curObj, "demo")); if (demo == null) { - demo = new JSONObject(); + demo = JSON.createJSONObject(); } if (! demo.containsKey("result()")) { - demo.put("result()", getFunctionCall(curObj.getString("name"), curObj.getString("arguments"))); + demo.put("result()", getFunctionCall(getString(curObj, "name"), getString(curObj, "arguments"))); } return demo; } @@ -405,9 +403,9 @@ public JSONObject getFunctionDemo(@NotNull JSONObject curObj) { * @param curObj * @return */ - public String getFunctionDetail(@NotNull JSONObject curObj) { - return getFunctionCall(curObj.getString("name"), curObj.getString("arguments")) - + ": " + StringUtil.getTrimedString(curObj.getString("detail")); + public String getFunctionDetail(@NotNull M curObj) { + return getFunctionCall(getString(curObj, "name"), getString(curObj, "arguments")) + + ": " + StringUtil.trim(getString(curObj, "detail")); } /**获取函数调用代码 * @param name @@ -415,33 +413,33 @@ public String getFunctionDetail(@NotNull JSONObject curObj) { * @return */ private static String getFunctionCall(String name, String arguments) { - return name + "(" + StringUtil.getTrimedString(arguments) + ")"; + return name + "(" + StringUtil.trim(arguments) + ")"; } - public double plus(@NotNull JSONObject curObj, String i0, String i1) { - return curObj.getDoubleValue(i0) + curObj.getDoubleValue(i1); + public double plus(@NotNull M curObj, String i0, String i1) { + return getDoubleValue(curObj, i0) + getDoubleValue(curObj, i1); } - public double minus(@NotNull JSONObject curObj, String i0, String i1) { - return curObj.getDoubleValue(i0) - curObj.getDoubleValue(i1); + public double minus(@NotNull M curObj, String i0, String i1) { + return getDoubleValue(curObj, i0) - getDoubleValue(curObj, i1); } - public double multiply(@NotNull JSONObject curObj, String i0, String i1) { - return curObj.getDoubleValue(i0) * curObj.getDoubleValue(i1); + public double multiply(@NotNull M curObj, String i0, String i1) { + return getDoubleValue(curObj, i0) * getDoubleValue(curObj, i1); } - public double divide(@NotNull JSONObject curObj, String i0, String i1) { - return curObj.getDoubleValue(i0) / curObj.getDoubleValue(i1); + public double divide(@NotNull M curObj, String i0, String i1) { + return getDoubleValue(curObj, i0) / getDoubleValue(curObj, i1); } - public double plus(@NotNull JSONObject curObj, Number n0, Number n1) { + public double plus(@NotNull M curObj, Number n0, Number n1) { return n0.doubleValue() + n1.doubleValue(); } - public double minus(@NotNull JSONObject curObj, Number n0, Number n1) { + public double minus(@NotNull M curObj, Number n0, Number n1) { return n0.doubleValue() - n1.doubleValue(); } - public double multiply(@NotNull JSONObject curObj, Number n0, Number n1) { + public double multiply(@NotNull M curObj, Number n0, Number n1) { return n0.doubleValue() * n1.doubleValue(); } - public double divide(@NotNull JSONObject curObj, Number n0, Number n1) { + public double divide(@NotNull M curObj, Number n0, Number n1) { return n0.doubleValue() / n1.doubleValue(); } @@ -451,16 +449,16 @@ public double divide(@NotNull JSONObject curObj, Number n0, Number n1) { * @param array * @return */ - public boolean isArrayEmpty(@NotNull JSONObject curObj, String array) { - return BaseModel.isEmpty(curObj.getJSONArray(array)); + public boolean isArrayEmpty(@NotNull M curObj, String array) { + return BaseModel.isEmpty((Collection) getJSONArray(curObj, array)); } /**判断object是否为空 * @param curObj * @param object * @return */ - public boolean isObjectEmpty(@NotNull JSONObject curObj, String object) { - return BaseModel.isEmpty(curObj.getJSONObject(object)); + public boolean isObjectEmpty(@NotNull M curObj, String object) { + return BaseModel.isEmpty((Map) getJSONObject(curObj, object)); } //判断是否为空 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -471,13 +469,13 @@ public boolean isObjectEmpty(@NotNull JSONObject curObj, String object) { * @param value * @return */ - public boolean isContain(@NotNull JSONObject curObj, String array, String value) { + public boolean isContain(@NotNull M curObj, String array, String value) { //解决isContain((List) [82001,...], (Integer) 82001) == false及类似问题, list元素可能是从数据库查到的bigint类型的值 - // return BaseModel.isContain(curObj.getJSONArray(array), curObj.get(value)); + // return BaseModel.isContain(getJSONArray(curObj, array), curObj.get(value)); - //不用准确的的 curObj.getString(value).getClass() ,因为Long值转Integer崩溃,而且转成一种类型本身就和字符串对比效果一样了。 - List list = com.alibaba.fastjson.JSON.parseArray(curObj.getString(array), String.class); - return list != null && list.contains(curObj.getString(value)); + //不用准确的的 getString(curObj, value).getClass() ,因为Long值转Integer崩溃,而且转成一种类型本身就和字符串对比效果一样了。 + List list = JSON.parseArray(getString(curObj, array), String.class); + return list != null && list.contains(getString(curObj, value)); } /**判断object是否包含key * @param curObj @@ -485,8 +483,8 @@ public boolean isContain(@NotNull JSONObject curObj, String array, String value) * @param key * @return */ - public boolean isContainKey(@NotNull JSONObject curObj, String object, String key) { - return BaseModel.isContainKey(curObj.getJSONObject(object), curObj.getString(key)); + public boolean isContainKey(@NotNull M curObj, String object, String key) { + return BaseModel.isContainKey(getJSONObject(curObj, object), getString(curObj, key)); } /**判断object是否包含value * @param curObj @@ -494,8 +492,8 @@ public boolean isContainKey(@NotNull JSONObject curObj, String object, String ke * @param value * @return */ - public boolean isContainValue(@NotNull JSONObject curObj, String object, String value) { - return BaseModel.isContainValue(curObj.getJSONObject(object), curObj.get(value)); + public boolean isContainValue(@NotNull M curObj, String object, String value) { + return BaseModel.isContainValue(getJSONObject(curObj, object), curObj.get(value)); } //判断是否为包含 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -506,16 +504,16 @@ public boolean isContainValue(@NotNull JSONObject curObj, String object, String * @param array * @return */ - public int countArray(@NotNull JSONObject curObj, String array) { - return BaseModel.count(curObj.getJSONArray(array)); + public int countArray(@NotNull M curObj, String array) { + return BaseModel.count((Collection) getJSONArray(curObj, array)); } /**获取数量 * @param curObj * @param object * @return */ - public int countObject(@NotNull JSONObject curObj, String object) { - return BaseModel.count(curObj.getJSONObject(object)); + public int countObject(@NotNull M curObj, String object) { + return BaseModel.count((Map) getJSONObject(curObj, object)); } //获取集合长度 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -527,14 +525,14 @@ public int countObject(@NotNull JSONObject curObj, String object) { * @param position 支持直接传数字,例如 getFromArray(array,0) ;或者引用当前对象的值,例如 "@position": 0, "result()": "getFromArray(array,@position)" * @return */ - public Object getFromArray(@NotNull JSONObject curObj, String array, String position) { + public Object getFromArray(@NotNull M curObj, String array, String position) { int p; try { p = Integer.parseInt(position); } catch (Exception e) { - p = curObj.getIntValue(position); + p = getIntValue(curObj, position); } - return BaseModel.get(curObj.getJSONArray(array), p); + return BaseModel.get(getJSONArray(curObj, array), p); } /**获取 * @param curObj @@ -542,8 +540,8 @@ public Object getFromArray(@NotNull JSONObject curObj, String array, String posi * @param key * @return */ - public Object getFromObject(@NotNull JSONObject curObj, String object, String key) { - return BaseModel.get(curObj.getJSONObject(object), curObj.getString(key)); + public Object getFromObject(@NotNull M curObj, String object, String key) { + return BaseModel.get(getJSONObject(curObj, object), getString(curObj, key)); } //根据键获取值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -553,14 +551,14 @@ public Object getFromObject(@NotNull JSONObject curObj, String object, String ke * @param position 支持直接传数字,例如 getFromArray(array,0) ;或者引用当前对象的值,例如 "@position": 0, "result()": "getFromArray(array,@position)" * @return */ - public Object removeIndex(@NotNull JSONObject curObj, String position) { + public Object removeIndex(@NotNull M curObj, String position) { int p; try { p = Integer.parseInt(position); } catch (Exception e) { - p = curObj.getIntValue(position); + p = getIntValue(curObj, position); } - curObj.remove(p); + curObj.remove(p); return null; } /**移除 @@ -568,7 +566,7 @@ public Object removeIndex(@NotNull JSONObject curObj, String position) { * @param key * @return */ - public Object removeKey(@NotNull JSONObject curObj, String key) { + public Object removeKey(@NotNull M curObj, String key) { curObj.remove(key); return null; } @@ -582,40 +580,40 @@ public Object removeKey(@NotNull JSONObject curObj, String key) { * @param value * @return */ - public boolean booleanValue(@NotNull JSONObject curObj, String value) { - return curObj.getBooleanValue(value); + public boolean booleanValue(@NotNull M curObj, String value) { + return getBooleanValue(curObj, value); } /**获取非空值 * @param curObj * @param value * @return */ - public int intValue(@NotNull JSONObject curObj, String value) { - return curObj.getIntValue(value); + public int intValue(@NotNull M curObj, String value) { + return getIntValue(curObj, value); } /**获取非空值 * @param curObj * @param value * @return */ - public long longValue(@NotNull JSONObject curObj, String value) { - return curObj.getLongValue(value); + public long longValue(@NotNull M curObj, String value) { + return getLongValue(curObj, value); } /**获取非空值 * @param curObj * @param value * @return */ - public float floatValue(@NotNull JSONObject curObj, String value) { - return curObj.getFloatValue(value); + public float floatValue(@NotNull M curObj, String value) { + return getFloatValue(curObj, value); } /**获取非空值 * @param curObj * @param value * @return */ - public double doubleValue(@NotNull JSONObject curObj, String value) { - return curObj.getDoubleValue(value); + public double doubleValue(@NotNull M curObj, String value) { + return getDoubleValue(curObj, value); } //获取非基本类型对应基本类型的非空值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -625,166 +623,165 @@ public double doubleValue(@NotNull JSONObject curObj, String value) { * @param defaultValue * @return v == null ? curObj.get(defaultValue) : v */ - public Object getWithDefault(@NotNull JSONObject curObj, String value, String defaultValue) { - Object v = curObj.get(value); - return v == null ? curObj.get(defaultValue) : v; - } - - - - /**获取方法参数的定义 - * @param curObj - * @return - * @throws IOException - * @throws ClassNotFoundException - * @throws IllegalArgumentException - */ - public String getMethodArguments(@NotNull JSONObject curObj) throws IllegalArgumentException, ClassNotFoundException, IOException { - return getMethodArguments(curObj, "methodArgs"); - } - /**获取方法参数的定义 - * @param curObj - * @param methodArgsKey - * @return - * @throws IllegalArgumentException - * @throws ClassNotFoundException - * @throws IOException - */ - public String getMethodArguments(@NotNull JSONObject curObj, String methodArgsKey) throws IllegalArgumentException, ClassNotFoundException, IOException { - JSONObject obj = curObj.getJSONObject("request"); - String argsStr = obj == null ? null : obj.getString(methodArgsKey); - if (StringUtil.isEmpty(argsStr, true)) { - argsStr = curObj.getString(methodArgsKey); - } - List methodArgs = JSON.parseArray(removeComment(argsStr), Argument.class); - if (methodArgs == null || methodArgs.isEmpty()) { - return ""; - } - - // Class[] types = new Class[methodArgs.size()]; - // Object[] args = new Object[methodArgs.size()]; - // MethodUtil.initTypesAndValues(methodArgs, types, args, true); - - String s = ""; - // if (types != null) { - // String sn; - // for (int i = 0; i < types.length; i++) { - // sn = types[i] == null ? null : types[i].getSimpleName(); - // if (sn == null) { - // sn = Object.class.getSimpleName(); - // } - // - // if (i > 0) { - // s += ","; - // } - // - // if (MethodUtil.CLASS_MAP.containsKey(sn)) { - // s += sn; - // } - // else { - // s += types[i].getName(); - // } - // } - // } - - for (int i = 0; i < methodArgs.size(); i++) { - Argument arg = methodArgs.get(i); - - String sn = arg == null ? null : arg.getType(); - if (sn == null) { - sn = arg.getValue() == null ? Object.class.getSimpleName() : MethodUtil.trimType(arg.getValue().getClass()); - } - - if (i > 0) { - s += ","; - } - s += sn; - } - - return s; - } - - - /**获取方法的定义 - * @param curObj - * @return - * @throws IOException - * @throws ClassNotFoundException - * @throws IllegalArgumentException - */ - public String getMethodDefinition(@NotNull JSONObject curObj) throws IllegalArgumentException { - // curObj.put("arguments", removeComment(curObj.getString("methodArgs"))); - return getMethodDefinition(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); - } - /**获取方法的定义 - * @param curObj - * @param method - * @param arguments - * @param type - * @return method(argType0,argType1...): returnType - * @throws IOException - * @throws ClassNotFoundException - * @throws IllegalArgumentException - */ - public String getMethodDefinition(@NotNull JSONObject curObj, String method, String arguments - , String type, String exceptions, String language) throws IllegalArgumentException { - String n = curObj.getString(method); - if (StringUtil.isEmpty(n, true)) { - throw new NullPointerException("getMethodDefination StringUtil.isEmpty(methodArgs, true) !"); - } - String a = curObj.getString(arguments); - String t = curObj.getString(type); - String e = curObj.getString(exceptions); - - if (language == null) { - language = ""; - } - switch (language) { - case "TypeScript": - return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); - case "Go": - return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a ) + ")" + (StringUtil.isEmpty(t, true) ? "" : " " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); - default: - //类型可能很长,Eclipse, Idea 代码提示都是类型放后面 return (StringUtil.isEmpty(t, true) ? "" : t + " ") + n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")"; - return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); - } - } - - /** - * methodArgs 和 classArgs 都可以带注释 - */ - public String getMethodRequest(@NotNull JSONObject curObj) { - String req = curObj.getString("request"); - if (StringUtil.isEmpty(req, true) == false) { - return req; - } - - req = "{"; - Boolean isStatic = curObj.getBoolean("static"); - String methodArgs = curObj.getString("methodArgs"); - String classArgs = curObj.getString("classArgs"); - - boolean comma = false; - if (isStatic != null && isStatic) { - req += "\n \"static\": " + true; - comma = true; - } - if (! StringUtil.isEmpty(methodArgs, true)) { - req += (comma ? "," : "") + "\n \"methodArgs\": " + methodArgs; - comma = true; - } - if (! StringUtil.isEmpty(classArgs, true)) { - req += (comma ? "," : "") + "\n \"classArgs\": " + classArgs; - } - req += "\n}"; - return req; - } - - // public static JSONObject removeComment(String json) { - // return JSON.parseObject(removeComment(json)); + public Object getWithDefault(@NotNull M curObj, String value, String defaultValue) { + Object v = curObj.get(value); + return v == null ? curObj.get(defaultValue) : v; + } + + // FIXME UnitAuto 去除 fastjson 后恢复 + ///**获取方法参数的定义 + // * @param curObj + // * @return + // * @throws IOException + // * @throws ClassNotFoundException + // * @throws IllegalArgumentException + // */ + //public String getMethodArguments(@NotNull M curObj) throws IllegalArgumentException, ClassNotFoundException, IOException { + // return getMethodArguments(curObj, "methodArgs"); + //} + ///**获取方法参数的定义 + // * @param curObj + // * @param methodArgsKey + // * @return + // * @throws IllegalArgumentException + // * @throws ClassNotFoundException + // * @throws IOException + // */ + //public String getMethodArguments(@NotNull M curObj, String methodArgsKey) throws IllegalArgumentException, ClassNotFoundException, IOException { + // M obj = getJSONObject(curObj, "request"); + // String argsStr = obj == null ? null : getString(obj, methodArgsKey); + // if (StringUtil.isEmpty(argsStr, true)) { + // argsStr = getString(curObj, methodArgsKey); // } - public static String removeComment(String json) { - return json == null ? null: json.replaceAll("(//.*)|(/\\*[\\s\\S]*?\\*/)", ""); - } + // List methodArgs = JSON.parseArray(removeComment(argsStr), Argument.class); + // if (methodArgs == null || methodArgs.isEmpty()) { + // return ""; + // } + // + // // Class[] types = new Class[methodArgs.size()]; + // // Object[] args = new Object[methodArgs.size()]; + // // MethodUtil.initTypesAndValues(methodArgs, types, args, true); + // + // String s = ""; + // // if (types != null) { + // // String sn; + // // for (int i = 0; i < types.length; i++) { + // // sn = types[i] == null ? null : types[i].getSimpleName(); + // // if (sn == null) { + // // sn = Object.class.getSimpleName(); + // // } + // // + // // if (i > 0) { + // // s += ","; + // // } + // // + // // if (MethodUtil.CLASS_MAP.containsKey(sn)) { + // // s += sn; + // // } + // // else { + // // s += types[i].getName(); + // // } + // // } + // // } + // + // for (int i = 0; i < methodArgs.size(); i++) { + // Argument arg = methodArgs.get(i); + // + // String sn = arg == null ? null : arg.getType(); + // if (sn == null) { + // sn = arg.getValue() == null ? Object.class.getSimpleName() : MethodUtil.trimType(arg.getValue().getClass()); + // } + // + // if (i > 0) { + // s += ","; + // } + // s += sn; + // } + // + // return s; + //} + // + // + ///**获取方法的定义 + // * @param curObj + // * @return + // * @throws IOException + // * @throws ClassNotFoundException + // * @throws IllegalArgumentException + // */ + //public String getMethodDefinition(@NotNull M curObj) throws IllegalArgumentException { + // // curObj.put("arguments", removeComment(getString(curObj, "methodArgs"))); + // return getMethodDefinition(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); + //} + ///**获取方法的定义 + // * @param curObj + // * @param method + // * @param arguments + // * @param type + // * @return method(argType0,argType1...): returnType + // * @throws IOException + // * @throws ClassNotFoundException + // * @throws IllegalArgumentException + // */ + //public String getMethodDefinition(@NotNull M curObj, String method, String arguments + // , String type, String exceptions, String language) throws IllegalArgumentException { + // String n = getString(curObj, method); + // if (StringUtil.isEmpty(n, true)) { + // throw new NullPointerException("getMethodDefination StringUtil.isEmpty(methodArgs, true) !"); + // } + // String a = getString(curObj, arguments); + // String t = getString(curObj, type); + // String e = getString(curObj, exceptions); + // + // if (language == null) { + // language = ""; + // } + // switch (language) { + // case "TypeScript": + // return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + // case "Go": + // return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a ) + ")" + (StringUtil.isEmpty(t, true) ? "" : " " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + // default: + // //类型可能很长,Eclipse, Idea 代码提示都是类型放后面 return (StringUtil.isEmpty(t, true) ? "" : t + " ") + n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")"; + // return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + // } + //} + // + ///** + // * methodArgs 和 classArgs 都可以带注释 + // */ + //public String getMethodRequest(@NotNull M curObj) { + // String req = getString(curObj, "request"); + // if (StringUtil.isEmpty(req, true) == false) { + // return req; + // } + // + // req = "{"; + // Boolean isStatic = getBoolean(curObj, "static"); + // String methodArgs = getString(curObj, "methodArgs"); + // String classArgs = getString(curObj, "classArgs"); + // + // boolean comma = false; + // if (isStatic != null && isStatic) { + // req += "\n \"static\": " + true; + // comma = true; + // } + // if (! StringUtil.isEmpty(methodArgs, true)) { + // req += (comma ? "," : "") + "\n \"methodArgs\": " + methodArgs; + // comma = true; + // } + // if (! StringUtil.isEmpty(classArgs, true)) { + // req += (comma ? "," : "") + "\n \"classArgs\": " + classArgs; + // } + // req += "\n}"; + // return req; + //} + // + //// public static JSONRequest removeComment(String json) { + //// return JSON.parseObject(removeComment(json)); + //// } + //public static String removeComment(String json) { + // return json == null ? null: json.replaceAll("(//.*)|(/\\*[\\s\\S]*?\\*/)", ""); + //} } diff --git a/src/main/java/apijson/framework/APIJSONObjectParser.java b/src/main/java/apijson/framework/APIJSONObjectParser.java index e35627b..c09f4a4 100755 --- a/src/main/java/apijson/framework/APIJSONObjectParser.java +++ b/src/main/java/apijson/framework/APIJSONObjectParser.java @@ -15,11 +15,11 @@ package apijson.framework; import java.util.List; +import java.util.Map; import jakarta.servlet.http.HttpSession; import apijson.orm.*; -import com.alibaba.fastjson.JSONObject; import apijson.NotNull; import apijson.RequestMethod; @@ -28,7 +28,7 @@ /**简化Parser,getObject和getArray(getArrayConfig)都能用 * @author Lemon */ -public class APIJSONObjectParser extends AbstractObjectParser { +public class APIJSONObjectParser, L extends List> extends AbstractObjectParser { public static final String TAG = "APIJSONObjectParser"; /**for single object @@ -41,28 +41,28 @@ public class APIJSONObjectParser extends AbstractObjectParser< * @param isArrayMainTable * @throws Exception */ - public APIJSONObjectParser(HttpSession session, @NotNull JSONObject request, String parentPath, SQLConfig arrayConfig - , boolean isSubQuery, boolean isTable, boolean isArrayMainTable) throws Exception { - super(request, parentPath, arrayConfig, isSubQuery, isTable, isArrayMainTable); + public APIJSONObjectParser(HttpSession session, @NotNull M request, String parentPath, SQLConfig arrayConfig + , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { + super(request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable); } @Override - public APIJSONObjectParser setMethod(RequestMethod method) { + public APIJSONObjectParser setMethod(RequestMethod method) { super.setMethod(method); return this; } @Override - public APIJSONObjectParser setParser(Parser parser) { + public APIJSONObjectParser setParser(Parser parser) { super.setParser(parser); return this; } @Override - public SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { + public SQLConfig newSQLConfig(RequestMethod method, String table, String alias, M request + , List> joinList, boolean isProcedure) throws Exception { return APIJSONSQLConfig.newSQLConfig(method, table, alias, request, joinList, isProcedure); } - } diff --git a/src/main/java/apijson/framework/APIJSONParser.java b/src/main/java/apijson/framework/APIJSONParser.java index 71d4e4b..2177457 100755 --- a/src/main/java/apijson/framework/APIJSONParser.java +++ b/src/main/java/apijson/framework/APIJSONParser.java @@ -18,31 +18,27 @@ import static apijson.framework.APIJSONConstant.FORMAT; import static apijson.framework.APIJSONConstant.VERSION; +import java.util.List; import java.util.Map; import java.util.Set; import jakarta.servlet.http.HttpSession; -import com.alibaba.fastjson.JSONObject; - import apijson.NotNull; import apijson.RequestMethod; import apijson.orm.AbstractParser; import apijson.orm.FunctionParser; -import apijson.orm.Parser; import apijson.orm.SQLConfig; -import apijson.orm.SQLExecutor; -import apijson.orm.Verifier; /**请求解析器 * @author Lemon */ -public class APIJSONParser extends AbstractParser { +public class APIJSONParser, L extends List> extends AbstractParser { public static final String TAG = "APIJSONParser"; @NotNull - public static APIJSONCreator APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { APIJSON_CREATOR = new APIJSONCreator<>(); } @@ -62,7 +58,7 @@ public APIJSONParser(RequestMethod method, boolean needVerify) { public HttpSession getSession() { return session; } - public APIJSONParser setSession(HttpSession session) { + public APIJSONParser setSession(HttpSession session) { this.session = session; setVisitor(APIJSONVerifier.getVisitor(session)); return this; @@ -70,39 +66,62 @@ public APIJSONParser setSession(HttpSession session) { @SuppressWarnings("unchecked") @Override - public Parser createParser() { - return (Parser) APIJSON_CREATOR.createParser(); + public APIJSONParser createParser() { + return (APIJSONParser) APIJSON_CREATOR.createParser(); } @Override - public FunctionParser createFunctionParser() { - return APIJSON_CREATOR.createFunctionParser(); + public APIJSONFunctionParser createFunctionParser() { + return (APIJSONFunctionParser) APIJSON_CREATOR.createFunctionParser(); } @SuppressWarnings("unchecked") @Override - public Verifier createVerifier() { - return (Verifier) APIJSON_CREATOR.createVerifier(); + public APIJSONVerifier createVerifier() { + return (APIJSONVerifier) APIJSON_CREATOR.createVerifier(); } @Override - public SQLConfig createSQLConfig() { - return APIJSON_CREATOR.createSQLConfig(); + public APIJSONSQLConfig createSQLConfig() { + return (APIJSONSQLConfig) APIJSON_CREATOR.createSQLConfig(); } @Override - public SQLExecutor createSQLExecutor() { - return APIJSON_CREATOR.createSQLExecutor(); + public APIJSONSQLExecutor createSQLExecutor() { + return (APIJSONSQLExecutor) APIJSON_CREATOR.createSQLExecutor(); } + @Override + public APIJSONParser setNeedVerify(boolean needVerify) { + super.setNeedVerify(needVerify); + return this; + } @Override - public JSONObject parseResponse(JSONObject request) { + public APIJSONParser setNeedVerifyLogin(boolean needVerifyLogin) { + super.setNeedVerifyLogin(needVerifyLogin); + return this; + } + + @Override + public APIJSONParser setNeedVerifyRole(boolean needVerifyRole) { + super.setNeedVerifyRole(needVerifyRole); + return this; + } + + @Override + public APIJSONParser setNeedVerifyContent(boolean needVerifyContent) { + super.setNeedVerifyContent(needVerifyContent); + return this; + } + + @Override + public M parseResponse(M request) { //补充format if (session != null && request != null) { if (request.get(FORMAT) == null) { request.put(FORMAT, session.getAttribute(FORMAT)); } if (request.get(DEFAULTS) == null) { - JSONObject defaults = (JSONObject) session.getAttribute(DEFAULTS); + M defaults = (M) session.getAttribute(DEFAULTS); Set> set = defaults == null ? null : defaults.entrySet(); if (set != null) { @@ -114,15 +133,16 @@ public JSONObject parseResponse(JSONObject request) { } } } + return super.parseResponse(request); } - private FunctionParser functionParser; - public FunctionParser getFunctionParser() { + private FunctionParser functionParser; + public FunctionParser getFunctionParser() { return functionParser; } @Override - public Object onFunctionParse(String key, String function, String parentPath, String currentName, JSONObject currentObject, boolean containRaw) throws Exception { + public Object onFunctionParse(String key, String function, String parentPath, String currentName, M currentObject, boolean containRaw) throws Exception { if (functionParser == null) { functionParser = createFunctionParser(); functionParser.setParser(this); @@ -131,8 +151,8 @@ public Object onFunctionParse(String key, String function, String parentPath, St functionParser.setVersion(getVersion()); functionParser.setRequest(requestObject); - if (functionParser instanceof APIJSONFunctionParser) { - ((APIJSONFunctionParser) functionParser).setSession(getSession()); + if (functionParser instanceof APIJSONFunctionParser) { + ((APIJSONFunctionParser) functionParser).setSession(getSession()); } } functionParser.setKey(key); @@ -145,13 +165,13 @@ public Object onFunctionParse(String key, String function, String parentPath, St @Override - public APIJSONObjectParser createObjectParser(JSONObject request, String parentPath, SQLConfig arrayConfig + public APIJSONObjectParser createObjectParser(M request, String parentPath, SQLConfig arrayConfig , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { - return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { + return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { // @Override - // protected APIJSONSQLConfig newQueryConfig() { + // protected APIJSONSQLConfig newQueryConfig() { // if (itemConfig != null) { // return itemConfig; // } diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 59392ce..189b9ea 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -22,9 +22,10 @@ import java.util.List; import java.util.Map; -import apijson.column.ColumnUtil; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.annotation.JSONField; +import apijson.JSONArray; +import apijson.JSONObject; +//import apijson.column.ColumnUtil; +import apijson.JSONField; import apijson.RequestMethod; import apijson.orm.AbstractSQLConfig; @@ -36,13 +37,13 @@ * TiDB 用法和 MySQL 一致 * @author Lemon */ -public class APIJSONSQLConfig extends AbstractSQLConfig { +public class APIJSONSQLConfig, L extends List> extends AbstractSQLConfig { public static final String TAG = "APIJSONSQLConfig"; public static boolean ENABLE_COLUMN_CONFIG = false; - public static Callback SIMPLE_CALLBACK; - public static APIJSONCreator APIJSON_CREATOR; + public static Callback, ? extends List> SIMPLE_CALLBACK; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { DEFAULT_DATABASE = DATABASE_MYSQL; //TODO 默认数据库类型,改成你自己的 @@ -54,13 +55,13 @@ public class APIJSONSQLConfig extends AbstractSQLConfig { // TABLE_KEY_MAP.put(User.class.getSimpleName(), "apijson_user"); // TABLE_KEY_MAP.put(Privacy.class.getSimpleName(), "apijson_privacy"); - APIJSON_CREATOR = new APIJSONCreator(); + APIJSON_CREATOR = new APIJSONCreator<>(); - SIMPLE_CALLBACK = new SimpleCallback() { + SIMPLE_CALLBACK = new SimpleCallback() { @Override - public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { - SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); + public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { + SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); config.setMethod(method); config.setDatabase(database); config.setDatasource(datasource); @@ -228,26 +229,38 @@ public APIJSONSQLConfig(RequestMethod method, int count, int page) { * @return * @throws Exception */ - public static SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { - return (SQLConfig) newSQLConfig(method, table, alias, request, joinList, isProcedure, SIMPLE_CALLBACK); + public static , L extends List> SQLConfig newSQLConfig( + RequestMethod method, String table, String alias, M request, List> joinList, boolean isProcedure) throws Exception { + return newSQLConfig(method, table, alias, request, joinList, isProcedure, new SimpleCallback() { + @Override + public SQLConfig getSQLConfig(RequestMethod method, String database, String schema, String datasource, String table) { + SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); + config.setMethod(method); + config.setDatabase(database); + config.setDatasource(datasource); + config.setSchema(schema); + config.setTable(table); + return config; + } + }); } // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column - @Override - public AbstractSQLConfig setColumn(List column) { - if (ENABLE_COLUMN_CONFIG) { - column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); - } - return super.setColumn(column); - } - - @Override - public String getKey(String key) { - if (ENABLE_COLUMN_CONFIG) { - key = ColumnUtil.compatInputKey(key, getTable(), getMethod(), getVersion(), ! isConfigTable()); - } - return super.getKey(key); - } +// @Override +// public AbstractSQLConfig setColumn(List column) { +// if (ENABLE_COLUMN_CONFIG) { +// column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); +// } +// return super.setColumn(column); +// } +// +// @Override +// public String getKey(String key) { +// if (ENABLE_COLUMN_CONFIG) { +// key = ColumnUtil.compatInputKey(key, getTable(), getMethod(), getVersion(), ! isConfigTable()); +// } +// return super.getKey(key); +// } } diff --git a/src/main/java/apijson/framework/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/APIJSONSQLExecutor.java index c18b12e..93261fb 100755 --- a/src/main/java/apijson/framework/APIJSONSQLExecutor.java +++ b/src/main/java/apijson/framework/APIJSONSQLExecutor.java @@ -18,13 +18,12 @@ import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.util.List; import java.util.Map; -import apijson.column.ColumnUtil; +//import apijson.column.ColumnUtil; import org.postgresql.util.PGobject; -import com.alibaba.fastjson.JSONObject; - import apijson.JSON; import apijson.Log; import apijson.NotNull; @@ -35,7 +34,7 @@ /**executor for query(read) or update(write) MySQL database * @author Lemon */ -public class APIJSONSQLExecutor extends AbstractSQLExecutor { +public class APIJSONSQLExecutor, L extends List> extends AbstractSQLExecutor { public static final String TAG = "APIJSONSQLExecutor"; static { @@ -73,8 +72,8 @@ public class APIJSONSQLExecutor extends AbstractSQLExecutor @Override - public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull PreparedStatement statement, int index, Object value) throws SQLException { - if (config.isPostgreSQL() && JSON.isBooleanOrNumberOrString(value) == false) { + public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull PreparedStatement statement, int index, Object value) throws SQLException { + if (config.isPostgreSQL() && JSON.isBoolOrNumOrStr(value) == false) { PGobject o = new PGobject(); o.setType("jsonb"); o.setValue(value == null ? null : value.toString()); @@ -87,23 +86,27 @@ public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull Prep @Override - protected Object getValue(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, - JSONObject table, int columnIndex, String lable, Map childMap) throws Exception { + protected Object getValue( + SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int row + , M table, int columnIndex, String label, Map childMap, Map keyMap + ) throws Exception { - Object value = super.getValue(config, rs, rsmd, tablePosition, table, columnIndex, lable, childMap); + Object value = super.getValue(config, rs, rsmd, row, table, columnIndex, label, childMap, keyMap); - return value instanceof PGobject ? JSON.parse(((PGobject) value).getValue()) : value; + return value instanceof PGobject ? JSON.parseJSON(((PGobject) value).getValue()) : value; } // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column @Override - protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table, - int columnIndex, Map childMap) throws Exception { - - String key = super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap); - if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { - return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); - } + protected String getKey( + SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int row + , M table, int columnIndex, Map childMap, Map keyMap + ) throws Exception { + + String key = super.getKey(config, rs, rsmd, row, table, columnIndex, childMap, keyMap); +// if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { +// return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); +// } return key; } diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 1a7643f..94cd6a9 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -14,6 +14,8 @@ package apijson.framework; +import static apijson.JSON.*; +import static apijson.JSONRequest.KEY_COUNT; import static apijson.framework.APIJSONConstant.ACCESS_; import static apijson.framework.APIJSONConstant.REQUEST_; import static apijson.framework.APIJSONConstant.VISITOR_; @@ -22,25 +24,16 @@ import java.rmi.ServerException; import java.util.*; +import apijson.*; import jakarta.servlet.http.HttpSession; -import apijson.column.ColumnUtil; import apijson.orm.*; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; - -import apijson.JSON; -import apijson.JSONResponse; -import apijson.Log; -import apijson.NotNull; -import apijson.RequestMethod; -import apijson.StringUtil; /**权限验证器 * @author Lemon */ -public class APIJSONVerifier extends AbstractVerifier { +public class APIJSONVerifier, L extends List> extends AbstractVerifier { public static final String TAG = "APIJSONVerifier"; public static boolean ENABLE_VERIFY_COLUMN = true; @@ -57,7 +50,7 @@ public class APIJSONVerifier extends AbstractVerifier { // ACCESS_MAP.put(Login.class.getSimpleName(), getAccessMap(Login.class.getAnnotation(MethodAccess.class))); // } - public static APIJSONCreator APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { APIJSON_CREATOR = new APIJSONCreator<>(); @@ -67,7 +60,7 @@ public class APIJSONVerifier extends AbstractVerifier { * @return * @throws ServerException */ - public static JSONObject init() throws ServerException { + public static , L extends List> M init() throws ServerException { return init(false); } @@ -76,8 +69,10 @@ public static JSONObject init() throws ServerException { * @return * @throws ServerException */ - public static JSONObject init(boolean shutdownWhenServerError) throws ServerException { - return init(shutdownWhenServerError, null); + public static , L extends List> M init(boolean shutdownWhenServerError) throws ServerException { + return init(shutdownWhenServerError, new APIJSONCreator() { + + }); } /**初始化,加载所有权限配置和请求校验配置 @@ -85,7 +80,7 @@ public static JSONObject init(boolean shutdownWhenServerError) throws ServerExce * @return * @throws ServerException */ - public static JSONObject init(APIJSONCreator creator) throws ServerException { + public static , L extends List> M init(APIJSONCreator creator) throws ServerException { return init(false, creator); } @@ -95,8 +90,9 @@ public static JSONObject init(APIJSONCreator creator) throws ServerExcept * @return * @throws ServerException */ - public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { - JSONObject result = new JSONObject(true); + public static , L extends List> M init( + boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + M result = JSON.createJSONObject(); if (ENABLE_VERIFY_ROLE) { result.put(ACCESS_, initAccess(shutdownWhenServerError, creator)); } @@ -110,7 +106,7 @@ public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreato * @return * @throws ServerException */ - public static JSONObject initAccess() throws ServerException { + public static , L extends List> M initAccess() throws ServerException { return initAccess(false); } @@ -119,7 +115,7 @@ public static JSONObject initAccess() throws ServerException { * @return * @throws ServerException */ - public static JSONObject initAccess(boolean shutdownWhenServerError) throws ServerException { + public static , L extends List> M initAccess(boolean shutdownWhenServerError) throws ServerException { return initAccess(shutdownWhenServerError, null); } @@ -128,7 +124,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError) throws Serv * @return * @throws ServerException */ - public static JSONObject initAccess(APIJSONCreator creator) throws ServerException { + public static , L extends List> M initAccess(APIJSONCreator creator) throws ServerException { return initAccess(false, creator); } @@ -138,7 +134,8 @@ public static JSONObject initAccess(APIJSONCreator creator) throws Server * @return * @throws ServerException */ - public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + public static , L extends List> M initAccess( + boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return initAccess(shutdownWhenServerError, creator, null); } @@ -150,33 +147,36 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON * @throws ServerException */ @SuppressWarnings("unchecked") - public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + public static , L extends List> M initAccess( + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSON_CREATOR; } APIJSON_CREATOR = creator; boolean isAll = table == null || table.isEmpty(); - JSONObject access = isAll ? new JSONRequest() : table; + M access = isAll ? JSON.createJSONObject() : table; if (Log.DEBUG == false) { access.put(APIJSONConstant.KEY_DEBUG, 0); } - JSONRequest accessItem = new JSONRequest(); + M accessItem = JSON.createJSONObject(); accessItem.put(ACCESS_, access); - JSONRequest request = new JSONRequest(); - request.putAll(accessItem.toArray(0, 0, ACCESS_)); - + M request = JSON.createJSONObject(); + M ao = JSON.createJSONObject(); + ao.put(ACCESS_, accessItem); + ao.put(apijson.JSONRequest.KEY_COUNT, 0); + request.put(ACCESS_ + "[]", ao); - JSONObject response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); + M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { - Log.e(TAG, "\n\n\n\n\n !!!! 查询权限配置异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n"); + Log.e(TAG, "\n\n\n\n\n !!!! 查询权限配置异常 !!!\n" + getString(response, JSONResponse.KEY_MSG) + "\n\n\n\n\n"); onServerError("查询权限配置异常 !", shutdownWhenServerError); } - JSONArray list = response.getJSONArray(ACCESS_ + "[]"); + L list = getJSONArray(response, ACCESS_ + "[]"); int size = list == null ? 0 : list.size(); if (isAll && size <= 0) { Log.w(TAG, "initAccess isAll && size <= 0,,没有可用的权限配置"); @@ -187,47 +187,47 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON Map> newMap = new LinkedHashMap<>(); Map> fakeDeleteMap = new LinkedHashMap<>(); - Map newTKMap = new LinkedHashMap<>(); - Map tableSchemaMap = new LinkedHashMap<>(); + Map newTKMap = new LinkedHashMap<>(); // JSON.createJSONObject(); + Map tableSchemaMap = new LinkedHashMap<>(); // JSON.createJSONObject(); SortedMap>> versionedTableColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); SortedMap>> versionedKeyColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); for (int i = 0; i < size; i++) { - JSONObject item = list.getJSONObject(i); + M item = getJSONObject(list, i); if (item == null) { continue; } Map map = new HashMap<>(); - map.put(RequestMethod.GET, JSON.parseObject(item.getString("get"), String[].class)); - map.put(RequestMethod.HEAD, JSON.parseObject(item.getString("head"), String[].class)); - map.put(RequestMethod.GETS, JSON.parseObject(item.getString("gets"), String[].class)); - map.put(RequestMethod.HEADS, JSON.parseObject(item.getString("heads"), String[].class)); - map.put(RequestMethod.POST, JSON.parseObject(item.getString("post"), String[].class)); - map.put(RequestMethod.PUT, JSON.parseObject(item.getString("put"), String[].class)); - map.put(RequestMethod.DELETE, JSON.parseObject(item.getString("delete"), String[].class)); - - String name = item.getString("name"); - String alias = item.getString("alias"); - String schema = item.getString("schema"); - - Map fakemap = new HashMap<>(); - String deletedKey = item.getString(AbstractSQLConfig.KEY_DELETED_KEY); + map.put(RequestMethod.GET, JSON.parseObject(getString(item, "get"), String[].class)); + map.put(RequestMethod.HEAD, JSON.parseObject(getString(item, "head"), String[].class)); + map.put(RequestMethod.GETS, JSON.parseObject(getString(item, "gets"), String[].class)); + map.put(RequestMethod.HEADS, JSON.parseObject(getString(item, "heads"), String[].class)); + map.put(RequestMethod.POST, JSON.parseObject(getString(item, "post"), String[].class)); + map.put(RequestMethod.PUT, JSON.parseObject(getString(item, "put"), String[].class)); + map.put(RequestMethod.DELETE, JSON.parseObject(getString(item, "delete"), String[].class)); + + String name = getString(item, "name"); + String alias = getString(item, "alias"); + String schema = getString(item, "schema"); + + Map fakeMap = new LinkedHashMap<>(); + String deletedKey = getString(item, AbstractSQLConfig.KEY_DELETED_KEY); if(StringUtil.isNotEmpty(deletedKey, true)) { boolean containNotDeletedValue = item.containsKey(AbstractSQLConfig.KEY_NOT_DELETED_VALUE); - Object deletedValue = item.getString(AbstractSQLConfig.KEY_DELETED_VALUE); + Object deletedValue = getString(item, AbstractSQLConfig.KEY_DELETED_VALUE); if (containNotDeletedValue == false && StringUtil.isEmpty(deletedValue, true)) { onServerError( - "Access表 id = " + item.getString("id") + " 对应的 " + "Access表 id = " + getString(item, "id") + " 对应的 " + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" , shutdownWhenServerError ); } - fakemap.put(AbstractSQLConfig.KEY_DELETED_KEY, deletedKey); - fakemap.put(AbstractSQLConfig.KEY_DELETED_VALUE, deletedValue); + fakeMap.put(AbstractSQLConfig.KEY_DELETED_KEY, deletedKey); + fakeMap.put(AbstractSQLConfig.KEY_DELETED_VALUE, deletedValue); if (containNotDeletedValue) { - fakemap.put(AbstractSQLConfig.KEY_NOT_DELETED_VALUE, item.get(AbstractSQLConfig.KEY_NOT_DELETED_VALUE)); + fakeMap.put(AbstractSQLConfig.KEY_NOT_DELETED_VALUE, item.get(AbstractSQLConfig.KEY_NOT_DELETED_VALUE)); } } @@ -241,22 +241,22 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON } if (StringUtil.isEmpty(alias, true)) { - if (JSONRequest.isTableKey(name) == false) { + if (apijson.JSONObject.isTableKey(name) == false) { onServerError("name: " + name + "不合法!字段 alias 的值为空时,name 必须为合法表名!", shutdownWhenServerError); } alias = name; - } else if (JSONRequest.isTableKey(alias) == false) { + } else if (apijson.JSONObject.isTableKey(alias) == false) { onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError); } newMap.put(alias, map); - fakeDeleteMap.put(alias, fakemap); + fakeDeleteMap.put(alias, fakeMap); newTKMap.put(alias, name); tableSchemaMap.put(alias, schema); if (ENABLE_VERIFY_COLUMN) { - JSONObject columns = item.getJSONObject("columns"); + M columns = getJSONObject(item, "columns"); Set> set = columns == null ? null : columns.entrySet(); if (set != null) { @@ -324,16 +324,16 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON APIJSONSQLConfig.TABLE_SCHEMA_MAP = tableSchemaMap; } - if (ENABLE_VERIFY_COLUMN) { - if (isAll) { // 全量更新 - ColumnUtil.VERSIONED_TABLE_COLUMN_MAP = versionedTableColumnMap; - ColumnUtil.VERSIONED_KEY_COLUMN_MAP = versionedKeyColumnMap; - } else { - ColumnUtil.VERSIONED_TABLE_COLUMN_MAP.putAll(versionedTableColumnMap); - ColumnUtil.VERSIONED_KEY_COLUMN_MAP.putAll(versionedKeyColumnMap); - } - ColumnUtil.init(); - } +// if (ENABLE_VERIFY_COLUMN) { +// if (isAll) { // 全量更新 +// ColumnUtil.VERSIONED_TABLE_COLUMN_MAP = versionedTableColumnMap; +// ColumnUtil.VERSIONED_KEY_COLUMN_MAP = versionedKeyColumnMap; +// } else { +// ColumnUtil.VERSIONED_TABLE_COLUMN_MAP.putAll(versionedTableColumnMap); +// ColumnUtil.VERSIONED_KEY_COLUMN_MAP.putAll(versionedKeyColumnMap); +// } +// ColumnUtil.init(); +// } Log.d(TAG, "initAccess for /> ACCESS_MAP.size() = " + ACCESS_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>"); @@ -345,7 +345,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON * @return * @throws ServerException */ - public static JSONObject initRequest() throws ServerException { + public static , L extends List> M initRequest() throws ServerException { return initRequest(false); } @@ -354,7 +354,7 @@ public static JSONObject initRequest() throws ServerException { * @return * @throws ServerException */ - public static JSONObject initRequest(boolean shutdownWhenServerError) throws ServerException { + public static , L extends List> M initRequest(boolean shutdownWhenServerError) throws ServerException { return initRequest(shutdownWhenServerError, null); } @@ -363,7 +363,8 @@ public static JSONObject initRequest(boolean shutdownWhenServerError) throws Ser * @return * @throws ServerException */ - public static JSONObject initRequest(APIJSONCreator creator) throws ServerException { + public static , L extends List> M initRequest( + APIJSONCreator creator) throws ServerException { return initRequest(false, creator); } @@ -373,7 +374,8 @@ public static JSONObject initRequest(APIJSONCreator creator) throws Serve * @return * @throws ServerException */ - public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + public static , L extends List> M initRequest( + boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return initRequest(shutdownWhenServerError, creator, null); } @@ -385,33 +387,39 @@ public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSO * @throws ServerException */ @SuppressWarnings("unchecked") - public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + public static , L extends List> M initRequest( + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSON_CREATOR; } APIJSON_CREATOR = creator; boolean isAll = table == null || table.isEmpty(); - JSONObject requestTable = isAll ? new JSONRequest().setOrder("version-,id+") : table; + M tblObj = createJSONObject(); + tblObj.put(apijson.JSONObject.KEY_ORDER, "version-,id+"); + M requestTable = isAll ? tblObj : table; if (Log.DEBUG == false) { requestTable.put(APIJSONConstant.KEY_DEBUG, 0); } - JSONRequest requestItem = new JSONRequest(); + M requestItem = JSON.createJSONObject(); requestItem.put(REQUEST_, requestTable); // 方便查找 - JSONRequest request = new JSONRequest(); - request.putAll(requestItem.toArray(0, 0, REQUEST_)); + M ro = JSON.createJSONObject(); + ro.put(REQUEST_, requestItem); + ro.put(KEY_COUNT, 0); - - JSONObject response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); + M request = JSON.createJSONObject(); + request.put(REQUEST_ + "[]", ro); + + M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { - Log.e(TAG, "\n\n\n\n\n !!!! 查询请求校验规则配置异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n"); + Log.e(TAG, "\n\n\n\n\n !!!! 查询请求校验规则配置异常 !!!\n" + getString(response, JSONResponse.KEY_MSG) + "\n\n\n\n\n"); onServerError("查询请求校验规则配置异常 !", shutdownWhenServerError); } - JSONArray list = response.getJSONArray(REQUEST_ + "[]"); + L list = getJSONArray(response, REQUEST_ + "[]"); int size = list == null ? 0 : list.size(); if (isAll && size <= 0) { Log.w(TAG, "initRequest isAll && size <= 0,没有可用的请求校验规则配置"); @@ -420,48 +428,48 @@ public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSO Log.d(TAG, "initRequest < for REQUEST_MAP.size() = " + REQUEST_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<"); - Map> newMap = new LinkedHashMap<>(); + Map>> newMap = new LinkedHashMap<>(); for (int i = 0; i < size; i++) { - JSONObject item = list.getJSONObject(i); + M item = getJSONObject(list, i); if (item == null) { continue; } - String version = item.getString("version"); + String version = getString(item, "version"); if (StringUtil.isEmpty(version, true)) { Log.e(TAG, "initRequest for StringUtil.isEmpty(version, true),Request 表中的 version 不能为空!"); onServerError("服务器内部错误,Request 表中的 version 不能为空!", shutdownWhenServerError); } - String method = item.getString("method"); + String method = getString(item, "method"); if (StringUtil.isEmpty(method, true)) { Log.e(TAG, "initRequest for StringUtil.isEmpty(method, true),Request 表中的 method 不能为空!"); onServerError("服务器内部错误,Request 表中的 method 不能为空!", shutdownWhenServerError); } - String tag = item.getString("tag"); + String tag = getString(item, "tag"); if (StringUtil.isEmpty(tag, true)) { Log.e(TAG, "initRequest for StringUtil.isEmpty(tag, true),Request 表中的 tag 不能为空!"); onServerError("服务器内部错误,Request 表中的 tag 不能为空!", shutdownWhenServerError); } - JSONObject structure = JSON.parseObject(item.getString("structure")); + M structure = JSON.parseObject(getString(item, "structure")); - JSONObject target = null; + M target = null; if (structure != null) { target = structure; if (structure.containsKey(tag) == false) { //tag 是 Table 名或 Table[] - boolean isArrayKey = tag.endsWith(":[]"); // JSONRequest.isArrayKey(tag); + boolean isArrayKey = tag.endsWith(":[]"); // apijson.JSONObject.isArrayKey(tag); String key = isArrayKey ? tag.substring(0, tag.length() - 3) : tag; if (apijson.JSONObject.isTableKey(key)) { if (isArrayKey) { //自动为 tag = Comment:[] 的 { ... } 新增键值对 "Comment[]":[] 为 { "Comment[]":[], ... } - target.put(key + "[]", new JSONArray()); + target.put(key + "[]", JSON.createJSONArray()); } else { //自动为 tag = Comment 的 { ... } 包一层为 { "Comment": { ... } } - target = new JSONObject(true); + target = JSON.createJSONObject(); target.put(tag, structure); } } @@ -474,7 +482,7 @@ public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSO } String cacheKey = getCacheKeyForRequest(method, tag); - SortedMap versionedMap = newMap.get(cacheKey); + SortedMap> versionedMap = newMap.get(cacheKey); if (versionedMap == null) { versionedMap = new TreeMap<>(new Comparator() { @@ -489,7 +497,8 @@ public int compare(Integer o1, Integer o2) { } if (isAll) { // 全量更新 - REQUEST_MAP = newMap; + REQUEST_MAP = new LinkedHashMap<>(); + REQUEST_MAP.putAll(newMap); } else { REQUEST_MAP.putAll(newMap); } @@ -511,11 +520,23 @@ public static void test() throws Exception { * 测试 Request 和 Response 的数据结构校验 * @throws Exception */ - public static void testStructure() throws Exception { - JSONObject request; + public static , L extends List> void testStructure() throws Exception { + SQLCreator creator = (SQLCreator) APIJSON_CREATOR; // new SQLCreator() { + // @Override + // public SQLConfig createSQLConfig() { + // return (SQLConfig) APIJSONApplication.DEFAULT_APIJSON_CREATOR.createSQLConfig(); + // } + // + // @Override + // public SQLExecutor createSQLExecutor() { + // return (SQLExecutor) APIJSONApplication.DEFAULT_APIJSON_CREATOR.createSQLExecutor(); + // } + //}; + + M request; try { request = JSON.parseObject("{\"Comment\":{\"userId\":0}}"); - Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, creator)); } catch (Throwable e) { if (e instanceof IllegalArgumentException == false || "POST请求,Comment 里面不能缺少 momentId 等[userId,momentId,content]内的任何字段!".equals(e.getMessage()) == false) { throw e; @@ -524,7 +545,7 @@ public static void testStructure() throws Exception { } try { request = JSON.parseObject("{\"Comment\":{\"id\":0, \"userId\":0, \"momentId\":0, \"content\":\"apijson\"}}"); - Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, creator)); } catch (Throwable e) { if (e instanceof IllegalArgumentException == false || "POST请求,/Comment 不能传 id !".equals(e.getMessage()) == false) { throw e; @@ -533,43 +554,43 @@ public static void testStructure() throws Exception { } try { request = JSON.parseObject("{\"Comment\":{\"userId\":0, \"momentId\":0, \"content\":\"apijson\"}}"); - Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); - AssertUtil.assertEqual("OWNER", request.getString("@role")); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, creator)); + AssertUtil.assertEqual("OWNER", getString(request, "@role")); Log.d(TAG, "测试 Operation.INSERT 不存在字段时插入:成功"); } catch (Throwable e) { throw e; } - JSONObject response; + M response; try { response = JSON.parseObject("{\"User\":{\"userId\":0}}"); - Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); - AssertUtil.assertEqual("verifyURLList(pictureList)", response.getJSONObject("User").getString("verifyURLList-()")); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, creator, null)); + AssertUtil.assertEqual("verifyURLList(pictureList)", getJSONObject(response, "User").get("verifyURLList-()")); Log.d(TAG, "测试 Operation.UPDATE 强制插入/替换:成功"); } catch (Throwable e) { throw e; } try { response = JSON.parseObject("{\"User\":{\"userId\":0, \"phone\":\"12345678\"}}"); - Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); - AssertUtil.assertEqual(null, response.getJSONObject("User").get("phone")); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, creator, null)); + AssertUtil.assertEqual(null, getJSONObject(response, "User").get("phone")); Log.d(TAG, "测试 Operation.REMOVE 强制移除:成功"); } catch (Throwable e) { throw e; } try { response = JSON.parseObject("{\"User\":{\"userId\":0, \"phone\":\"12345678\", \"sex\":1}}"); - Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); - AssertUtil.assertEqual("api", response.getJSONObject("User").get("name")); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, creator, null)); + AssertUtil.assertEqual("api", getJSONObject(response, "User").get("name")); Log.d(TAG, "测试 Operation.INSERT 不存在字段时插入:成功"); } catch (Throwable e) { throw e; } try { response = JSON.parseObject("{\"User\":{\"id\":0, \"name\":\"tommy\", \"phone\":\"12345678\", \"sex\":1}}"); - Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); - AssertUtil.assertEqual(2, response.getJSONObject("User").get("sex")); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, creator, null)); + AssertUtil.assertEqual(2, getJSONObject(response, "User").get("sex")); Log.d(TAG, "测试 Operation.REPLACE 存在字段时替换:成功"); } catch (Throwable e) { throw e; @@ -592,8 +613,8 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE @SuppressWarnings("unchecked") @NotNull @Override - public APIJSONParser createParser() { - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + public APIJSONParser createParser() { + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); parser.setVisitor(visitor); return parser; } @@ -616,7 +637,7 @@ public static void verifyLogin(HttpSession session) throws Exception { * @return */ @SuppressWarnings("unchecked") - public static T getVisitorId(HttpSession session) { + public static T getVisitorId(HttpSession session) { if (session == null) { return null; } @@ -634,7 +655,7 @@ public static T getVisitorId(HttpSession session) { * @return */ @SuppressWarnings("unchecked") - public static Visitor getVisitor(HttpSession session) { + public static Visitor getVisitor(HttpSession session) { return session == null ? null : (Visitor) session.getAttribute(VISITOR_); } @@ -655,6 +676,4 @@ public T newId(RequestMethod method, String database, String schema, String data return (T) APIJSONSQLConfig.SIMPLE_CALLBACK.newId(method, database, schema, datasource, table); } - - } diff --git a/src/main/java/apijson/framework/BaseModel.java b/src/main/java/apijson/framework/BaseModel.java index f50dba7..faf3fe5 100755 --- a/src/main/java/apijson/framework/BaseModel.java +++ b/src/main/java/apijson/framework/BaseModel.java @@ -21,8 +21,7 @@ import java.util.Date; import java.util.Map; -import com.alibaba.fastjson.JSON; - +import apijson.JSON; import apijson.StringUtil; /**base model for reduce model codes @@ -99,16 +98,14 @@ public static boolean isEmpty(T[] array) { * @param collection * @return */ - public static boolean isEmpty(Collection collection) { + public static boolean isEmpty(Collection collection) { return collection == null || collection.isEmpty(); } /**判断map是否为空 - * @param - * @param * @param map * @return */ - public static boolean isEmpty(Map map) { + public static boolean isEmpty(Map map) { return map == null || map.isEmpty(); } //判断是否为空 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -163,20 +160,17 @@ public static int count(T[] array) { return array == null ? 0 : array.length; } /**获取数量 - * @param * @param collection List, Vector, Set等都是Collection的子类 * @return */ - public static int count(Collection collection) { + public static int count(Collection collection) { return collection == null ? 0 : collection.size(); } /**获取数量 - * @param - * @param * @param map * @return */ - public static int count(Map map) { + public static int count(Map map) { return map == null ? 0 : map.size(); } //获取集合长度 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> diff --git a/src/main/java/apijson/framework/ColumnUtil.java b/src/main/java/apijson/framework/ColumnUtil.java new file mode 100644 index 0000000..c7d6214 --- /dev/null +++ b/src/main/java/apijson/framework/ColumnUtil.java @@ -0,0 +1,445 @@ +/*Copyright ©2021 TommyLemon(https://github.com/APIJSON/apijson-column) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework; + +import java.util.*; +import java.util.Map.Entry; + +import apijson.RequestMethod; +import apijson.StringUtil; +import apijson.orm.AbstractSQLConfig; +import apijson.orm.AbstractSQLExecutor; + + +/**表字段相关工具类 + * @author Lemon + * @see 先提前配置 {@link #VERSIONED_TABLE_COLUMN_MAP}, {@link #VERSIONED_KEY_COLUMN_MAP} 等,然后调用相关方法。 + * 不支持直接关联 database, schema, datasource,可以把这些与 table 拼接为一个字符串传给参数 table,格式可以是 database-schema-datasource-table + */ +public class ColumnUtil { + + /**带版本的表和字段一对多对应关系,用来做 反选字段 + * Map> + */ + public static SortedMap>> VERSIONED_TABLE_COLUMN_MAP; + + /**带版本的 JSON key 和表字段一对一对应关系,用来做字段名映射 + * Map>> + */ + public static SortedMap>> VERSIONED_KEY_COLUMN_MAP; + + /**带版本的 JSON key 和表字段一对一对应关系,用来做字段名映射,与 VERSIONED_KEY_COLUMN_MAP 相反 + * Map>> + */ + private static SortedMap>> VERSIONED_COLUMN_KEY_MAP; + + public static final Comparator DESC_COMPARATOR = new Comparator() { + @Override + public int compare(Integer o1, Integer o2) { + return o2.compareTo(o1); + } + }; + + static { + VERSIONED_TABLE_COLUMN_MAP = new TreeMap<>(DESC_COMPARATOR); + VERSIONED_KEY_COLUMN_MAP = new TreeMap<>(DESC_COMPARATOR); + VERSIONED_COLUMN_KEY_MAP = new TreeMap<>(DESC_COMPARATOR); + } + + /**初始化 + */ + public static void init() { + VERSIONED_COLUMN_KEY_MAP.clear(); + + // 反过来补全 column -> key 的配置,以空间换时间 + Set>>> set = VERSIONED_KEY_COLUMN_MAP.entrySet(); + if (set != null && set.isEmpty() == false) { + + SortedMap>> map = new TreeMap<>(DESC_COMPARATOR); + + for (Entry>> entry : set) { + + Map> tableKeyColumnMap = entry == null ? null : entry.getValue(); + Set>> tableKeyColumnSet = tableKeyColumnMap == null ? null : tableKeyColumnMap.entrySet(); + + if (tableKeyColumnSet != null && tableKeyColumnSet.isEmpty() == false) { + + Map> tableColumnKeyMap = new HashMap<>(); + + for (Entry> tableKeyColumnEntry : tableKeyColumnSet) { + + Map keyColumnMap = tableKeyColumnEntry == null ? null : tableKeyColumnEntry.getValue(); + Set> keyColumnSet = keyColumnMap == null ? null : keyColumnMap.entrySet(); + + if (keyColumnSet != null && keyColumnSet.isEmpty() == false) { + Map columnKeyMap = new HashMap<>(); + for (Entry keyColumnEntry : keyColumnSet) { + if (keyColumnEntry == null) { + continue; + } + + columnKeyMap.put(keyColumnEntry.getValue(), keyColumnEntry.getKey()); + } + + tableColumnKeyMap.put(tableKeyColumnEntry.getKey(), columnKeyMap); + } + } + + map.put(entry.getKey(), tableColumnKeyMap); + } + } + + VERSIONED_COLUMN_KEY_MAP = map; + } + + + // 补全剩下未定义别名的 key,以空间换时间 + Set>>> allSet = VERSIONED_TABLE_COLUMN_MAP.entrySet(); + if (allSet != null && allSet.isEmpty() == false) { + + for (Entry>> entry : allSet) { + Map> keyColumnMap = VERSIONED_KEY_COLUMN_MAP.get(entry.getKey()); +// 没必要,没特殊配置的就原样返回,没有安全隐患,还能减少性能浪费 Map> columnKeyMap = VERSIONED_COLUMN_KEY_MAP.get(entry.getKey()); + if (keyColumnMap == null) { + keyColumnMap = new LinkedHashMap<>(); + VERSIONED_KEY_COLUMN_MAP.put(entry.getKey(), keyColumnMap); + } +// if (columnKeyMap == null) { +// columnKeyMap = new LinkedHashMap<>(); +// VERSIONED_COLUMN_KEY_MAP.put(entry.getKey(), columnKeyMap); +// } + + Map> tableKeyColumnMap = entry == null ? null : entry.getValue(); + Set>> tableKeyColumnSet = tableKeyColumnMap == null ? null : tableKeyColumnMap.entrySet(); + + if (tableKeyColumnSet != null && tableKeyColumnSet.isEmpty() == false) { + + for (Entry> tableKeyColumnEntry : tableKeyColumnSet) { + + List list = tableKeyColumnEntry == null ? null : tableKeyColumnEntry.getValue(); + + if (list != null && list.isEmpty() == false) { + + Map kcm = keyColumnMap.get(tableKeyColumnEntry.getKey()); +// Map ckm = columnKeyMap.get(tableKeyColumnEntry.getKey()); + if (kcm == null) { + kcm = new LinkedHashMap<>(); + keyColumnMap.put(tableKeyColumnEntry.getKey(), kcm); + } +// if (ckm == null) { +// ckm = new LinkedHashMap<>(); +// columnKeyMap.put(tableKeyColumnEntry.getKey(), ckm); +// } + + for (String column : list) { + if (column == null) { + continue; + } + +// ckm.putIfAbsent(column, column); + //FIXME 对 Comment.toId (多版本) 居然不起作用 +// if (kcm.containsValue(column) == false) { + kcm.putIfAbsent(column, column); +// } + } + +// for (String column : list) { +// if (column == null || ckm.get(column) != null) { +// continue; +// } +// +// kcm.putIfAbsent(column, column); +// } + + } + } + + } + } + + } + + } + + /**适配请求参数 JSON 中 @column:value 的 value 中的 key。支持 !key 反选字段 和 字段名映射 + * @param columns + * @param table + * @param method + * @return + */ + public static List compatInputColumn(List columns, String table, RequestMethod method) { + return compatInputColumn(columns, table, method, null, false); + } + + /**适配请求参数 JSON 中 @column:value 的 value 中的 key。支持 !key 反选字段 和 字段名映射 + * @param columns + * @param table + * @param method + * @param version + * @return + * @see 先提前配置 {@link #VERSIONED_TABLE_COLUMN_MAP},然后在 {@link AbstractSQLConfig} 的子类重写 {@link AbstractSQLConfig#setColumn } 并调用这个方法,例如 + *
+	public AbstractSQLConfig setColumn(List column) { 
+ return super.setColumn(ColumnUtil.compatInputColumn(column, getTable(), version));
+ } + *
+ */ + public static List compatInputColumn(List columns, String table, RequestMethod method, Integer version, boolean throwWhenNoKey) { + String[] keys = columns == null ? null : columns.toArray(new String[]{}); // StringUtil.split(c, ";"); + if (keys == null || keys.length <= 0) { // JOIN 副表可以设置 @column:"" 来指定不返回字段 + return columns != null ? columns : getClosestValue(VERSIONED_TABLE_COLUMN_MAP, version, table); + } + + // boolean isQueryMethod = RequestMethod.isQueryMethod(method); + + List exceptColumns = new ArrayList<>(); // Map exceptColumnMap = new HashMap<>(); + List newColumns = new ArrayList<>(); + + Map keyColumnMap = getClosestValue(VERSIONED_KEY_COLUMN_MAP, version, table); + boolean isEmpty = keyColumnMap == null || keyColumnMap.isEmpty(); + + String q = "`"; + + String expression; + //...;fun0(arg0,arg1,...):fun0;fun1(arg0,arg1,...):fun1;... + for (int i = 0; i < keys.length; i++) { + + //!column,column2,!column3,column4:alias4;fun(arg0,arg1,...) + expression = keys[i]; + int start = expression.indexOf("("); + int end = expression.lastIndexOf(")"); + if (start >= 0 && start < end) { + String[] ks = StringUtil.split(expression.substring(start + 1, end)); + + String expr = expression.substring(0, start + 1); + for (int j = 0; j < ks.length; j++) { + String ck = ks[j]; + boolean hasQuote = false; + if (ck.endsWith("`")) { + String nck = ck.substring(0, ck.length() - 1); + if (nck.lastIndexOf("`") == 0) { + ck = nck.substring(1); + hasQuote = true; + } + } + + String rc = null; + if (hasQuote || StringUtil.isName(ck)) { + rc = isEmpty ? null : keyColumnMap.get(ck); + if (rc == null && isEmpty == false && throwWhenNoKey) { + throw new NullPointerException(table + ":{ @column: value } 的 value 中 " + ck + " 不合法!不允许传后端未授权访问的字段名!"); + } + } + + expr += (j <= 0 ? "" : ",") + (hasQuote ? q : "") + (rc == null ? ck : rc) + (hasQuote ? q : ""); + } + + newColumns.add(expr + expression.substring(end)); + +// newColumns.add(expression); + continue; + } + + String[] ckeys = StringUtil.split(expression); + if (ckeys != null && ckeys.length > 0) { + for (int j = 0; j < ckeys.length; j++) { + String ck = ckeys[j]; + + if (ck.startsWith("!")) { + if (ck.length() <= 1) { + throw new IllegalArgumentException("@column:value 的 value 中 " + ck + + " 不合法! !column 不允许 column 为空字符串!column,!column2,!column3,column4:alias4 中所有 column 必须符合变量名格式!"); + } + String c = ck.substring(1); + if (StringUtil.isName(c) == false) { + throw new IllegalArgumentException("@column:value 的 value 中 " + c + + " 不合法! column,!column2,!column3,column4:alias4 中所有 column 必须符合变量名格式!"); + } + + String rc = isEmpty ? null : keyColumnMap.get(c); + exceptColumns.add(rc == null ? c : rc); // 不使用数据库别名,以免 JOIN 等复杂查询情况下报错字段不存在 exceptColumnMap.put(nc == null ? c : nc, c); // column:alias + } else { + boolean hasQuote = false; + if (ck.endsWith("`")) { + String nck = ck.substring(0, ck.length() - 1); + if (nck.lastIndexOf("`") == 0) { + ck = nck.substring(1); + hasQuote = true; + } + } + + String rc = null; + if (hasQuote || StringUtil.isName(ck)) { + rc = isEmpty ? null : keyColumnMap.get(ck); + if (rc == null && isEmpty == false && throwWhenNoKey) { + throw new NullPointerException(table + ":{ @column: value } 的 value 中 " + ck + " 不合法!不允许传后端未授权访问的字段名!"); + } + } + + newColumns.add(rc == null ? ck : rc); // 不使用数据库别名,以免 JOIN 等复杂查询情况下报错字段不存在 newColumns.add(rc == null ? ck : (isQueryMethod ? (rc + ":" + ck) : rc)); + } + } + } + } + + List allColumns = exceptColumns == null || exceptColumns.isEmpty() ? null : getClosestValue(VERSIONED_TABLE_COLUMN_MAP, version, table); + + if (allColumns != null && allColumns.isEmpty() == false) { + + // 不使用数据库别名,以免 JOIN 等复杂查询情况下报错字段不存在 + // Map> tableColumnKeyMap = VERSIONED_COLUMN_KEY_MAP == null || VERSIONED_COLUMN_KEY_MAP.isEmpty() ? null : VERSIONED_COLUMN_KEY_MAP.get(version); + // Map columnKeyMap = tableColumnKeyMap == null || tableColumnKeyMap.isEmpty() ? null : tableColumnKeyMap.get(table); + + for (String c : allColumns) { + if (c != null && exceptColumns.contains(c) == false) { // column:alias + // 不使用数据库别名,以免 JOIN 等复杂查询情况下报错字段不存在 String alias = isQueryMethod == false || columnKeyMap == null || columnKeyMap.isEmpty() ? null : columnKeyMap.get(c); + newColumns.add(c); // newColumns.add(alias == null ? c : (c + ":" + alias)); + } + } + } + + return newColumns; + } + + + /**适配请求参数 JSON 中 条件/赋值 键值对的 key + * @param key + * @param table + * @param method + * @return + */ + public static String compatInputKey(String key, String table, RequestMethod method) { + return compatInputKey(key, table, method, null, false); + } + + /**适配请求参数 JSON 中 条件/赋值 键值对的 key + * @param key + * @param table + * @param method + * @param version + * @return + * @see 先提前配置 {@link #VERSIONED_KEY_COLUMN_MAP},然后在 {@link AbstractSQLConfig} 的子类重写 {@link AbstractSQLConfig#getKey } 并调用这个方法,例如 + *
+	public String getKey(String key) { 
+ return super.getKey(ColumnUtil.compatInputKey(key, getTable(), version));
+ } + *
+ */ + public static String compatInputKey(String key, String table, RequestMethod method, Integer version, boolean throwWhenNoKey) { + Map keyColumnMap = getClosestValue(VERSIONED_KEY_COLUMN_MAP, version, table); + boolean isEmpty = keyColumnMap == null || keyColumnMap.isEmpty(); + String alias = isEmpty ? null : keyColumnMap.get(key); + if (alias == null) { + if (isEmpty == false && throwWhenNoKey) { + throw new NullPointerException(table + ":{} 中不允许传 " + key + " !"); + } + return key; + } + + return alias; + } + + /**适配返回结果 JSON 中键值对的 key。可能通过不传 @column 等方式来返回原始字段名,这样就达不到隐藏真实字段名的需求了,所以只有最终这个兜底方式靠谱。 + * @param key + * @param table + * @param method + * @return + */ + public static String compatOutputKey(String key, String table, RequestMethod method) { + return compatOutputKey(key, table, method, null); + } + + /**适配返回结果 JSON 中键值对的 key。可能通过不传 @column 等方式来返回原始字段名,这样就达不到隐藏真实字段名的需求了,所以只有最终这个兜底方式靠谱。 + * @param key + * @param table + * @param method + * @param version + * @return + * @see 先提前配置 {@link #VERSIONED_COLUMN_KEY_MAP},然后在 {@link AbstractSQLExecutor} 的子类重写 {@link AbstractSQLExecutor#getKey } 并调用这个方法,例如 + *
+	protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table,
+	int columnIndex, Map childMap) throws Exception { 
+ return ColumnUtil.compatOutputKey(super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap), config.getTable(), config.getMethod(), version);
+ } + *
+ */ + public static String compatOutputKey(String key, String table, RequestMethod method, Integer version) { + Map columnKeyMap = getClosestValue(VERSIONED_COLUMN_KEY_MAP, version, table); + String alias = columnKeyMap == null || columnKeyMap.isEmpty() ? null : columnKeyMap.get(key); + return alias == null ? key : alias; + } + + public static T getClosestValue(SortedMap> versionedMap, Integer version, String table) { + boolean isEmpty = versionedMap == null || versionedMap.isEmpty(); + + Map map = isEmpty || version == null ? null : versionedMap.get(version); + T m = map == null ? null : map.get(table); + if (isEmpty == false && m == null) { + Set>> set = versionedMap.entrySet(); + + T lm = null; + for (Entry> entry : set) { + Map val = entry.getValue(); + m = val == null ? null : val.get(table); + if (m == null) { + continue; + } + + if (version == null || version == 0) { + // versionedMap.put(null, val); + return m; + } + + Integer key = entry.getKey(); + if (key == null) { + lm = m; + map = val; + continue; + } + + if (version >= key) { + versionedMap.put(version, val); + return m; + } + + break; + } + + if (lm != null) { + m = lm; + } + + if (map != null) { + versionedMap.put(version, map); + } + } + + return m; + } + + + /**把多个表名相关属性拼接成一个表名 + * @param database + * @param schema + * @param datasource + * @param table + * @return + */ + public static String concat(String database, String schema, String datasource, String table) { + return database + "-" + schema + "-" + datasource + "-" + table; + } + + +} diff --git a/src/main/java/apijson/framework/javax/APIJSONApplication.java b/src/main/java/apijson/framework/javax/APIJSONApplication.java index 5d9121a..29e9d1b 100755 --- a/src/main/java/apijson/framework/javax/APIJSONApplication.java +++ b/src/main/java/apijson/framework/javax/APIJSONApplication.java @@ -16,10 +16,13 @@ import apijson.Log; import apijson.NotNull; +import apijson.framework.javax.*; import apijson.orm.AbstractFunctionParser; import apijson.orm.script.ScriptExecutor; import java.rmi.ServerException; +import java.util.List; +import java.util.Map; /**启动入口 Application @@ -30,7 +33,7 @@ public class APIJSONApplication { public static final String TAG = "APIJSONApplication"; @NotNull - public static APIJSONCreator DEFAULT_APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> DEFAULT_APIJSON_CREATOR; static { DEFAULT_APIJSON_CREATOR = new APIJSONCreator<>(); } @@ -56,7 +59,8 @@ public static void init(boolean shutdownWhenServerError) throws Exception { * @return * @throws Exception */ - public static void init(@NotNull APIJSONCreator creator) throws Exception { + public static , L extends List> void init( + @NotNull APIJSONCreator creator) throws Exception { init(true, creator); } /**初始化,加载所有配置并校验 @@ -65,7 +69,8 @@ public static void init(@NotNull APIJSONCreator creator) t * @return * @throws Exception */ - public static void init(boolean shutdownWhenServerError, @NotNull APIJSONCreator creator) throws Exception { + public static , L extends List> void init( + boolean shutdownWhenServerError, @NotNull APIJSONCreator creator) throws Exception { System.out.println("\n\n\n\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON 开始启动 >>>>>>>>>>>>>>>>>>>>>>>>\n"); DEFAULT_APIJSON_CREATOR = creator; diff --git a/src/main/java/apijson/framework/javax/APIJSONController.java b/src/main/java/apijson/framework/javax/APIJSONController.java index d4f0053..271424a 100755 --- a/src/main/java/apijson/framework/javax/APIJSONController.java +++ b/src/main/java/apijson/framework/javax/APIJSONController.java @@ -18,18 +18,14 @@ import apijson.orm.AbstractParser; import apijson.orm.Parser; import apijson.orm.Visitor; -import com.alibaba.fastjson.JSONObject; -import javax.servlet.AsyncContext; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; + import javax.servlet.http.HttpSession; -import unitauto.MethodUtil; -import unitauto.MethodUtil.InterfaceProxy; -import java.lang.reflect.Method; import java.rmi.ServerException; +import java.util.List; import java.util.Map; +import static apijson.JSON.toJSONString; import static apijson.RequestMethod.*; import static apijson.framework.javax.APIJSONConstant.*; @@ -41,29 +37,29 @@ *
3.调试方便 - 建议使用 APIAuto-机器学习自动化接口管理工具(https://github.com/TommyLemon/APIAuto) * @author Lemon */ -public class APIJSONController { +public class APIJSONController, L extends List> { public static final String TAG = "APIJSONController"; @NotNull - public static APIJSONCreator APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { - APIJSON_CREATOR = new APIJSONCreator<>(); + APIJSON_CREATOR = new APIJSONCreator(); } public String getRequestURL() { return null; } - public Parser newParser(HttpSession session, RequestMethod method) { + public APIJSONParser newParser(HttpSession session, RequestMethod method) { @SuppressWarnings("unchecked") - Parser parser = (Parser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); parser.setMethod(method); if (parser instanceof APIJSONParser) { - ((APIJSONParser) parser).setSession(session); + ((APIJSONParser) parser).setSession(session); } // 可以更方便地通过日志排查错误 if (parser instanceof AbstractParser) { - ((AbstractParser) parser).setRequestURL(getRequestURL()); + ((AbstractParser) parser).setRequestURL(getRequestURL()); } return parser; } @@ -73,10 +69,10 @@ public String parse(RequestMethod method, String request, HttpSession session) { } public String parseByTag(RequestMethod method, String tag, Map params, String request, HttpSession session) { - - JSONObject req = AbstractParser.wrapRequest(method, tag, JSON.parseObject(request), false); + APIJSONParser parser = newParser(null, null); + M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false, (JSONCreator) APIJSON_CREATOR); if (req == null) { - req = new JSONObject(true); + req = JSON.createJSONObject(); } if (params != null && params.isEmpty() == false) { req.putAll(params); @@ -97,9 +93,12 @@ public String crud(String method, String request, HttpSession session) { if (METHODS.contains(method)) { return parse(RequestMethod.valueOf(method.toUpperCase()), request, session); } - - return APIJSONParser.newErrorResult(new IllegalArgumentException("URL 路径 /{method} 中 method 值 " + method - + " 错误!只允许 " + METHODS + " 中的一个!")).toJSONString(); + + Parser parser = newParser(null, null); + return toJSONString(parser.newErrorResult( + new IllegalArgumentException("URL 路径 /{method} 中 method 值 " + + method + " 错误!只允许 " + METHODS + " 中的一个!") + )); } /**获取 @@ -200,9 +199,12 @@ public String crudByTag(String method, String tag, Map params, S if (METHODS.contains(method)) { return parseByTag(RequestMethod.valueOf(method.toUpperCase()), tag, params, request, session); } - - return APIJSONParser.newErrorResult(new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + method - + " 错误!只允许 " + METHODS + " 中的一个!")).toJSONString(); + + Parser parser = newParser(null, null); + return toJSONString(parser.newErrorResult( + new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + + method + " 错误!只允许 " + METHODS + " 中的一个!") + )); } @@ -213,7 +215,7 @@ public String crudByTag(String method, String tag, Map params, S // * @see {@link RequestMethod#GET} // */ // public String listByTag(String tag, String request, HttpSession session) { -// return parseByTag(GET, tag + JSONRequest.KEY_ARRAY, request, session); +// return parseByTag(GET, tag + apijson.JSONObject.KEY_ARRAY, request, session); // } /**获取 @@ -303,8 +305,9 @@ public String deleteByTag(String tag, Map params, String request } * */ - public JSONObject reload(String type) { - JSONObject result = APIJSONParser.newSuccessResult(); + public M reload(String type) { + Parser parser = newParser(null, null); + M result = parser.newSuccessResult(); boolean reloadAll = StringUtil.isEmpty(type, true) || "ALL".equals(type); @@ -320,7 +323,7 @@ public JSONObject reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(ACCESS_, APIJSONParser.newErrorResult(e)); + result.put(ACCESS_, parser.newErrorResult(e)); } } @@ -336,7 +339,7 @@ public JSONObject reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(FUNCTION_, APIJSONParser.newErrorResult(e)); + result.put(FUNCTION_, parser.newErrorResult(e)); } } @@ -352,7 +355,7 @@ public JSONObject reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(REQUEST_, APIJSONParser.newErrorResult(e)); + result.put(REQUEST_, parser.newErrorResult(e)); } } @@ -391,62 +394,62 @@ public Object logout(@NotNull HttpSession session) { - public JSONObject listMethod(String request) { - if (Log.DEBUG == false) { - return APIJSONParser.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!")); - } - return MethodUtil.listMethod(request); - } - - public void invokeMethod(String request, HttpServletRequest servletRequest) { - AsyncContext asyncContext = servletRequest.startAsync(); - - final boolean[] called = new boolean[] { false }; - MethodUtil.Listener listener = new MethodUtil.Listener() { - - @Override - public void complete(JSONObject data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { - - ServletResponse servletResponse = called[0] ? null : asyncContext.getResponse(); - if (servletResponse == null) { // || servletResponse.isCommitted()) { // isCommitted 在高并发时可能不准,导致写入多次 - Log.w(TAG, "invokeMethod listener.complete servletResponse == null || servletResponse.isCommitted() >> return;"); - return; - } - called[0] = true; - - servletResponse.setCharacterEncoding(servletRequest.getCharacterEncoding()); - servletResponse.setContentType(servletRequest.getContentType()); - servletResponse.getWriter().println(data); - asyncContext.complete(); - } - }; - - if (Log.DEBUG == false) { - try { - listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!"))); - } - catch (Exception e1) { - e1.printStackTrace(); - asyncContext.complete(); - } - - return; - } - - - try { - MethodUtil.invokeMethod(request, null, listener); - } - catch (Exception e) { - Log.e(TAG, "invokeMethod try { JSONObject req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); - try { - listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(e)); - } - catch (Exception e1) { - e1.printStackTrace(); - asyncContext.complete(); - } - } - } +// public JSONObject listMethod(String request) { +// if (Log.DEBUG == false) { +// return APIJSONParser.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!")); +// } +// return MethodUtil.listMethod(request); +// } +// +// public void invokeMethod(String request, HttpServletRequest servletRequest) { +// AsyncContext asyncContext = servletRequest.startAsync(); +// +// final boolean[] called = new boolean[] { false }; +// MethodUtil.Listener listener = new MethodUtil.Listener() { +// +// @Override +// public void complete(JSONObject data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { +// +// ServletResponse servletResponse = called[0] ? null : asyncContext.getResponse(); +// if (servletResponse == null) { // || servletResponse.isCommitted()) { // isCommitted 在高并发时可能不准,导致写入多次 +// Log.w(TAG, "invokeMethod listener.complete servletResponse == null || servletResponse.isCommitted() >> return;"); +// return; +// } +// called[0] = true; +// +// servletResponse.setCharacterEncoding(servletRequest.getCharacterEncoding()); +// servletResponse.setContentType(servletRequest.getContentType()); +// servletResponse.getWriter().println(data); +// asyncContext.complete(); +// } +// }; +// +// if (Log.DEBUG == false) { +// try { +// listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!"))); +// } +// catch (Exception e1) { +// e1.printStackTrace(); +// asyncContext.complete(); +// } +// +// return; +// } +// +// +// try { +// MethodUtil.invokeMethod(request, null, listener); +// } +// catch (Exception e) { +// Log.e(TAG, "invokeMethod try { JSONObject req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); +// try { +// listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(e)); +// } +// catch (Exception e1) { +// e1.printStackTrace(); +// asyncContext.complete(); +// } +// } +// } } diff --git a/src/main/java/apijson/framework/javax/APIJSONCreator.java b/src/main/java/apijson/framework/javax/APIJSONCreator.java index 6e1c558..56b5db7 100644 --- a/src/main/java/apijson/framework/javax/APIJSONCreator.java +++ b/src/main/java/apijson/framework/javax/APIJSONCreator.java @@ -16,34 +16,38 @@ import apijson.orm.*; +import java.util.List; +import java.util.Map; + /**APIJSON相关创建器 * @author Lemon */ -public class APIJSONCreator implements ParserCreator, VerifierCreator, SQLCreator { +public class APIJSONCreator, L extends List> + implements ParserCreator, VerifierCreator, SQLCreator { @Override - public Parser createParser() { + public APIJSONParser createParser() { return new APIJSONParser<>(); } @Override - public FunctionParser createFunctionParser() { + public APIJSONFunctionParser createFunctionParser() { return new APIJSONFunctionParser<>(); } @Override - public Verifier createVerifier() { + public APIJSONVerifier createVerifier() { return new APIJSONVerifier<>(); } @Override - public SQLConfig createSQLConfig() { + public APIJSONSQLConfig createSQLConfig() { return new APIJSONSQLConfig<>(); } @Override - public SQLExecutor createSQLExecutor() { + public APIJSONSQLExecutor createSQLExecutor() { return new APIJSONSQLExecutor<>(); } diff --git a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java old mode 100755 new mode 100644 index 281295c..18a373a --- a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java @@ -16,22 +16,16 @@ import apijson.*; import apijson.orm.AbstractFunctionParser; -import apijson.orm.JSONRequest; import apijson.orm.script.JavaScriptExecutor; import apijson.orm.script.ScriptExecutor; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import javax.servlet.http.HttpSession; -import unitauto.MethodUtil; -import unitauto.MethodUtil.Argument; +//import unitauto.MethodUtil; +//import unitauto.MethodUtil.Argument; -import java.io.IOException; import java.rmi.ServerException; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import static apijson.JSON.*; import static apijson.RequestMethod.*; import static apijson.framework.javax.APIJSONConstant.FUNCTION_; import static apijson.framework.javax.APIJSONConstant.SCRIPT_; @@ -40,11 +34,11 @@ /**可远程调用的函数类 * @author Lemon */ -public class APIJSONFunctionParser extends AbstractFunctionParser { +public class APIJSONFunctionParser, L extends List> extends AbstractFunctionParser { public static final String TAG = "APIJSONFunctionParser"; @NotNull - public static APIJSONCreator APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; @NotNull public static final String[] ALL_METHODS; static { @@ -59,30 +53,30 @@ public APIJSONFunctionParser() { public APIJSONFunctionParser(HttpSession session) { this(null, null, 0, null, session); } - public APIJSONFunctionParser(RequestMethod method, String tag, int version, JSONObject curObj, HttpSession session) { + public APIJSONFunctionParser(RequestMethod method, String tag, int version, M curObj, HttpSession session) { super(method, tag, version, curObj); setSession(session); } public HttpSession getSession() { return session; } - public APIJSONFunctionParser setSession(HttpSession session) { + public APIJSONFunctionParser setSession(HttpSession session) { this.session = session; return this; } @Override - public APIJSONFunctionParser setMethod(RequestMethod method) { + public APIJSONFunctionParser setMethod(RequestMethod method) { super.setMethod(method); return this; } @Override - public APIJSONFunctionParser setTag(String tag) { + public APIJSONFunctionParser setTag(String tag) { super.setTag(tag); return this; } @Override - public APIJSONFunctionParser setVersion(int version) { + public APIJSONFunctionParser setVersion(int version) { super.setVersion(version); return this; } @@ -91,7 +85,7 @@ public APIJSONFunctionParser setVersion(int version) { * @return * @throws ServerException */ - public static JSONObject init() throws ServerException { + public static > M init() throws ServerException { return init(false); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 @@ -99,7 +93,7 @@ public static JSONObject init() throws ServerException { * @return * @throws ServerException */ - public static JSONObject init(boolean shutdownWhenServerError) throws ServerException { + public static > M init(boolean shutdownWhenServerError) throws ServerException { return init(shutdownWhenServerError, null); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 @@ -107,7 +101,7 @@ public static JSONObject init(boolean shutdownWhenServerError) throws ServerExce * @return * @throws ServerException */ - public static JSONObject init(APIJSONCreator creator) throws ServerException { + public static , L extends List> M init(APIJSONCreator creator) throws ServerException { return init(false, creator); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 @@ -116,7 +110,7 @@ public static JSONObject init(APIJSONCreator creator) thro * @return * @throws ServerException */ - public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + public static , L extends List> M init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return init(shutdownWhenServerError, creator, null); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 @@ -127,34 +121,35 @@ public static JSONObject init(boolean shutdownWhenServerError * @throws ServerException */ @SuppressWarnings("unchecked") - public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + public static , L extends List> M init(boolean shutdownWhenServerError + , APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSON_CREATOR; } APIJSON_CREATOR = creator; boolean isAll = table == null || table.isEmpty(); - //JSONObject function = isAll ? new JSONRequest() : table; + //JSONRequest function = isAll ? JSON.createJSONObject() : table; //if (Log.DEBUG == false) { // function.put(APIJSONConstant.KEY_DEBUG, 0); //} // - //JSONRequest functionItem = new JSONRequest(); + //JSONRequest functionItem = JSON.createJSONObject(); //functionItem.put(FUNCTION_, function); // - //JSONObject script = new JSONRequest(); // isAll ? new JSONRequest() : table; + //JSONRequest script = JSON.createJSONObject(); // isAll ? JSON.createJSONObject() : table; //script.put("simple", 0); //if (Log.DEBUG == false) { // script.put(APIJSONConstant.KEY_DEBUG, 0); //} // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 //{ // name{}@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - //JSONRequest nameInAt = new JSONRequest(); + //JSONRequest nameInAt = JSON.createJSONObject(); //nameInAt.put("from", "Function"); //{ // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // JSONRequest fun = new JSONRequest(); + // JSONRequest fun = JSON.createJSONObject(); // fun.setColumn("name"); // nameInAt.put("Function", fun); //} // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -162,19 +157,19 @@ public static JSONObject init(boolean shutdownWhenServerError //script.put("name{}@", nameInAt); //} // name{}@ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - //JSONRequest scriptItem = new JSONRequest(); + //JSONRequest scriptItem = JSON.createJSONObject(); //scriptItem.put(SCRIPT_, script); - JSONObject request = new JSONObject(); + M request = JSON.createJSONObject(); //request.putAll(functionItem.toArray(0, 0, FUNCTION_)); //request.putAll(scriptItem.toArray(0, 0, SCRIPT_)); // 可以用它,因为 Function 表必须存在,没有绕过校验的配置 // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 { // [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONRequest item = new JSONRequest(); + M item = JSON.createJSONObject(); { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONObject function = isAll ? new JSONRequest() : table; + M function = isAll ? JSON.createJSONObject() : table; if (! Log.DEBUG) { function.put(APIJSONConstant.KEY_DEBUG, 0); } @@ -182,19 +177,20 @@ public static JSONObject init(boolean shutdownWhenServerError } // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> if (ENABLE_SCRIPT_FUNCTION) { // Script <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - JSONRequest script = new JSONRequest(); + M script = JSON.createJSONObject(); script.put("name@", "/Function/name"); script.put("simple", 0); item.put(SCRIPT_, script); } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - request.putAll(item.toArray(0, 0)); + request.put("[]", item); + request.put(apijson.JSONRequest.KEY_COUNT, 0); } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> - JSONObject response = creator.createParser().setMethod(GET).setNeedVerify(true).parseResponse(request); + M response = creator.createParser().setMethod(GET).setNeedVerify(true).parseResponse(request); if (! JSONResponse.isSuccess(response)) { - onServerError("\n\n\n\n\n !!!! 查询远程函数异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n", shutdownWhenServerError); + onServerError("\n\n\n\n\n !!!! 查询远程函数异常 !!!\n" + response.get(JSONResponse.KEY_MSG) + "\n\n\n\n\n", shutdownWhenServerError); } //初始化默认脚本引擎,避免增量 @@ -206,27 +202,27 @@ public static JSONObject init(boolean shutdownWhenServerError SCRIPT_EXECUTOR_MAP.put("javascript", javaScriptExecutor); } - Map scriptMap = new HashMap<>(); - JSONArray scriptList = response.getJSONArray("[]"); // response.getJSONArray(SCRIPT_ + "[]"); + Map scriptMap = new HashMap<>(); + L scriptList = (L) JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); if (scriptList != null && ! scriptList.isEmpty()) { //if (isAll) { // SCRIPT_MAP = new LinkedHashMap<>(); //} - Map newMap = new LinkedHashMap<>(); + Map newMap = new LinkedHashMap<>(); for (int i = 0; i < scriptList.size(); i++) { - JSONObject item = scriptList.getJSONObject(i); - item = item == null ? null : item.getJSONObject(SCRIPT_); + M item = (M) JSON.get(scriptList, i); + item = item == null ? null : (M) JSON.get(item, SCRIPT_); if (item == null) { // 关联查不到很正常 continue; } - String n = item.getString("name"); + String n = getString(item, "name"); if (! StringUtil.isName(n)) { onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); } - String s = item.getString("script"); + String s = getString(item, "script"); if (StringUtil.isEmpty(s, true)) { onServerError("Script 表字段 script 的值 " + s + " 不合法!不能为空!", shutdownWhenServerError); } @@ -236,7 +232,7 @@ public static JSONObject init(boolean shutdownWhenServerError scriptMap = newMap; } - JSONArray list = scriptList; // response.getJSONArray(FUNCTION_ + "[]"); + L list = scriptList; // response.getJSONArray(FUNCTION_ + "[]"); int size = list == null ? 0 : list.size(); if (isAll && size <= 0) { Log.w(TAG, "init isAll && size <= 0,,没有可用的远程函数"); @@ -247,16 +243,16 @@ public static JSONObject init(boolean shutdownWhenServerError if (isAll) { // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! 如果要做成完全校验通过才更新 FUNCTION_MAP,但又不提供 忽略校验 参数,似乎无解 FUNCTION_MAP = new LinkedHashMap<>(); } - Map newMap = FUNCTION_MAP; // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! new LinkedHashMap<>(); + Map> newMap = FUNCTION_MAP; // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! new LinkedHashMap<>(); for (int i = 0; i < size; i++) { - JSONObject item = list.getJSONObject(i); - item = item == null ? null : item.getJSONObject(FUNCTION_); + M item = JSON.get(list, i); + item = item == null ? null : JSON.get(item, FUNCTION_); if (item == null) { continue; } - JSONObject demo = JSON.parseObject(item.getString("demo")); + M demo = JSON.parseObject(getString(item, "demo")); if (demo == null) { try { onServerError("字段 demo 的值必须为合法且非 null 的 JSONObejct 字符串!", shutdownWhenServerError); @@ -264,24 +260,25 @@ public static JSONObject init(boolean shutdownWhenServerError throw new RuntimeException(e); } } - String name = item.getString("name"); - // demo.put(JSONRequest.KEY_TAG, item.getString(JSONRequest.KEY_TAG)); - // demo.put(JSONRequest.KEY_VERSION, item.getInteger(JSONRequest.KEY_VERSION)); + String name = getString(item, "name"); + // demo.put(apijson.JSONRequest.KEY_TAG, getString(item, apijson.JSONRequest.KEY_TAG)); + // demo.put(apijson.JSONRequest.KEY_VERSION, item.getInteger(apijson.JSONRequest.KEY_VERSION)); //加载脚本 if (item.get("language") != null) { - String language = item.getString("language"); + String language = getString(item, "language"); // if (SCRIPT_EXECUTOR_MAP.get(language) == null) { - // onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); + // onServerError("找不到脚本语言 " + language + " 对应的执行引擎!请先依赖相关库并在后端 APIJSONFunctionParser 中注册!", shutdownWhenServerError); // } //脚本语言执行 if (SCRIPT_EXECUTOR_MAP.containsKey(language)){ ScriptExecutor scriptExecutor = SCRIPT_EXECUTOR_MAP.get(language); - scriptExecutor.load(name, scriptMap.get(name).getString("script")); + M script = scriptMap.get(name); + scriptExecutor.load(name, getString(script, "script")); } } newMap.put(name, item); // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! - String[] methods = StringUtil.split(item.getString("methods")); + String[] methods = StringUtil.split(getString(item, "methods")); if (methods == null || methods.length <= 0) { methods = ALL_METHODS; @@ -289,15 +286,15 @@ public static JSONObject init(boolean shutdownWhenServerError if (demo != null){ if (! demo.containsKey("result()")) { - demo.put("result()", getFunctionCall(name, item.getString("arguments"))); + demo.put("result()", getFunctionCall(name, getString(item, "arguments"))); } - demo.put(JSONRequest.KEY_TAG, item.get(JSONRequest.KEY_TAG)); - demo.put(JSONRequest.KEY_VERSION, item.get(JSONRequest.KEY_VERSION)); + demo.put(apijson.JSONRequest.KEY_TAG, item.get(apijson.JSONRequest.KEY_TAG)); + demo.put(apijson.JSONRequest.KEY_VERSION, item.get(apijson.JSONRequest.KEY_VERSION)); } for (String method : methods) { - JSONObject r = APIJSON_CREATOR.createParser() - .setMethod(RequestMethod.valueOf(method)) + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + M r = parser.setMethod(RequestMethod.valueOf(method)) .setNeedVerify(false) .parseResponse(demo); @@ -337,33 +334,33 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE public static void test() throws Exception { test(null); } - public static void test(APIJSONFunctionParser function) throws Exception { + public static , L extends List> void test(APIJSONFunctionParser function) throws Exception { int i0 = 1, i1 = -2; - JSONObject request = new JSONObject(); + M request = JSON.createJSONObject(); request.put("id", 10); request.put("i0", i0); request.put("i1", i1); JSONArray arr = new JSONArray(); - arr.add(new JSONObject()); + arr.add(JSON.createJSONObject()); request.put("arr", arr); - JSONArray array = new JSONArray(); - array.add(1);//new JSONObject()); - array.add(2);//new JSONObject()); - array.add(4);//new JSONObject()); - array.add(10);//new JSONObject()); + L array = JSON.createJSONArray(); + array.add(1);//JSON.createJSONObject()); + array.add(2);//JSON.createJSONObject()); + array.add(4);//JSON.createJSONObject()); + array.add(10);//JSON.createJSONObject()); request.put("array", array); request.put("position", 1); request.put("@position", 0); request.put("key", "key"); - JSONObject object = new JSONObject(); + M object = JSON.createJSONObject(); object.put("key", "success"); request.put("object", object); if (function == null) { - function = new APIJSONFunctionParser(null, null, 1, null, null); + function = new APIJSONFunctionParser<>(null, null, 1, null, null); } // 等数据库 Function 表加上 plus 配置再过两个以上迭代(应该是到 5.0)后再取消注释 @@ -390,13 +387,13 @@ public static void test(APIJSONFunctionParser function) th * @return * @throws ServerException */ - public JSONObject getFunctionDemo(@NotNull JSONObject curObj) { - JSONObject demo = JSON.parseObject(curObj.getString("demo")); + public M getFunctionDemo(@NotNull M curObj) { + M demo = JSON.parseObject(getString(curObj, "demo")); if (demo == null) { - demo = new JSONObject(); + demo = JSON.createJSONObject(); } if (! demo.containsKey("result()")) { - demo.put("result()", getFunctionCall(curObj.getString("name"), curObj.getString("arguments"))); + demo.put("result()", getFunctionCall(getString(curObj, "name"), getString(curObj, "arguments"))); } return demo; } @@ -405,9 +402,9 @@ public JSONObject getFunctionDemo(@NotNull JSONObject curObj) { * @param curObj * @return */ - public String getFunctionDetail(@NotNull JSONObject curObj) { - return getFunctionCall(curObj.getString("name"), curObj.getString("arguments")) - + ": " + StringUtil.getTrimedString(curObj.getString("detail")); + public String getFunctionDetail(@NotNull M curObj) { + return getFunctionCall(getString(curObj, "name"), getString(curObj, "arguments")) + + ": " + StringUtil.trim(getString(curObj, "detail")); } /**获取函数调用代码 * @param name @@ -415,33 +412,33 @@ public String getFunctionDetail(@NotNull JSONObject curObj) { * @return */ private static String getFunctionCall(String name, String arguments) { - return name + "(" + StringUtil.getTrimedString(arguments) + ")"; + return name + "(" + StringUtil.trim(arguments) + ")"; } - public double plus(@NotNull JSONObject curObj, String i0, String i1) { - return curObj.getDoubleValue(i0) + curObj.getDoubleValue(i1); + public double plus(@NotNull M curObj, String i0, String i1) { + return getDoubleValue(curObj, i0) + getDoubleValue(curObj, i1); } - public double minus(@NotNull JSONObject curObj, String i0, String i1) { - return curObj.getDoubleValue(i0) - curObj.getDoubleValue(i1); + public double minus(@NotNull M curObj, String i0, String i1) { + return getDoubleValue(curObj, i0) - getDoubleValue(curObj, i1); } - public double multiply(@NotNull JSONObject curObj, String i0, String i1) { - return curObj.getDoubleValue(i0) * curObj.getDoubleValue(i1); + public double multiply(@NotNull M curObj, String i0, String i1) { + return getDoubleValue(curObj, i0) * getDoubleValue(curObj, i1); } - public double divide(@NotNull JSONObject curObj, String i0, String i1) { - return curObj.getDoubleValue(i0) / curObj.getDoubleValue(i1); + public double divide(@NotNull M curObj, String i0, String i1) { + return getDoubleValue(curObj, i0) / getDoubleValue(curObj, i1); } - public double plus(@NotNull JSONObject curObj, Number n0, Number n1) { + public double plus(@NotNull M curObj, Number n0, Number n1) { return n0.doubleValue() + n1.doubleValue(); } - public double minus(@NotNull JSONObject curObj, Number n0, Number n1) { + public double minus(@NotNull M curObj, Number n0, Number n1) { return n0.doubleValue() - n1.doubleValue(); } - public double multiply(@NotNull JSONObject curObj, Number n0, Number n1) { + public double multiply(@NotNull M curObj, Number n0, Number n1) { return n0.doubleValue() * n1.doubleValue(); } - public double divide(@NotNull JSONObject curObj, Number n0, Number n1) { + public double divide(@NotNull M curObj, Number n0, Number n1) { return n0.doubleValue() / n1.doubleValue(); } @@ -451,16 +448,16 @@ public double divide(@NotNull JSONObject curObj, Number n0, Number n1) { * @param array * @return */ - public boolean isArrayEmpty(@NotNull JSONObject curObj, String array) { - return BaseModel.isEmpty(curObj.getJSONArray(array)); + public boolean isArrayEmpty(@NotNull M curObj, String array) { + return BaseModel.isEmpty((Collection) getJSONArray(curObj, array)); } /**判断object是否为空 * @param curObj * @param object * @return */ - public boolean isObjectEmpty(@NotNull JSONObject curObj, String object) { - return BaseModel.isEmpty(curObj.getJSONObject(object)); + public boolean isObjectEmpty(@NotNull M curObj, String object) { + return BaseModel.isEmpty((Map) getJSONObject(curObj, object)); } //判断是否为空 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -471,13 +468,13 @@ public boolean isObjectEmpty(@NotNull JSONObject curObj, String object) { * @param value * @return */ - public boolean isContain(@NotNull JSONObject curObj, String array, String value) { + public boolean isContain(@NotNull M curObj, String array, String value) { //解决isContain((List) [82001,...], (Integer) 82001) == false及类似问题, list元素可能是从数据库查到的bigint类型的值 - // return BaseModel.isContain(curObj.getJSONArray(array), curObj.get(value)); + // return BaseModel.isContain(getJSONArray(curObj, array), curObj.get(value)); - //不用准确的的 curObj.getString(value).getClass() ,因为Long值转Integer崩溃,而且转成一种类型本身就和字符串对比效果一样了。 - List list = com.alibaba.fastjson.JSON.parseArray(curObj.getString(array), String.class); - return list != null && list.contains(curObj.getString(value)); + //不用准确的的 getString(curObj, value).getClass() ,因为Long值转Integer崩溃,而且转成一种类型本身就和字符串对比效果一样了。 + List list = JSON.parseArray(getString(curObj, array), String.class); + return list != null && list.contains(getString(curObj, value)); } /**判断object是否包含key * @param curObj @@ -485,8 +482,8 @@ public boolean isContain(@NotNull JSONObject curObj, String array, String value) * @param key * @return */ - public boolean isContainKey(@NotNull JSONObject curObj, String object, String key) { - return BaseModel.isContainKey(curObj.getJSONObject(object), curObj.getString(key)); + public boolean isContainKey(@NotNull M curObj, String object, String key) { + return BaseModel.isContainKey(getJSONObject(curObj, object), getString(curObj, key)); } /**判断object是否包含value * @param curObj @@ -494,8 +491,8 @@ public boolean isContainKey(@NotNull JSONObject curObj, String object, String ke * @param value * @return */ - public boolean isContainValue(@NotNull JSONObject curObj, String object, String value) { - return BaseModel.isContainValue(curObj.getJSONObject(object), curObj.get(value)); + public boolean isContainValue(@NotNull M curObj, String object, String value) { + return BaseModel.isContainValue(getJSONObject(curObj, object), curObj.get(value)); } //判断是否为包含 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -506,16 +503,16 @@ public boolean isContainValue(@NotNull JSONObject curObj, String object, String * @param array * @return */ - public int countArray(@NotNull JSONObject curObj, String array) { - return BaseModel.count(curObj.getJSONArray(array)); + public int countArray(@NotNull M curObj, String array) { + return BaseModel.count((Collection) getJSONArray(curObj, array)); } /**获取数量 * @param curObj * @param object * @return */ - public int countObject(@NotNull JSONObject curObj, String object) { - return BaseModel.count(curObj.getJSONObject(object)); + public int countObject(@NotNull M curObj, String object) { + return BaseModel.count((Map) getJSONObject(curObj, object)); } //获取集合长度 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -527,14 +524,14 @@ public int countObject(@NotNull JSONObject curObj, String object) { * @param position 支持直接传数字,例如 getFromArray(array,0) ;或者引用当前对象的值,例如 "@position": 0, "result()": "getFromArray(array,@position)" * @return */ - public Object getFromArray(@NotNull JSONObject curObj, String array, String position) { + public Object getFromArray(@NotNull M curObj, String array, String position) { int p; try { p = Integer.parseInt(position); } catch (Exception e) { - p = curObj.getIntValue(position); + p = getIntValue(curObj, position); } - return BaseModel.get(curObj.getJSONArray(array), p); + return BaseModel.get(getJSONArray(curObj, array), p); } /**获取 * @param curObj @@ -542,8 +539,8 @@ public Object getFromArray(@NotNull JSONObject curObj, String array, String posi * @param key * @return */ - public Object getFromObject(@NotNull JSONObject curObj, String object, String key) { - return BaseModel.get(curObj.getJSONObject(object), curObj.getString(key)); + public Object getFromObject(@NotNull M curObj, String object, String key) { + return BaseModel.get(getJSONObject(curObj, object), getString(curObj, key)); } //根据键获取值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -553,12 +550,12 @@ public Object getFromObject(@NotNull JSONObject curObj, String object, String ke * @param position 支持直接传数字,例如 getFromArray(array,0) ;或者引用当前对象的值,例如 "@position": 0, "result()": "getFromArray(array,@position)" * @return */ - public Object removeIndex(@NotNull JSONObject curObj, String position) { + public Object removeIndex(@NotNull M curObj, String position) { int p; try { p = Integer.parseInt(position); } catch (Exception e) { - p = curObj.getIntValue(position); + p = getIntValue(curObj, position); } curObj.remove(p); return null; @@ -568,7 +565,7 @@ public Object removeIndex(@NotNull JSONObject curObj, String position) { * @param key * @return */ - public Object removeKey(@NotNull JSONObject curObj, String key) { + public Object removeKey(@NotNull M curObj, String key) { curObj.remove(key); return null; } @@ -582,40 +579,40 @@ public Object removeKey(@NotNull JSONObject curObj, String key) { * @param value * @return */ - public boolean booleanValue(@NotNull JSONObject curObj, String value) { - return curObj.getBooleanValue(value); + public boolean booleanValue(@NotNull M curObj, String value) { + return getBooleanValue(curObj, value); } /**获取非空值 * @param curObj * @param value * @return */ - public int intValue(@NotNull JSONObject curObj, String value) { - return curObj.getIntValue(value); + public int intValue(@NotNull M curObj, String value) { + return getIntValue(curObj, value); } /**获取非空值 * @param curObj * @param value * @return */ - public long longValue(@NotNull JSONObject curObj, String value) { - return curObj.getLongValue(value); + public long longValue(@NotNull M curObj, String value) { + return getLongValue(curObj, value); } /**获取非空值 * @param curObj * @param value * @return */ - public float floatValue(@NotNull JSONObject curObj, String value) { - return curObj.getFloatValue(value); + public float floatValue(@NotNull M curObj, String value) { + return getFloatValue(curObj, value); } /**获取非空值 * @param curObj * @param value * @return */ - public double doubleValue(@NotNull JSONObject curObj, String value) { - return curObj.getDoubleValue(value); + public double doubleValue(@NotNull M curObj, String value) { + return getDoubleValue(curObj, value); } //获取非基本类型对应基本类型的非空值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -625,166 +622,165 @@ public double doubleValue(@NotNull JSONObject curObj, String value) { * @param defaultValue * @return v == null ? curObj.get(defaultValue) : v */ - public Object getWithDefault(@NotNull JSONObject curObj, String value, String defaultValue) { + public Object getWithDefault(@NotNull M curObj, String value, String defaultValue) { Object v = curObj.get(value); return v == null ? curObj.get(defaultValue) : v; } - - - /**获取方法参数的定义 - * @param curObj - * @return - * @throws IOException - * @throws ClassNotFoundException - * @throws IllegalArgumentException - */ - public String getMethodArguments(@NotNull JSONObject curObj) throws IllegalArgumentException, ClassNotFoundException, IOException { - return getMethodArguments(curObj, "methodArgs"); - } - /**获取方法参数的定义 - * @param curObj - * @param methodArgsKey - * @return - * @throws IllegalArgumentException - * @throws ClassNotFoundException - * @throws IOException - */ - public String getMethodArguments(@NotNull JSONObject curObj, String methodArgsKey) throws IllegalArgumentException, ClassNotFoundException, IOException { - JSONObject obj = curObj.getJSONObject("request"); - String argsStr = obj == null ? null : obj.getString(methodArgsKey); - if (StringUtil.isEmpty(argsStr, true)) { - argsStr = curObj.getString(methodArgsKey); - } - List methodArgs = JSON.parseArray(removeComment(argsStr), Argument.class); - if (methodArgs == null || methodArgs.isEmpty()) { - return ""; - } - - // Class[] types = new Class[methodArgs.size()]; - // Object[] args = new Object[methodArgs.size()]; - // MethodUtil.initTypesAndValues(methodArgs, types, args, true); - - String s = ""; - // if (types != null) { - // String sn; - // for (int i = 0; i < types.length; i++) { - // sn = types[i] == null ? null : types[i].getSimpleName(); - // if (sn == null) { - // sn = Object.class.getSimpleName(); - // } - // - // if (i > 0) { - // s += ","; - // } - // - // if (MethodUtil.CLASS_MAP.containsKey(sn)) { - // s += sn; - // } - // else { - // s += types[i].getName(); - // } - // } - // } - - for (int i = 0; i < methodArgs.size(); i++) { - Argument arg = methodArgs.get(i); - - String sn = arg == null ? null : arg.getType(); - if (sn == null) { - sn = arg.getValue() == null ? Object.class.getSimpleName() : MethodUtil.trimType(arg.getValue().getClass()); - } - - if (i > 0) { - s += ","; - } - s += sn; - } - - return s; - } - - - /**获取方法的定义 - * @param curObj - * @return - * @throws IOException - * @throws ClassNotFoundException - * @throws IllegalArgumentException - */ - public String getMethodDefinition(@NotNull JSONObject curObj) throws IllegalArgumentException { - // curObj.put("arguments", removeComment(curObj.getString("methodArgs"))); - return getMethodDefinition(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); - } - /**获取方法的定义 - * @param curObj - * @param method - * @param arguments - * @param type - * @return method(argType0,argType1...): returnType - * @throws IOException - * @throws ClassNotFoundException - * @throws IllegalArgumentException - */ - public String getMethodDefinition(@NotNull JSONObject curObj, String method, String arguments - , String type, String exceptions, String language) throws IllegalArgumentException { - String n = curObj.getString(method); - if (StringUtil.isEmpty(n, true)) { - throw new NullPointerException("getMethodDefination StringUtil.isEmpty(methodArgs, true) !"); - } - String a = curObj.getString(arguments); - String t = curObj.getString(type); - String e = curObj.getString(exceptions); - - if (language == null) { - language = ""; - } - switch (language) { - case "TypeScript": - return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); - case "Go": - return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a ) + ")" + (StringUtil.isEmpty(t, true) ? "" : " " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); - default: - //类型可能很长,Eclipse, Idea 代码提示都是类型放后面 return (StringUtil.isEmpty(t, true) ? "" : t + " ") + n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")"; - return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); - } - } - - /** - * methodArgs 和 classArgs 都可以带注释 - */ - public String getMethodRequest(@NotNull JSONObject curObj) { - String req = curObj.getString("request"); - if (StringUtil.isEmpty(req, true) == false) { - return req; - } - - req = "{"; - Boolean isStatic = curObj.getBoolean("static"); - String methodArgs = curObj.getString("methodArgs"); - String classArgs = curObj.getString("classArgs"); - - boolean comma = false; - if (isStatic != null && isStatic) { - req += "\n \"static\": " + true; - comma = true; - } - if (! StringUtil.isEmpty(methodArgs, true)) { - req += (comma ? "," : "") + "\n \"methodArgs\": " + methodArgs; - comma = true; - } - if (! StringUtil.isEmpty(classArgs, true)) { - req += (comma ? "," : "") + "\n \"classArgs\": " + classArgs; - } - req += "\n}"; - return req; - } - - // public static JSONObject removeComment(String json) { - // return JSON.parseObject(removeComment(json)); + // FIXME UnitAuto 去除 fastjson 后恢复 + ///**获取方法参数的定义 + // * @param curObj + // * @return + // * @throws IOException + // * @throws ClassNotFoundException + // * @throws IllegalArgumentException + // */ + //public String getMethodArguments(@NotNull M curObj) throws IllegalArgumentException, ClassNotFoundException, IOException { + // return getMethodArguments(curObj, "methodArgs"); + //} + ///**获取方法参数的定义 + // * @param curObj + // * @param methodArgsKey + // * @return + // * @throws IllegalArgumentException + // * @throws ClassNotFoundException + // * @throws IOException + // */ + //public String getMethodArguments(@NotNull M curObj, String methodArgsKey) throws IllegalArgumentException, ClassNotFoundException, IOException { + // M obj = getJSONObject(curObj, "request"); + // String argsStr = obj == null ? null : getString(obj, methodArgsKey); + // if (StringUtil.isEmpty(argsStr, true)) { + // argsStr = getString(curObj, methodArgsKey); // } - public static String removeComment(String json) { - return json == null ? null: json.replaceAll("(//.*)|(/\\*[\\s\\S]*?\\*/)", ""); - } + // List methodArgs = JSON.parseArray(removeComment(argsStr), Argument.class); + // if (methodArgs == null || methodArgs.isEmpty()) { + // return ""; + // } + // + // // Class[] types = new Class[methodArgs.size()]; + // // Object[] args = new Object[methodArgs.size()]; + // // MethodUtil.initTypesAndValues(methodArgs, types, args, true); + // + // String s = ""; + // // if (types != null) { + // // String sn; + // // for (int i = 0; i < types.length; i++) { + // // sn = types[i] == null ? null : types[i].getSimpleName(); + // // if (sn == null) { + // // sn = Object.class.getSimpleName(); + // // } + // // + // // if (i > 0) { + // // s += ","; + // // } + // // + // // if (MethodUtil.CLASS_MAP.containsKey(sn)) { + // // s += sn; + // // } + // // else { + // // s += types[i].getName(); + // // } + // // } + // // } + // + // for (int i = 0; i < methodArgs.size(); i++) { + // Argument arg = methodArgs.get(i); + // + // String sn = arg == null ? null : arg.getType(); + // if (sn == null) { + // sn = arg.getValue() == null ? Object.class.getSimpleName() : MethodUtil.trimType(arg.getValue().getClass()); + // } + // + // if (i > 0) { + // s += ","; + // } + // s += sn; + // } + // + // return s; + //} + // + // + ///**获取方法的定义 + // * @param curObj + // * @return + // * @throws IOException + // * @throws ClassNotFoundException + // * @throws IllegalArgumentException + // */ + //public String getMethodDefinition(@NotNull M curObj) throws IllegalArgumentException { + // // curObj.put("arguments", removeComment(getString(curObj, "methodArgs"))); + // return getMethodDefinition(curObj, "method", "arguments", "genericType", "genericExceptions", "Java"); + //} + ///**获取方法的定义 + // * @param curObj + // * @param method + // * @param arguments + // * @param type + // * @return method(argType0,argType1...): returnType + // * @throws IOException + // * @throws ClassNotFoundException + // * @throws IllegalArgumentException + // */ + //public String getMethodDefinition(@NotNull M curObj, String method, String arguments + // , String type, String exceptions, String language) throws IllegalArgumentException { + // String n = getString(curObj, method); + // if (StringUtil.isEmpty(n, true)) { + // throw new NullPointerException("getMethodDefination StringUtil.isEmpty(methodArgs, true) !"); + // } + // String a = getString(curObj, arguments); + // String t = getString(curObj, type); + // String e = getString(curObj, exceptions); + // + // if (language == null) { + // language = ""; + // } + // switch (language) { + // case "TypeScript": + // return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + // case "Go": + // return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a ) + ")" + (StringUtil.isEmpty(t, true) ? "" : " " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + // default: + // //类型可能很长,Eclipse, Idea 代码提示都是类型放后面 return (StringUtil.isEmpty(t, true) ? "" : t + " ") + n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")"; + // return n + "(" + (StringUtil.isEmpty(a, true) ? "" : a) + ")" + (StringUtil.isEmpty(t, true) ? "" : ": " + t) + (StringUtil.isEmpty(e, true) ? "" : " throws " + e); + // } + //} + // + ///** + // * methodArgs 和 classArgs 都可以带注释 + // */ + //public String getMethodRequest(@NotNull M curObj) { + // String req = getString(curObj, "request"); + // if (StringUtil.isEmpty(req, true) == false) { + // return req; + // } + // + // req = "{"; + // Boolean isStatic = getBoolean(curObj, "static"); + // String methodArgs = getString(curObj, "methodArgs"); + // String classArgs = getString(curObj, "classArgs"); + // + // boolean comma = false; + // if (isStatic != null && isStatic) { + // req += "\n \"static\": " + true; + // comma = true; + // } + // if (! StringUtil.isEmpty(methodArgs, true)) { + // req += (comma ? "," : "") + "\n \"methodArgs\": " + methodArgs; + // comma = true; + // } + // if (! StringUtil.isEmpty(classArgs, true)) { + // req += (comma ? "," : "") + "\n \"classArgs\": " + classArgs; + // } + // req += "\n}"; + // return req; + //} + // + //// public static JSONRequest removeComment(String json) { + //// return JSON.parseObject(removeComment(json)); + //// } + //public static String removeComment(String json) { + // return json == null ? null: json.replaceAll("(//.*)|(/\\*[\\s\\S]*?\\*/)", ""); + //} } diff --git a/src/main/java/apijson/framework/javax/APIJSONObjectParser.java b/src/main/java/apijson/framework/javax/APIJSONObjectParser.java index 97ee267..7411511 100755 --- a/src/main/java/apijson/framework/javax/APIJSONObjectParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONObjectParser.java @@ -16,20 +16,22 @@ import apijson.NotNull; import apijson.RequestMethod; +import apijson.framework.javax.*; import apijson.orm.AbstractObjectParser; import apijson.orm.Join; import apijson.orm.Parser; import apijson.orm.SQLConfig; -import com.alibaba.fastjson.JSONObject; import javax.servlet.http.HttpSession; import java.util.List; +import java.util.Map; /**简化Parser,getObject和getArray(getArrayConfig)都能用 * @author Lemon */ -public class APIJSONObjectParser extends AbstractObjectParser { +public class APIJSONObjectParser, L extends List> + extends AbstractObjectParser { public static final String TAG = "APIJSONObjectParser"; /**for single object @@ -42,28 +44,28 @@ public class APIJSONObjectParser extends AbstractObjectParser< * @param isArrayMainTable * @throws Exception */ - public APIJSONObjectParser(HttpSession session, @NotNull JSONObject request, String parentPath, SQLConfig arrayConfig + public APIJSONObjectParser(HttpSession session, @NotNull M request, String parentPath, SQLConfig arrayConfig , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { super(request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable); } @Override - public APIJSONObjectParser setMethod(RequestMethod method) { + public APIJSONObjectParser setMethod(RequestMethod method) { super.setMethod(method); return this; } @Override - public APIJSONObjectParser setParser(Parser parser) { + public APIJSONObjectParser setParser(Parser parser) { super.setParser(parser); return this; } @Override - public SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { + public SQLConfig newSQLConfig(RequestMethod method, String table, String alias, M request + , List> joinList, boolean isProcedure) throws Exception { return APIJSONSQLConfig.newSQLConfig(method, table, alias, request, joinList, isProcedure); } - } diff --git a/src/main/java/apijson/framework/javax/APIJSONParser.java b/src/main/java/apijson/framework/javax/APIJSONParser.java index 9a9f4af..6a8e28d 100755 --- a/src/main/java/apijson/framework/javax/APIJSONParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONParser.java @@ -17,23 +17,24 @@ import apijson.NotNull; import apijson.RequestMethod; import apijson.orm.*; -import com.alibaba.fastjson.JSONObject; import javax.servlet.http.HttpSession; +import java.util.List; import java.util.Map; import java.util.Set; -import static apijson.framework.javax.APIJSONConstant.*; +import static apijson.framework.APIJSONConstant.*; /**请求解析器 * @author Lemon */ -public class APIJSONParser extends AbstractParser { +public class APIJSONParser, L extends List> + extends AbstractParser { public static final String TAG = "APIJSONParser"; @NotNull - public static APIJSONCreator APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { APIJSON_CREATOR = new APIJSONCreator<>(); } @@ -53,7 +54,7 @@ public APIJSONParser(RequestMethod method, boolean needVerify) { public HttpSession getSession() { return session; } - public APIJSONParser setSession(HttpSession session) { + public APIJSONParser setSession(HttpSession session) { this.session = session; setVisitor(APIJSONVerifier.getVisitor(session)); return this; @@ -61,39 +62,39 @@ public APIJSONParser setSession(HttpSession session) { @SuppressWarnings("unchecked") @Override - public Parser createParser() { - return (Parser) APIJSON_CREATOR.createParser(); + public APIJSONParser createParser() { + return (APIJSONParser) APIJSON_CREATOR.createParser(); } @Override - public FunctionParser createFunctionParser() { - return APIJSON_CREATOR.createFunctionParser(); + public APIJSONFunctionParser createFunctionParser() { + return (APIJSONFunctionParser) APIJSON_CREATOR.createFunctionParser(); } @SuppressWarnings("unchecked") @Override - public Verifier createVerifier() { - return (Verifier) APIJSON_CREATOR.createVerifier(); + public APIJSONVerifier createVerifier() { + return (APIJSONVerifier) APIJSON_CREATOR.createVerifier(); } @Override - public SQLConfig createSQLConfig() { - return APIJSON_CREATOR.createSQLConfig(); + public APIJSONSQLConfig createSQLConfig() { + return (APIJSONSQLConfig) APIJSON_CREATOR.createSQLConfig(); } @Override - public SQLExecutor createSQLExecutor() { - return APIJSON_CREATOR.createSQLExecutor(); + public APIJSONSQLExecutor createSQLExecutor() { + return (APIJSONSQLExecutor) APIJSON_CREATOR.createSQLExecutor(); } @Override - public JSONObject parseResponse(JSONObject request) { + public M parseResponse(M request) { //补充format if (session != null && request != null) { if (request.get(FORMAT) == null) { request.put(FORMAT, session.getAttribute(FORMAT)); } if (request.get(DEFAULTS) == null) { - JSONObject defaults = (JSONObject) session.getAttribute(DEFAULTS); + M defaults = (M) session.getAttribute(DEFAULTS); Set> set = defaults == null ? null : defaults.entrySet(); if (set != null) { @@ -105,15 +106,16 @@ public JSONObject parseResponse(JSONObject request) { } } } + return super.parseResponse(request); } - private FunctionParser functionParser; - public FunctionParser getFunctionParser() { + private FunctionParser functionParser; + public FunctionParser getFunctionParser() { return functionParser; } @Override - public Object onFunctionParse(String key, String function, String parentPath, String currentName, JSONObject currentObject, boolean containRaw) throws Exception { + public Object onFunctionParse(String key, String function, String parentPath, String currentName, M currentObject, boolean containRaw) throws Exception { if (functionParser == null) { functionParser = createFunctionParser(); functionParser.setParser(this); @@ -136,13 +138,13 @@ public Object onFunctionParse(String key, String function, String parentPath, St @Override - public APIJSONObjectParser createObjectParser(JSONObject request, String parentPath, SQLConfig arrayConfig + public APIJSONObjectParser createObjectParser(M request, String parentPath, SQLConfig arrayConfig , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { - return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { + return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { // @Override - // protected APIJSONSQLConfig newQueryConfig() { + // protected APIJSONSQLConfig newQueryConfig() { // if (itemConfig != null) { // return itemConfig; // } diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java index d9eac34..58f3081 100755 --- a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java @@ -14,15 +14,16 @@ package apijson.framework.javax; +import apijson.JSONArray; +import apijson.JSONField; +import apijson.JSONObject; import apijson.RequestMethod; -import apijson.column.ColumnUtil; import apijson.orm.AbstractSQLConfig; import apijson.orm.Join; import apijson.orm.SQLConfig; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.annotation.JSONField; import java.util.List; +import java.util.Map; import static apijson.framework.javax.APIJSONConstant.*; @@ -31,13 +32,13 @@ * TiDB 用法和 MySQL 一致 * @author Lemon */ -public class APIJSONSQLConfig extends AbstractSQLConfig { +public class APIJSONSQLConfig, L extends List> extends AbstractSQLConfig { public static final String TAG = "APIJSONSQLConfig"; public static boolean ENABLE_COLUMN_CONFIG = false; - public static Callback SIMPLE_CALLBACK; - public static APIJSONCreator APIJSON_CREATOR; + public static Callback, ? extends List> SIMPLE_CALLBACK; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { DEFAULT_DATABASE = DATABASE_MYSQL; //TODO 默认数据库类型,改成你自己的 @@ -51,11 +52,11 @@ public class APIJSONSQLConfig extends AbstractSQLConfig { APIJSON_CREATOR = new APIJSONCreator<>(); - SIMPLE_CALLBACK = new SimpleCallback() { + SIMPLE_CALLBACK = new SimpleCallback() { @Override - public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { - SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); + public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { + SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); config.setMethod(method); config.setDatabase(database); config.setDatasource(datasource); @@ -223,26 +224,38 @@ public APIJSONSQLConfig(RequestMethod method, int count, int page) { * @return * @throws Exception */ - public static SQLConfig newSQLConfig(RequestMethod method, String table, String alias, JSONObject request, List joinList, boolean isProcedure) throws Exception { - return (SQLConfig) newSQLConfig(method, table, alias, request, joinList, isProcedure, SIMPLE_CALLBACK); + public static , L extends List> SQLConfig newSQLConfig( + RequestMethod method, String table, String alias, M request, List> joinList, boolean isProcedure) throws Exception { + return (SQLConfig) newSQLConfig(method, table, alias, request, joinList, isProcedure, new SimpleCallback() { + @Override + public SQLConfig getSQLConfig(RequestMethod method, String database, String schema, String datasource, String table) { + SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); + config.setMethod(method); + config.setDatabase(database); + config.setDatasource(datasource); + config.setSchema(schema); + config.setTable(table); + return config; + } + }); } // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column - @Override - public AbstractSQLConfig setColumn(List column) { - if (ENABLE_COLUMN_CONFIG) { - column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); - } - return super.setColumn(column); - } - - @Override - public String getKey(String key) { - if (ENABLE_COLUMN_CONFIG) { - key = ColumnUtil.compatInputKey(key, getTable(), getMethod(), getVersion(), ! isConfigTable()); - } - return super.getKey(key); - } +// @Override +// public AbstractSQLConfig setColumn(List column) { +// if (ENABLE_COLUMN_CONFIG) { +// column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); +// } +// return super.setColumn(column); +// } +// +// @Override +// public String getKey(String key) { +// if (ENABLE_COLUMN_CONFIG) { +// key = ColumnUtil.compatInputKey(key, getTable(), getMethod(), getVersion(), ! isConfigTable()); +// } +// return super.getKey(key); +// } } diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java index 88eb4db..76d9a60 100755 --- a/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java +++ b/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java @@ -17,23 +17,23 @@ import apijson.JSON; import apijson.Log; import apijson.NotNull; -import apijson.column.ColumnUtil; +//import apijson.column.ColumnUtil; import apijson.orm.AbstractSQLExecutor; import apijson.orm.SQLConfig; -import com.alibaba.fastjson.JSONObject; import org.postgresql.util.PGobject; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.util.List; import java.util.Map; /**executor for query(read) or update(write) MySQL database * @author Lemon */ -public class APIJSONSQLExecutor extends AbstractSQLExecutor { +public class APIJSONSQLExecutor, L extends List> extends AbstractSQLExecutor { public static final String TAG = "APIJSONSQLExecutor"; static { @@ -71,8 +71,9 @@ public class APIJSONSQLExecutor extends AbstractSQLExecutor @Override - public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull PreparedStatement statement, int index, Object value) throws SQLException { - if (config.isPostgreSQL() && JSON.isBooleanOrNumberOrString(value) == false) { + public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull PreparedStatement statement + , int index, Object value) throws SQLException { + if (config.isPostgreSQL() && JSON.isBoolOrNumOrStr(value) == false) { PGobject o = new PGobject(); o.setType("jsonb"); o.setValue(value == null ? null : value.toString()); @@ -85,23 +86,27 @@ public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull Prep @Override - protected Object getValue(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, - JSONObject table, int columnIndex, String lable, Map childMap) throws Exception { + protected Object getValue( + SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int row + , M table, int columnIndex, String label, Map childMap, Map keyMap + ) throws Exception { - Object value = super.getValue(config, rs, rsmd, tablePosition, table, columnIndex, lable, childMap); + Object value = super.getValue(config, rs, rsmd, row, table, columnIndex, label, childMap, keyMap); - return value instanceof PGobject ? JSON.parse(((PGobject) value).getValue()) : value; + return value instanceof PGobject ? JSON.parseJSON(((PGobject) value).getValue()) : value; } // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column @Override - protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table, - int columnIndex, Map childMap) throws Exception { - - String key = super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap); - if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { - return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); - } + protected String getKey( + SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int row + , M table, int columnIndex, Map childMap, Map keyMap + ) throws Exception { + + String key = super.getKey(config, rs, rsmd, row, table, columnIndex, childMap, keyMap); +// if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { +// return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); +// } return key; } diff --git a/src/main/java/apijson/framework/javax/APIJSONVerifier.java b/src/main/java/apijson/framework/javax/APIJSONVerifier.java index 312a480..ea1fc2a 100755 --- a/src/main/java/apijson/framework/javax/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/javax/APIJSONVerifier.java @@ -14,24 +14,26 @@ package apijson.framework.javax; -import apijson.*; -import apijson.column.ColumnUtil; -import apijson.orm.JSONRequest; -import apijson.orm.*; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import javax.servlet.http.HttpSession; +import static apijson.JSON.*; +import static apijson.JSONRequest.KEY_COUNT; +import static apijson.framework.javax.APIJSONConstant.ACCESS_; +import static apijson.framework.javax.APIJSONConstant.REQUEST_; +import static apijson.framework.javax.APIJSONConstant.VISITOR_; +import static apijson.framework.javax.APIJSONConstant.VISITOR_ID; import java.rmi.ServerException; import java.util.*; -import static apijson.framework.javax.APIJSONConstant.*; +import apijson.*; +import javax.servlet.http.HttpSession; + +import apijson.orm.*; /**权限验证器 * @author Lemon */ -public class APIJSONVerifier extends AbstractVerifier { +public class APIJSONVerifier, L extends List> extends AbstractVerifier { public static final String TAG = "APIJSONVerifier"; public static boolean ENABLE_VERIFY_COLUMN = true; @@ -48,7 +50,7 @@ public class APIJSONVerifier extends AbstractVerifier { // ACCESS_MAP.put(Login.class.getSimpleName(), getAccessMap(Login.class.getAnnotation(MethodAccess.class))); // } - public static APIJSONCreator APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { APIJSON_CREATOR = new APIJSONCreator<>(); @@ -58,7 +60,7 @@ public class APIJSONVerifier extends AbstractVerifier { * @return * @throws ServerException */ - public static JSONObject init() throws ServerException { + public static , L extends List> M init() throws ServerException { return init(false); } @@ -67,8 +69,10 @@ public static JSONObject init() throws ServerException { * @return * @throws ServerException */ - public static JSONObject init(boolean shutdownWhenServerError) throws ServerException { - return init(shutdownWhenServerError, null); + public static , L extends List> M init(boolean shutdownWhenServerError) throws ServerException { + return init(shutdownWhenServerError, new APIJSONCreator() { + + }); } /**初始化,加载所有权限配置和请求校验配置 @@ -76,7 +80,7 @@ public static JSONObject init(boolean shutdownWhenServerError) throws ServerExce * @return * @throws ServerException */ - public static JSONObject init(APIJSONCreator creator) throws ServerException { + public static , L extends List> M init(APIJSONCreator creator) throws ServerException { return init(false, creator); } @@ -86,14 +90,15 @@ public static JSONObject init(APIJSONCreator creator) throws ServerExcept * @return * @throws ServerException */ - public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { - JSONObject result = new JSONObject(true); - if (ENABLE_VERIFY_ROLE) { - result.put(ACCESS_, initAccess(shutdownWhenServerError, creator)); - } - if (ENABLE_VERIFY_CONTENT) { - result.put(REQUEST_, initRequest(shutdownWhenServerError, creator)); - } + public static , L extends List> M init( + boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + M result = JSON.createJSONObject(); + if (ENABLE_VERIFY_ROLE) { + result.put(ACCESS_, initAccess(shutdownWhenServerError, creator)); + } + if (ENABLE_VERIFY_CONTENT) { + result.put(REQUEST_, initRequest(shutdownWhenServerError, creator)); + } return result; } @@ -101,7 +106,7 @@ public static JSONObject init(boolean shutdownWhenServerError, APIJSONCreato * @return * @throws ServerException */ - public static JSONObject initAccess() throws ServerException { + public static , L extends List> M initAccess() throws ServerException { return initAccess(false); } @@ -110,7 +115,7 @@ public static JSONObject initAccess() throws ServerException { * @return * @throws ServerException */ - public static JSONObject initAccess(boolean shutdownWhenServerError) throws ServerException { + public static , L extends List> M initAccess(boolean shutdownWhenServerError) throws ServerException { return initAccess(shutdownWhenServerError, null); } @@ -119,7 +124,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError) throws Serv * @return * @throws ServerException */ - public static JSONObject initAccess(APIJSONCreator creator) throws ServerException { + public static , L extends List> M initAccess(APIJSONCreator creator) throws ServerException { return initAccess(false, creator); } @@ -129,7 +134,8 @@ public static JSONObject initAccess(APIJSONCreator creator) throws Server * @return * @throws ServerException */ - public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + public static , L extends List> M initAccess( + boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return initAccess(shutdownWhenServerError, creator, null); } @@ -141,33 +147,36 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON * @throws ServerException */ @SuppressWarnings("unchecked") - public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + public static , L extends List> M initAccess( + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSON_CREATOR; } APIJSON_CREATOR = creator; boolean isAll = table == null || table.isEmpty(); - JSONObject access = isAll ? new JSONRequest() : table; + M access = isAll ? JSON.createJSONObject() : table; if (Log.DEBUG == false) { access.put(APIJSONConstant.KEY_DEBUG, 0); } - JSONRequest accessItem = new JSONRequest(); + M accessItem = JSON.createJSONObject(); accessItem.put(ACCESS_, access); - JSONRequest request = new JSONRequest(); - request.putAll(accessItem.toArray(0, 0, ACCESS_)); + M request = JSON.createJSONObject(); + M ao = JSON.createJSONObject(); + ao.put(ACCESS_, accessItem); + ao.put(apijson.JSONRequest.KEY_COUNT, 0); + request.put(ACCESS_ + "[]", ao); - - JSONObject response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); + M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { - Log.e(TAG, "\n\n\n\n\n !!!! 查询权限配置异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n"); + Log.e(TAG, "\n\n\n\n\n !!!! 查询权限配置异常 !!!\n" + getString(response, JSONResponse.KEY_MSG) + "\n\n\n\n\n"); onServerError("查询权限配置异常 !", shutdownWhenServerError); } - JSONArray list = response.getJSONArray(ACCESS_ + "[]"); + L list = getJSONArray(response, ACCESS_ + "[]"); int size = list == null ? 0 : list.size(); if (isAll && size <= 0) { Log.w(TAG, "initAccess isAll && size <= 0,,没有可用的权限配置"); @@ -178,47 +187,47 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON Map> newMap = new LinkedHashMap<>(); Map> fakeDeleteMap = new LinkedHashMap<>(); - Map newTKMap = new LinkedHashMap<>(); - Map tableSchemaMap = new LinkedHashMap<>(); + Map newTKMap = new LinkedHashMap<>(); // JSON.createJSONObject(); + Map tableSchemaMap = new LinkedHashMap<>(); // JSON.createJSONObject(); SortedMap>> versionedTableColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); SortedMap>> versionedKeyColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); for (int i = 0; i < size; i++) { - JSONObject item = list.getJSONObject(i); + M item = getJSONObject(list, i); if (item == null) { continue; } Map map = new HashMap<>(); - map.put(RequestMethod.GET, JSON.parseObject(item.getString("get"), String[].class)); - map.put(RequestMethod.HEAD, JSON.parseObject(item.getString("head"), String[].class)); - map.put(RequestMethod.GETS, JSON.parseObject(item.getString("gets"), String[].class)); - map.put(RequestMethod.HEADS, JSON.parseObject(item.getString("heads"), String[].class)); - map.put(RequestMethod.POST, JSON.parseObject(item.getString("post"), String[].class)); - map.put(RequestMethod.PUT, JSON.parseObject(item.getString("put"), String[].class)); - map.put(RequestMethod.DELETE, JSON.parseObject(item.getString("delete"), String[].class)); - - String name = item.getString("name"); - String alias = item.getString("alias"); - String schema = item.getString("schema"); - - Map fakemap = new HashMap<>(); - String deletedKey = item.getString(AbstractSQLConfig.KEY_DELETED_KEY); + map.put(RequestMethod.GET, JSON.parseObject(getString(item, "get"), String[].class)); + map.put(RequestMethod.HEAD, JSON.parseObject(getString(item, "head"), String[].class)); + map.put(RequestMethod.GETS, JSON.parseObject(getString(item, "gets"), String[].class)); + map.put(RequestMethod.HEADS, JSON.parseObject(getString(item, "heads"), String[].class)); + map.put(RequestMethod.POST, JSON.parseObject(getString(item, "post"), String[].class)); + map.put(RequestMethod.PUT, JSON.parseObject(getString(item, "put"), String[].class)); + map.put(RequestMethod.DELETE, JSON.parseObject(getString(item, "delete"), String[].class)); + + String name = getString(item, "name"); + String alias = getString(item, "alias"); + String schema = getString(item, "schema"); + + Map fakeMap = new LinkedHashMap<>(); + String deletedKey = getString(item, AbstractSQLConfig.KEY_DELETED_KEY); if(StringUtil.isNotEmpty(deletedKey, true)) { boolean containNotDeletedValue = item.containsKey(AbstractSQLConfig.KEY_NOT_DELETED_VALUE); - Object deletedValue = item.getString(AbstractSQLConfig.KEY_DELETED_VALUE); + Object deletedValue = getString(item, AbstractSQLConfig.KEY_DELETED_VALUE); if (containNotDeletedValue == false && StringUtil.isEmpty(deletedValue, true)) { onServerError( - "Access表 id = " + item.getString("id") + " 对应的 " - + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " - + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" + "Access表 id = " + getString(item, "id") + " 对应的 " + + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " + + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" , shutdownWhenServerError ); } - fakemap.put(AbstractSQLConfig.KEY_DELETED_KEY, deletedKey); - fakemap.put(AbstractSQLConfig.KEY_DELETED_VALUE, deletedValue); + fakeMap.put(AbstractSQLConfig.KEY_DELETED_KEY, deletedKey); + fakeMap.put(AbstractSQLConfig.KEY_DELETED_VALUE, deletedValue); if (containNotDeletedValue) { - fakemap.put(AbstractSQLConfig.KEY_NOT_DELETED_VALUE, item.get(AbstractSQLConfig.KEY_NOT_DELETED_VALUE)); + fakeMap.put(AbstractSQLConfig.KEY_NOT_DELETED_VALUE, item.get(AbstractSQLConfig.KEY_NOT_DELETED_VALUE)); } } @@ -232,22 +241,22 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON } if (StringUtil.isEmpty(alias, true)) { - if (JSONRequest.isTableKey(name) == false) { + if (apijson.JSONObject.isTableKey(name) == false) { onServerError("name: " + name + "不合法!字段 alias 的值为空时,name 必须为合法表名!", shutdownWhenServerError); } alias = name; - } else if (JSONRequest.isTableKey(alias) == false) { + } else if (apijson.JSONObject.isTableKey(alias) == false) { onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError); } newMap.put(alias, map); - fakeDeleteMap.put(alias, fakemap); + fakeDeleteMap.put(alias, fakeMap); newTKMap.put(alias, name); tableSchemaMap.put(alias, schema); if (ENABLE_VERIFY_COLUMN) { - JSONObject columns = item.getJSONObject("columns"); + M columns = getJSONObject(item, "columns"); Set> set = columns == null ? null : columns.entrySet(); if (set != null) { @@ -315,16 +324,16 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON APIJSONSQLConfig.TABLE_SCHEMA_MAP = tableSchemaMap; } - if (ENABLE_VERIFY_COLUMN) { - if (isAll) { // 全量更新 - ColumnUtil.VERSIONED_TABLE_COLUMN_MAP = versionedTableColumnMap; - ColumnUtil.VERSIONED_KEY_COLUMN_MAP = versionedKeyColumnMap; - } else { - ColumnUtil.VERSIONED_TABLE_COLUMN_MAP.putAll(versionedTableColumnMap); - ColumnUtil.VERSIONED_KEY_COLUMN_MAP.putAll(versionedKeyColumnMap); - } - ColumnUtil.init(); - } +// if (ENABLE_VERIFY_COLUMN) { +// if (isAll) { // 全量更新 +// ColumnUtil.VERSIONED_TABLE_COLUMN_MAP = versionedTableColumnMap; +// ColumnUtil.VERSIONED_KEY_COLUMN_MAP = versionedKeyColumnMap; +// } else { +// ColumnUtil.VERSIONED_TABLE_COLUMN_MAP.putAll(versionedTableColumnMap); +// ColumnUtil.VERSIONED_KEY_COLUMN_MAP.putAll(versionedKeyColumnMap); +// } +// ColumnUtil.init(); +// } Log.d(TAG, "initAccess for /> ACCESS_MAP.size() = " + ACCESS_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>"); @@ -336,7 +345,7 @@ public static JSONObject initAccess(boolean shutdownWhenServerError, APIJSON * @return * @throws ServerException */ - public static JSONObject initRequest() throws ServerException { + public static , L extends List> M initRequest() throws ServerException { return initRequest(false); } @@ -345,7 +354,7 @@ public static JSONObject initRequest() throws ServerException { * @return * @throws ServerException */ - public static JSONObject initRequest(boolean shutdownWhenServerError) throws ServerException { + public static , L extends List> M initRequest(boolean shutdownWhenServerError) throws ServerException { return initRequest(shutdownWhenServerError, null); } @@ -354,7 +363,8 @@ public static JSONObject initRequest(boolean shutdownWhenServerError) throws Ser * @return * @throws ServerException */ - public static JSONObject initRequest(APIJSONCreator creator) throws ServerException { + public static , L extends List> M initRequest( + APIJSONCreator creator) throws ServerException { return initRequest(false, creator); } @@ -364,7 +374,8 @@ public static JSONObject initRequest(APIJSONCreator creator) throws Serve * @return * @throws ServerException */ - public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + public static , L extends List> M initRequest( + boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return initRequest(shutdownWhenServerError, creator, null); } @@ -376,33 +387,39 @@ public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSO * @throws ServerException */ @SuppressWarnings("unchecked") - public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSONCreator creator, JSONObject table) throws ServerException { + public static , L extends List> M initRequest( + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSON_CREATOR; } APIJSON_CREATOR = creator; boolean isAll = table == null || table.isEmpty(); - JSONObject requestTable = isAll ? new JSONRequest().setOrder("version-,id+") : table; + M tblObj = createJSONObject(); + tblObj.put(apijson.JSONObject.KEY_ORDER, "version-,id+"); + M requestTable = isAll ? tblObj : table; if (Log.DEBUG == false) { requestTable.put(APIJSONConstant.KEY_DEBUG, 0); } - JSONRequest requestItem = new JSONRequest(); + M requestItem = JSON.createJSONObject(); requestItem.put(REQUEST_, requestTable); // 方便查找 - JSONRequest request = new JSONRequest(); - request.putAll(requestItem.toArray(0, 0, REQUEST_)); + M ro = JSON.createJSONObject(); + ro.put(REQUEST_, requestItem); + ro.put(KEY_COUNT, 0); + M request = JSON.createJSONObject(); + request.put(REQUEST_ + "[]", ro); - JSONObject response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); + M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { - Log.e(TAG, "\n\n\n\n\n !!!! 查询请求校验规则配置异常 !!!\n" + response.getString(JSONResponse.KEY_MSG) + "\n\n\n\n\n"); + Log.e(TAG, "\n\n\n\n\n !!!! 查询请求校验规则配置异常 !!!\n" + getString(response, JSONResponse.KEY_MSG) + "\n\n\n\n\n"); onServerError("查询请求校验规则配置异常 !", shutdownWhenServerError); } - JSONArray list = response.getJSONArray(REQUEST_ + "[]"); + L list = getJSONArray(response, REQUEST_ + "[]"); int size = list == null ? 0 : list.size(); if (isAll && size <= 0) { Log.w(TAG, "initRequest isAll && size <= 0,没有可用的请求校验规则配置"); @@ -411,48 +428,48 @@ public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSO Log.d(TAG, "initRequest < for REQUEST_MAP.size() = " + REQUEST_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<"); - Map> newMap = new LinkedHashMap<>(); + Map>> newMap = new LinkedHashMap<>(); for (int i = 0; i < size; i++) { - JSONObject item = list.getJSONObject(i); + M item = getJSONObject(list, i); if (item == null) { continue; } - String version = item.getString("version"); + String version = getString(item, "version"); if (StringUtil.isEmpty(version, true)) { Log.e(TAG, "initRequest for StringUtil.isEmpty(version, true),Request 表中的 version 不能为空!"); onServerError("服务器内部错误,Request 表中的 version 不能为空!", shutdownWhenServerError); } - String method = item.getString("method"); + String method = getString(item, "method"); if (StringUtil.isEmpty(method, true)) { Log.e(TAG, "initRequest for StringUtil.isEmpty(method, true),Request 表中的 method 不能为空!"); onServerError("服务器内部错误,Request 表中的 method 不能为空!", shutdownWhenServerError); } - String tag = item.getString("tag"); + String tag = getString(item, "tag"); if (StringUtil.isEmpty(tag, true)) { Log.e(TAG, "initRequest for StringUtil.isEmpty(tag, true),Request 表中的 tag 不能为空!"); onServerError("服务器内部错误,Request 表中的 tag 不能为空!", shutdownWhenServerError); } - JSONObject structure = JSON.parseObject(item.getString("structure")); + M structure = JSON.parseObject(getString(item, "structure")); - JSONObject target = null; + M target = null; if (structure != null) { target = structure; if (structure.containsKey(tag) == false) { //tag 是 Table 名或 Table[] - boolean isArrayKey = tag.endsWith(":[]"); // JSONRequest.isArrayKey(tag); + boolean isArrayKey = tag.endsWith(":[]"); // apijson.JSONObject.isArrayKey(tag); String key = isArrayKey ? tag.substring(0, tag.length() - 3) : tag; if (apijson.JSONObject.isTableKey(key)) { if (isArrayKey) { //自动为 tag = Comment:[] 的 { ... } 新增键值对 "Comment[]":[] 为 { "Comment[]":[], ... } - target.put(key + "[]", new JSONArray()); + target.put(key + "[]", JSON.createJSONArray()); } else { //自动为 tag = Comment 的 { ... } 包一层为 { "Comment": { ... } } - target = new JSONObject(true); + target = JSON.createJSONObject(); target.put(tag, structure); } } @@ -465,7 +482,7 @@ public static JSONObject initRequest(boolean shutdownWhenServerError, APIJSO } String cacheKey = getCacheKeyForRequest(method, tag); - SortedMap versionedMap = newMap.get(cacheKey); + SortedMap> versionedMap = newMap.get(cacheKey); if (versionedMap == null) { versionedMap = new TreeMap<>(new Comparator() { @@ -480,7 +497,8 @@ public int compare(Integer o1, Integer o2) { } if (isAll) { // 全量更新 - REQUEST_MAP = newMap; + REQUEST_MAP = new LinkedHashMap<>(); + REQUEST_MAP.putAll(newMap); } else { REQUEST_MAP.putAll(newMap); } @@ -502,11 +520,23 @@ public static void test() throws Exception { * 测试 Request 和 Response 的数据结构校验 * @throws Exception */ - public static void testStructure() throws Exception { - JSONObject request; + public static , L extends List> void testStructure() throws Exception { + SQLCreator creator = (SQLCreator) APIJSON_CREATOR; // new SQLCreator() { + // @Override + // public SQLConfig createSQLConfig() { + // return (SQLConfig) APIJSONApplication.DEFAULT_APIJSON_CREATOR.createSQLConfig(); + // } + // + // @Override + // public SQLExecutor createSQLExecutor() { + // return (SQLExecutor) APIJSONApplication.DEFAULT_APIJSON_CREATOR.createSQLExecutor(); + // } + //}; + + M request; try { request = JSON.parseObject("{\"Comment\":{\"userId\":0}}"); - Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, creator)); } catch (Throwable e) { if (e instanceof IllegalArgumentException == false || "POST请求,Comment 里面不能缺少 momentId 等[userId,momentId,content]内的任何字段!".equals(e.getMessage()) == false) { throw e; @@ -515,7 +545,7 @@ public static void testStructure() throws Exception { } try { request = JSON.parseObject("{\"Comment\":{\"id\":0, \"userId\":0, \"momentId\":0, \"content\":\"apijson\"}}"); - Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, creator)); } catch (Throwable e) { if (e instanceof IllegalArgumentException == false || "POST请求,/Comment 不能传 id !".equals(e.getMessage()) == false) { throw e; @@ -524,43 +554,43 @@ public static void testStructure() throws Exception { } try { request = JSON.parseObject("{\"Comment\":{\"userId\":0, \"momentId\":0, \"content\":\"apijson\"}}"); - Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, APIJSON_CREATOR)); - AssertUtil.assertEqual("OWNER", request.getString("@role")); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, creator)); + AssertUtil.assertEqual("OWNER", getString(request, "@role")); Log.d(TAG, "测试 Operation.INSERT 不存在字段时插入:成功"); } catch (Throwable e) { throw e; } - JSONObject response; + M response; try { response = JSON.parseObject("{\"User\":{\"userId\":0}}"); - Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); - AssertUtil.assertEqual("verifyURLList(pictureList)", response.getJSONObject("User").getString("verifyURLList-()")); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, creator, null)); + AssertUtil.assertEqual("verifyURLList(pictureList)", getJSONObject(response, "User").get("verifyURLList-()")); Log.d(TAG, "测试 Operation.UPDATE 强制插入/替换:成功"); } catch (Throwable e) { throw e; } try { response = JSON.parseObject("{\"User\":{\"userId\":0, \"phone\":\"12345678\"}}"); - Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); - AssertUtil.assertEqual(null, response.getJSONObject("User").get("phone")); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, creator, null)); + AssertUtil.assertEqual(null, getJSONObject(response, "User").get("phone")); Log.d(TAG, "测试 Operation.REMOVE 强制移除:成功"); } catch (Throwable e) { throw e; } try { response = JSON.parseObject("{\"User\":{\"userId\":0, \"phone\":\"12345678\", \"sex\":1}}"); - Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); - AssertUtil.assertEqual("api", response.getJSONObject("User").get("name")); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, creator, null)); + AssertUtil.assertEqual("api", getJSONObject(response, "User").get("name")); Log.d(TAG, "测试 Operation.INSERT 不存在字段时插入:成功"); } catch (Throwable e) { throw e; } try { response = JSON.parseObject("{\"User\":{\"id\":0, \"name\":\"tommy\", \"phone\":\"12345678\", \"sex\":1}}"); - Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, APIJSON_CREATOR, null)); - AssertUtil.assertEqual(2, response.getJSONObject("User").get("sex")); + Log.d(TAG, "test verifyResponse = " + AbstractVerifier.verifyResponse(RequestMethod.GET, "", JSON.parseObject(responseConfig), response, creator, null)); + AssertUtil.assertEqual(2, getJSONObject(response, "User").get("sex")); Log.d(TAG, "测试 Operation.REPLACE 存在字段时替换:成功"); } catch (Throwable e) { throw e; @@ -583,8 +613,8 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE @SuppressWarnings("unchecked") @NotNull @Override - public APIJSONParser createParser() { - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + public APIJSONParser createParser() { + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); parser.setVisitor(visitor); return parser; } @@ -607,7 +637,7 @@ public static void verifyLogin(HttpSession session) throws Exception { * @return */ @SuppressWarnings("unchecked") - public static T getVisitorId(HttpSession session) { + public static T getVisitorId(HttpSession session) { if (session == null) { return null; } @@ -625,7 +655,7 @@ public static T getVisitorId(HttpSession session) { * @return */ @SuppressWarnings("unchecked") - public static Visitor getVisitor(HttpSession session) { + public static Visitor getVisitor(HttpSession session) { return session == null ? null : (Visitor) session.getAttribute(VISITOR_); } @@ -646,6 +676,4 @@ public T newId(RequestMethod method, String database, String schema, String data return (T) APIJSONSQLConfig.SIMPLE_CALLBACK.newId(method, database, schema, datasource, table); } - - } diff --git a/src/main/java/apijson/framework/javax/ColumnUtil.java b/src/main/java/apijson/framework/javax/ColumnUtil.java new file mode 100644 index 0000000..8259401 --- /dev/null +++ b/src/main/java/apijson/framework/javax/ColumnUtil.java @@ -0,0 +1,31 @@ +/*Copyright ©2021 TommyLemon(https://github.com/APIJSON/apijson-column) + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License.*/ + +package apijson.framework.javax; + +import apijson.RequestMethod; +import apijson.StringUtil; +import apijson.orm.AbstractSQLConfig; +import apijson.orm.AbstractSQLExecutor; + +import java.util.*; +import java.util.Map.Entry; + + +/**表字段相关工具类 + * @author Lemon + * @see 先提前配置 {@link #VERSIONED_TABLE_COLUMN_MAP}, {@link #VERSIONED_KEY_COLUMN_MAP} 等,然后调用相关方法。 + * 不支持直接关联 database, schema, datasource,可以把这些与 table 拼接为一个字符串传给参数 table,格式可以是 database-schema-datasource-table + */ +public class ColumnUtil extends apijson.framework.ColumnUtil {} From b6a13204250d3fcfdd360f99e99b4557be0d6a46 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Mon, 7 Apr 2025 00:20:03 +0800 Subject: [PATCH 42/59] =?UTF-8?q?=E8=A7=A3=E5=86=B3=20fastjson=20=E7=AD=89?= =?UTF-8?q?=20JSON=20=E5=BA=93=E5=8F=AF=E8=83=BD=E6=B3=84=E6=BC=8F?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=B4=A6=E5=8F=B7=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../apijson/framework/APIJSONSQLConfig.java | 20 ++++++++----------- .../framework/javax/APIJSONSQLConfig.java | 20 ++++++++----------- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 16872e2..7743336 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ com.github.Tencent APIJSON - 8.0.0.0 + 8.0.0.0.0 diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 189b9ea..ea0538c 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -94,8 +94,7 @@ public String getUserIdKey(String database, String schema, String datasource, St - @Override - public String getDBVersion() { + public String gainDBVersion() { if (isMySQL()) { return "5.7.22"; //"8.0.11"; //TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号 //MYSQL 8 和 7 使用的 JDBC 配置不一样 } @@ -112,8 +111,7 @@ public String getDBVersion() { } @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 - @Override - public String getDBUri() { + public String gainDBUri() { if (isMySQL()) { return "jdbc:mysql://localhost:3306"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 } @@ -130,8 +128,7 @@ public String getDBUri() { } @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 - @Override - public String getDBAccount() { + public String gainDBAccount() { if (isMySQL()) { return "root"; //TODO 改成你自己的 } @@ -148,8 +145,7 @@ public String getDBAccount() { } @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 - @Override - public String getDBPassword() { + public String gainDBPassword() { if (isMySQL()) { return "apijson"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 "" } @@ -184,13 +180,13 @@ public boolean isConfigTable() { return CONFIG_TABLE_LIST.contains(getTable()); } @Override - public String getSQLDatabase() { - String db = isConfigTable() ? getConfigDatabase() : super.getSQLDatabase(); + public String gainSQLDatabase() { + String db = isConfigTable() ? getConfigDatabase() : super.gainSQLDatabase(); return db == null ? DEFAULT_DATABASE : db; } @Override - public String getSQLSchema() { - String sch = isConfigTable() ? getConfigSchema() : super.getSQLSchema(); + public String gainSQLSchema() { + String sch = isConfigTable() ? getConfigSchema() : super.gainSQLSchema(); return sch == null ? DEFAULT_SCHEMA : sch; } diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java index 58f3081..b4b8c2e 100755 --- a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java @@ -89,8 +89,7 @@ public String getUserIdKey(String database, String schema, String datasource, St - @Override - public String getDBVersion() { + public String gainDBVersion() { if (isMySQL()) { return "5.7.22"; //"8.0.11"; //TODO 改成你自己的 MySQL 或 PostgreSQL 数据库版本号 //MYSQL 8 和 7 使用的 JDBC 配置不一样 } @@ -107,8 +106,7 @@ public String getDBVersion() { } @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 - @Override - public String getDBUri() { + public String gainDBUri() { if (isMySQL()) { return "jdbc:mysql://localhost:3306"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 } @@ -125,8 +123,7 @@ public String getDBUri() { } @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 - @Override - public String getDBAccount() { + public String gainDBAccount() { if (isMySQL()) { return "root"; //TODO 改成你自己的 } @@ -143,8 +140,7 @@ public String getDBAccount() { } @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 - @Override - public String getDBPassword() { + public String gainDBPassword() { if (isMySQL()) { return "apijson"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 "" } @@ -179,13 +175,13 @@ public boolean isConfigTable() { return CONFIG_TABLE_LIST.contains(getTable()); } @Override - public String getSQLDatabase() { - String db = isConfigTable() ? getConfigDatabase() : super.getSQLDatabase(); + public String gainSQLDatabase() { + String db = isConfigTable() ? getConfigDatabase() : super.gainSQLDatabase(); return db == null ? DEFAULT_DATABASE : db; } @Override - public String getSQLSchema() { - String sch = isConfigTable() ? getConfigSchema() : super.getSQLSchema(); + public String gainSQLSchema() { + String sch = isConfigTable() ? getConfigSchema() : super.gainSQLSchema(); return sch == null ? DEFAULT_SCHEMA : sch; } From ac9898bea45a96edebe714a20d5df66fde39c6e6 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 13 Apr 2025 01:29:16 +0800 Subject: [PATCH 43/59] =?UTF-8?q?APIJSONController.login=20=E5=8F=82?= =?UTF-8?q?=E6=95=B0=20JSONObject=20defaults=20=E7=B1=BB=E5=9E=8B=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=B3=9B=E5=9E=8B=20M?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/apijson/framework/APIJSONController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index 2f191fa..d5cc670 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -366,7 +366,7 @@ public M reload(String type) { * @param defaults * @return 返回类型设置为 Object 是为了子类重写时可以有返回值,避免因为冲突而另写一个有返回值的登录方法 */ - public Object login(@NotNull HttpSession session, Visitor visitor, Integer version, Boolean format, JSONObject defaults) { + public Object login(@NotNull HttpSession session, Visitor visitor, Integer version, Boolean format, M defaults) { //登录状态保存至session session.setAttribute(VISITOR_ID, visitor.getId()); //用户id session.setAttribute(VISITOR_, visitor); //用户 From d54042a9274cafda1af835319d7d35b966c2aedd Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 13 Apr 2025 01:56:22 +0800 Subject: [PATCH 44/59] =?UTF-8?q?=E4=BE=9D=E8=B5=96=20APIJSON=20=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=94=B9=E4=B8=BA=208.0.0.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7743336..734cecf 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ com.github.Tencent APIJSON - 8.0.0.0.0 + 8.0.0.1 From 85f6b8959ba9220c94e0244e9780960ed88e00b0 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 13 Apr 2025 23:25:39 +0800 Subject: [PATCH 45/59] =?UTF-8?q?=E6=95=B4=E5=90=88=20apijson-router?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apijson/framework/APIJSONApplication.java | 15 +- .../apijson/framework/APIJSONController.java | 222 +++++++++++- .../apijson/framework/APIJSONCreator.java | 5 - .../apijson/framework/APIJSONVerifier.java | 185 +++++++++- .../framework/javax/APIJSONApplication.java | 16 +- .../framework/javax/APIJSONController.java | 324 ++++++++++++++---- .../framework/javax/APIJSONVerifier.java | 225 ++++++++++-- 7 files changed, 888 insertions(+), 104 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONApplication.java b/src/main/java/apijson/framework/APIJSONApplication.java index 5d64ae1..e0c0830 100755 --- a/src/main/java/apijson/framework/APIJSONApplication.java +++ b/src/main/java/apijson/framework/APIJSONApplication.java @@ -77,7 +77,8 @@ public static , L extends List> void in APIJSONSQLConfig.APIJSON_CREATOR = creator; APIJSONParser.APIJSON_CREATOR = creator; APIJSONController.APIJSON_CREATOR = creator; - + APIJSONVerifier.APIJSON_CREATOR = creator; + APIJSONFunctionParser.APIJSON_CREATOR = creator; if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { System.out.println("\n\n\n开始初始化: Access 权限校验配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); @@ -142,6 +143,18 @@ public static , L extends List> void in System.out.println("\n完成测试: Request 请求参数校验 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); } + if (APIJSONVerifier.ENABLE_APIJSON_ROUTER) { + System.out.println("\n\n\n开始初始化: Document 请求映射配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); + try { + APIJSONVerifier.initDocument(shutdownWhenServerError, creator); + } catch (Throwable e) { + e.printStackTrace(); + if (shutdownWhenServerError) { + onServerError("Document 请求映射配置 初始化失败!", shutdownWhenServerError); + } + } + System.out.println("\n完成初始化: Document 请求映射配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + } System.out.println("官方网站: http://apijson.cn"); diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index d5cc670..a6e48bc 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -15,17 +15,15 @@ package apijson.framework; import apijson.*; -import apijson.orm.AbstractParser; -import apijson.orm.Parser; -import apijson.orm.Visitor; +import apijson.JSONRequest; +import apijson.orm.*; import jakarta.servlet.http.HttpSession; import java.rmi.ServerException; -import java.util.List; -import java.util.Map; +import java.util.*; -import static apijson.JSON.toJSONString; +import static apijson.JSON.*; import static apijson.RequestMethod.*; import static apijson.framework.APIJSONConstant.*; @@ -283,6 +281,218 @@ public String putByTag(String tag, Map params, String request, H public String deleteByTag(String tag, Map params, String request, HttpSession session) { return parseByTag(DELETE, tag, params, request, session); } + //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + /**增删改查统一的类 RESTful API 入口,牺牲一些路由解析性能来提升一点开发效率 + * compatCommonAPI = Log.DEBUG + * @param method + * @param tag + * @param params + * @param request + * @param session + * @return + */ + public String router(String method, String tag, Map params, String request, HttpSession session) { + return router(method, tag, params, request, session, Log.DEBUG); + } + /**增删改查统一的类 RESTful API 入口,牺牲一些路由解析性能来提升一点开发效率 + * @param method + * @param tag + * @param params + * @param request + * @param session + * @param compatCommonAPI 兼容万能通用 API,当没有映射 APIJSON 格式请求时,自动转到万能通用 API + * @return + */ + public String router(String method, String tag, Map params, String request, HttpSession session, boolean compatCommonAPI) { + RequestMethod requestMethod = null; + try { + requestMethod = RequestMethod.valueOf(method.toUpperCase()); + } catch (Throwable e) { + // 下方 METHODS.contains(method) 会抛异常 + } + Parser parser = newParser(session, requestMethod); + + if (METHODS.contains(method) == false) { + return JSON.toJSONString( + parser.newErrorResult( + new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + + method + " 错误!只允许 " + METHODS + " 中的一个!" + ) + ) + ); + } + + String t = compatCommonAPI && tag != null && tag.endsWith("[]") ? tag.substring(0, tag.length() - 2) : tag; + if (StringUtil.isName(t) == false) { + return JSON.toJSONString( + parser.newErrorResult( + new IllegalArgumentException("URL 路径 /" + method + "/{tag} 的 tag 中 " + + t + " 错误!tag 不能为空,且只允许变量命名格式!" + ) + ) + ); + } + + String versionStr = params == null ? null : params.remove(APIJSONConstant.VERSION); + Integer version; + try { + version = StringUtil.isEmpty(versionStr, false) ? null : Integer.valueOf(versionStr); + } + catch (Exception e) { + return JSON.toJSONString( + parser.newErrorResult(new IllegalArgumentException("URL 路径 /" + method + "/" + + tag + "?version=value 中 value 值 " + versionStr + " 错误!必须符合整数格式!") + ) + ); + } + + if (version == null) { + version = 0; + } + + try { + // 从 Document 查这样的接口 + String cacheKey = AbstractVerifier.getCacheKeyForRequest(method, tag); + SortedMap> versionedMap = APIJSONVerifier.DOCUMENT_MAP.get(cacheKey); + + Map result = versionedMap == null ? null : versionedMap.get(version); + if (result == null) { // version <= 0 时使用最新,version > 0 时使用 > version 的最接近版本(最小版本) + Set>> set = versionedMap == null ? null : versionedMap.entrySet(); + + if (set != null && set.isEmpty() == false) { + Map.Entry> maxEntry = null; + + for (Map.Entry> entry : set) { + if (entry == null || entry.getKey() == null || entry.getValue() == null) { + continue; + } + + if (version == null || version <= 0 || version == entry.getKey()) { // 这里应该不会出现相等,因为上面 versionedMap.get(Integer.valueOf(version)) + maxEntry = entry; + break; + } + + if (entry.getKey() < version) { + break; + } + + maxEntry = entry; + } + + result = maxEntry == null ? null : maxEntry.getValue(); + } + + if (result != null) { // 加快下次查询,查到值的话组合情况其实是有限的,不属于恶意请求 + if (versionedMap == null) { + versionedMap = new TreeMap<>((o1, o2) -> { + return o2 == null ? -1 : o2.compareTo(o1); // 降序 + }); + } + + versionedMap.put(version, result); + APIJSONVerifier.DOCUMENT_MAP.put(cacheKey, versionedMap); + } + } + + @SuppressWarnings("unchecked") + APIJSONCreator creator = (APIJSONCreator) APIJSONParser.APIJSON_CREATOR; + if (result == null && Log.DEBUG && APIJSONVerifier.DOCUMENT_MAP.isEmpty()) { + + //获取指定的JSON结构 <<<<<<<<<<<<<< + SQLConfig config = creator.createSQLConfig().setMethod(GET).setTable(APIJSONConstant.DOCUMENT_); + config.setPrepared(false); + config.setColumn(Arrays.asList("request,apijson")); + + Map where = new HashMap(); + where.put("url", "/" + method + "/" + tag); + where.put("apijson{}", "length(apijson)>0"); + + if (version > 0) { + where.put(JSONRequest.KEY_VERSION + ">=", version); + } + config.setWhere(where); + config.setOrder(JSONRequest.KEY_VERSION + (version > 0 ? "+" : "-")); + config.setCount(1); + + //too many connections error: 不try-catch,可以让客户端看到是服务器内部异常 + result = creator.createSQLExecutor().execute(config, false); + + // version, method, tag 组合情况太多了,JDK 里又没有 LRUCache,所以要么启动时一次性缓存全部后面只用缓存,要么每次都查数据库 + // versionedMap.put(Integer.valueOf(version), result); + // DOCUMENT_MAP.put(cacheKey, versionedMap); + } + + String apijson = result == null ? null : getString(result, "apijson"); + if (StringUtil.isEmpty(apijson, true)) { // + if (compatCommonAPI) { + return crudByTag(method, tag, params, request, session); + } + + throw new IllegalArgumentException("URL 路径 /" + method + + "/" + tag + (versionStr == null ? "" : "?version=" + versionStr) + " 对应的接口不存在!"); + } + + M rawReq = JSON.parseObject(request); + if (rawReq == null) { + rawReq = JSON.createJSONObject(); + } + if (params != null && params.isEmpty() == false) { + rawReq.putAll(params); + } + + if (parser.isNeedVerifyContent()) { + Verifier verifier = creator.createVerifier(); + + //获取指定的JSON结构 <<<<<<<<<<<< + Map target = parser.getStructure("Request", method.toUpperCase(), tag, version); + if (target == null) { //empty表示随意操作 || object.isEmpty()) { + throw new UnsupportedOperationException("找不到 version: " + version + ", method: " + method.toUpperCase() + ", tag: " + tag + " 对应的 structure !" + + "非开放请求必须是后端 Request 表中校验规则允许的操作!如果需要则在 Request 表中新增配置!"); + } + + //M clone 浅拷贝没用,Structure.parse 会导致 structure 里面被清空,第二次从缓存里取到的就是 {} + verifier.verifyRequest(requestMethod, "", JSON.createJSONObject(target), rawReq, 0, null, null, creator); + } + + M apijsonReq = JSON.parseObject(apijson); + if (apijsonReq == null) { + apijsonReq = JSON.createJSONObject(); + } + + Set> rawSet = rawReq.entrySet(); + if (rawSet != null && rawSet.isEmpty() == false) { + for (Map.Entry entry : rawSet) { + String key = entry == null ? null : entry.getKey(); + if (key == null) { // value 为 null 有效 + continue; + } + + String[] pathKeys = key.split("\\."); + //逐层到达child的直接容器JSONObject parent + int last = pathKeys.length - 1; + M parent = apijsonReq; + for (int i = 0; i < last; i++) {//一步一步到达指定位置 + M p = getJSONObject(parent, pathKeys[i]); + if (p == null) { + p = JSON.createJSONObject(); + parent.put(key, p); + } + parent = p; + } + + parent.put(pathKeys[last], entry.getValue()); + } + } + + // 没必要,已经是预设好的实际参数了,如果要 tag 就在 apijson 字段配置 apijsonReq.put(JSONRequest.KEY_TAG, tag); + + return parser.setNeedVerifyContent(false).parse(apijsonReq); + } + catch (Exception e) { + return JSON.toJSONString(parser.newErrorResult(e)); + } + } //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> diff --git a/src/main/java/apijson/framework/APIJSONCreator.java b/src/main/java/apijson/framework/APIJSONCreator.java index 5845433..0196bf8 100644 --- a/src/main/java/apijson/framework/APIJSONCreator.java +++ b/src/main/java/apijson/framework/APIJSONCreator.java @@ -14,13 +14,8 @@ package apijson.framework; -import apijson.orm.FunctionParser; -import apijson.orm.Parser; import apijson.orm.ParserCreator; -import apijson.orm.SQLConfig; import apijson.orm.SQLCreator; -import apijson.orm.SQLExecutor; -import apijson.orm.Verifier; import apijson.orm.VerifierCreator; import java.util.List; diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 94cd6a9..1fa771b 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -16,15 +16,14 @@ import static apijson.JSON.*; import static apijson.JSONRequest.KEY_COUNT; -import static apijson.framework.APIJSONConstant.ACCESS_; -import static apijson.framework.APIJSONConstant.REQUEST_; -import static apijson.framework.APIJSONConstant.VISITOR_; -import static apijson.framework.APIJSONConstant.VISITOR_ID; +import static apijson.framework.APIJSONConstant.*; +import static apijson.framework.APIJSONConstant.METHODS; import java.rmi.ServerException; import java.util.*; import apijson.*; +import apijson.orm.JSONRequest; import jakarta.servlet.http.HttpSession; import apijson.orm.*; @@ -37,6 +36,7 @@ public class APIJSONVerifier, L extends List> @@ -51,9 +51,11 @@ public class APIJSONVerifier, L extends List, ? extends List> APIJSON_CREATOR; + public static Map>> DOCUMENT_MAP; static { APIJSON_CREATOR = new APIJSONCreator<>(); + DOCUMENT_MAP = new HashMap<>(); } /**初始化,加载所有权限配置和请求校验配置 @@ -509,6 +511,181 @@ public int compare(Integer o1, Integer o2) { } + + /**初始化,加载所有请求校验配置 + * @return + * @throws ServerException + */ + public static > M initDocument() throws ServerException { + return initDocument(false); + } + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @return + * @throws ServerException + */ + public static > M initDocument(boolean shutdownWhenServerError) throws ServerException { + return initDocument(shutdownWhenServerError, null); + } + /**初始化,加载所有请求校验配置 + * @param creator + * @return + * @throws ServerException + */ + public static , L extends List> M initDocument(APIJSONCreator creator) throws ServerException { + return initDocument(false, creator); + } + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @param creator + * @return + * @throws ServerException + */ + public static , L extends List> M initDocument( + boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + return initDocument(shutdownWhenServerError, creator, null); + } + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @param creator + * @param table 表内自定义数据过滤条件 + * @return + * @throws ServerException + */ + @SuppressWarnings("unchecked") + public static , L extends List> M initDocument( + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { + if (creator == null) { + creator = (APIJSONCreator) APIJSON_CREATOR; + } + APIJSON_CREATOR = creator; + + + boolean isAll = table == null || table.isEmpty(); + M document = isAll ? JSON.createJSONObject(new JSONRequest().puts("apijson{}", "length(apijson)>0").setOrder("version-,id+")) : table; + if (Log.DEBUG == false) { + document.put(APIJSONConstant.KEY_DEBUG, 0); + } + + M requestItem = JSON.createJSONObject(); + requestItem.put(DOCUMENT_, document); // 方便查找 + requestItem.put(KEY_COUNT, 0); + + M request = JSON.createJSONObject(); + request.put(DOCUMENT_ + "[]", requestItem); + + M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); + if (JSONResponse.isSuccess(response) == false) { + Log.e(TAG, "\n\n\n\n\n !!!! 查询请求映射配置异常 !!!\n" + getString(response, JSONResponse.KEY_MSG) + "\n\n\n\n\n"); + onServerError("查询请求映射配置异常 !", shutdownWhenServerError); + } + + L list = getJSONArray(response, DOCUMENT_ + "[]"); + int size = list == null ? 0 : list.size(); + if (isAll && size <= 0) { + Log.w(TAG, "initDocument isAll && size <= 0,没有可用的请求映射配置"); + return response; + } + + Log.d(TAG, "initDocument < for DOCUMENT_MAP.size() = " + DOCUMENT_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<"); + + + Map>> newMap = new LinkedHashMap<>(); + + for (int i = 0; i < size; i++) { + M item = getJSONObject(list, i); + if (item == null) { + continue; + } + + String version = getString(item, "version"); + if (StringUtil.isEmpty(version, true)) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + + " 对应 version 不能为空!", shutdownWhenServerError); + } + + String url = getString(item, "url"); + int index = url == null ? -1 : url.indexOf("/"); + if (index != 0) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应 url 值错误,必须以 / 开头!", shutdownWhenServerError); + } + + String requestStr = getString(item, "request"); + + String apijson = getString(item, "apijson"); + if (StringUtil.isEmpty(apijson)) { + if (StringUtil.isBranchUrl(url) == false) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应 url 值错误!只允许合法的 URL 格式!", shutdownWhenServerError); + } + } + else { + if (StringUtil.isNotEmpty(requestStr)) { + try { + JSON.parseObject(requestStr); + } + catch (Exception e) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应 request 值 " + requestStr + " 错误!只允许合法的 M 格式!" + e.getMessage(), shutdownWhenServerError); + } + } + + try { + JSON.parseObject(apijson); + } + catch (Exception e) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应 apijson 值 " + apijson + " 错误!只允许合法的 M 格式!" + e.getMessage(), shutdownWhenServerError); + } + + index = url.lastIndexOf("/"); + String method = index < 0 ? null : url.substring(0, index); + String tag = index < 0 ? null : url.substring(index + 1); + + index = method == null ? -1 : method.lastIndexOf("/"); + method = index < 0 ? method : method.substring(index + 1); + + if (METHODS.contains(method) == false) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应路径 /{method}/{tag} 中 method 值 " + method + " 错误!apijson 字段不为空时只允许 " + METHODS + " 中的一个!", shutdownWhenServerError); + } + + if (StringUtil.isName(tag) == false) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应路径 /{method}/{tag} 中 tag 值 " + tag + " 错误!apijson 字段不为空时只允许变量命名格式!", shutdownWhenServerError); + } + + String cacheKey = getCacheKeyForRequest(method, tag); + SortedMap> versionedMap = newMap.get(cacheKey); + if (versionedMap == null) { + versionedMap = new TreeMap<>(new Comparator() { + + @Override + public int compare(Integer o1, Integer o2) { + return o2 == null ? -1 : o2.compareTo(o1); // 降序 + } + }); + } + versionedMap.put(Integer.valueOf(version), item); + newMap.put(cacheKey, versionedMap); + } + + } + + if (isAll) { // 全量更新 + DOCUMENT_MAP = newMap; + } + else { + DOCUMENT_MAP.putAll(newMap); + } + + Log.d(TAG, "initDocument for /> DOCUMENT_MAP.size() = " + DOCUMENT_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>"); + + return response; + } + + public static void test() throws Exception { testStructure(); } diff --git a/src/main/java/apijson/framework/javax/APIJSONApplication.java b/src/main/java/apijson/framework/javax/APIJSONApplication.java index 29e9d1b..d6a96e6 100755 --- a/src/main/java/apijson/framework/javax/APIJSONApplication.java +++ b/src/main/java/apijson/framework/javax/APIJSONApplication.java @@ -16,7 +16,6 @@ import apijson.Log; import apijson.NotNull; -import apijson.framework.javax.*; import apijson.orm.AbstractFunctionParser; import apijson.orm.script.ScriptExecutor; @@ -78,7 +77,8 @@ public static , L extends List> void in APIJSONSQLConfig.APIJSON_CREATOR = creator; APIJSONParser.APIJSON_CREATOR = creator; APIJSONController.APIJSON_CREATOR = creator; - + APIJSONVerifier.APIJSON_CREATOR = creator; + APIJSONFunctionParser.APIJSON_CREATOR = creator; if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { System.out.println("\n\n\n开始初始化: Access 权限校验配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); @@ -143,6 +143,18 @@ public static , L extends List> void in System.out.println("\n完成测试: Request 请求参数校验 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); } + if (APIJSONVerifier.ENABLE_APIJSON_ROUTER) { + System.out.println("\n\n\n开始初始化: Document 请求映射配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); + try { + APIJSONVerifier.initDocument(shutdownWhenServerError, creator); + } catch (Throwable e) { + e.printStackTrace(); + if (shutdownWhenServerError) { + onServerError("Document 请求映射配置 初始化失败!", shutdownWhenServerError); + } + } + System.out.println("\n完成初始化: Document 请求映射配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + } System.out.println("官方网站: http://apijson.cn"); diff --git a/src/main/java/apijson/framework/javax/APIJSONController.java b/src/main/java/apijson/framework/javax/APIJSONController.java index 271424a..47fc370 100755 --- a/src/main/java/apijson/framework/javax/APIJSONController.java +++ b/src/main/java/apijson/framework/javax/APIJSONController.java @@ -14,18 +14,15 @@ package apijson.framework.javax; +import apijson.JSONRequest; import apijson.*; -import apijson.orm.AbstractParser; -import apijson.orm.Parser; -import apijson.orm.Visitor; - +import apijson.orm.*; import javax.servlet.http.HttpSession; import java.rmi.ServerException; -import java.util.List; -import java.util.Map; +import java.util.*; -import static apijson.JSON.toJSONString; +import static apijson.JSON.*; import static apijson.RequestMethod.*; import static apijson.framework.javax.APIJSONConstant.*; @@ -39,35 +36,30 @@ */ public class APIJSONController, L extends List> { public static final String TAG = "APIJSONController"; - + @NotNull public static APIJSONCreator, ? extends List> APIJSON_CREATOR; static { APIJSON_CREATOR = new APIJSONCreator(); } - + public String getRequestURL() { return null; } public APIJSONParser newParser(HttpSession session, RequestMethod method) { @SuppressWarnings("unchecked") - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); parser.setMethod(method); - if (parser instanceof APIJSONParser) { - ((APIJSONParser) parser).setSession(session); - } - // 可以更方便地通过日志排查错误 - if (parser instanceof AbstractParser) { - ((AbstractParser) parser).setRequestURL(getRequestURL()); - } + parser.setSession(session); + parser.setRequestURL(getRequestURL()); return parser; } public String parse(RequestMethod method, String request, HttpSession session) { return newParser(session, method).parse(request); } - + public String parseByTag(RequestMethod method, String tag, Map params, String request, HttpSession session) { APIJSONParser parser = newParser(null, null); M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false, (JSONCreator) APIJSON_CREATOR); @@ -77,7 +69,7 @@ public String parseByTag(RequestMethod method, String tag, Map p if (params != null && params.isEmpty() == false) { req.putAll(params); } - + return newParser(session, method).parse(req); } @@ -170,7 +162,7 @@ public String put(String request, HttpSession session) { public String delete(String request, HttpSession session) { return parse(DELETE, request, session); } - + /**支持全局事物、批量执行多条语句 * @param request 只用String,避免encode后未decode * @param session @@ -185,8 +177,8 @@ public String crud(String request, HttpSession session) { //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - - + + /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一些路由解析性能来提升一点开发效率 * @param method * @param tag @@ -207,7 +199,7 @@ public String crudByTag(String method, String tag, Map params, S )); } - + // /**获取列表 // * @param request 只用String,避免encode后未decode // * @param session @@ -227,7 +219,7 @@ public String crudByTag(String method, String tag, Map params, S public String getByTag(String tag, Map params, String request, HttpSession session) { return parseByTag(GET, tag, params, request, session); } - + /**计数 * @param request 只用String,避免encode后未decode @@ -288,6 +280,218 @@ public String putByTag(String tag, Map params, String request, H public String deleteByTag(String tag, Map params, String request, HttpSession session) { return parseByTag(DELETE, tag, params, request, session); } + //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + + /**增删改查统一的类 RESTful API 入口,牺牲一些路由解析性能来提升一点开发效率 + * compatCommonAPI = Log.DEBUG + * @param method + * @param tag + * @param params + * @param request + * @param session + * @return + */ + public String router(String method, String tag, Map params, String request, HttpSession session) { + return router(method, tag, params, request, session, Log.DEBUG); + } + /**增删改查统一的类 RESTful API 入口,牺牲一些路由解析性能来提升一点开发效率 + * @param method + * @param tag + * @param params + * @param request + * @param session + * @param compatCommonAPI 兼容万能通用 API,当没有映射 APIJSON 格式请求时,自动转到万能通用 API + * @return + */ + public String router(String method, String tag, Map params, String request, HttpSession session, boolean compatCommonAPI) { + RequestMethod requestMethod = null; + try { + requestMethod = RequestMethod.valueOf(method.toUpperCase()); + } catch (Throwable e) { + // 下方 METHODS.contains(method) 会抛异常 + } + Parser parser = newParser(session, requestMethod); + + if (METHODS.contains(method) == false) { + return JSON.toJSONString( + parser.newErrorResult( + new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + + method + " 错误!只允许 " + METHODS + " 中的一个!" + ) + ) + ); + } + + String t = compatCommonAPI && tag != null && tag.endsWith("[]") ? tag.substring(0, tag.length() - 2) : tag; + if (StringUtil.isName(t) == false) { + return JSON.toJSONString( + parser.newErrorResult( + new IllegalArgumentException("URL 路径 /" + method + "/{tag} 的 tag 中 " + + t + " 错误!tag 不能为空,且只允许变量命名格式!" + ) + ) + ); + } + + String versionStr = params == null ? null : params.remove(APIJSONConstant.VERSION); + Integer version; + try { + version = StringUtil.isEmpty(versionStr, false) ? null : Integer.valueOf(versionStr); + } + catch (Exception e) { + return JSON.toJSONString( + parser.newErrorResult(new IllegalArgumentException("URL 路径 /" + method + "/" + + tag + "?version=value 中 value 值 " + versionStr + " 错误!必须符合整数格式!") + ) + ); + } + + if (version == null) { + version = 0; + } + + try { + // 从 Document 查这样的接口 + String cacheKey = AbstractVerifier.getCacheKeyForRequest(method, tag); + SortedMap> versionedMap = APIJSONVerifier.DOCUMENT_MAP.get(cacheKey); + + Map result = versionedMap == null ? null : versionedMap.get(version); + if (result == null) { // version <= 0 时使用最新,version > 0 时使用 > version 的最接近版本(最小版本) + Set>> set = versionedMap == null ? null : versionedMap.entrySet(); + + if (set != null && set.isEmpty() == false) { + Map.Entry> maxEntry = null; + + for (Map.Entry> entry : set) { + if (entry == null || entry.getKey() == null || entry.getValue() == null) { + continue; + } + + if (version == null || version <= 0 || version == entry.getKey()) { // 这里应该不会出现相等,因为上面 versionedMap.get(Integer.valueOf(version)) + maxEntry = entry; + break; + } + + if (entry.getKey() < version) { + break; + } + + maxEntry = entry; + } + + result = maxEntry == null ? null : maxEntry.getValue(); + } + + if (result != null) { // 加快下次查询,查到值的话组合情况其实是有限的,不属于恶意请求 + if (versionedMap == null) { + versionedMap = new TreeMap<>((o1, o2) -> { + return o2 == null ? -1 : o2.compareTo(o1); // 降序 + }); + } + + versionedMap.put(version, result); + APIJSONVerifier.DOCUMENT_MAP.put(cacheKey, versionedMap); + } + } + + @SuppressWarnings("unchecked") + APIJSONCreator creator = (APIJSONCreator) APIJSONParser.APIJSON_CREATOR; + if (result == null && Log.DEBUG && APIJSONVerifier.DOCUMENT_MAP.isEmpty()) { + + //获取指定的JSON结构 <<<<<<<<<<<<<< + SQLConfig config = creator.createSQLConfig().setMethod(GET).setTable(APIJSONConstant.DOCUMENT_); + config.setPrepared(false); + config.setColumn(Arrays.asList("request,apijson")); + + Map where = new HashMap(); + where.put("url", "/" + method + "/" + tag); + where.put("apijson{}", "length(apijson)>0"); + + if (version > 0) { + where.put(JSONRequest.KEY_VERSION + ">=", version); + } + config.setWhere(where); + config.setOrder(JSONRequest.KEY_VERSION + (version > 0 ? "+" : "-")); + config.setCount(1); + + //too many connections error: 不try-catch,可以让客户端看到是服务器内部异常 + result = creator.createSQLExecutor().execute(config, false); + + // version, method, tag 组合情况太多了,JDK 里又没有 LRUCache,所以要么启动时一次性缓存全部后面只用缓存,要么每次都查数据库 + // versionedMap.put(Integer.valueOf(version), result); + // DOCUMENT_MAP.put(cacheKey, versionedMap); + } + + String apijson = result == null ? null : getString(result, "apijson"); + if (StringUtil.isEmpty(apijson, true)) { // + if (compatCommonAPI) { + return crudByTag(method, tag, params, request, session); + } + + throw new IllegalArgumentException("URL 路径 /" + method + + "/" + tag + (versionStr == null ? "" : "?version=" + versionStr) + " 对应的接口不存在!"); + } + + M rawReq = JSON.parseObject(request); + if (rawReq == null) { + rawReq = JSON.createJSONObject(); + } + if (params != null && params.isEmpty() == false) { + rawReq.putAll(params); + } + + if (parser.isNeedVerifyContent()) { + Verifier verifier = creator.createVerifier(); + + //获取指定的JSON结构 <<<<<<<<<<<< + Map target = parser.getStructure("Request", method.toUpperCase(), tag, version); + if (target == null) { //empty表示随意操作 || object.isEmpty()) { + throw new UnsupportedOperationException("找不到 version: " + version + ", method: " + method.toUpperCase() + ", tag: " + tag + " 对应的 structure !" + + "非开放请求必须是后端 Request 表中校验规则允许的操作!如果需要则在 Request 表中新增配置!"); + } + + //M clone 浅拷贝没用,Structure.parse 会导致 structure 里面被清空,第二次从缓存里取到的就是 {} + verifier.verifyRequest(requestMethod, "", JSON.createJSONObject(target), rawReq, 0, null, null, creator); + } + + M apijsonReq = JSON.parseObject(apijson); + if (apijsonReq == null) { + apijsonReq = JSON.createJSONObject(); + } + + Set> rawSet = rawReq.entrySet(); + if (rawSet != null && rawSet.isEmpty() == false) { + for (Map.Entry entry : rawSet) { + String key = entry == null ? null : entry.getKey(); + if (key == null) { // value 为 null 有效 + continue; + } + + String[] pathKeys = key.split("\\."); + //逐层到达child的直接容器JSONObject parent + int last = pathKeys.length - 1; + M parent = apijsonReq; + for (int i = 0; i < last; i++) {//一步一步到达指定位置 + M p = getJSONObject(parent, pathKeys[i]); + if (p == null) { + p = JSON.createJSONObject(); + parent.put(key, p); + } + parent = p; + } + + parent.put(pathKeys[last], entry.getValue()); + } + } + + // 没必要,已经是预设好的实际参数了,如果要 tag 就在 apijson 字段配置 apijsonReq.put(JSONRequest.KEY_TAG, tag); + + return parser.setNeedVerifyContent(false).parse(apijsonReq); + } + catch (Exception e) { + return JSON.toJSONString(parser.newErrorResult(e)); + } + } //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -298,11 +502,11 @@ public String deleteByTag(String tag, Map params, String request * @return * @see *
-		{
-			"type": "ALL",  //重载对象,ALL, FUNCTION, REQUEST, ACCESS,非必须
-			"phone": "13000082001",
-			"verify": "1234567" //验证码,对应类型为 Verify.TYPE_RELOAD
-		}
+	{
+	"type": "ALL",  //重载对象,ALL, FUNCTION, REQUEST, ACCESS,非必须
+	"phone": "13000082001",
+	"verify": "1234567" //验证码,对应类型为 Verify.TYPE_RELOAD
+	}
 	 * 
*/ public M reload(String type) { @@ -313,15 +517,15 @@ public M reload(String type) { if (reloadAll || "ACCESS".equals(type)) { try { - if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_ROLE == false) { - throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_ROLE == false 时不支持校验角色权限!" + - "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_ROLE = true !"); - } - - if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { - result.put(ACCESS_, APIJSONVerifier.initAccess()); - } - } catch (ServerException e) { + if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_ROLE == false) { + throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_ROLE == false 时不支持校验角色权限!" + + "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_ROLE = true !"); + } + + if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { + result.put(ACCESS_, APIJSONVerifier.initAccess()); + } + } catch (ServerException e) { e.printStackTrace(); result.put(ACCESS_, parser.newErrorResult(e)); } @@ -329,14 +533,14 @@ public M reload(String type) { if (reloadAll || "FUNCTION".equals(type)) { try { - if (reloadAll == false && APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION == false) { - throw new UnsupportedOperationException("AbstractFunctionParser.ENABLE_REMOTE_FUNCTION" + - " == false 时不支持远程函数!如需支持则设置 AbstractFunctionParser.ENABLE_REMOTE_FUNCTION = true !"); - } - - if (APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION) { - result.put(FUNCTION_, APIJSONFunctionParser.init()); - } + if (reloadAll == false && APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION == false) { + throw new UnsupportedOperationException("AbstractFunctionParser.ENABLE_REMOTE_FUNCTION" + + " == false 时不支持远程函数!如需支持则设置 AbstractFunctionParser.ENABLE_REMOTE_FUNCTION = true !"); + } + + if (APIJSONFunctionParser.ENABLE_REMOTE_FUNCTION) { + result.put(FUNCTION_, APIJSONFunctionParser.init()); + } } catch (ServerException e) { e.printStackTrace(); result.put(FUNCTION_, parser.newErrorResult(e)); @@ -345,14 +549,14 @@ public M reload(String type) { if (reloadAll || "REQUEST".equals(type)) { try { - if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_CONTENT == false) { - throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_CONTENT == false 时不支持校验请求传参内容!" + - "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_CONTENT = true !"); - } - - if (APIJSONVerifier.ENABLE_VERIFY_CONTENT) { - result.put(REQUEST_, APIJSONVerifier.initRequest()); - } + if (reloadAll == false && APIJSONVerifier.ENABLE_VERIFY_CONTENT == false) { + throw new UnsupportedOperationException("AbstractVerifier.ENABLE_VERIFY_CONTENT == false 时不支持校验请求传参内容!" + + "如需支持则设置 AbstractVerifier.ENABLE_VERIFY_CONTENT = true !"); + } + + if (APIJSONVerifier.ENABLE_VERIFY_CONTENT) { + result.put(REQUEST_, APIJSONVerifier.initRequest()); + } } catch (ServerException e) { e.printStackTrace(); result.put(REQUEST_, parser.newErrorResult(e)); @@ -364,14 +568,14 @@ public M reload(String type) { /**用户登录 - * @param session - * @param visitor - * @param version - * @param format - * @param defaults + * @param session + * @param visitor + * @param version + * @param format + * @param defaults * @return 返回类型设置为 Object 是为了子类重写时可以有返回值,避免因为冲突而另写一个有返回值的登录方法 */ - public Object login(@NotNull HttpSession session, Visitor visitor, Integer version, Boolean format, JSONObject defaults) { + public Object login(@NotNull HttpSession session, Visitor visitor, Integer version, Boolean format, M defaults) { //登录状态保存至session session.setAttribute(VISITOR_ID, visitor.getId()); //用户id session.setAttribute(VISITOR_, visitor); //用户 diff --git a/src/main/java/apijson/framework/javax/APIJSONVerifier.java b/src/main/java/apijson/framework/javax/APIJSONVerifier.java index ea1fc2a..a7f693b 100755 --- a/src/main/java/apijson/framework/javax/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/javax/APIJSONVerifier.java @@ -14,20 +14,17 @@ package apijson.framework.javax; -import static apijson.JSON.*; -import static apijson.JSONRequest.KEY_COUNT; -import static apijson.framework.javax.APIJSONConstant.ACCESS_; -import static apijson.framework.javax.APIJSONConstant.REQUEST_; -import static apijson.framework.javax.APIJSONConstant.VISITOR_; -import static apijson.framework.javax.APIJSONConstant.VISITOR_ID; +import apijson.*; +import apijson.orm.JSONRequest; +import apijson.orm.*; +import javax.servlet.http.HttpSession; import java.rmi.ServerException; import java.util.*; -import apijson.*; -import javax.servlet.http.HttpSession; - -import apijson.orm.*; +import static apijson.JSON.*; +import static apijson.JSONRequest.KEY_COUNT; +import static apijson.framework.javax.APIJSONConstant.*; /**权限验证器 @@ -37,6 +34,7 @@ public class APIJSONVerifier, L extends List> @@ -51,9 +49,11 @@ public class APIJSONVerifier, L extends List, ? extends List> APIJSON_CREATOR; + public static Map>> DOCUMENT_MAP; static { APIJSON_CREATOR = new APIJSONCreator<>(); + DOCUMENT_MAP = new HashMap<>(); } /**初始化,加载所有权限配置和请求校验配置 @@ -93,12 +93,12 @@ public static , L extends List> M init( public static , L extends List> M init( boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { M result = JSON.createJSONObject(); - if (ENABLE_VERIFY_ROLE) { - result.put(ACCESS_, initAccess(shutdownWhenServerError, creator)); - } - if (ENABLE_VERIFY_CONTENT) { - result.put(REQUEST_, initRequest(shutdownWhenServerError, creator)); - } + if (ENABLE_VERIFY_ROLE) { + result.put(ACCESS_, initAccess(shutdownWhenServerError, creator)); + } + if (ENABLE_VERIFY_CONTENT) { + result.put(REQUEST_, initRequest(shutdownWhenServerError, creator)); + } return result; } @@ -148,7 +148,7 @@ public static , L extends List> M initA */ @SuppressWarnings("unchecked") public static , L extends List> M initAccess( - boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { creator = (APIJSONCreator) APIJSON_CREATOR; } @@ -190,7 +190,7 @@ public static , L extends List> M initA Map newTKMap = new LinkedHashMap<>(); // JSON.createJSONObject(); Map tableSchemaMap = new LinkedHashMap<>(); // JSON.createJSONObject(); - SortedMap>> versionedTableColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); + SortedMap>> versionedTableColumnMap = new TreeMap<>(apijson.framework.ColumnUtil.DESC_COMPARATOR); SortedMap>> versionedKeyColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); for (int i = 0; i < size; i++) { M item = getJSONObject(list, i); @@ -219,8 +219,8 @@ public static , L extends List> M initA if (containNotDeletedValue == false && StringUtil.isEmpty(deletedValue, true)) { onServerError( "Access表 id = " + getString(item, "id") + " 对应的 " - + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " - + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" + + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " + + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" , shutdownWhenServerError ); } @@ -241,12 +241,12 @@ public static , L extends List> M initA } if (StringUtil.isEmpty(alias, true)) { - if (apijson.JSONObject.isTableKey(name) == false) { + if (JSONObject.isTableKey(name) == false) { onServerError("name: " + name + "不合法!字段 alias 的值为空时,name 必须为合法表名!", shutdownWhenServerError); } alias = name; - } else if (apijson.JSONObject.isTableKey(alias) == false) { + } else if (JSONObject.isTableKey(alias) == false) { onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError); } @@ -388,7 +388,7 @@ public static , L extends List> M initR */ @SuppressWarnings("unchecked") public static , L extends List> M initRequest( - boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { creator = (APIJSONCreator) APIJSON_CREATOR; } @@ -397,7 +397,7 @@ public static , L extends List> M initR boolean isAll = table == null || table.isEmpty(); M tblObj = createJSONObject(); - tblObj.put(apijson.JSONObject.KEY_ORDER, "version-,id+"); + tblObj.put(JSONObject.KEY_ORDER, "version-,id+"); M requestTable = isAll ? tblObj : table; if (Log.DEBUG == false) { requestTable.put(APIJSONConstant.KEY_DEBUG, 0); @@ -412,7 +412,7 @@ public static , L extends List> M initR M request = JSON.createJSONObject(); request.put(REQUEST_ + "[]", ro); - + M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { Log.e(TAG, "\n\n\n\n\n !!!! 查询请求校验规则配置异常 !!!\n" + getString(response, JSONResponse.KEY_MSG) + "\n\n\n\n\n"); @@ -465,7 +465,7 @@ public static , L extends List> M initR boolean isArrayKey = tag.endsWith(":[]"); // apijson.JSONObject.isArrayKey(tag); String key = isArrayKey ? tag.substring(0, tag.length() - 3) : tag; - if (apijson.JSONObject.isTableKey(key)) { + if (JSONObject.isTableKey(key)) { if (isArrayKey) { //自动为 tag = Comment:[] 的 { ... } 新增键值对 "Comment[]":[] 为 { "Comment[]":[], ... } target.put(key + "[]", JSON.createJSONArray()); } else { //自动为 tag = Comment 的 { ... } 包一层为 { "Comment": { ... } } @@ -509,6 +509,179 @@ public int compare(Integer o1, Integer o2) { } + + /**初始化,加载所有请求校验配置 + * @return + * @throws ServerException + */ + public static > M initDocument() throws ServerException { + return initDocument(false); + } + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @return + * @throws ServerException + */ + public static > M initDocument(boolean shutdownWhenServerError) throws ServerException { + return initDocument(shutdownWhenServerError, null); + } + /**初始化,加载所有请求校验配置 + * @param creator + * @return + * @throws ServerException + */ + public static , L extends List> M initDocument(APIJSONCreator creator) throws ServerException { + return initDocument(false, creator); + } + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @param creator + * @return + * @throws ServerException + */ + public static , L extends List> M initDocument(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + return initDocument(shutdownWhenServerError, creator, null); + } + /**初始化,加载所有请求校验配置 + * @param shutdownWhenServerError + * @param creator + * @param table 表内自定义数据过滤条件 + * @return + * @throws ServerException + */ + @SuppressWarnings("unchecked") + public static , L extends List> M initDocument(boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { + if (creator == null) { + creator = (APIJSONCreator) APIJSON_CREATOR; + } + APIJSON_CREATOR = creator; + + + boolean isAll = table == null || table.isEmpty(); + M document = isAll ? JSON.createJSONObject(new JSONRequest().puts("apijson{}", "length(apijson)>0").setOrder("version-,id+")) : table; + if (Log.DEBUG == false) { + document.put(APIJSONConstant.KEY_DEBUG, 0); + } + + M requestItem = JSON.createJSONObject(); + requestItem.put(DOCUMENT_, document); // 方便查找 + requestItem.put(KEY_COUNT, 0); + + M request = JSON.createJSONObject(); + request.put(DOCUMENT_ + "[]", requestItem); + + M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); + if (JSONResponse.isSuccess(response) == false) { + Log.e(TAG, "\n\n\n\n\n !!!! 查询请求映射配置异常 !!!\n" + getString(response, JSONResponse.KEY_MSG) + "\n\n\n\n\n"); + onServerError("查询请求映射配置异常 !", shutdownWhenServerError); + } + + L list = getJSONArray(response, DOCUMENT_ + "[]"); + int size = list == null ? 0 : list.size(); + if (isAll && size <= 0) { + Log.w(TAG, "initDocument isAll && size <= 0,没有可用的请求映射配置"); + return response; + } + + Log.d(TAG, "initDocument < for DOCUMENT_MAP.size() = " + DOCUMENT_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<"); + + + Map>> newMap = new LinkedHashMap<>(); + + for (int i = 0; i < size; i++) { + M item = getJSONObject(list, i); + if (item == null) { + continue; + } + + String version = getString(item, "version"); + if (StringUtil.isEmpty(version, true)) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + + " 对应 version 不能为空!", shutdownWhenServerError); + } + + String url = getString(item, "url"); + int index = url == null ? -1 : url.indexOf("/"); + if (index != 0) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应 url 值错误,必须以 / 开头!", shutdownWhenServerError); + } + + String requestStr = getString(item, "request"); + + String apijson = getString(item, "apijson"); + if (StringUtil.isEmpty(apijson)) { + if (StringUtil.isBranchUrl(url) == false) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应 url 值错误!只允许合法的 URL 格式!", shutdownWhenServerError); + } + } + else { + if (StringUtil.isNotEmpty(requestStr)) { + try { + JSON.parseObject(requestStr); + } + catch (Exception e) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应 request 值 " + requestStr + " 错误!只允许合法的 M 格式!" + e.getMessage(), shutdownWhenServerError); + } + } + + try { + JSON.parseObject(apijson); + } + catch (Exception e) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应 apijson 值 " + apijson + " 错误!只允许合法的 M 格式!" + e.getMessage(), shutdownWhenServerError); + } + + index = url.lastIndexOf("/"); + String method = index < 0 ? null : url.substring(0, index); + String tag = index < 0 ? null : url.substring(index + 1); + + index = method == null ? -1 : method.lastIndexOf("/"); + method = index < 0 ? method : method.substring(index + 1); + + if (METHODS.contains(method) == false) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应路径 /{method}/{tag} 中 method 值 " + method + " 错误!apijson 字段不为空时只允许 " + METHODS + " 中的一个!", shutdownWhenServerError); + } + + if (StringUtil.isName(tag) == false) { + onServerError("服务器内部错误,Document 表中的 id=" + getString(item, "id") + ", name=" + getString(item, "name") + ", url=" + url + + " 对应路径 /{method}/{tag} 中 tag 值 " + tag + " 错误!apijson 字段不为空时只允许变量命名格式!", shutdownWhenServerError); + } + + String cacheKey = getCacheKeyForRequest(method, tag); + SortedMap> versionedMap = newMap.get(cacheKey); + if (versionedMap == null) { + versionedMap = new TreeMap<>(new Comparator() { + + @Override + public int compare(Integer o1, Integer o2) { + return o2 == null ? -1 : o2.compareTo(o1); // 降序 + } + }); + } + versionedMap.put(Integer.valueOf(version), item); + newMap.put(cacheKey, versionedMap); + } + + } + + if (isAll) { // 全量更新 + DOCUMENT_MAP = newMap; + } + else { + DOCUMENT_MAP.putAll(newMap); + } + + Log.d(TAG, "initDocument for /> DOCUMENT_MAP.size() = " + DOCUMENT_MAP.size() + " >>>>>>>>>>>>>>>>>>>>>>>"); + + return response; + } + + public static void test() throws Exception { testStructure(); } From 75f943f04da1db5250e258cf236eafb20e089995 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Thu, 17 Apr 2025 23:58:43 +0800 Subject: [PATCH 46/59] =?UTF-8?q?=E8=A7=A3=E5=86=B3=20FunctionParser=20?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=8A=A5=E9=94=99=E8=87=AA=E6=B5=8B?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=EF=BC=8C=E5=88=A0=E9=99=A4=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E7=9A=84=20@JSONFiled?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/APIJSONFunctionParser.java | 39 +++++++++++++------ .../apijson/framework/APIJSONSQLConfig.java | 4 -- .../javax/APIJSONFunctionParser.java | 8 ++-- .../framework/javax/APIJSONSQLConfig.java | 4 -- 4 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index c4a76f3..175a7c7 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -335,7 +335,8 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE public static void test() throws Exception { test(null); } - public static , L extends List> void test(APIJSONFunctionParser function) throws Exception { + public static , L extends List> void test( + APIJSONFunctionParser functionParser) throws Exception { int i0 = 1, i1 = -2; M request = JSON.createJSONObject(); request.put("id", 10); @@ -360,25 +361,41 @@ public static , L extends List> void te object.put("key", "success"); request.put("object", object); - if (function == null) { - function = new APIJSONFunctionParser<>(null, null, 1, null, null); + APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + parser.setRequest(request); + if (functionParser == null) { + functionParser = (APIJSONFunctionParser) APIJSON_CREATOR.createFunctionParser(); + functionParser.setParser(parser); + functionParser.setMethod(parser.getMethod()); + functionParser.setTag(parser.getTag()); + functionParser.setVersion(parser.getVersion()); + functionParser.setRequest(parser.getRequest()); + + //if (functionParser instanceof APIJSONFunctionParser) { + ((APIJSONFunctionParser) functionParser).setSession(parser.getSession()); + //} } + // functionParser.setKey(null); + // functionParser.setParentPath(null); + // functionParser.setCurrentName(null); + functionParser.setCurrentObject(request); + // 等数据库 Function 表加上 plus 配置再过两个以上迭代(应该是到 5.0)后再取消注释 // Log.i(TAG, "plus(1,-2) = " + function.invoke("plus(i0,i1)", request)); // AssertUtil.assertEqual(-1, function.invoke("plus(i0,i1)", request)); - Log.i(TAG, "count([1,2,4,10]) = " + function.invoke("countArray(array)", request)); - AssertUtil.assertEqual(4, function.invoke("countArray(array)", request)); + Log.i(TAG, "count([1,2,4,10]) = " + functionParser.invoke("countArray(array)", request)); + AssertUtil.assertEqual(4, functionParser.invoke("countArray(array)", request)); - Log.i(TAG, "isContain([1,2,4,10], 10) = " + function.invoke("isContain(array,id)", request)); - AssertUtil.assertEqual(true, function.invoke("isContain(array,id)", request)); + Log.i(TAG, "isContain([1,2,4,10], 10) = " + functionParser.invoke("isContain(array,id)", request)); + AssertUtil.assertEqual(true, functionParser.invoke("isContain(array,id)", request)); - Log.i(TAG, "getFromArray([1,2,4,10], 0) = " + function.invoke("getFromArray(array,@position)", request)); - AssertUtil.assertEqual(1, function.invoke("getFromArray(array,@position)", request)); + Log.i(TAG, "getFromArray([1,2,4,10], 0) = " + functionParser.invoke("getFromArray(array,@position)", request)); + AssertUtil.assertEqual(1, functionParser.invoke("getFromArray(array,@position)", request)); - Log.i(TAG, "getFromObject({key:\"success\"}, key) = " + function.invoke("getFromObject(object,key)", request)); - AssertUtil.assertEqual("success", function.invoke("getFromObject(object,key)", request)); + Log.i(TAG, "getFromObject({key:\"success\"}, key) = " + functionParser.invoke("getFromObject(object,key)", request)); + AssertUtil.assertEqual("success", functionParser.invoke("getFromObject(object,key)", request)); } diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index ea0538c..67e3abd 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -25,7 +25,6 @@ import apijson.JSONArray; import apijson.JSONObject; //import apijson.column.ColumnUtil; -import apijson.JSONField; import apijson.RequestMethod; import apijson.orm.AbstractSQLConfig; @@ -110,7 +109,6 @@ public String gainDBVersion() { return null; } - @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 public String gainDBUri() { if (isMySQL()) { return "jdbc:mysql://localhost:3306"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 @@ -127,7 +125,6 @@ public String gainDBUri() { return null; } - @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 public String gainDBAccount() { if (isMySQL()) { return "root"; //TODO 改成你自己的 @@ -144,7 +141,6 @@ public String gainDBAccount() { return null; } - @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 public String gainDBPassword() { if (isMySQL()) { return "apijson"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 "" diff --git a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java index 18a373a..067193a 100644 --- a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java @@ -203,7 +203,7 @@ public static , L extends List> M init( } Map scriptMap = new HashMap<>(); - L scriptList = (L) JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); + L scriptList = JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); if (scriptList != null && ! scriptList.isEmpty()) { //if (isAll) { // SCRIPT_MAP = new LinkedHashMap<>(); @@ -211,8 +211,8 @@ public static , L extends List> M init( Map newMap = new LinkedHashMap<>(); for (int i = 0; i < scriptList.size(); i++) { - M item = (M) JSON.get(scriptList, i); - item = item == null ? null : (M) JSON.get(item, SCRIPT_); + M item = JSON.get(scriptList, i); + item = item == null ? null : JSON.get(item, SCRIPT_); if (item == null) { // 关联查不到很正常 continue; } @@ -370,7 +370,7 @@ public static , L extends List> void te Log.i(TAG, "count([1,2,4,10]) = " + function.invoke("countArray(array)", request)); AssertUtil.assertEqual(4, function.invoke("countArray(array)", request)); - Log.i(TAG, "isContain([1,2,4,10], 10) = " + function.invoke("isContain(array,id)", request)); + Log.i(TAG, "isContain([1,2,4,10], 10) = " + function.invoke("isContainValue(array,id)", request)); AssertUtil.assertEqual(true, function.invoke("isContain(array,id)", request)); Log.i(TAG, "getFromArray([1,2,4,10], 0) = " + function.invoke("getFromArray(array,@position)", request)); diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java index b4b8c2e..52fcba1 100755 --- a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java @@ -15,7 +15,6 @@ package apijson.framework.javax; import apijson.JSONArray; -import apijson.JSONField; import apijson.JSONObject; import apijson.RequestMethod; import apijson.orm.AbstractSQLConfig; @@ -105,7 +104,6 @@ public String gainDBVersion() { return null; } - @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 public String gainDBUri() { if (isMySQL()) { return "jdbc:mysql://localhost:3306"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 @@ -122,7 +120,6 @@ public String gainDBUri() { return null; } - @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 public String gainDBAccount() { if (isMySQL()) { return "root"; //TODO 改成你自己的 @@ -139,7 +136,6 @@ public String gainDBAccount() { return null; } - @JSONField(serialize = false) // 不在日志打印 账号/密码 等敏感信息,用了 UnitAuto 则一定要加 public String gainDBPassword() { if (isMySQL()) { return "apijson"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 "" From 6012bb45e49a9b73e7644505bd6a8875cc4a5821 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Fri, 18 Apr 2025 00:14:36 +0800 Subject: [PATCH 47/59] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=94=AF=E6=8C=81=20Do?= =?UTF-8?q?ris-=E9=AB=98=E6=80=A7=E8=83=BD=E5=AE=9E=E6=97=B6=E6=B9=96?= =?UTF-8?q?=E4=BB=93=E4=B8=80=E4=BD=93=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9A=84?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/apijson/framework/APIJSONSQLConfig.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 67e3abd..5a4cf57 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -122,6 +122,9 @@ public String gainDBUri() { if (isOracle()) { return "jdbc:oracle:thin:@localhost:1521:orcl"; //TODO 改成你自己的 } + if (isDoris()) { + return "jdbc:mysql://localhost:9030"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 + } return null; } @@ -138,6 +141,9 @@ public String gainDBAccount() { if (isOracle()) { return "scott"; //TODO 改成你自己的 } + if (isDoris()) { + return "root"; //TODO 改成你自己的 + } return null; } @@ -154,6 +160,9 @@ public String gainDBPassword() { if (isOracle()) { return "tiger"; //TODO 改成你自己的 } + if (isDoris()) { + return ""; //TODO 改成你自己的 + } return null; } From d73341a67992c3d7e4b0e83b89c14039914785df Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Fri, 18 Apr 2025 00:33:57 +0800 Subject: [PATCH 48/59] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=90=84=E7=A7=8D?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=9A=84=E9=BB=98=E8=AE=A4=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apijson/framework/APIJSONSQLConfig.java | 195 +++++++++++++++++- 1 file changed, 186 insertions(+), 9 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 5a4cf57..2f44344 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -111,19 +111,74 @@ public String gainDBVersion() { public String gainDBUri() { if (isMySQL()) { - return "jdbc:mysql://localhost:3306"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 + return "jdbc:mysql://localhost:3306"; } - if (isPostgreSQL()) { - return "jdbc:postgresql://localhost:5432/postgres"; //TODO 改成你自己的 + if (isTiDB()) { + return "jdbc:mysql://localhost:4000"; + } + if (isPostgreSQL()) { // PG JDBC 必须在 URI 传 catalog + return "jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified"; //TODO 改成你自己的 } + //if (isCockroachDB()) { // PG JDBC 必须在 URI 传 catalog + // return "jdbc:postgresql://localhost:26257/movr?sslmode=require"; //TODO 改成你自己的 brew install cockroachdb/tap/cockroach && cockroach demo + // // return "jdbc:postgresql://localhost:26258/postgres?sslmode=disable"; //TODO 改成你自己的 brew install cockroachdb/tap/cockroach # && start 3 nodes and init cluster + //} if (isSQLServer()) { return "jdbc:jtds:sqlserver://localhost:1433/pubs;instance=SQLEXPRESS"; //TODO 改成你自己的 } if (isOracle()) { return "jdbc:oracle:thin:@localhost:1521:orcl"; //TODO 改成你自己的 } + if (isDb2()) { + return "jdbc:db2://localhost:50000/BLUDB"; //TODO 改成你自己的 + } + if (isSQLite()) { + return "jdbc:sqlite:sample.db"; //TODO 改成你自己的 + } + if (isDameng()) { + return "jdbc:dm://localhost:5236"; //TODO 改成你自己的 + } + if (isTDengine()) { + // return "jdbc:TAOS://localhost:6030"; //TODO 改成你自己的 + return "jdbc:TAOS-RS://localhost:6041"; //TODO 改成你自己的 + } + if (isTimescaleDB()) { // PG JDBC 必须在 URI 传 catalog + return "jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified"; //TODO 改成你自己的 + } + if (isQuestDB()) { // PG JDBC 必须在 URI 传 catalog + return "jdbc:postgresql://localhost:8812/qdb"; //TODO 改成你自己的 + } + if (isInfluxDB()) { + return "http://203.189.6.3:8086"; //TODO 改成你自己的 + } + if (isMilvus()) { + return "http://localhost:19530"; //TODO 改成你自己的 + } + if (isManticore()) { + return "jdbc:mysql://localhost:9306?characterEncoding=utf8&maxAllowedPacket=512000"; + } + if (isIoTDB()) { + return "jdbc:iotdb://localhost:6667"; // ?charset=GB18030 加参数会报错 URI 格式错误 + } + if (isMongoDB()) { + return "jdbc:mongodb://atlas-sql-6593c65c296c5865121e6ebe-xxskv.a.query.mongodb.net/myVirtualDatabase?ssl=true&authSource=admin"; + } + if (isCassandra()) { + return "http://localhost:7001"; + } + if (isDuckDB()) { + return "jdbc:duckdb:/Users/root/my_database.duckdb"; + } + if (isSurrealDB()) { + // return "memory"; + // return "surrealkv://localhost:8000"; + return "ws://localhost:8000"; + } + if (isOpenGauss()) { + return "jdbc:opengauss://127.0.0.1:5432/postgres?currentSchema=" + DEFAULT_SCHEMA; + } if (isDoris()) { - return "jdbc:mysql://localhost:9030"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 + return "jdbc:mysql://localhost:9030"; } return null; } @@ -141,28 +196,150 @@ public String gainDBAccount() { if (isOracle()) { return "scott"; //TODO 改成你自己的 } + if (isMySQL()) { + return "root"; // ""apijson"; //TODO 改成你自己的 + } + if (isPostgreSQL()) { + return "postgres"; //TODO 改成你自己的 + } + //if (isCockroachDB()) { // PG JDBC 必须在 URI 传 catalog + // return "demo"; //TODO 改成你自己的 + // //return "postgres"; //TODO 改成你自己的 + //} + if (isSQLServer()) { + return "sa"; //TODO 改成你自己的 + } + if (isOracle()) { + return "scott"; //TODO 改成你自己的 + } + if (isDb2()) { + return "db2admin"; //TODO 改成你自己的 + } + // if (isSQLite()) { + // return "root"; //TODO 改成你自己的 + // } + if (isDameng()) { + return "SYSDBA"; + } + if (isTDengine()) { + return "root"; //TODO 改成你自己的 + } + //if (isTimescaleDB()) { + // return "postgres"; //TODO 改成你自己的 + //} + if (isQuestDB()) { + return "admin"; //TODO 改成你自己的 + } + if (isInfluxDB()) { + return "iotos"; + } + if (isMilvus()) { + return "root"; + } + if (isManticore()) { + return null; // "root"; + } + if (isIoTDB()) { + return "root"; + } + if (isMongoDB()) { + return "root"; //TODO 改成你自己的 + } + if (isCassandra()) { + return "root"; //TODO 改成你自己的 + } + if (isDuckDB()) { + return "root"; //TODO 改成你自己的 + } + if (isSurrealDB()) { + return "root"; //TODO 改成你自己的 + } + if (isOpenGauss()) { + return "postgres"; //TODO 改成你自己的 + // 不允许用初始账号,需要 CREATE USER 创建新账号并 GRANT 授权 return "opengauss"; //TODO 改成你自己的 + } if (isDoris()) { return "root"; //TODO 改成你自己的 } + return null; } public String gainDBPassword() { if (isMySQL()) { - return "apijson"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 "" + return "your@Password123"; + } + if (isTiDB()) { + return ""; } if (isPostgreSQL()) { - return null; //TODO 改成你自己的 + return null; + } + if (isSQLServer()) { + return "your@Password123"; + } + if (isOracle()) { + return "tiger"; } + //if (isCockroachDB()) { // PG JDBC 必须在 URI 传 catalog + // return "demo39865"; + // // return null + //} if (isSQLServer()) { - return "apijson@123"; //TODO 改成你自己的 + return "your@Password123"; } if (isOracle()) { - return "tiger"; //TODO 改成你自己的 + return "tiger"; + } + if (isDb2()) { + return "123"; + } + if (isSQLite()) { + return "your@Password123"; + } + if (isDameng()) { + return "SYSDBA"; + } + if (isTDengine()) { + return "taosdata"; + } + if (isTimescaleDB()) { + return "password"; + } + if (isQuestDB()) { + return "quest"; + } + if (isInfluxDB()) { + return "your@Password123"; + } + if (isMilvus()) { + return "your@Password123"; + } + //if (isManticore()) { + // return null; + //} + //if (isIoTDB()) { + // return "root"; + //} + if (isMongoDB()) { + return "your@Password123"; + } + if (isCassandra()) { + return "your@Password123"; + } + if (isDuckDB()) { + return ""; + } + if (isSurrealDB()) { + return "root"; + } + if (isOpenGauss()) { + return "your@Password123"; } if (isDoris()) { - return ""; //TODO 改成你自己的 + return ""; } + return null; } From 8eefb0ba415866af2606c6c350727fcdd94c2627 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 20 Apr 2025 15:58:41 +0800 Subject: [PATCH 49/59] =?UTF-8?q?=E4=BC=98=E5=8C=96=20JSON=20=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=BA=8F=E5=88=97=E5=8C=96=E3=80=81=E5=8F=8D=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E7=AD=89=E5=A4=84=E7=90=86=EF=BC=9B=E6=89=80?= =?UTF-8?q?=E6=9C=89=20APIJSONCreator,=20JSONCreator,=20JSONParser=20?= =?UTF-8?q?=E9=83=BD=E9=9B=86=E4=B8=AD=E5=A4=84=E7=90=86=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E4=B8=8D=E4=B8=80=E8=87=B4=E5=AF=BC=E8=87=B4=E7=9A=84?= =?UTF-8?q?=20ClassCastException?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apijson/framework/APIJSONApplication.java | 39 ++- .../apijson/framework/APIJSONConstant.java | 2 +- .../apijson/framework/APIJSONController.java | 157 ++++++++- .../apijson/framework/APIJSONCreator.java | 2 +- .../framework/APIJSONFunctionParser.java | 19 +- .../framework/APIJSONObjectParser.java | 2 +- .../java/apijson/framework/APIJSONParser.java | 20 +- .../apijson/framework/APIJSONSQLConfig.java | 125 +++---- .../apijson/framework/APIJSONSQLExecutor.java | 4 +- .../apijson/framework/APIJSONVerifier.java | 95 +++--- .../java/apijson/framework/AssertUtil.java | 2 +- .../java/apijson/framework/BaseModel.java | 2 +- .../java/apijson/framework/ColumnUtil.java | 6 +- .../framework/javax/APIJSONApplication.java | 35 +- .../framework/javax/APIJSONConstant.java | 2 +- .../framework/javax/APIJSONController.java | 28 +- .../framework/javax/APIJSONCreator.java | 2 +- .../javax/APIJSONFunctionParser.java | 261 ++++++++------- .../framework/javax/APIJSONObjectParser.java | 2 +- .../framework/javax/APIJSONParser.java | 79 +++-- .../framework/javax/APIJSONSQLConfig.java | 305 +++++++++++++----- .../framework/javax/APIJSONSQLExecutor.java | 94 +----- .../framework/javax/APIJSONVerifier.java | 56 ++-- .../apijson/framework/javax/AssertUtil.java | 2 +- .../apijson/framework/javax/BaseModel.java | 2 +- .../apijson/framework/javax/ColumnUtil.java | 2 +- .../apijson/framework/javax/package-info.java | 2 +- 27 files changed, 779 insertions(+), 568 deletions(-) mode change 100755 => 100644 src/main/java/apijson/framework/javax/APIJSONApplication.java diff --git a/src/main/java/apijson/framework/APIJSONApplication.java b/src/main/java/apijson/framework/APIJSONApplication.java index e0c0830..a6d08f0 100755 --- a/src/main/java/apijson/framework/APIJSONApplication.java +++ b/src/main/java/apijson/framework/APIJSONApplication.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -32,11 +32,35 @@ public class APIJSONApplication { public static final String TAG = "APIJSONApplication"; @NotNull - public static APIJSONCreator, ? extends List> DEFAULT_APIJSON_CREATOR; + public static APIJSONCreator, ? extends List> DEFAULT_APIJSON_CREATOR; static { DEFAULT_APIJSON_CREATOR = new APIJSONCreator<>(); } + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONParser createParser() { + return (APIJSONParser) DEFAULT_APIJSON_CREATOR.createParser(); + } + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONFunctionParser createFunctionParser() { + return (APIJSONFunctionParser) DEFAULT_APIJSON_CREATOR.createFunctionParser(); + } + + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONVerifier createVerifier() { + return (APIJSONVerifier) DEFAULT_APIJSON_CREATOR.createVerifier(); + } + + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONSQLConfig createSQLConfig() { + return (APIJSONSQLConfig) DEFAULT_APIJSON_CREATOR.createSQLConfig(); + } + + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONSQLExecutor createSQLExecutor() { + return (APIJSONSQLExecutor) DEFAULT_APIJSON_CREATOR.createSQLExecutor(); + } + /**初始化,加载所有配置并校验 * @return @@ -73,13 +97,6 @@ public static , L extends List> void in System.out.println("\n\n\n\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON 开始启动 >>>>>>>>>>>>>>>>>>>>>>>>\n"); DEFAULT_APIJSON_CREATOR = creator; - // 统一用同一个 creator - APIJSONSQLConfig.APIJSON_CREATOR = creator; - APIJSONParser.APIJSON_CREATOR = creator; - APIJSONController.APIJSON_CREATOR = creator; - APIJSONVerifier.APIJSON_CREATOR = creator; - APIJSONFunctionParser.APIJSON_CREATOR = creator; - if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { System.out.println("\n\n\n开始初始化: Access 权限校验配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); try { @@ -173,8 +190,10 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE } } - public static void addScriptExecutor(String language, ScriptExecutor scriptExecutor) { + public static , L extends List> void addScriptExecutor(String language, ScriptExecutor scriptExecutor) { scriptExecutor.init(); AbstractFunctionParser.SCRIPT_EXECUTOR_MAP.put(language, scriptExecutor); } + + } diff --git a/src/main/java/apijson/framework/APIJSONConstant.java b/src/main/java/apijson/framework/APIJSONConstant.java index 105e81a..0dc9d9c 100644 --- a/src/main/java/apijson/framework/APIJSONConstant.java +++ b/src/main/java/apijson/framework/APIJSONConstant.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index a6e48bc..2d8f883 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -18,6 +18,7 @@ import apijson.JSONRequest; import apijson.orm.*; +import apijson.orm.exception.CommonException; import jakarta.servlet.http.HttpSession; import java.rmi.ServerException; @@ -38,32 +39,154 @@ public class APIJSONController, L extends List> { public static final String TAG = "APIJSONController"; - @NotNull - public static APIJSONCreator, ? extends List> APIJSON_CREATOR; - static { - APIJSON_CREATOR = new APIJSONCreator(); - } - public String getRequestURL() { return null; } public APIJSONParser newParser(HttpSession session, RequestMethod method) { - @SuppressWarnings("unchecked") - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = APIJSONApplication.createParser(); parser.setMethod(method); parser.setSession(session); parser.setRequestURL(getRequestURL()); return parser; } + public static APIJSONParser, ? extends List> ERR_PARSER = APIJSONApplication.createParser(); + + /**新建带状态内容的JSONObject + * @param code + * @param msg + * @return + */ + public static > M newResult(int code, String msg) { + return newResult(code, msg, null); + } + + /** + * 添加JSONObject的状态内容,一般用于错误提示结果 + * + * @param code + * @param msg + * @param warn + * @return + */ + public static > M newResult(int code, String msg, String warn) { + return newResult(code, msg, warn, false); + } + + /** + * 新建带状态内容的JSONObject + * + * @param code + * @param msg + * @param warn + * @param isRoot + * @return + */ + public static > M newResult(int code, String msg, String warn, boolean isRoot) { + return extendResult(null, code, msg, warn, isRoot); + } + + /** + * 添加JSONObject的状态内容,一般用于错误提示结果 + * + * @param object + * @param code + * @param msg + * @return + */ + public static > M extendResult(M object, int code, String msg, String warn, boolean isRoot) { + return (M) ERR_PARSER.extendResult(JSON.createJSONObject(object), code, msg, warn, isRoot); + } + + + /** + * 添加请求成功的状态内容 + * + * @param object + * @return + */ + public M extendSuccessResult(M object) { + return extendSuccessResult(object, false); + } + + public M extendSuccessResult(M object, boolean isRoot) { + return extendSuccessResult(object, null, isRoot); + } + + /**添加请求成功的状态内容 + * @param object + * @param isRoot + * @return + */ + public static > M extendSuccessResult(M object, String warn, boolean isRoot) { + return extendResult(object, JSONResponse.CODE_SUCCESS, JSONResponse.MSG_SUCCEED, warn, isRoot); + } + + /**获取请求成功的状态内容 + * @return + */ + public static > M newSuccessResult() { + return newSuccessResult(null); + } + + /**获取请求成功的状态内容 + * @param warn + * @return + */ + public static > M newSuccessResult(String warn) { + return newSuccessResult(warn, false); + } + + /**获取请求成功的状态内容 + * @param warn + * @param isRoot + * @return + */ + public static > M newSuccessResult(String warn, boolean isRoot) { + return newResult(JSONResponse.CODE_SUCCESS, JSONResponse.MSG_SUCCEED, warn, isRoot); + } + + /**添加请求成功的状态内容 + * @param object + * @param e + * @return + */ + public static > M extendErrorResult(M object, Throwable e) { + return extendErrorResult(object, e, false); + } + /**添加请求成功的状态内容 + * @param object + * @param e + * @param isRoot + * @return + */ + public static > M extendErrorResult(M object, Throwable e, boolean isRoot) { + return extendErrorResult(object, e, null, null, isRoot); + } + /**添加请求成功的状态内容 + * @param object + * @return + */ + public static > M extendErrorResult(M object, Throwable e, RequestMethod requestMethod, String url, boolean isRoot) { + return (M) ERR_PARSER.extendErrorResult(JSON.createJSONObject(object), e, requestMethod, url, isRoot); + } + + public static > M newErrorResult(Exception e) { + return newErrorResult(e, false); + } + public static > M newErrorResult(Exception e, boolean isRoot) { + return (M) ERR_PARSER.newErrorResult(e, isRoot); + } + + public String parse(RequestMethod method, String request, HttpSession session) { return newParser(session, method).parse(request); } public String parseByTag(RequestMethod method, String tag, Map params, String request, HttpSession session) { APIJSONParser parser = newParser(null, null); - M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false, (JSONCreator) APIJSON_CREATOR); + M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false); if (req == null) { req = JSON.createJSONObject(); } @@ -208,7 +331,7 @@ public String crudByTag(String method, String tag, Map params, S // * @see {@link RequestMethod#GET} // */ // public String listByTag(String tag, String request, HttpSession session) { -// return parseByTag(GET, tag + apijson.JSONObject.KEY_ARRAY, request, session); +// return parseByTag(GET, tag + apijson.JSONMap.KEY_ARRAY, request, session); // } /**获取 @@ -396,7 +519,7 @@ public String router(String method, String tag, Map params, Stri } @SuppressWarnings("unchecked") - APIJSONCreator creator = (APIJSONCreator) APIJSONParser.APIJSON_CREATOR; + APIJSONCreator creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; if (result == null && Log.DEBUG && APIJSONVerifier.DOCUMENT_MAP.isEmpty()) { //获取指定的JSON结构 <<<<<<<<<<<<<< @@ -576,7 +699,7 @@ public M reload(String type) { * @param defaults * @return 返回类型设置为 Object 是为了子类重写时可以有返回值,避免因为冲突而另写一个有返回值的登录方法 */ - public Object login(@NotNull HttpSession session, Visitor visitor, Integer version, Boolean format, M defaults) { + public Object login(@NotNull HttpSession session, @NotNull Visitor visitor, Integer version, Boolean format, M defaults) { //登录状态保存至session session.setAttribute(VISITOR_ID, visitor.getId()); //用户id session.setAttribute(VISITOR_, visitor); //用户 @@ -599,7 +722,7 @@ public Object logout(@NotNull HttpSession session) { -// public JSONObject listMethod(String request) { +// public JSONMap listMethod(String request) { // if (Log.DEBUG == false) { // return APIJSONParser.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!")); // } @@ -610,10 +733,10 @@ public Object logout(@NotNull HttpSession session) { // AsyncContext asyncContext = servletRequest.startAsync(); // // final boolean[] called = new boolean[] { false }; -// MethodUtil.Listener listener = new MethodUtil.Listener() { +// MethodUtil.Listener listener = new MethodUtil.Listener() { // // @Override -// public void complete(JSONObject data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { +// public void complete(JSONMap data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { // // ServletResponse servletResponse = called[0] ? null : asyncContext.getResponse(); // if (servletResponse == null) { // || servletResponse.isCommitted()) { // isCommitted 在高并发时可能不准,导致写入多次 @@ -646,7 +769,7 @@ public Object logout(@NotNull HttpSession session) { // MethodUtil.invokeMethod(request, null, listener); // } // catch (Exception e) { -// Log.e(TAG, "invokeMethod try { JSONObject req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); +// Log.e(TAG, "invokeMethod try { JSONMap req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); // try { // listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(e)); // } diff --git a/src/main/java/apijson/framework/APIJSONCreator.java b/src/main/java/apijson/framework/APIJSONCreator.java index 0196bf8..17e7ed7 100644 --- a/src/main/java/apijson/framework/APIJSONCreator.java +++ b/src/main/java/apijson/framework/APIJSONCreator.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index 175a7c7..6da1a7d 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37,12 +37,9 @@ public class APIJSONFunctionParser, L extends List> extends AbstractFunctionParser { public static final String TAG = "APIJSONFunctionParser"; - @NotNull - public static APIJSONCreator, ? extends List> APIJSON_CREATOR; @NotNull public static final String[] ALL_METHODS; static { - APIJSON_CREATOR = new APIJSONCreator<>(); ALL_METHODS = new String[]{ GET.name(), HEAD.name(), GETS.name(), HEADS.name(), POST.name(), PUT.name(), DELETE.name() }; } @@ -125,10 +122,8 @@ public static , L extends List> M init( public static , L extends List> M init(boolean shutdownWhenServerError , APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } - APIJSON_CREATOR = creator; - boolean isAll = table == null || table.isEmpty(); @@ -294,7 +289,7 @@ public static , L extends List> M init( } for (String method : methods) { - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = APIJSONApplication.createParser(); M r = parser.setMethod(RequestMethod.valueOf(method)) .setNeedVerify(false) .parseResponse(demo); @@ -342,7 +337,7 @@ public static , L extends List> void te request.put("id", 10); request.put("i0", i0); request.put("i1", i1); - JSONArray arr = new JSONArray(); + L arr = JSON.createJSONArray(); arr.add(JSON.createJSONObject()); request.put("arr", arr); @@ -361,10 +356,10 @@ public static , L extends List> void te object.put("key", "success"); request.put("object", object); - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = APIJSONApplication.createParser(); parser.setRequest(request); if (functionParser == null) { - functionParser = (APIJSONFunctionParser) APIJSON_CREATOR.createFunctionParser(); + functionParser = APIJSONApplication.createFunctionParser(); functionParser.setParser(parser); functionParser.setMethod(parser.getMethod()); functionParser.setTag(parser.getTag()); @@ -372,7 +367,7 @@ public static , L extends List> void te functionParser.setRequest(parser.getRequest()); //if (functionParser instanceof APIJSONFunctionParser) { - ((APIJSONFunctionParser) functionParser).setSession(parser.getSession()); + ((APIJSONFunctionParser) functionParser).setSession(parser.getSession()); //} } diff --git a/src/main/java/apijson/framework/APIJSONObjectParser.java b/src/main/java/apijson/framework/APIJSONObjectParser.java index c09f4a4..c1e2e4c 100755 --- a/src/main/java/apijson/framework/APIJSONObjectParser.java +++ b/src/main/java/apijson/framework/APIJSONObjectParser.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/APIJSONParser.java b/src/main/java/apijson/framework/APIJSONParser.java index 2177457..36e4be8 100755 --- a/src/main/java/apijson/framework/APIJSONParser.java +++ b/src/main/java/apijson/framework/APIJSONParser.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37,12 +37,6 @@ public class APIJSONParser, L extends List> extends AbstractParser { public static final String TAG = "APIJSONParser"; - @NotNull - public static APIJSONCreator, ? extends List> APIJSON_CREATOR; - static { - APIJSON_CREATOR = new APIJSONCreator<>(); - } - public APIJSONParser() { super(); @@ -67,26 +61,26 @@ public APIJSONParser setSession(HttpSession session) { @SuppressWarnings("unchecked") @Override public APIJSONParser createParser() { - return (APIJSONParser) APIJSON_CREATOR.createParser(); + return APIJSONApplication.createParser(); } @Override public APIJSONFunctionParser createFunctionParser() { - return (APIJSONFunctionParser) APIJSON_CREATOR.createFunctionParser(); + return APIJSONApplication.createFunctionParser(); } @SuppressWarnings("unchecked") @Override public APIJSONVerifier createVerifier() { - return (APIJSONVerifier) APIJSON_CREATOR.createVerifier(); + return APIJSONApplication.createVerifier(); } @Override public APIJSONSQLConfig createSQLConfig() { - return (APIJSONSQLConfig) APIJSON_CREATOR.createSQLConfig(); + return APIJSONApplication.createSQLConfig(); } @Override public APIJSONSQLExecutor createSQLExecutor() { - return (APIJSONSQLExecutor) APIJSON_CREATOR.createSQLExecutor(); + return APIJSONApplication.createSQLExecutor(); } @Override @@ -165,7 +159,7 @@ public Object onFunctionParse(String key, String function, String parentPath, St @Override - public APIJSONObjectParser createObjectParser(M request, String parentPath, SQLConfig arrayConfig + public APIJSONObjectParser createObjectParser(@NotNull M request, String parentPath, SQLConfig arrayConfig , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 2f44344..7171f7e 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -19,11 +19,12 @@ import static apijson.framework.APIJSONConstant.USER_; import static apijson.framework.APIJSONConstant.USER_ID; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import apijson.JSONArray; -import apijson.JSONObject; +import apijson.JSONList; +import apijson.JSONMap; //import apijson.column.ColumnUtil; import apijson.RequestMethod; @@ -42,8 +43,7 @@ public class APIJSONSQLConfig, L extends List, ? extends List> SIMPLE_CALLBACK; - public static APIJSONCreator, ? extends List> APIJSON_CREATOR; - + static { DEFAULT_DATABASE = DATABASE_MYSQL; //TODO 默认数据库类型,改成你自己的 DEFAULT_SCHEMA = "sys"; //TODO 默认模式名,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle: @@ -54,13 +54,12 @@ public class APIJSONSQLConfig, L extends List(); - - SIMPLE_CALLBACK = new SimpleCallback() { + SIMPLE_CALLBACK = new SimpleCallback, List>() { @Override - public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { - SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); + public SQLConfig, List> getSQLConfig( + RequestMethod method, String database, String schema, String datasource, String table) { + SQLConfig, List> config = APIJSONApplication.createSQLConfig(); config.setMethod(method); config.setDatabase(database); config.setDatasource(datasource); @@ -91,6 +90,31 @@ public String getUserIdKey(String database, String schema, String datasource, St } + /**获取SQL配置 + * @param table + * @param alias + * @param request + * @param isProcedure + * @return + * @throws Exception + */ + public static , L extends List> SQLConfig newSQLConfig( + RequestMethod method, String table, String alias, M request, List> joinList, boolean isProcedure) throws Exception { + return newSQLConfig(method, table, alias, request, joinList, isProcedure, (SimpleCallback) SIMPLE_CALLBACK); + } + + public APIJSONSQLConfig() { + this(RequestMethod.GET); + } + public APIJSONSQLConfig(RequestMethod method) { + super(method); + } + public APIJSONSQLConfig(RequestMethod method, String table) { + super(method, table); + } + public APIJSONSQLConfig(RequestMethod method, int count, int page) { + super(method, count, page); + } public String gainDBVersion() { @@ -267,7 +291,7 @@ public String gainDBAccount() { public String gainDBPassword() { if (isMySQL()) { - return "your@Password123"; + return "yourPassword@123"; } if (isTiDB()) { return ""; @@ -276,7 +300,7 @@ public String gainDBPassword() { return null; } if (isSQLServer()) { - return "your@Password123"; + return "yourPassword@123"; } if (isOracle()) { return "tiger"; @@ -286,7 +310,7 @@ public String gainDBPassword() { // // return null //} if (isSQLServer()) { - return "your@Password123"; + return "yourPassword@123"; } if (isOracle()) { return "tiger"; @@ -295,7 +319,7 @@ public String gainDBPassword() { return "123"; } if (isSQLite()) { - return "your@Password123"; + return "yourPassword@123"; } if (isDameng()) { return "SYSDBA"; @@ -310,10 +334,10 @@ public String gainDBPassword() { return "quest"; } if (isInfluxDB()) { - return "your@Password123"; + return "yourPassword@123"; } if (isMilvus()) { - return "your@Password123"; + return "yourPassword@123"; } //if (isManticore()) { // return null; @@ -322,10 +346,10 @@ public String gainDBPassword() { // return "root"; //} if (isMongoDB()) { - return "your@Password123"; + return "yourPassword@123"; } if (isCassandra()) { - return "your@Password123"; + return "yourPassword@123"; } if (isDuckDB()) { return ""; @@ -334,7 +358,7 @@ public String gainDBPassword() { return "root"; } if (isOpenGauss()) { - return "your@Password123"; + return "yourPassword@123"; } if (isDoris()) { return ""; @@ -384,61 +408,14 @@ public String getUserIdKey() { } - public APIJSONSQLConfig() { - this(RequestMethod.GET); - } - public APIJSONSQLConfig(RequestMethod method) { - super(method); - } - public APIJSONSQLConfig(RequestMethod method, String table) { - super(method, table); - } - public APIJSONSQLConfig(RequestMethod method, int count, int page) { - super(method, count, page); - } - - - - /**获取SQL配置 - * @param table - * @param alias - * @param request - * @param isProcedure - * @return - * @throws Exception - */ - public static , L extends List> SQLConfig newSQLConfig( - RequestMethod method, String table, String alias, M request, List> joinList, boolean isProcedure) throws Exception { - return newSQLConfig(method, table, alias, request, joinList, isProcedure, new SimpleCallback() { - @Override - public SQLConfig getSQLConfig(RequestMethod method, String database, String schema, String datasource, String table) { - SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); - config.setMethod(method); - config.setDatabase(database); - config.setDatasource(datasource); - config.setSchema(schema); - config.setTable(table); - return config; - } - }); - } - - // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column -// @Override -// public AbstractSQLConfig setColumn(List column) { -// if (ENABLE_COLUMN_CONFIG) { -// column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); -// } -// return super.setColumn(column); -// } -// -// @Override -// public String getKey(String key) { -// if (ENABLE_COLUMN_CONFIG) { -// key = ColumnUtil.compatInputKey(key, getTable(), getMethod(), getVersion(), ! isConfigTable()); -// } -// return super.getKey(key); -// } + @Override + public APIJSONSQLConfig setColumn(List column) { + if (ENABLE_COLUMN_CONFIG) { + column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); + } + super.setColumn(column); + return this; + } } diff --git a/src/main/java/apijson/framework/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/APIJSONSQLExecutor.java index 93261fb..e85b71e 100755 --- a/src/main/java/apijson/framework/APIJSONSQLExecutor.java +++ b/src/main/java/apijson/framework/APIJSONSQLExecutor.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -93,7 +93,7 @@ protected Object getValue( Object value = super.getValue(config, rs, rsmd, row, table, columnIndex, label, childMap, keyMap); - return value instanceof PGobject ? JSON.parseJSON(((PGobject) value).getValue()) : value; + return value instanceof PGobject ? JSON.parse(((PGobject) value).getValue()) : value; } // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 1fa771b..f6c9491 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,6 +15,8 @@ package apijson.framework; import static apijson.JSON.*; +import static apijson.JSONMap.KEY_ORDER; +import static apijson.JSONMap.isTableKey; import static apijson.JSONRequest.KEY_COUNT; import static apijson.framework.APIJSONConstant.*; import static apijson.framework.APIJSONConstant.METHODS; @@ -50,11 +52,9 @@ public class APIJSONVerifier, L extends List, ? extends List> APIJSON_CREATOR; public static Map>> DOCUMENT_MAP; static { - APIJSON_CREATOR = new APIJSONCreator<>(); DOCUMENT_MAP = new HashMap<>(); } @@ -152,10 +152,8 @@ public static , L extends List> M initA public static , L extends List> M initAccess( boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } - APIJSON_CREATOR = creator; - boolean isAll = table == null || table.isEmpty(); @@ -165,12 +163,10 @@ public static , L extends List> M initA } M accessItem = JSON.createJSONObject(); accessItem.put(ACCESS_, access); + accessItem.put(apijson.JSONRequest.KEY_COUNT, 0); M request = JSON.createJSONObject(); - M ao = JSON.createJSONObject(); - ao.put(ACCESS_, accessItem); - ao.put(apijson.JSONRequest.KEY_COUNT, 0); - request.put(ACCESS_ + "[]", ao); + request.put(ACCESS_ + "[]", accessItem); M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { @@ -201,13 +197,35 @@ public static , L extends List> M initA } Map map = new HashMap<>(); - map.put(RequestMethod.GET, JSON.parseObject(getString(item, "get"), String[].class)); - map.put(RequestMethod.HEAD, JSON.parseObject(getString(item, "head"), String[].class)); - map.put(RequestMethod.GETS, JSON.parseObject(getString(item, "gets"), String[].class)); - map.put(RequestMethod.HEADS, JSON.parseObject(getString(item, "heads"), String[].class)); - map.put(RequestMethod.POST, JSON.parseObject(getString(item, "post"), String[].class)); - map.put(RequestMethod.PUT, JSON.parseObject(getString(item, "put"), String[].class)); - map.put(RequestMethod.DELETE, JSON.parseObject(getString(item, "delete"), String[].class)); + // fastjson2 不支持 + //map.put(RequestMethod.GET, JSON.parseObject(getString(item, "get"), String[].class)); + //map.put(RequestMethod.HEAD, JSON.parseObject(getString(item, "head"), String[].class)); + //map.put(RequestMethod.GETS, JSON.parseObject(getString(item, "gets"), String[].class)); + //map.put(RequestMethod.HEADS, JSON.parseObject(getString(item, "heads"), String[].class)); + //map.put(RequestMethod.POST, JSON.parseObject(getString(item, "post"), String[].class)); + //map.put(RequestMethod.PUT, JSON.parseObject(getString(item, "put"), String[].class)); + //map.put(RequestMethod.DELETE, JSON.parseObject(getString(item, "delete"), String[].class)); + + List getArr = parseArray(getString(item, "get"), String.class); + map.put(RequestMethod.GET, getArr == null ? null : getArr.toArray(new String[]{})); + + List headArr = parseArray(getString(item, "head"), String.class); + map.put(RequestMethod.HEAD, headArr == null ? null : headArr.toArray(new String[]{})); + + List getsArr = parseArray(getString(item, "gets"), String.class); + map.put(RequestMethod.GETS, getsArr == null ? null : getsArr.toArray(new String[]{})); + + List headsArr = parseArray(getString(item, "heads"), String.class); + map.put(RequestMethod.HEADS, headsArr == null ? null : headsArr.toArray(new String[]{})); + + List postArr = parseArray(getString(item, "post"), String.class); + map.put(RequestMethod.POST, postArr == null ? null : postArr.toArray(new String[]{})); + + List putArr = parseArray(getString(item, "put"), String.class); + map.put(RequestMethod.PUT, putArr == null ? null : putArr.toArray(new String[]{})); + + List deleteArr = parseArray(getString(item, "delete"), String.class); + map.put(RequestMethod.DELETE, deleteArr == null ? null : deleteArr.toArray(new String[]{})); String name = getString(item, "name"); String alias = getString(item, "alias"); @@ -243,12 +261,12 @@ public static , L extends List> M initA } if (StringUtil.isEmpty(alias, true)) { - if (apijson.JSONObject.isTableKey(name) == false) { + if (isTableKey(name) == false) { onServerError("name: " + name + "不合法!字段 alias 的值为空时,name 必须为合法表名!", shutdownWhenServerError); } alias = name; - } else if (apijson.JSONObject.isTableKey(alias) == false) { + } else if (isTableKey(alias) == false) { onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError); } @@ -392,14 +410,12 @@ public static , L extends List> M initR public static , L extends List> M initRequest( boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } - APIJSON_CREATOR = creator; - boolean isAll = table == null || table.isEmpty(); M tblObj = createJSONObject(); - tblObj.put(apijson.JSONObject.KEY_ORDER, "version-,id+"); + tblObj.put(KEY_ORDER, "version-,id+"); M requestTable = isAll ? tblObj : table; if (Log.DEBUG == false) { requestTable.put(APIJSONConstant.KEY_DEBUG, 0); @@ -407,13 +423,10 @@ public static , L extends List> M initR M requestItem = JSON.createJSONObject(); requestItem.put(REQUEST_, requestTable); // 方便查找 - - M ro = JSON.createJSONObject(); - ro.put(REQUEST_, requestItem); - ro.put(KEY_COUNT, 0); + requestItem.put(KEY_COUNT, 0); M request = JSON.createJSONObject(); - request.put(REQUEST_ + "[]", ro); + request.put(REQUEST_ + "[]", requestItem); M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { @@ -464,10 +477,10 @@ public static , L extends List> M initR target = structure; if (structure.containsKey(tag) == false) { //tag 是 Table 名或 Table[] - boolean isArrayKey = tag.endsWith(":[]"); // apijson.JSONObject.isArrayKey(tag); + boolean isArrayKey = tag.endsWith(":[]"); // apijson.isArrayKey(tag); String key = isArrayKey ? tag.substring(0, tag.length() - 3) : tag; - if (apijson.JSONObject.isTableKey(key)) { + if (isTableKey(key)) { if (isArrayKey) { //自动为 tag = Comment:[] 的 { ... } 新增键值对 "Comment[]":[] 为 { "Comment[]":[], ... } target.put(key + "[]", JSON.createJSONArray()); } else { //自动为 tag = Comment 的 { ... } 包一层为 { "Comment": { ... } } @@ -556,13 +569,11 @@ public static , L extends List> M initD public static , L extends List> M initDocument( boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } - APIJSON_CREATOR = creator; - boolean isAll = table == null || table.isEmpty(); - M document = isAll ? JSON.createJSONObject(new JSONRequest().puts("apijson{}", "length(apijson)>0").setOrder("version-,id+")) : table; + M document = isAll ? JSON.createJSONObject(new JSONRequest("apijson{}", "length(apijson)>0").setOrder("version-,id+")) : table; if (Log.DEBUG == false) { document.put(APIJSONConstant.KEY_DEBUG, 0); } @@ -698,17 +709,7 @@ public static void test() throws Exception { * @throws Exception */ public static , L extends List> void testStructure() throws Exception { - SQLCreator creator = (SQLCreator) APIJSON_CREATOR; // new SQLCreator() { - // @Override - // public SQLConfig createSQLConfig() { - // return (SQLConfig) APIJSONApplication.DEFAULT_APIJSON_CREATOR.createSQLConfig(); - // } - // - // @Override - // public SQLExecutor createSQLExecutor() { - // return (SQLExecutor) APIJSONApplication.DEFAULT_APIJSON_CREATOR.createSQLExecutor(); - // } - //}; + SQLCreator creator = (SQLCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; M request; try { @@ -791,7 +792,7 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE @NotNull @Override public APIJSONParser createParser() { - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = APIJSONApplication.createParser(); parser.setVisitor(visitor); return parser; } @@ -804,7 +805,7 @@ public APIJSONParser createParser() { */ public static void verifyLogin(HttpSession session) throws Exception { Log.d(TAG, "verifyLogin session.getId() = " + (session == null ? null : session.getId())); - APIJSON_CREATOR.createVerifier().setVisitor(getVisitor(session)).verifyLogin(); + APIJSONApplication.createVerifier().setVisitor(getVisitor(session)).verifyLogin(); } diff --git a/src/main/java/apijson/framework/AssertUtil.java b/src/main/java/apijson/framework/AssertUtil.java index 130c5d1..5375ba1 100644 --- a/src/main/java/apijson/framework/AssertUtil.java +++ b/src/main/java/apijson/framework/AssertUtil.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/BaseModel.java b/src/main/java/apijson/framework/BaseModel.java index faf3fe5..56dd85c 100755 --- a/src/main/java/apijson/framework/BaseModel.java +++ b/src/main/java/apijson/framework/BaseModel.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/ColumnUtil.java b/src/main/java/apijson/framework/ColumnUtil.java index c7d6214..6514164 100644 --- a/src/main/java/apijson/framework/ColumnUtil.java +++ b/src/main/java/apijson/framework/ColumnUtil.java @@ -1,4 +1,4 @@ -/*Copyright ©2021 TommyLemon(https://github.com/APIJSON/apijson-column) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -369,8 +369,8 @@ public static String compatOutputKey(String key, String table, RequestMethod met * @return * @see 先提前配置 {@link #VERSIONED_COLUMN_KEY_MAP},然后在 {@link AbstractSQLExecutor} 的子类重写 {@link AbstractSQLExecutor#getKey } 并调用这个方法,例如 *
-	protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONObject table,
-	int columnIndex, Map childMap) throws Exception { 
+ protected String getKey(SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int tablePosition, JSONMap table, + int columnIndex, Map childMap) throws Exception {
return ColumnUtil.compatOutputKey(super.getKey(config, rs, rsmd, tablePosition, table, columnIndex, childMap), config.getTable(), config.getMethod(), version);
} *
diff --git a/src/main/java/apijson/framework/javax/APIJSONApplication.java b/src/main/java/apijson/framework/javax/APIJSONApplication.java old mode 100755 new mode 100644 index d6a96e6..b9e0352 --- a/src/main/java/apijson/framework/javax/APIJSONApplication.java +++ b/src/main/java/apijson/framework/javax/APIJSONApplication.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37,6 +37,30 @@ public class APIJSONApplication { DEFAULT_APIJSON_CREATOR = new APIJSONCreator<>(); } + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONParser createParser() { + return (APIJSONParser) DEFAULT_APIJSON_CREATOR.createParser(); + } + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONFunctionParser createFunctionParser() { + return (APIJSONFunctionParser) DEFAULT_APIJSON_CREATOR.createFunctionParser(); + } + + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONVerifier createVerifier() { + return (APIJSONVerifier) DEFAULT_APIJSON_CREATOR.createVerifier(); + } + + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONSQLConfig createSQLConfig() { + return (APIJSONSQLConfig) DEFAULT_APIJSON_CREATOR.createSQLConfig(); + } + + @SuppressWarnings("unchecked") + public static , L extends List> APIJSONSQLExecutor createSQLExecutor() { + return (APIJSONSQLExecutor) DEFAULT_APIJSON_CREATOR.createSQLExecutor(); + } + /**初始化,加载所有配置并校验 * @return @@ -73,13 +97,6 @@ public static , L extends List> void in System.out.println("\n\n\n\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON 开始启动 >>>>>>>>>>>>>>>>>>>>>>>>\n"); DEFAULT_APIJSON_CREATOR = creator; - // 统一用同一个 creator - APIJSONSQLConfig.APIJSON_CREATOR = creator; - APIJSONParser.APIJSON_CREATOR = creator; - APIJSONController.APIJSON_CREATOR = creator; - APIJSONVerifier.APIJSON_CREATOR = creator; - APIJSONFunctionParser.APIJSON_CREATOR = creator; - if (APIJSONVerifier.ENABLE_VERIFY_ROLE) { System.out.println("\n\n\n开始初始化: Access 权限校验配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n"); try { @@ -177,4 +194,6 @@ public static void addScriptExecutor(String language, ScriptExecutor scriptExecu scriptExecutor.init(); AbstractFunctionParser.SCRIPT_EXECUTOR_MAP.put(language, scriptExecutor); } + + } diff --git a/src/main/java/apijson/framework/javax/APIJSONConstant.java b/src/main/java/apijson/framework/javax/APIJSONConstant.java index 036d844..87a2a37 100644 --- a/src/main/java/apijson/framework/javax/APIJSONConstant.java +++ b/src/main/java/apijson/framework/javax/APIJSONConstant.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/javax/APIJSONController.java b/src/main/java/apijson/framework/javax/APIJSONController.java index 47fc370..5fc2d2e 100755 --- a/src/main/java/apijson/framework/javax/APIJSONController.java +++ b/src/main/java/apijson/framework/javax/APIJSONController.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -26,7 +26,6 @@ import static apijson.RequestMethod.*; import static apijson.framework.javax.APIJSONConstant.*; - /**APIJSON base controller,建议在子项目被 @RestController 注解的类继承它或通过它的实例调用相关方法 *
全通过 HTTP POST 来请求: *
1.减少代码 - 客户端无需写 HTTP GET, HTTP PUT 等各种方式的请求代码 @@ -37,19 +36,12 @@ public class APIJSONController, L extends List> { public static final String TAG = "APIJSONController"; - @NotNull - public static APIJSONCreator, ? extends List> APIJSON_CREATOR; - static { - APIJSON_CREATOR = new APIJSONCreator(); - } - public String getRequestURL() { return null; } public APIJSONParser newParser(HttpSession session, RequestMethod method) { - @SuppressWarnings("unchecked") - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = APIJSONApplication.createParser(); parser.setMethod(method); parser.setSession(session); parser.setRequestURL(getRequestURL()); @@ -62,7 +54,7 @@ public String parse(RequestMethod method, String request, HttpSession session) { public String parseByTag(RequestMethod method, String tag, Map params, String request, HttpSession session) { APIJSONParser parser = newParser(null, null); - M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false, (JSONCreator) APIJSON_CREATOR); + M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false); if (req == null) { req = JSON.createJSONObject(); } @@ -207,7 +199,7 @@ public String crudByTag(String method, String tag, Map params, S // * @see {@link RequestMethod#GET} // */ // public String listByTag(String tag, String request, HttpSession session) { -// return parseByTag(GET, tag + apijson.JSONObject.KEY_ARRAY, request, session); +// return parseByTag(GET, tag + apijson.JSONMap.KEY_ARRAY, request, session); // } /**获取 @@ -395,7 +387,7 @@ public String router(String method, String tag, Map params, Stri } @SuppressWarnings("unchecked") - APIJSONCreator creator = (APIJSONCreator) APIJSONParser.APIJSON_CREATOR; + APIJSONCreator creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; if (result == null && Log.DEBUG && APIJSONVerifier.DOCUMENT_MAP.isEmpty()) { //获取指定的JSON结构 <<<<<<<<<<<<<< @@ -575,7 +567,7 @@ public M reload(String type) { * @param defaults * @return 返回类型设置为 Object 是为了子类重写时可以有返回值,避免因为冲突而另写一个有返回值的登录方法 */ - public Object login(@NotNull HttpSession session, Visitor visitor, Integer version, Boolean format, M defaults) { + public Object login(@NotNull HttpSession session, @NotNull Visitor visitor, Integer version, Boolean format, M defaults) { //登录状态保存至session session.setAttribute(VISITOR_ID, visitor.getId()); //用户id session.setAttribute(VISITOR_, visitor); //用户 @@ -598,7 +590,7 @@ public Object logout(@NotNull HttpSession session) { -// public JSONObject listMethod(String request) { +// public JSONMap listMethod(String request) { // if (Log.DEBUG == false) { // return APIJSONParser.newErrorResult(new IllegalAccessException("非 DEBUG 模式下不允许使用 UnitAuto 单元测试!")); // } @@ -609,10 +601,10 @@ public Object logout(@NotNull HttpSession session) { // AsyncContext asyncContext = servletRequest.startAsync(); // // final boolean[] called = new boolean[] { false }; -// MethodUtil.Listener listener = new MethodUtil.Listener() { +// MethodUtil.Listener listener = new MethodUtil.Listener() { // // @Override -// public void complete(JSONObject data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { +// public void complete(JSONMap data, Method method, InterfaceProxy proxy, Object... extras) throws Exception { // // ServletResponse servletResponse = called[0] ? null : asyncContext.getResponse(); // if (servletResponse == null) { // || servletResponse.isCommitted()) { // isCommitted 在高并发时可能不准,导致写入多次 @@ -645,7 +637,7 @@ public Object logout(@NotNull HttpSession session) { // MethodUtil.invokeMethod(request, null, listener); // } // catch (Exception e) { -// Log.e(TAG, "invokeMethod try { JSONObject req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); +// Log.e(TAG, "invokeMethod try { JSONMap req = JSON.parseObject(request); ... } catch (Exception e) { \n" + e.getMessage()); // try { // listener.complete(MethodUtil.JSON_CALLBACK.newErrorResult(e)); // } diff --git a/src/main/java/apijson/framework/javax/APIJSONCreator.java b/src/main/java/apijson/framework/javax/APIJSONCreator.java index 56b5db7..6e5fcc3 100644 --- a/src/main/java/apijson/framework/javax/APIJSONCreator.java +++ b/src/main/java/apijson/framework/javax/APIJSONCreator.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java index 067193a..7df3f9e 100644 --- a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -37,12 +37,9 @@ public class APIJSONFunctionParser, L extends List> extends AbstractFunctionParser { public static final String TAG = "APIJSONFunctionParser"; - @NotNull - public static APIJSONCreator, ? extends List> APIJSON_CREATOR; @NotNull public static final String[] ALL_METHODS; static { - APIJSON_CREATOR = new APIJSONCreator<>(); ALL_METHODS = new String[]{ GET.name(), HEAD.name(), GETS.name(), HEADS.name(), POST.name(), PUT.name(), DELETE.name() }; } @@ -57,6 +54,7 @@ public APIJSONFunctionParser(RequestMethod method, String tag, int version, M cu super(method, tag, version, curObj); setSession(session); } + public HttpSession getSession() { return session; } @@ -82,52 +80,50 @@ public APIJSONFunctionParser setVersion(int version) { } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @return + * @return * @throws ServerException */ public static > M init() throws ServerException { return init(false); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @param shutdownWhenServerError - * @return + * @param shutdownWhenServerError + * @return * @throws ServerException */ public static > M init(boolean shutdownWhenServerError) throws ServerException { return init(shutdownWhenServerError, null); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @param creator - * @return + * @param creator + * @return * @throws ServerException */ public static , L extends List> M init(APIJSONCreator creator) throws ServerException { return init(false, creator); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @param shutdownWhenServerError - * @param creator - * @return + * @param shutdownWhenServerError + * @param creator + * @return * @throws ServerException */ public static , L extends List> M init(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return init(shutdownWhenServerError, creator, null); } /**初始化,加载所有远程函数配置,并校验是否已在应用层代码实现 - * @param shutdownWhenServerError - * @param creator + * @param shutdownWhenServerError + * @param creator * @param table 表内自定义数据过滤条件 - * @return + * @return * @throws ServerException */ @SuppressWarnings("unchecked") public static , L extends List> M init(boolean shutdownWhenServerError , APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } - APIJSON_CREATOR = creator; - boolean isAll = table == null || table.isEmpty(); @@ -135,64 +131,64 @@ public static , L extends List> M init( //if (Log.DEBUG == false) { // function.put(APIJSONConstant.KEY_DEBUG, 0); //} - // + // //JSONRequest functionItem = JSON.createJSONObject(); //functionItem.put(FUNCTION_, function); - // - //JSONRequest script = JSON.createJSONObject(); // isAll ? JSON.createJSONObject() : table; - //script.put("simple", 0); - //if (Log.DEBUG == false) { - // script.put(APIJSONConstant.KEY_DEBUG, 0); - //} - // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 - //{ // name{}@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - //JSONRequest nameInAt = JSON.createJSONObject(); - //nameInAt.put("from", "Function"); - //{ // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - // JSONRequest fun = JSON.createJSONObject(); - // fun.setColumn("name"); - // nameInAt.put("Function", fun); - //} // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - //script.put("name{}@", nameInAt); - //} // name{}@ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + // + //JSONRequest script = JSON.createJSONObject(); // isAll ? JSON.createJSONObject() : table; + //script.put("simple", 0); + //if (Log.DEBUG == false) { + // script.put(APIJSONConstant.KEY_DEBUG, 0); + //} + // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 + //{ // name{}@ <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + //JSONRequest nameInAt = JSON.createJSONObject(); + //nameInAt.put("from", "Function"); + //{ // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + // JSONRequest fun = JSON.createJSONObject(); + // fun.setColumn("name"); + // nameInAt.put("Function", fun); + //} // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + //script.put("name{}@", nameInAt); + //} // name{}@ >>>>>>>>>>>>>>>>>>>>>>>>>>>>> //JSONRequest scriptItem = JSON.createJSONObject(); - //scriptItem.put(SCRIPT_, script); + //scriptItem.put(SCRIPT_, script); M request = JSON.createJSONObject(); //request.putAll(functionItem.toArray(0, 0, FUNCTION_)); //request.putAll(scriptItem.toArray(0, 0, SCRIPT_)); - // 可以用它,因为 Function 表必须存在,没有绕过校验的配置 // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 - { // [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< - M item = JSON.createJSONObject(); - - { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - M function = isAll ? JSON.createJSONObject() : table; - if (! Log.DEBUG) { - function.put(APIJSONConstant.KEY_DEBUG, 0); - } - item.put(FUNCTION_, function); - } // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - if (ENABLE_SCRIPT_FUNCTION) { // Script <<<<<<<<<<<<<<<<<<<<<<<<<<<<< - M script = JSON.createJSONObject(); - script.put("name@", "/Function/name"); - script.put("simple", 0); - item.put(SCRIPT_, script); - } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> - - request.put("[]", item); - request.put(apijson.JSONRequest.KEY_COUNT, 0); - } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + // 可以用它,因为 Function 表必须存在,没有绕过校验的配置 // 不能用这个来优化,因为可能配置了不校验远程函数是否存在 + { // [] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + M item = JSON.createJSONObject(); + + { // Function <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + M function = isAll ? JSON.createJSONObject() : table; + if (! Log.DEBUG) { + function.put(APIJSONConstant.KEY_DEBUG, 0); + } + item.put(FUNCTION_, function); + } // Function >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + if (ENABLE_SCRIPT_FUNCTION) { // Script <<<<<<<<<<<<<<<<<<<<<<<<<<<<< + M script = JSON.createJSONObject(); + script.put("name@", "/Function/name"); + script.put("simple", 0); + item.put(SCRIPT_, script); + } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + + request.put("[]", item); + request.put(apijson.JSONRequest.KEY_COUNT, 0); + } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> M response = creator.createParser().setMethod(GET).setNeedVerify(true).parseResponse(request); if (! JSONResponse.isSuccess(response)) { onServerError("\n\n\n\n\n !!!! 查询远程函数异常 !!!\n" + response.get(JSONResponse.KEY_MSG) + "\n\n\n\n\n", shutdownWhenServerError); } - + //初始化默认脚本引擎,避免增量 if (isAll || SCRIPT_EXECUTOR_MAP.get("js") == null) { ScriptExecutor javaScriptExecutor = new JavaScriptExecutor(); @@ -203,34 +199,34 @@ public static , L extends List> M init( } Map scriptMap = new HashMap<>(); - L scriptList = JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); - if (scriptList != null && ! scriptList.isEmpty()) { - //if (isAll) { - // SCRIPT_MAP = new LinkedHashMap<>(); - //} - Map newMap = new LinkedHashMap<>(); - - for (int i = 0; i < scriptList.size(); i++) { - M item = JSON.get(scriptList, i); - item = item == null ? null : JSON.get(item, SCRIPT_); - if (item == null) { // 关联查不到很正常 - continue; - } - - String n = getString(item, "name"); - if (! StringUtil.isName(n)) { - onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); - } - - String s = getString(item, "script"); - if (StringUtil.isEmpty(s, true)) { - onServerError("Script 表字段 script 的值 " + s + " 不合法!不能为空!", shutdownWhenServerError); - } - newMap.put(n, item); - } - - scriptMap = newMap; - } + L scriptList = (L) JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); + if (scriptList != null && ! scriptList.isEmpty()) { + //if (isAll) { + // SCRIPT_MAP = new LinkedHashMap<>(); + //} + Map newMap = new LinkedHashMap<>(); + + for (int i = 0; i < scriptList.size(); i++) { + M item = (M) JSON.get(scriptList, i); + item = item == null ? null : (M) JSON.get(item, SCRIPT_); + if (item == null) { // 关联查不到很正常 + continue; + } + + String n = getString(item, "name"); + if (! StringUtil.isName(n)) { + onServerError("Script 表字段 name 的值 " + n + " 不合法!必须为合法的方法名字符串!", shutdownWhenServerError); + } + + String s = getString(item, "script"); + if (StringUtil.isEmpty(s, true)) { + onServerError("Script 表字段 script 的值 " + s + " 不合法!不能为空!", shutdownWhenServerError); + } + newMap.put(n, item); + } + + scriptMap = newMap; + } L list = scriptList; // response.getJSONArray(FUNCTION_ + "[]"); int size = list == null ? 0 : list.size(); @@ -276,7 +272,7 @@ public static , L extends List> M init( scriptExecutor.load(name, getString(script, "script")); } } - newMap.put(name, item); // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! + newMap.put(name, item); // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! String[] methods = StringUtil.split(getString(item, "methods")); @@ -293,7 +289,7 @@ public static , L extends List> M init( } for (String method : methods) { - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = APIJSONApplication.createParser(); M r = parser.setMethod(RequestMethod.valueOf(method)) .setNeedVerify(false) .parseResponse(demo); @@ -308,7 +304,7 @@ public static , L extends List> M init( } } - // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! + // 必须在测试 invoke 前把配置 put 进 FUNCTION_MAP! // if (isAll) { // FUNCTION_MAP = newMap; // } @@ -324,7 +320,7 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE Log.e(TAG, "\n远程函数文档测试未通过!\n请新增 demo 里的函数,或修改 Function 表里的 demo 为已有的函数示例!\n保证前端看到的远程函数文档是正确的!!!\n\n原因:\n" + msg); if (shutdown) { - System.exit(1); + System.exit(1); } else { throw new ServerException(msg); } @@ -334,13 +330,14 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE public static void test() throws Exception { test(null); } - public static , L extends List> void test(APIJSONFunctionParser function) throws Exception { + public static , L extends List> void test( + APIJSONFunctionParser functionParser) throws Exception { int i0 = 1, i1 = -2; M request = JSON.createJSONObject(); request.put("id", 10); request.put("i0", i0); request.put("i1", i1); - JSONArray arr = new JSONArray(); + L arr = JSON.createJSONArray(); arr.add(JSON.createJSONObject()); request.put("arr", arr); @@ -359,25 +356,41 @@ public static , L extends List> void te object.put("key", "success"); request.put("object", object); - if (function == null) { - function = new APIJSONFunctionParser<>(null, null, 1, null, null); + APIJSONParser parser = APIJSONApplication.createParser(); + parser.setRequest(request); + if (functionParser == null) { + functionParser = APIJSONApplication.createFunctionParser(); + functionParser.setParser(parser); + functionParser.setMethod(parser.getMethod()); + functionParser.setTag(parser.getTag()); + functionParser.setVersion(parser.getVersion()); + functionParser.setRequest(parser.getRequest()); + + //if (functionParser instanceof APIJSONFunctionParser) { + ((APIJSONFunctionParser) functionParser).setSession(parser.getSession()); + //} } + // functionParser.setKey(null); + // functionParser.setParentPath(null); + // functionParser.setCurrentName(null); + functionParser.setCurrentObject(request); + // 等数据库 Function 表加上 plus 配置再过两个以上迭代(应该是到 5.0)后再取消注释 // Log.i(TAG, "plus(1,-2) = " + function.invoke("plus(i0,i1)", request)); // AssertUtil.assertEqual(-1, function.invoke("plus(i0,i1)", request)); - Log.i(TAG, "count([1,2,4,10]) = " + function.invoke("countArray(array)", request)); - AssertUtil.assertEqual(4, function.invoke("countArray(array)", request)); + Log.i(TAG, "count([1,2,4,10]) = " + functionParser.invoke("countArray(array)", request)); + AssertUtil.assertEqual(4, functionParser.invoke("countArray(array)", request)); - Log.i(TAG, "isContain([1,2,4,10], 10) = " + function.invoke("isContainValue(array,id)", request)); - AssertUtil.assertEqual(true, function.invoke("isContain(array,id)", request)); + Log.i(TAG, "isContain([1,2,4,10], 10) = " + functionParser.invoke("isContain(array,id)", request)); + AssertUtil.assertEqual(true, functionParser.invoke("isContain(array,id)", request)); - Log.i(TAG, "getFromArray([1,2,4,10], 0) = " + function.invoke("getFromArray(array,@position)", request)); - AssertUtil.assertEqual(1, function.invoke("getFromArray(array,@position)", request)); + Log.i(TAG, "getFromArray([1,2,4,10], 0) = " + functionParser.invoke("getFromArray(array,@position)", request)); + AssertUtil.assertEqual(1, functionParser.invoke("getFromArray(array,@position)", request)); - Log.i(TAG, "getFromObject({key:\"success\"}, key) = " + function.invoke("getFromObject(object,key)", request)); - AssertUtil.assertEqual("success", function.invoke("getFromObject(object,key)", request)); + Log.i(TAG, "getFromObject({key:\"success\"}, key) = " + functionParser.invoke("getFromObject(object,key)", request)); + AssertUtil.assertEqual("success", functionParser.invoke("getFromObject(object,key)", request)); } @@ -385,7 +398,7 @@ public static , L extends List> void te /**获取远程函数的demo,如果没有就自动补全 * @param curObj * @return - * @throws ServerException + * @throws ServerException */ public M getFunctionDemo(@NotNull M curObj) { M demo = JSON.parseObject(getString(curObj, "demo")); @@ -482,8 +495,8 @@ public boolean isContain(@NotNull M curObj, String array, String value) { * @param key * @return */ - public boolean isContainKey(@NotNull M curObj, String object, String key) { - return BaseModel.isContainKey(getJSONObject(curObj, object), getString(curObj, key)); + public boolean isContainKey(@NotNull M curObj, String object, String key) { + return BaseModel.isContainKey(getJSONObject(curObj, object), getString(curObj, key)); } /**判断object是否包含value * @param curObj @@ -491,7 +504,7 @@ public boolean isContainKey(@NotNull M curObj, String object, String key) { * @param value * @return */ - public boolean isContainValue(@NotNull M curObj, String object, String value) { + public boolean isContainValue(@NotNull M curObj, String object, String value) { return BaseModel.isContainValue(getJSONObject(curObj, object), curObj.get(value)); } //判断是否为包含 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -503,7 +516,7 @@ public boolean isContainValue(@NotNull M curObj, String object, String value) { * @param array * @return */ - public int countArray(@NotNull M curObj, String array) { + public int countArray(@NotNull M curObj, String array) { return BaseModel.count((Collection) getJSONArray(curObj, array)); } /**获取数量 @@ -531,7 +544,7 @@ public Object getFromArray(@NotNull M curObj, String array, String position) { } catch (Exception e) { p = getIntValue(curObj, position); } - return BaseModel.get(getJSONArray(curObj, array), p); + return BaseModel.get(getJSONArray(curObj, array), p); } /**获取 * @param curObj @@ -539,7 +552,7 @@ public Object getFromArray(@NotNull M curObj, String array, String position) { * @param key * @return */ - public Object getFromObject(@NotNull M curObj, String object, String key) { + public Object getFromObject(@NotNull M curObj, String object, String key) { return BaseModel.get(getJSONObject(curObj, object), getString(curObj, key)); } //根据键获取值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -557,7 +570,7 @@ public Object removeIndex(@NotNull M curObj, String position) { } catch (Exception e) { p = getIntValue(curObj, position); } - curObj.remove(p); + curObj.remove(p); return null; } /**移除 @@ -565,7 +578,7 @@ public Object removeIndex(@NotNull M curObj, String position) { * @param key * @return */ - public Object removeKey(@NotNull M curObj, String key) { + public Object removeKey(@NotNull M curObj, String key) { curObj.remove(key); return null; } @@ -579,7 +592,7 @@ public Object removeKey(@NotNull M curObj, String key) { * @param value * @return */ - public boolean booleanValue(@NotNull M curObj, String value) { + public boolean booleanValue(@NotNull M curObj, String value) { return getBooleanValue(curObj, value); } /**获取非空值 @@ -587,7 +600,7 @@ public boolean booleanValue(@NotNull M curObj, String value) { * @param value * @return */ - public int intValue(@NotNull M curObj, String value) { + public int intValue(@NotNull M curObj, String value) { return getIntValue(curObj, value); } /**获取非空值 @@ -595,7 +608,7 @@ public int intValue(@NotNull M curObj, String value) { * @param value * @return */ - public long longValue(@NotNull M curObj, String value) { + public long longValue(@NotNull M curObj, String value) { return getLongValue(curObj, value); } /**获取非空值 @@ -603,7 +616,7 @@ public long longValue(@NotNull M curObj, String value) { * @param value * @return */ - public float floatValue(@NotNull M curObj, String value) { + public float floatValue(@NotNull M curObj, String value) { return getFloatValue(curObj, value); } /**获取非空值 @@ -611,8 +624,8 @@ public float floatValue(@NotNull M curObj, String value) { * @param value * @return */ - public double doubleValue(@NotNull M curObj, String value) { - return getDoubleValue(curObj, value); + public double doubleValue(@NotNull M curObj, String value) { + return getDoubleValue(curObj, value); } //获取非基本类型对应基本类型的非空值 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -622,9 +635,9 @@ public double doubleValue(@NotNull M curObj, String value) { * @param defaultValue * @return v == null ? curObj.get(defaultValue) : v */ - public Object getWithDefault(@NotNull M curObj, String value, String defaultValue) { - Object v = curObj.get(value); - return v == null ? curObj.get(defaultValue) : v; + public Object getWithDefault(@NotNull M curObj, String value, String defaultValue) { + Object v = curObj.get(value); + return v == null ? curObj.get(defaultValue) : v; } // FIXME UnitAuto 去除 fastjson 后恢复 @@ -723,7 +736,7 @@ public Object getWithDefault(@NotNull M curObj, String value, String defaultValu // * @throws IllegalArgumentException // */ //public String getMethodDefinition(@NotNull M curObj, String method, String arguments - // , String type, String exceptions, String language) throws IllegalArgumentException { + // , String type, String exceptions, String language) throws IllegalArgumentException { // String n = getString(curObj, method); // if (StringUtil.isEmpty(n, true)) { // throw new NullPointerException("getMethodDefination StringUtil.isEmpty(methodArgs, true) !"); diff --git a/src/main/java/apijson/framework/javax/APIJSONObjectParser.java b/src/main/java/apijson/framework/javax/APIJSONObjectParser.java index 7411511..c7f79ce 100755 --- a/src/main/java/apijson/framework/javax/APIJSONObjectParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONObjectParser.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/javax/APIJSONParser.java b/src/main/java/apijson/framework/javax/APIJSONParser.java index 6a8e28d..50175f3 100755 --- a/src/main/java/apijson/framework/javax/APIJSONParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONParser.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,32 +14,30 @@ package apijson.framework.javax; -import apijson.NotNull; -import apijson.RequestMethod; -import apijson.orm.*; -import javax.servlet.http.HttpSession; +import static apijson.framework.javax.APIJSONConstant.DEFAULTS; +import static apijson.framework.javax.APIJSONConstant.FORMAT; +import static apijson.framework.javax.APIJSONConstant.VERSION; import java.util.List; import java.util.Map; import java.util.Set; -import static apijson.framework.APIJSONConstant.*; +import javax.servlet.http.HttpSession; + +import apijson.NotNull; +import apijson.RequestMethod; +import apijson.orm.AbstractParser; +import apijson.orm.FunctionParser; +import apijson.orm.SQLConfig; /**请求解析器 * @author Lemon */ -public class APIJSONParser, L extends List> - extends AbstractParser { +public class APIJSONParser, L extends List> extends AbstractParser { public static final String TAG = "APIJSONParser"; - @NotNull - public static APIJSONCreator, ? extends List> APIJSON_CREATOR; - static { - APIJSON_CREATOR = new APIJSONCreator<>(); - } - - + public APIJSONParser() { super(); } @@ -63,28 +61,51 @@ public APIJSONParser setSession(HttpSession session) { @SuppressWarnings("unchecked") @Override public APIJSONParser createParser() { - return (APIJSONParser) APIJSON_CREATOR.createParser(); + return APIJSONApplication.createParser(); } @Override public APIJSONFunctionParser createFunctionParser() { - return (APIJSONFunctionParser) APIJSON_CREATOR.createFunctionParser(); + return APIJSONApplication.createFunctionParser(); } - + @SuppressWarnings("unchecked") @Override public APIJSONVerifier createVerifier() { - return (APIJSONVerifier) APIJSON_CREATOR.createVerifier(); + return APIJSONApplication.createVerifier(); } - + @Override public APIJSONSQLConfig createSQLConfig() { - return (APIJSONSQLConfig) APIJSON_CREATOR.createSQLConfig(); + return APIJSONApplication.createSQLConfig(); } @Override public APIJSONSQLExecutor createSQLExecutor() { - return (APIJSONSQLExecutor) APIJSON_CREATOR.createSQLExecutor(); + return APIJSONApplication.createSQLExecutor(); + } + + @Override + public APIJSONParser setNeedVerify(boolean needVerify) { + super.setNeedVerify(needVerify); + return this; } + @Override + public APIJSONParser setNeedVerifyLogin(boolean needVerifyLogin) { + super.setNeedVerifyLogin(needVerifyLogin); + return this; + } + + @Override + public APIJSONParser setNeedVerifyRole(boolean needVerifyRole) { + super.setNeedVerifyRole(needVerifyRole); + return this; + } + + @Override + public APIJSONParser setNeedVerifyContent(boolean needVerifyContent) { + super.setNeedVerifyContent(needVerifyContent); + return this; + } @Override public M parseResponse(M request) { @@ -106,7 +127,7 @@ public M parseResponse(M request) { } } } - + return super.parseResponse(request); } @@ -123,22 +144,22 @@ public Object onFunctionParse(String key, String function, String parentPath, St functionParser.setTag(getTag()); functionParser.setVersion(getVersion()); functionParser.setRequest(requestObject); - - if (functionParser instanceof APIJSONFunctionParser) { - ((APIJSONFunctionParser) functionParser).setSession(getSession()); + + if (functionParser instanceof APIJSONFunctionParser) { + ((APIJSONFunctionParser) functionParser).setSession(getSession()); } } functionParser.setKey(key); functionParser.setParentPath(parentPath); functionParser.setCurrentName(currentName); functionParser.setCurrentObject(currentObject); - + return functionParser.invoke(function, currentObject, containRaw); } @Override - public APIJSONObjectParser createObjectParser(M request, String parentPath, SQLConfig arrayConfig + public APIJSONObjectParser createObjectParser(@NotNull M request, String parentPath, SQLConfig arrayConfig , boolean isSubquery, boolean isTable, boolean isArrayMainTable) throws Exception { return new APIJSONObjectParser(getSession(), request, parentPath, arrayConfig, isSubquery, isTable, isArrayMainTable) { @@ -173,6 +194,6 @@ public void onVerifyContent() throws Exception { } super.onVerifyContent(); } - + } diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java index 52fcba1..22409b0 100755 --- a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,13 +14,12 @@ package apijson.framework.javax; -import apijson.JSONArray; -import apijson.JSONObject; import apijson.RequestMethod; import apijson.orm.AbstractSQLConfig; import apijson.orm.Join; import apijson.orm.SQLConfig; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -37,8 +36,7 @@ public class APIJSONSQLConfig, L extends List, ? extends List> SIMPLE_CALLBACK; - public static APIJSONCreator, ? extends List> APIJSON_CREATOR; - + static { DEFAULT_DATABASE = DATABASE_MYSQL; //TODO 默认数据库类型,改成你自己的 DEFAULT_SCHEMA = "sys"; //TODO 默认模式名,改成你自己的,默认情况是 MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle: @@ -49,13 +47,12 @@ public class APIJSONSQLConfig, L extends List(); - - SIMPLE_CALLBACK = new SimpleCallback() { + SIMPLE_CALLBACK = new SimpleCallback, List>() { @Override - public SQLConfig getSQLConfig(RequestMethod method, String database, String schema,String datasource, String table) { - SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); + public SQLConfig, List> getSQLConfig( + RequestMethod method, String database, String schema, String datasource, String table) { + SQLConfig, List> config = APIJSONApplication.createSQLConfig(); config.setMethod(method); config.setDatabase(database); config.setDatasource(datasource); @@ -86,6 +83,31 @@ public String getUserIdKey(String database, String schema, String datasource, St } + /**获取SQL配置 + * @param table + * @param alias + * @param request + * @param isProcedure + * @return + * @throws Exception + */ + public static , L extends List> SQLConfig newSQLConfig( + RequestMethod method, String table, String alias, M request, List> joinList, boolean isProcedure) throws Exception { + return newSQLConfig(method, table, alias, request, joinList, isProcedure, (SimpleCallback) SIMPLE_CALLBACK); + } + + public APIJSONSQLConfig() { + this(RequestMethod.GET); + } + public APIJSONSQLConfig(RequestMethod method) { + super(method); + } + public APIJSONSQLConfig(RequestMethod method, String table) { + super(method, table); + } + public APIJSONSQLConfig(RequestMethod method, int count, int page) { + super(method, count, page); + } public String gainDBVersion() { @@ -106,17 +128,75 @@ public String gainDBVersion() { public String gainDBUri() { if (isMySQL()) { - return "jdbc:mysql://localhost:3306"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000 + return "jdbc:mysql://localhost:3306"; } - if (isPostgreSQL()) { - return "jdbc:postgresql://localhost:5432/postgres"; //TODO 改成你自己的 + if (isTiDB()) { + return "jdbc:mysql://localhost:4000"; } + if (isPostgreSQL()) { // PG JDBC 必须在 URI 传 catalog + return "jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified"; //TODO 改成你自己的 + } + //if (isCockroachDB()) { // PG JDBC 必须在 URI 传 catalog + // return "jdbc:postgresql://localhost:26257/movr?sslmode=require"; //TODO 改成你自己的 brew install cockroachdb/tap/cockroach && cockroach demo + // // return "jdbc:postgresql://localhost:26258/postgres?sslmode=disable"; //TODO 改成你自己的 brew install cockroachdb/tap/cockroach # && start 3 nodes and init cluster + //} if (isSQLServer()) { return "jdbc:jtds:sqlserver://localhost:1433/pubs;instance=SQLEXPRESS"; //TODO 改成你自己的 } if (isOracle()) { return "jdbc:oracle:thin:@localhost:1521:orcl"; //TODO 改成你自己的 } + if (isDb2()) { + return "jdbc:db2://localhost:50000/BLUDB"; //TODO 改成你自己的 + } + if (isSQLite()) { + return "jdbc:sqlite:sample.db"; //TODO 改成你自己的 + } + if (isDameng()) { + return "jdbc:dm://localhost:5236"; //TODO 改成你自己的 + } + if (isTDengine()) { + // return "jdbc:TAOS://localhost:6030"; //TODO 改成你自己的 + return "jdbc:TAOS-RS://localhost:6041"; //TODO 改成你自己的 + } + if (isTimescaleDB()) { // PG JDBC 必须在 URI 传 catalog + return "jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified"; //TODO 改成你自己的 + } + if (isQuestDB()) { // PG JDBC 必须在 URI 传 catalog + return "jdbc:postgresql://localhost:8812/qdb"; //TODO 改成你自己的 + } + if (isInfluxDB()) { + return "http://203.189.6.3:8086"; //TODO 改成你自己的 + } + if (isMilvus()) { + return "http://localhost:19530"; //TODO 改成你自己的 + } + if (isManticore()) { + return "jdbc:mysql://localhost:9306?characterEncoding=utf8&maxAllowedPacket=512000"; + } + if (isIoTDB()) { + return "jdbc:iotdb://localhost:6667"; // ?charset=GB18030 加参数会报错 URI 格式错误 + } + if (isMongoDB()) { + return "jdbc:mongodb://atlas-sql-6593c65c296c5865121e6ebe-xxskv.a.query.mongodb.net/myVirtualDatabase?ssl=true&authSource=admin"; + } + if (isCassandra()) { + return "http://localhost:7001"; + } + if (isDuckDB()) { + return "jdbc:duckdb:/Users/root/my_database.duckdb"; + } + if (isSurrealDB()) { + // return "memory"; + // return "surrealkv://localhost:8000"; + return "ws://localhost:8000"; + } + if (isOpenGauss()) { + return "jdbc:opengauss://127.0.0.1:5432/postgres?currentSchema=" + DEFAULT_SCHEMA; + } + if (isDoris()) { + return "jdbc:mysql://localhost:9030"; + } return null; } @@ -133,22 +213,150 @@ public String gainDBAccount() { if (isOracle()) { return "scott"; //TODO 改成你自己的 } + if (isMySQL()) { + return "root"; // ""apijson"; //TODO 改成你自己的 + } + if (isPostgreSQL()) { + return "postgres"; //TODO 改成你自己的 + } + //if (isCockroachDB()) { // PG JDBC 必须在 URI 传 catalog + // return "demo"; //TODO 改成你自己的 + // //return "postgres"; //TODO 改成你自己的 + //} + if (isSQLServer()) { + return "sa"; //TODO 改成你自己的 + } + if (isOracle()) { + return "scott"; //TODO 改成你自己的 + } + if (isDb2()) { + return "db2admin"; //TODO 改成你自己的 + } + // if (isSQLite()) { + // return "root"; //TODO 改成你自己的 + // } + if (isDameng()) { + return "SYSDBA"; + } + if (isTDengine()) { + return "root"; //TODO 改成你自己的 + } + //if (isTimescaleDB()) { + // return "postgres"; //TODO 改成你自己的 + //} + if (isQuestDB()) { + return "admin"; //TODO 改成你自己的 + } + if (isInfluxDB()) { + return "iotos"; + } + if (isMilvus()) { + return "root"; + } + if (isManticore()) { + return null; // "root"; + } + if (isIoTDB()) { + return "root"; + } + if (isMongoDB()) { + return "root"; //TODO 改成你自己的 + } + if (isCassandra()) { + return "root"; //TODO 改成你自己的 + } + if (isDuckDB()) { + return "root"; //TODO 改成你自己的 + } + if (isSurrealDB()) { + return "root"; //TODO 改成你自己的 + } + if (isOpenGauss()) { + return "postgres"; //TODO 改成你自己的 + // 不允许用初始账号,需要 CREATE USER 创建新账号并 GRANT 授权 return "opengauss"; //TODO 改成你自己的 + } + if (isDoris()) { + return "root"; //TODO 改成你自己的 + } + return null; } public String gainDBPassword() { if (isMySQL()) { - return "apijson"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用, 默认密码为空字符串 "" + return "yourPassword@123"; + } + if (isTiDB()) { + return ""; } if (isPostgreSQL()) { - return null; //TODO 改成你自己的 + return null; + } + if (isSQLServer()) { + return "yourPassword@123"; + } + if (isOracle()) { + return "tiger"; } + //if (isCockroachDB()) { // PG JDBC 必须在 URI 传 catalog + // return "demo39865"; + // // return null + //} if (isSQLServer()) { - return "apijson@123"; //TODO 改成你自己的 + return "yourPassword@123"; } if (isOracle()) { - return "tiger"; //TODO 改成你自己的 + return "tiger"; + } + if (isDb2()) { + return "123"; + } + if (isSQLite()) { + return "yourPassword@123"; + } + if (isDameng()) { + return "SYSDBA"; + } + if (isTDengine()) { + return "taosdata"; + } + if (isTimescaleDB()) { + return "password"; } + if (isQuestDB()) { + return "quest"; + } + if (isInfluxDB()) { + return "yourPassword@123"; + } + if (isMilvus()) { + return "yourPassword@123"; + } + //if (isManticore()) { + // return null; + //} + //if (isIoTDB()) { + // return "root"; + //} + if (isMongoDB()) { + return "yourPassword@123"; + } + if (isCassandra()) { + return "yourPassword@123"; + } + if (isDuckDB()) { + return ""; + } + if (isSurrealDB()) { + return "root"; + } + if (isOpenGauss()) { + return "yourPassword@123"; + } + if (isDoris()) { + return ""; + } + return null; } @@ -193,61 +401,14 @@ public String getUserIdKey() { } - public APIJSONSQLConfig() { - this(RequestMethod.GET); - } - public APIJSONSQLConfig(RequestMethod method) { - super(method); - } - public APIJSONSQLConfig(RequestMethod method, String table) { - super(method, table); - } - public APIJSONSQLConfig(RequestMethod method, int count, int page) { - super(method, count, page); - } - - - - /**获取SQL配置 - * @param table - * @param alias - * @param request - * @param isProcedure - * @return - * @throws Exception - */ - public static , L extends List> SQLConfig newSQLConfig( - RequestMethod method, String table, String alias, M request, List> joinList, boolean isProcedure) throws Exception { - return (SQLConfig) newSQLConfig(method, table, alias, request, joinList, isProcedure, new SimpleCallback() { - @Override - public SQLConfig getSQLConfig(RequestMethod method, String database, String schema, String datasource, String table) { - SQLConfig config = (SQLConfig) APIJSON_CREATOR.createSQLConfig(); - config.setMethod(method); - config.setDatabase(database); - config.setDatasource(datasource); - config.setSchema(schema); - config.setTable(table); - return config; - } - }); - } - - // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column -// @Override -// public AbstractSQLConfig setColumn(List column) { -// if (ENABLE_COLUMN_CONFIG) { -// column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); -// } -// return super.setColumn(column); -// } -// -// @Override -// public String getKey(String key) { -// if (ENABLE_COLUMN_CONFIG) { -// key = ColumnUtil.compatInputKey(key, getTable(), getMethod(), getVersion(), ! isConfigTable()); -// } -// return super.getKey(key); -// } + @Override + public APIJSONSQLConfig setColumn(List column) { + if (ENABLE_COLUMN_CONFIG) { + column = ColumnUtil.compatInputColumn(column, getTable(), getMethod(), getVersion(), ! isConfigTable()); + } + super.setColumn(column); + return this; + } } diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java index 76d9a60..8d87537 100755 --- a/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java +++ b/src/main/java/apijson/framework/javax/APIJSONSQLExecutor.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,18 +14,6 @@ package apijson.framework.javax; -import apijson.JSON; -import apijson.Log; -import apijson.NotNull; -//import apijson.column.ColumnUtil; -import apijson.orm.AbstractSQLExecutor; -import apijson.orm.SQLConfig; -import org.postgresql.util.PGobject; - -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.ResultSetMetaData; -import java.sql.SQLException; import java.util.List; import java.util.Map; @@ -33,82 +21,4 @@ /**executor for query(read) or update(write) MySQL database * @author Lemon */ -public class APIJSONSQLExecutor, L extends List> extends AbstractSQLExecutor { - public static final String TAG = "APIJSONSQLExecutor"; - - static { - try { //加载驱动程序 - Log.d(TAG, "尝试加载 MySQL 8 驱动 <<<<<<<<<<<<<<<<<<<<< "); - Class.forName("com.mysql.cj.jdbc.Driver"); - Log.d(TAG, "成功加载 MySQL 8 驱动!>>>>>>>>>>>>>>>>>>>>>"); - } - catch (ClassNotFoundException e) { - Log.e(TAG, "加载 MySQL 8 驱动失败,请检查 pom.xml 中 mysql-connector-java 版本是否存在以及可用 !!!"); - e.printStackTrace(); - - try { //加载驱动程序 - Log.d(TAG, "尝试加载 MySQL 7 及以下版本的 驱动 <<<<<<<<<<<<<<<<<<<<< "); - Class.forName("com.mysql.jdbc.Driver"); - Log.d(TAG, "成功加载 MySQL 7 及以下版本的 驱动!>>>>>>>>>>>>>>>>>>>>> "); - } - catch (ClassNotFoundException e2) { - Log.e(TAG, "加载 MySQL 7 及以下版本的 驱动失败,请检查 pom.xml 中 mysql-connector-java 版本是否存在以及可用 !!!"); - e2.printStackTrace(); - } - } - - try { //加载驱动程序 - Log.d(TAG, "尝试加载 PostgresSQL 驱动 <<<<<<<<<<<<<<<<<<<<< "); - Class.forName("org.postgresql.Driver"); - Log.d(TAG, "成功加载 PostgresSQL 驱动!>>>>>>>>>>>>>>>>>>>>> "); - } - catch (ClassNotFoundException e) { - e.printStackTrace(); - Log.e(TAG, "加载 PostgresSQL 驱动失败,请检查 libs 目录中 postgresql.jar 版本是否存在以及可用 !!!"); - } - - } - - - @Override - public PreparedStatement setArgument(@NotNull SQLConfig config, @NotNull PreparedStatement statement - , int index, Object value) throws SQLException { - if (config.isPostgreSQL() && JSON.isBoolOrNumOrStr(value) == false) { - PGobject o = new PGobject(); - o.setType("jsonb"); - o.setValue(value == null ? null : value.toString()); - statement.setObject(index + 1, o); //PostgreSQL 除了基本类型,其它的必须通过 PGobject 设置进去,否则 jsonb = varchar 等报错 - return statement; - } - - return super.setArgument(config, statement, index, value); - } - - - @Override - protected Object getValue( - SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int row - , M table, int columnIndex, String label, Map childMap, Map keyMap - ) throws Exception { - - Object value = super.getValue(config, rs, rsmd, row, table, columnIndex, label, childMap, keyMap); - - return value instanceof PGobject ? JSON.parseJSON(((PGobject) value).getValue()) : value; - } - - // 支持 !key 反选字段 和 字段名映射,依赖插件 https://github.com/APIJSON/apijson-column - @Override - protected String getKey( - SQLConfig config, ResultSet rs, ResultSetMetaData rsmd, int row - , M table, int columnIndex, Map childMap, Map keyMap - ) throws Exception { - - String key = super.getKey(config, rs, rsmd, row, table, columnIndex, childMap, keyMap); -// if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { -// return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); -// } - - return key; - } - -} +public class APIJSONSQLExecutor, L extends List> extends apijson.framework.APIJSONSQLExecutor {} \ No newline at end of file diff --git a/src/main/java/apijson/framework/javax/APIJSONVerifier.java b/src/main/java/apijson/framework/javax/APIJSONVerifier.java index a7f693b..32e65f2 100755 --- a/src/main/java/apijson/framework/javax/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/javax/APIJSONVerifier.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -23,6 +23,8 @@ import java.util.*; import static apijson.JSON.*; +import static apijson.JSONMap.KEY_ORDER; +import static apijson.JSONMap.isTableKey; import static apijson.JSONRequest.KEY_COUNT; import static apijson.framework.javax.APIJSONConstant.*; @@ -48,11 +50,9 @@ public class APIJSONVerifier, L extends List, ? extends List> APIJSON_CREATOR; public static Map>> DOCUMENT_MAP; static { - APIJSON_CREATOR = new APIJSONCreator<>(); DOCUMENT_MAP = new HashMap<>(); } @@ -150,10 +150,8 @@ public static , L extends List> M initA public static , L extends List> M initAccess( boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } - APIJSON_CREATOR = creator; - boolean isAll = table == null || table.isEmpty(); @@ -190,7 +188,7 @@ public static , L extends List> M initA Map newTKMap = new LinkedHashMap<>(); // JSON.createJSONObject(); Map tableSchemaMap = new LinkedHashMap<>(); // JSON.createJSONObject(); - SortedMap>> versionedTableColumnMap = new TreeMap<>(apijson.framework.ColumnUtil.DESC_COMPARATOR); + SortedMap>> versionedTableColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); SortedMap>> versionedKeyColumnMap = new TreeMap<>(ColumnUtil.DESC_COMPARATOR); for (int i = 0; i < size; i++) { M item = getJSONObject(list, i); @@ -241,12 +239,12 @@ public static , L extends List> M initA } if (StringUtil.isEmpty(alias, true)) { - if (JSONObject.isTableKey(name) == false) { + if (isTableKey(name) == false) { onServerError("name: " + name + "不合法!字段 alias 的值为空时,name 必须为合法表名!", shutdownWhenServerError); } alias = name; - } else if (JSONObject.isTableKey(alias) == false) { + } else if (isTableKey(alias) == false) { onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError); } @@ -390,14 +388,12 @@ public static , L extends List> M initR public static , L extends List> M initRequest( boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } - APIJSON_CREATOR = creator; - boolean isAll = table == null || table.isEmpty(); M tblObj = createJSONObject(); - tblObj.put(JSONObject.KEY_ORDER, "version-,id+"); + tblObj.put(KEY_ORDER, "version-,id+"); M requestTable = isAll ? tblObj : table; if (Log.DEBUG == false) { requestTable.put(APIJSONConstant.KEY_DEBUG, 0); @@ -412,7 +408,7 @@ public static , L extends List> M initR M request = JSON.createJSONObject(); request.put(REQUEST_ + "[]", ro); - + M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { Log.e(TAG, "\n\n\n\n\n !!!! 查询请求校验规则配置异常 !!!\n" + getString(response, JSONResponse.KEY_MSG) + "\n\n\n\n\n"); @@ -462,10 +458,10 @@ public static , L extends List> M initR target = structure; if (structure.containsKey(tag) == false) { //tag 是 Table 名或 Table[] - boolean isArrayKey = tag.endsWith(":[]"); // apijson.JSONObject.isArrayKey(tag); + boolean isArrayKey = tag.endsWith(":[]"); // apijson.isArrayKey(tag); String key = isArrayKey ? tag.substring(0, tag.length() - 3) : tag; - if (JSONObject.isTableKey(key)) { + if (isTableKey(key)) { if (isArrayKey) { //自动为 tag = Comment:[] 的 { ... } 新增键值对 "Comment[]":[] 为 { "Comment[]":[], ... } target.put(key + "[]", JSON.createJSONArray()); } else { //自动为 tag = Comment 的 { ... } 包一层为 { "Comment": { ... } } @@ -539,7 +535,8 @@ public static , L extends List> M initD * @return * @throws ServerException */ - public static , L extends List> M initDocument(boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { + public static , L extends List> M initDocument( + boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { return initDocument(shutdownWhenServerError, creator, null); } /**初始化,加载所有请求校验配置 @@ -550,15 +547,14 @@ public static , L extends List> M initD * @throws ServerException */ @SuppressWarnings("unchecked") - public static , L extends List> M initDocument(boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { + public static , L extends List> M initDocument( + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { - creator = (APIJSONCreator) APIJSON_CREATOR; + creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } - APIJSON_CREATOR = creator; - boolean isAll = table == null || table.isEmpty(); - M document = isAll ? JSON.createJSONObject(new JSONRequest().puts("apijson{}", "length(apijson)>0").setOrder("version-,id+")) : table; + M document = isAll ? JSON.createJSONObject(new JSONRequest("apijson{}", "length(apijson)>0").setOrder("version-,id+")) : table; if (Log.DEBUG == false) { document.put(APIJSONConstant.KEY_DEBUG, 0); } @@ -694,17 +690,7 @@ public static void test() throws Exception { * @throws Exception */ public static , L extends List> void testStructure() throws Exception { - SQLCreator creator = (SQLCreator) APIJSON_CREATOR; // new SQLCreator() { - // @Override - // public SQLConfig createSQLConfig() { - // return (SQLConfig) APIJSONApplication.DEFAULT_APIJSON_CREATOR.createSQLConfig(); - // } - // - // @Override - // public SQLExecutor createSQLExecutor() { - // return (SQLExecutor) APIJSONApplication.DEFAULT_APIJSON_CREATOR.createSQLExecutor(); - // } - //}; + SQLCreator creator = (SQLCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; M request; try { @@ -787,7 +773,7 @@ protected static void onServerError(String msg, boolean shutdown) throws ServerE @NotNull @Override public APIJSONParser createParser() { - APIJSONParser parser = (APIJSONParser) APIJSON_CREATOR.createParser(); + APIJSONParser parser = APIJSONApplication.createParser(); parser.setVisitor(visitor); return parser; } @@ -800,7 +786,7 @@ public APIJSONParser createParser() { */ public static void verifyLogin(HttpSession session) throws Exception { Log.d(TAG, "verifyLogin session.getId() = " + (session == null ? null : session.getId())); - APIJSON_CREATOR.createVerifier().setVisitor(getVisitor(session)).verifyLogin(); + APIJSONApplication.createVerifier().setVisitor(getVisitor(session)).verifyLogin(); } diff --git a/src/main/java/apijson/framework/javax/AssertUtil.java b/src/main/java/apijson/framework/javax/AssertUtil.java index 3424407..a34b979 100644 --- a/src/main/java/apijson/framework/javax/AssertUtil.java +++ b/src/main/java/apijson/framework/javax/AssertUtil.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/javax/BaseModel.java b/src/main/java/apijson/framework/javax/BaseModel.java index 251a058..e44a1a4 100755 --- a/src/main/java/apijson/framework/javax/BaseModel.java +++ b/src/main/java/apijson/framework/javax/BaseModel.java @@ -1,4 +1,4 @@ -/*Copyright ©2016 TommyLemon(https://github.com/TommyLemon/APIJSON) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/javax/ColumnUtil.java b/src/main/java/apijson/framework/javax/ColumnUtil.java index 8259401..e07cf59 100644 --- a/src/main/java/apijson/framework/javax/ColumnUtil.java +++ b/src/main/java/apijson/framework/javax/ColumnUtil.java @@ -1,4 +1,4 @@ -/*Copyright ©2021 TommyLemon(https://github.com/APIJSON/apijson-column) +/*Copyright ©2016 APIJSON(https://github.com/APIJSON) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/src/main/java/apijson/framework/javax/package-info.java b/src/main/java/apijson/framework/javax/package-info.java index b888b35..ffec0a6 100755 --- a/src/main/java/apijson/framework/javax/package-info.java +++ b/src/main/java/apijson/framework/javax/package-info.java @@ -1,5 +1,5 @@ /** - * 服务端框架,兼容 JDK 1.8~16,使用 javax.servlet + * javax 包,兼容 JDK 1.8~16,使用 javax.servlet */ /** * @author Lemon From 583b369f69caae6981f7ae92f36bac1457cdf843 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 20 Apr 2025 16:18:14 +0800 Subject: [PATCH 50/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=208.0.0.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 734cecf..46ef922 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ com.github.Tencent APIJSON - 8.0.0.1 + 8.0.0.2 From 60d88a6219c6156b14cfd5f016e43530e6cb63e6 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 20 Apr 2025 17:33:31 +0800 Subject: [PATCH 51/59] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20/crud=20=E5=85=A8?= =?UTF-8?q?=E8=83=BD=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=85=A5=E5=8F=A3=EF=BC=8C=E6=8C=89=20ENABLE=5FAPIJSON=5FROUTE?= =?UTF-8?q?R=20=E5=8F=8A=20Log.DEBUG=20=E6=8E=A7=E5=88=B6=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E6=94=AF=E6=8C=81=20/router/{method}/{tag}=20?= =?UTF-8?q?=E5=8F=8A=20/get=20=E7=AD=89=E4=B8=87=E8=83=BD=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apijson/framework/APIJSONController.java | 74 +++++-- .../framework/javax/APIJSONController.java | 200 ++++++++++++++++-- 2 files changed, 237 insertions(+), 37 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index 2d8f883..4526372 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -18,7 +18,6 @@ import apijson.JSONRequest; import apijson.orm.*; -import apijson.orm.exception.CommonException; import jakarta.servlet.http.HttpSession; import java.rmi.ServerException; @@ -51,7 +50,7 @@ public APIJSONParser newParser(HttpSession session, RequestMethod metho return parser; } - public static APIJSONParser, ? extends List> ERR_PARSER = APIJSONApplication.createParser(); + public static APIJSONParser, ? extends List> COMMON_PARSER = APIJSONApplication.createParser(); /**新建带状态内容的JSONObject * @param code @@ -96,7 +95,7 @@ public static > M newResult(int code, String msg, * @return */ public static > M extendResult(M object, int code, String msg, String warn, boolean isRoot) { - return (M) ERR_PARSER.extendResult(JSON.createJSONObject(object), code, msg, warn, isRoot); + return (M) COMMON_PARSER.extendResult(JSON.createJSONObject(object), code, msg, warn, isRoot); } @@ -169,23 +168,43 @@ public static > M extendErrorResult(M object, Thro * @return */ public static > M extendErrorResult(M object, Throwable e, RequestMethod requestMethod, String url, boolean isRoot) { - return (M) ERR_PARSER.extendErrorResult(JSON.createJSONObject(object), e, requestMethod, url, isRoot); + return (M) COMMON_PARSER.extendErrorResult(JSON.createJSONObject(object), e, requestMethod, url, isRoot); } public static > M newErrorResult(Exception e) { return newErrorResult(e, false); } public static > M newErrorResult(Exception e, boolean isRoot) { - return (M) ERR_PARSER.newErrorResult(e, isRoot); + return (M) COMMON_PARSER.newErrorResult(e, isRoot); } public String parse(RequestMethod method, String request, HttpSession session) { + if (APIJSONVerifier.ENABLE_APIJSON_ROUTER && ! Log.DEBUG) { + return JSON.toJSONString( + newErrorResult( + new IllegalArgumentException("APIJSONVerifier.ENABLE_APIJSON_ROUTER = true 已启用 router," + + "Log.DEBUG = false 时不允许调用 /router/{method}/{tag} 外的万能通用接口!" + ) + ) + ); + } + return newParser(session, method).parse(request); } public String parseByTag(RequestMethod method, String tag, Map params, String request, HttpSession session) { - APIJSONParser parser = newParser(null, null); + if (APIJSONVerifier.ENABLE_APIJSON_ROUTER && ! Log.DEBUG) { + return JSON.toJSONString( + newErrorResult( + new IllegalArgumentException("APIJSONVerifier.ENABLE_APIJSON_ROUTER = true 已启用 router," + + "Log.DEBUG = false 时不允许调用 /router/{method}/{tag} 外的万能通用接口!" + ) + ) + ); + } + + APIJSONParser parser = newParser(session, method); M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false); if (req == null) { req = JSON.createJSONObject(); @@ -194,11 +213,20 @@ public String parseByTag(RequestMethod method, String tag, Map p req.putAll(params); } - return newParser(session, method).parse(req); + return parser.parse(req); } //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /**全能增删改查统一入口,这个一个方法可替代以下所有万能通用方法,一个接口通用增删改查 + * @param request + * @param session + * @return + */ + public String crudAll(String request, HttpSession session) { + return parse(CRUD, request, session); + } + /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一点路由解析性能来提升一些开发效率 * @param method * @param request @@ -210,8 +238,7 @@ public String crud(String method, String request, HttpSession session) { return parse(RequestMethod.valueOf(method.toUpperCase()), request, session); } - Parser parser = newParser(null, null); - return toJSONString(parser.newErrorResult( + return toJSONString(newErrorResult( new IllegalArgumentException("URL 路径 /{method} 中 method 值 " + method + " 错误!只允许 " + METHODS + " 中的一个!") )); @@ -316,8 +343,7 @@ public String crudByTag(String method, String tag, Map params, S return parseByTag(RequestMethod.valueOf(method.toUpperCase()), tag, params, request, session); } - Parser parser = newParser(null, null); - return toJSONString(parser.newErrorResult( + return toJSONString(newErrorResult( new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + method + " 错误!只允许 " + METHODS + " 中的一个!") )); @@ -428,6 +454,15 @@ public String router(String method, String tag, Map params, Stri * @return */ public String router(String method, String tag, Map params, String request, HttpSession session, boolean compatCommonAPI) { + if (! APIJSONVerifier.ENABLE_APIJSON_ROUTER) { + return JSON.toJSONString( + newErrorResult( + new IllegalArgumentException("未启用 router!请配置 APIJSONVerifier.ENABLE_APIJSON_ROUTER = true !" + ) + ) + ); + } + RequestMethod requestMethod = null; try { requestMethod = RequestMethod.valueOf(method.toUpperCase()); @@ -438,7 +473,7 @@ public String router(String method, String tag, Map params, Stri if (METHODS.contains(method) == false) { return JSON.toJSONString( - parser.newErrorResult( + newErrorResult( new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + method + " 错误!只允许 " + METHODS + " 中的一个!" ) @@ -449,7 +484,7 @@ public String router(String method, String tag, Map params, Stri String t = compatCommonAPI && tag != null && tag.endsWith("[]") ? tag.substring(0, tag.length() - 2) : tag; if (StringUtil.isName(t) == false) { return JSON.toJSONString( - parser.newErrorResult( + newErrorResult( new IllegalArgumentException("URL 路径 /" + method + "/{tag} 的 tag 中 " + t + " 错误!tag 不能为空,且只允许变量命名格式!" ) @@ -464,7 +499,7 @@ public String router(String method, String tag, Map params, Stri } catch (Exception e) { return JSON.toJSONString( - parser.newErrorResult(new IllegalArgumentException("URL 路径 /" + method + "/" + newErrorResult(new IllegalArgumentException("URL 路径 /" + method + "/" + tag + "?version=value 中 value 值 " + versionStr + " 错误!必须符合整数格式!") ) ); @@ -613,7 +648,7 @@ public String router(String method, String tag, Map params, Stri return parser.setNeedVerifyContent(false).parse(apijsonReq); } catch (Exception e) { - return JSON.toJSONString(parser.newErrorResult(e)); + return JSON.toJSONString(newErrorResult(e)); } } @@ -634,8 +669,7 @@ public String router(String method, String tag, Map params, Stri * */ public M reload(String type) { - Parser parser = newParser(null, null); - M result = parser.newSuccessResult(); + M result = newSuccessResult(); boolean reloadAll = StringUtil.isEmpty(type, true) || "ALL".equals(type); @@ -651,7 +685,7 @@ public M reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(ACCESS_, parser.newErrorResult(e)); + result.put(ACCESS_, newErrorResult(e)); } } @@ -667,7 +701,7 @@ public M reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(FUNCTION_, parser.newErrorResult(e)); + result.put(FUNCTION_, newErrorResult(e)); } } @@ -683,7 +717,7 @@ public M reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(REQUEST_, parser.newErrorResult(e)); + result.put(REQUEST_, newErrorResult(e)); } } diff --git a/src/main/java/apijson/framework/javax/APIJSONController.java b/src/main/java/apijson/framework/javax/APIJSONController.java index 5fc2d2e..195cceb 100755 --- a/src/main/java/apijson/framework/javax/APIJSONController.java +++ b/src/main/java/apijson/framework/javax/APIJSONController.java @@ -14,9 +14,10 @@ package apijson.framework.javax; -import apijson.JSONRequest; import apijson.*; +import apijson.JSONRequest; import apijson.orm.*; + import javax.servlet.http.HttpSession; import java.rmi.ServerException; @@ -26,6 +27,7 @@ import static apijson.RequestMethod.*; import static apijson.framework.javax.APIJSONConstant.*; + /**APIJSON base controller,建议在子项目被 @RestController 注解的类继承它或通过它的实例调用相关方法 *
全通过 HTTP POST 来请求: *
1.减少代码 - 客户端无需写 HTTP GET, HTTP PUT 等各种方式的请求代码 @@ -48,12 +50,161 @@ public APIJSONParser newParser(HttpSession session, RequestMethod metho return parser; } + public static APIJSONParser, ? extends List> COMMON_PARSER = APIJSONApplication.createParser(); + + /**新建带状态内容的JSONObject + * @param code + * @param msg + * @return + */ + public static > M newResult(int code, String msg) { + return newResult(code, msg, null); + } + + /** + * 添加JSONObject的状态内容,一般用于错误提示结果 + * + * @param code + * @param msg + * @param warn + * @return + */ + public static > M newResult(int code, String msg, String warn) { + return newResult(code, msg, warn, false); + } + + /** + * 新建带状态内容的JSONObject + * + * @param code + * @param msg + * @param warn + * @param isRoot + * @return + */ + public static > M newResult(int code, String msg, String warn, boolean isRoot) { + return extendResult(null, code, msg, warn, isRoot); + } + + /** + * 添加JSONObject的状态内容,一般用于错误提示结果 + * + * @param object + * @param code + * @param msg + * @return + */ + public static > M extendResult(M object, int code, String msg, String warn, boolean isRoot) { + return (M) COMMON_PARSER.extendResult(JSON.createJSONObject(object), code, msg, warn, isRoot); + } + + + /** + * 添加请求成功的状态内容 + * + * @param object + * @return + */ + public M extendSuccessResult(M object) { + return extendSuccessResult(object, false); + } + + public M extendSuccessResult(M object, boolean isRoot) { + return extendSuccessResult(object, null, isRoot); + } + + /**添加请求成功的状态内容 + * @param object + * @param isRoot + * @return + */ + public static > M extendSuccessResult(M object, String warn, boolean isRoot) { + return extendResult(object, JSONResponse.CODE_SUCCESS, JSONResponse.MSG_SUCCEED, warn, isRoot); + } + + /**获取请求成功的状态内容 + * @return + */ + public static > M newSuccessResult() { + return newSuccessResult(null); + } + + /**获取请求成功的状态内容 + * @param warn + * @return + */ + public static > M newSuccessResult(String warn) { + return newSuccessResult(warn, false); + } + + /**获取请求成功的状态内容 + * @param warn + * @param isRoot + * @return + */ + public static > M newSuccessResult(String warn, boolean isRoot) { + return newResult(JSONResponse.CODE_SUCCESS, JSONResponse.MSG_SUCCEED, warn, isRoot); + } + + /**添加请求成功的状态内容 + * @param object + * @param e + * @return + */ + public static > M extendErrorResult(M object, Throwable e) { + return extendErrorResult(object, e, false); + } + /**添加请求成功的状态内容 + * @param object + * @param e + * @param isRoot + * @return + */ + public static > M extendErrorResult(M object, Throwable e, boolean isRoot) { + return extendErrorResult(object, e, null, null, isRoot); + } + /**添加请求成功的状态内容 + * @param object + * @return + */ + public static > M extendErrorResult(M object, Throwable e, RequestMethod requestMethod, String url, boolean isRoot) { + return (M) COMMON_PARSER.extendErrorResult(JSON.createJSONObject(object), e, requestMethod, url, isRoot); + } + + public static > M newErrorResult(Exception e) { + return newErrorResult(e, false); + } + public static > M newErrorResult(Exception e, boolean isRoot) { + return (M) COMMON_PARSER.newErrorResult(e, isRoot); + } + + public String parse(RequestMethod method, String request, HttpSession session) { + if (APIJSONVerifier.ENABLE_APIJSON_ROUTER && ! Log.DEBUG) { + return JSON.toJSONString( + newErrorResult( + new IllegalArgumentException("APIJSONVerifier.ENABLE_APIJSON_ROUTER = true 已启用 router," + + "Log.DEBUG = false 时不允许调用 /router/{method}/{tag} 外的万能通用接口!" + ) + ) + ); + } + return newParser(session, method).parse(request); } public String parseByTag(RequestMethod method, String tag, Map params, String request, HttpSession session) { - APIJSONParser parser = newParser(null, null); + if (APIJSONVerifier.ENABLE_APIJSON_ROUTER && ! Log.DEBUG) { + return JSON.toJSONString( + newErrorResult( + new IllegalArgumentException("APIJSONVerifier.ENABLE_APIJSON_ROUTER = true 已启用 router," + + "Log.DEBUG = false 时不允许调用 /router/{method}/{tag} 外的万能通用接口!" + ) + ) + ); + } + + APIJSONParser parser = newParser(session, method); M req = parser.wrapRequest(method, tag, JSON.parseObject(request), false); if (req == null) { req = JSON.createJSONObject(); @@ -62,11 +213,20 @@ public String parseByTag(RequestMethod method, String tag, Map p req.putAll(params); } - return newParser(session, method).parse(req); + return parser.parse(req); } //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + /**全能增删改查统一入口,这个一个方法可替代以下所有万能通用方法,一个接口通用增删改查 + * @param request + * @param session + * @return + */ + public String crudAll(String request, HttpSession session) { + return parse(CRUD, request, session); + } + /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一点路由解析性能来提升一些开发效率 * @param method * @param request @@ -78,8 +238,7 @@ public String crud(String method, String request, HttpSession session) { return parse(RequestMethod.valueOf(method.toUpperCase()), request, session); } - Parser parser = newParser(null, null); - return toJSONString(parser.newErrorResult( + return toJSONString(newErrorResult( new IllegalArgumentException("URL 路径 /{method} 中 method 值 " + method + " 错误!只允许 " + METHODS + " 中的一个!") )); @@ -184,8 +343,7 @@ public String crudByTag(String method, String tag, Map params, S return parseByTag(RequestMethod.valueOf(method.toUpperCase()), tag, params, request, session); } - Parser parser = newParser(null, null); - return toJSONString(parser.newErrorResult( + return toJSONString(newErrorResult( new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + method + " 错误!只允许 " + METHODS + " 中的一个!") )); @@ -296,6 +454,15 @@ public String router(String method, String tag, Map params, Stri * @return */ public String router(String method, String tag, Map params, String request, HttpSession session, boolean compatCommonAPI) { + if (! APIJSONVerifier.ENABLE_APIJSON_ROUTER) { + return JSON.toJSONString( + newErrorResult( + new IllegalArgumentException("未启用 router!请配置 APIJSONVerifier.ENABLE_APIJSON_ROUTER = true !" + ) + ) + ); + } + RequestMethod requestMethod = null; try { requestMethod = RequestMethod.valueOf(method.toUpperCase()); @@ -306,7 +473,7 @@ public String router(String method, String tag, Map params, Stri if (METHODS.contains(method) == false) { return JSON.toJSONString( - parser.newErrorResult( + newErrorResult( new IllegalArgumentException("URL 路径 /{method}/{tag} 中 method 值 " + method + " 错误!只允许 " + METHODS + " 中的一个!" ) @@ -317,7 +484,7 @@ public String router(String method, String tag, Map params, Stri String t = compatCommonAPI && tag != null && tag.endsWith("[]") ? tag.substring(0, tag.length() - 2) : tag; if (StringUtil.isName(t) == false) { return JSON.toJSONString( - parser.newErrorResult( + newErrorResult( new IllegalArgumentException("URL 路径 /" + method + "/{tag} 的 tag 中 " + t + " 错误!tag 不能为空,且只允许变量命名格式!" ) @@ -332,7 +499,7 @@ public String router(String method, String tag, Map params, Stri } catch (Exception e) { return JSON.toJSONString( - parser.newErrorResult(new IllegalArgumentException("URL 路径 /" + method + "/" + newErrorResult(new IllegalArgumentException("URL 路径 /" + method + "/" + tag + "?version=value 中 value 值 " + versionStr + " 错误!必须符合整数格式!") ) ); @@ -387,7 +554,7 @@ public String router(String method, String tag, Map params, Stri } @SuppressWarnings("unchecked") - APIJSONCreator creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; + APIJSONCreator creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; if (result == null && Log.DEBUG && APIJSONVerifier.DOCUMENT_MAP.isEmpty()) { //获取指定的JSON结构 <<<<<<<<<<<<<< @@ -481,7 +648,7 @@ public String router(String method, String tag, Map params, Stri return parser.setNeedVerifyContent(false).parse(apijsonReq); } catch (Exception e) { - return JSON.toJSONString(parser.newErrorResult(e)); + return JSON.toJSONString(newErrorResult(e)); } } @@ -502,8 +669,7 @@ public String router(String method, String tag, Map params, Stri * */ public M reload(String type) { - Parser parser = newParser(null, null); - M result = parser.newSuccessResult(); + M result = newSuccessResult(); boolean reloadAll = StringUtil.isEmpty(type, true) || "ALL".equals(type); @@ -519,7 +685,7 @@ public M reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(ACCESS_, parser.newErrorResult(e)); + result.put(ACCESS_, newErrorResult(e)); } } @@ -535,7 +701,7 @@ public M reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(FUNCTION_, parser.newErrorResult(e)); + result.put(FUNCTION_, newErrorResult(e)); } } @@ -551,7 +717,7 @@ public M reload(String type) { } } catch (ServerException e) { e.printStackTrace(); - result.put(REQUEST_, parser.newErrorResult(e)); + result.put(REQUEST_, newErrorResult(e)); } } From d5676a6abc41d9fc1dbb88e06755274e2fd5456c Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 20 Apr 2025 18:01:13 +0800 Subject: [PATCH 52/59] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=8F=92=E4=BB=B6=EF=BC=8C=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=8F=AF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/apijson/framework/APIJSONSQLConfig.java | 8 ++++++++ src/main/java/apijson/framework/APIJSONSQLExecutor.java | 7 +++---- src/main/java/apijson/framework/ColumnUtil.java | 3 +++ .../java/apijson/framework/javax/APIJSONSQLConfig.java | 8 ++++++++ 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONSQLConfig.java b/src/main/java/apijson/framework/APIJSONSQLConfig.java index 7171f7e..af750db 100755 --- a/src/main/java/apijson/framework/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/APIJSONSQLConfig.java @@ -418,4 +418,12 @@ public APIJSONSQLConfig setColumn(List column) { return this; } + @Override + public String gainKey(String key) { + if (ENABLE_COLUMN_CONFIG) { + key = ColumnUtil.compatInputKey(key, getTable(), getMethod()); + } + return super.gainKey(key); + } + } diff --git a/src/main/java/apijson/framework/APIJSONSQLExecutor.java b/src/main/java/apijson/framework/APIJSONSQLExecutor.java index e85b71e..ab405f9 100755 --- a/src/main/java/apijson/framework/APIJSONSQLExecutor.java +++ b/src/main/java/apijson/framework/APIJSONSQLExecutor.java @@ -21,7 +21,6 @@ import java.util.List; import java.util.Map; -//import apijson.column.ColumnUtil; import org.postgresql.util.PGobject; import apijson.JSON; @@ -104,9 +103,9 @@ protected String getKey( ) throws Exception { String key = super.getKey(config, rs, rsmd, row, table, columnIndex, childMap, keyMap); -// if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { -// return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); -// } + if (APIJSONSQLConfig.ENABLE_COLUMN_CONFIG) { + return ColumnUtil.compatOutputKey(key, config.getTable(), config.getMethod()); + } return key; } diff --git a/src/main/java/apijson/framework/ColumnUtil.java b/src/main/java/apijson/framework/ColumnUtil.java index 6514164..dcd9432 100644 --- a/src/main/java/apijson/framework/ColumnUtil.java +++ b/src/main/java/apijson/framework/ColumnUtil.java @@ -48,6 +48,9 @@ public class ColumnUtil { public static final Comparator DESC_COMPARATOR = new Comparator() { @Override public int compare(Integer o1, Integer o2) { + if (o2 == null) { + return o1 == null ? 0 : -1; + } return o2.compareTo(o1); } }; diff --git a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java index 22409b0..e4f757d 100755 --- a/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java +++ b/src/main/java/apijson/framework/javax/APIJSONSQLConfig.java @@ -411,4 +411,12 @@ public APIJSONSQLConfig setColumn(List column) { return this; } + @Override + public String gainKey(String key) { + if (ENABLE_COLUMN_CONFIG) { + key = ColumnUtil.compatInputKey(key, getTable(), getMethod()); + } + return super.gainKey(key); + } + } From 29c594b1a1cacee2917a4182895c418ce97ba5c3 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 20 Apr 2025 18:35:50 +0800 Subject: [PATCH 53/59] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=BF=94=E5=9B=9E=20da?= =?UTF-8?q?tabase,=20schema=20=E7=AD=89=E4=BF=A1=E6=81=AF=EF=BC=8C?= =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=BF=94=E5=9B=9E=E5=A4=9A=E4=BD=99=E7=9A=84?= =?UTF-8?q?=20version:=20null?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/apijson/framework/APIJSONParser.java | 17 ++++------------- .../apijson/framework/javax/APIJSONParser.java | 17 ++++------------- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONParser.java b/src/main/java/apijson/framework/APIJSONParser.java index 36e4be8..dfc76cd 100755 --- a/src/main/java/apijson/framework/APIJSONParser.java +++ b/src/main/java/apijson/framework/APIJSONParser.java @@ -114,6 +114,10 @@ public M parseResponse(M request) { if (request.get(FORMAT) == null) { request.put(FORMAT, session.getAttribute(FORMAT)); } + if (request.get(VERSION) == null) { + request.put(VERSION, session.getAttribute(VERSION)); + } + if (request.get(DEFAULTS) == null) { M defaults = (M) session.getAttribute(DEFAULTS); Set> set = defaults == null ? null : defaults.entrySet(); @@ -183,17 +187,4 @@ public APIJSONObjectParser createObjectParser(@NotNull M request, Strin }.setMethod(getMethod()).setParser(this); } - - - @Override - public void onVerifyContent() throws Exception { - //补充全局缺省版本号 //可能在默认为1的前提下这个请求version就需要为0 requestObject.getIntValue(VERSION) <= 0) { - HttpSession session = getSession(); - if (session != null && requestObject.get(VERSION) == null) { - requestObject.put(VERSION, session.getAttribute(VERSION)); - } - super.onVerifyContent(); - } - - } diff --git a/src/main/java/apijson/framework/javax/APIJSONParser.java b/src/main/java/apijson/framework/javax/APIJSONParser.java index 50175f3..784e307 100755 --- a/src/main/java/apijson/framework/javax/APIJSONParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONParser.java @@ -114,6 +114,10 @@ public M parseResponse(M request) { if (request.get(FORMAT) == null) { request.put(FORMAT, session.getAttribute(FORMAT)); } + if (request.get(VERSION) == null) { + request.put(VERSION, session.getAttribute(VERSION)); + } + if (request.get(DEFAULTS) == null) { M defaults = (M) session.getAttribute(DEFAULTS); Set> set = defaults == null ? null : defaults.entrySet(); @@ -183,17 +187,4 @@ public APIJSONObjectParser createObjectParser(@NotNull M request, Strin }.setMethod(getMethod()).setParser(this); } - - - @Override - public void onVerifyContent() throws Exception { - //补充全局缺省版本号 //可能在默认为1的前提下这个请求version就需要为0 requestObject.getIntValue(VERSION) <= 0) { - HttpSession session = getSession(); - if (session != null && requestObject.get(VERSION) == null) { - requestObject.put(VERSION, session.getAttribute(VERSION)); - } - super.onVerifyContent(); - } - - } From f042b6ee75b97e6f43855c388188c36abf492ae5 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 20 Apr 2025 23:23:48 +0800 Subject: [PATCH 54/59] =?UTF-8?q?=E8=A7=A3=E5=86=B3=20Demo=20=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E6=8E=A5=E5=8F=A3=E8=B0=83=E7=94=A8=E6=8A=A5=E9=94=99?= =?UTF-8?q?=20parser.newSuccessResult=20=E5=8F=8A=20connectionMap.get=20?= =?UTF-8?q?=E6=8A=A5=E9=94=99=20NPE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apijson/framework/APIJSONController.java | 4 +- .../apijson/framework/APIJSONVerifier.java | 30 +++-- .../framework/javax/APIJSONController.java | 4 +- .../framework/javax/APIJSONVerifier.java | 119 +++++++++++------- 4 files changed, 102 insertions(+), 55 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONController.java b/src/main/java/apijson/framework/APIJSONController.java index 4526372..5809bd5 100755 --- a/src/main/java/apijson/framework/APIJSONController.java +++ b/src/main/java/apijson/framework/APIJSONController.java @@ -600,7 +600,7 @@ public String router(String method, String tag, Map params, Stri } if (parser.isNeedVerifyContent()) { - Verifier verifier = creator.createVerifier(); + Verifier verifier = parser.getVerifier(); //获取指定的JSON结构 <<<<<<<<<<<< Map target = parser.getStructure("Request", method.toUpperCase(), tag, version); @@ -610,7 +610,7 @@ public String router(String method, String tag, Map params, Stri } //M clone 浅拷贝没用,Structure.parse 会导致 structure 里面被清空,第二次从缓存里取到的就是 {} - verifier.verifyRequest(requestMethod, "", JSON.createJSONObject(target), rawReq, 0, null, null, creator); + verifier.verifyRequest(requestMethod, "", JSON.createJSONObject(target), rawReq, 0, null, null); } M apijsonReq = JSON.parseObject(apijson); diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index f6c9491..55b8efd 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -709,12 +709,12 @@ public static void test() throws Exception { * @throws Exception */ public static , L extends List> void testStructure() throws Exception { - SQLCreator creator = (SQLCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; + Parser parser = APIJSONApplication.createParser(); M request; try { request = JSON.parseObject("{\"Comment\":{\"userId\":0}}"); - Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, creator)); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, parser)); } catch (Throwable e) { if (e instanceof IllegalArgumentException == false || "POST请求,Comment 里面不能缺少 momentId 等[userId,momentId,content]内的任何字段!".equals(e.getMessage()) == false) { throw e; @@ -723,7 +723,7 @@ public static , L extends List, L extends List, L extends List, L extends List, L extends List, L extends List parser; + @Override + public Parser getParser() { + if (parser == null) { + parser = createParser(); + } + return parser; + } + + @Override + public APIJSONVerifier setParser(AbstractParser parser) { + this.parser = parser; + return this; + } @SuppressWarnings("unchecked") @NotNull diff --git a/src/main/java/apijson/framework/javax/APIJSONController.java b/src/main/java/apijson/framework/javax/APIJSONController.java index 195cceb..d2d8e7f 100755 --- a/src/main/java/apijson/framework/javax/APIJSONController.java +++ b/src/main/java/apijson/framework/javax/APIJSONController.java @@ -600,7 +600,7 @@ public String router(String method, String tag, Map params, Stri } if (parser.isNeedVerifyContent()) { - Verifier verifier = creator.createVerifier(); + Verifier verifier = parser.getVerifier(); //获取指定的JSON结构 <<<<<<<<<<<< Map target = parser.getStructure("Request", method.toUpperCase(), tag, version); @@ -610,7 +610,7 @@ public String router(String method, String tag, Map params, Stri } //M clone 浅拷贝没用,Structure.parse 会导致 structure 里面被清空,第二次从缓存里取到的就是 {} - verifier.verifyRequest(requestMethod, "", JSON.createJSONObject(target), rawReq, 0, null, null, creator); + verifier.verifyRequest(requestMethod, "", JSON.createJSONObject(target), rawReq, 0, null, null); } M apijsonReq = JSON.parseObject(apijson); diff --git a/src/main/java/apijson/framework/javax/APIJSONVerifier.java b/src/main/java/apijson/framework/javax/APIJSONVerifier.java index 32e65f2..36c335a 100755 --- a/src/main/java/apijson/framework/javax/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/javax/APIJSONVerifier.java @@ -14,19 +14,21 @@ package apijson.framework.javax; -import apijson.*; -import apijson.orm.JSONRequest; -import apijson.orm.*; -import javax.servlet.http.HttpSession; - -import java.rmi.ServerException; -import java.util.*; - import static apijson.JSON.*; import static apijson.JSONMap.KEY_ORDER; import static apijson.JSONMap.isTableKey; import static apijson.JSONRequest.KEY_COUNT; import static apijson.framework.javax.APIJSONConstant.*; +import static apijson.framework.javax.APIJSONConstant.METHODS; + +import java.rmi.ServerException; +import java.util.*; + +import apijson.*; +import apijson.orm.JSONRequest; +import javax.servlet.http.HttpSession; + +import apijson.orm.*; /**权限验证器 @@ -93,12 +95,12 @@ public static , L extends List> M init( public static , L extends List> M init( boolean shutdownWhenServerError, APIJSONCreator creator) throws ServerException { M result = JSON.createJSONObject(); - if (ENABLE_VERIFY_ROLE) { - result.put(ACCESS_, initAccess(shutdownWhenServerError, creator)); - } - if (ENABLE_VERIFY_CONTENT) { - result.put(REQUEST_, initRequest(shutdownWhenServerError, creator)); - } + if (ENABLE_VERIFY_ROLE) { + result.put(ACCESS_, initAccess(shutdownWhenServerError, creator)); + } + if (ENABLE_VERIFY_CONTENT) { + result.put(REQUEST_, initRequest(shutdownWhenServerError, creator)); + } return result; } @@ -148,7 +150,7 @@ public static , L extends List> M initA */ @SuppressWarnings("unchecked") public static , L extends List> M initAccess( - boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } @@ -161,12 +163,10 @@ public static , L extends List> M initA } M accessItem = JSON.createJSONObject(); accessItem.put(ACCESS_, access); + accessItem.put(apijson.JSONRequest.KEY_COUNT, 0); M request = JSON.createJSONObject(); - M ao = JSON.createJSONObject(); - ao.put(ACCESS_, accessItem); - ao.put(apijson.JSONRequest.KEY_COUNT, 0); - request.put(ACCESS_ + "[]", ao); + request.put(ACCESS_ + "[]", accessItem); M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { @@ -197,13 +197,35 @@ public static , L extends List> M initA } Map map = new HashMap<>(); - map.put(RequestMethod.GET, JSON.parseObject(getString(item, "get"), String[].class)); - map.put(RequestMethod.HEAD, JSON.parseObject(getString(item, "head"), String[].class)); - map.put(RequestMethod.GETS, JSON.parseObject(getString(item, "gets"), String[].class)); - map.put(RequestMethod.HEADS, JSON.parseObject(getString(item, "heads"), String[].class)); - map.put(RequestMethod.POST, JSON.parseObject(getString(item, "post"), String[].class)); - map.put(RequestMethod.PUT, JSON.parseObject(getString(item, "put"), String[].class)); - map.put(RequestMethod.DELETE, JSON.parseObject(getString(item, "delete"), String[].class)); + // fastjson2 不支持 + //map.put(RequestMethod.GET, JSON.parseObject(getString(item, "get"), String[].class)); + //map.put(RequestMethod.HEAD, JSON.parseObject(getString(item, "head"), String[].class)); + //map.put(RequestMethod.GETS, JSON.parseObject(getString(item, "gets"), String[].class)); + //map.put(RequestMethod.HEADS, JSON.parseObject(getString(item, "heads"), String[].class)); + //map.put(RequestMethod.POST, JSON.parseObject(getString(item, "post"), String[].class)); + //map.put(RequestMethod.PUT, JSON.parseObject(getString(item, "put"), String[].class)); + //map.put(RequestMethod.DELETE, JSON.parseObject(getString(item, "delete"), String[].class)); + + List getArr = parseArray(getString(item, "get"), String.class); + map.put(RequestMethod.GET, getArr == null ? null : getArr.toArray(new String[]{})); + + List headArr = parseArray(getString(item, "head"), String.class); + map.put(RequestMethod.HEAD, headArr == null ? null : headArr.toArray(new String[]{})); + + List getsArr = parseArray(getString(item, "gets"), String.class); + map.put(RequestMethod.GETS, getsArr == null ? null : getsArr.toArray(new String[]{})); + + List headsArr = parseArray(getString(item, "heads"), String.class); + map.put(RequestMethod.HEADS, headsArr == null ? null : headsArr.toArray(new String[]{})); + + List postArr = parseArray(getString(item, "post"), String.class); + map.put(RequestMethod.POST, postArr == null ? null : postArr.toArray(new String[]{})); + + List putArr = parseArray(getString(item, "put"), String.class); + map.put(RequestMethod.PUT, putArr == null ? null : putArr.toArray(new String[]{})); + + List deleteArr = parseArray(getString(item, "delete"), String.class); + map.put(RequestMethod.DELETE, deleteArr == null ? null : deleteArr.toArray(new String[]{})); String name = getString(item, "name"); String alias = getString(item, "alias"); @@ -217,8 +239,8 @@ public static , L extends List> M initA if (containNotDeletedValue == false && StringUtil.isEmpty(deletedValue, true)) { onServerError( "Access表 id = " + getString(item, "id") + " 对应的 " - + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " - + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" + + AbstractSQLConfig.KEY_DELETED_VALUE + " 的值不能为空!或者必须包含字段 " + + AbstractSQLConfig.KEY_NOT_DELETED_VALUE + " !" , shutdownWhenServerError ); } @@ -386,7 +408,7 @@ public static , L extends List> M initR */ @SuppressWarnings("unchecked") public static , L extends List> M initRequest( - boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } @@ -401,13 +423,10 @@ public static , L extends List> M initR M requestItem = JSON.createJSONObject(); requestItem.put(REQUEST_, requestTable); // 方便查找 - - M ro = JSON.createJSONObject(); - ro.put(REQUEST_, requestItem); - ro.put(KEY_COUNT, 0); + requestItem.put(KEY_COUNT, 0); M request = JSON.createJSONObject(); - request.put(REQUEST_ + "[]", ro); + request.put(REQUEST_ + "[]", requestItem); M response = creator.createParser().setMethod(RequestMethod.GET).setNeedVerify(false).parseResponse(request); if (JSONResponse.isSuccess(response) == false) { @@ -548,7 +567,7 @@ public static , L extends List> M initD */ @SuppressWarnings("unchecked") public static , L extends List> M initDocument( - boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { + boolean shutdownWhenServerError, APIJSONCreator creator, M table) throws ServerException { if (creator == null) { creator = (APIJSONCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; } @@ -690,12 +709,12 @@ public static void test() throws Exception { * @throws Exception */ public static , L extends List> void testStructure() throws Exception { - SQLCreator creator = (SQLCreator) APIJSONApplication.DEFAULT_APIJSON_CREATOR; + Parser parser = APIJSONApplication.createParser(); M request; try { request = JSON.parseObject("{\"Comment\":{\"userId\":0}}"); - Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, creator)); + Log.d(TAG, "test verifyRequest = " + AbstractVerifier.verifyRequest(RequestMethod.POST, "", JSON.parseObject(requestConfig), request, parser)); } catch (Throwable e) { if (e instanceof IllegalArgumentException == false || "POST请求,Comment 里面不能缺少 momentId 等[userId,momentId,content]内的任何字段!".equals(e.getMessage()) == false) { throw e; @@ -704,7 +723,7 @@ public static , L extends List, L extends List, L extends List, L extends List, L extends List, L extends List parser; + @Override + public Parser getParser() { + if (parser == null) { + parser = createParser(); + } + return parser; + } + + @Override + public APIJSONVerifier setParser(AbstractParser parser) { + this.parser = parser; + return this; + } @SuppressWarnings("unchecked") @NotNull From f04ca1d970fa1721238c3407c26f14755ff6b984 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 20 Apr 2025 23:42:56 +0800 Subject: [PATCH 55/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=208.0.0.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 46ef922..76531c4 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ com.github.Tencent APIJSON - 8.0.0.2 + 8.0.0.3 From 834e3803c8f7dcbe8f0073e8665da22f7db15b51 Mon Sep 17 00:00:00 2001 From: TommyLemon <1184482681@qq.com> Date: Mon, 21 Apr 2025 00:28:50 +0800 Subject: [PATCH 56/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=208.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 76531c4..a521cd1 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ com.github.Tencent APIJSON - 8.0.0.3 + 8.0.0 From 91401f2855d1b424f713ea65fdf531e39689b187 Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Mon, 21 Apr 2025 01:02:10 +0800 Subject: [PATCH 57/59] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E6=9C=80=E5=A4=9A=E5=8F=AA=E8=83=BD=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E9=BB=98=E8=AE=A4=E6=AF=8F=E9=A1=B5=E6=95=B0=E9=87=8F?= =?UTF-8?q?=2010=20=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apijson/framework/APIJSONFunctionParser.java | 13 +++++++------ .../framework/javax/APIJSONFunctionParser.java | 13 +++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/apijson/framework/APIJSONFunctionParser.java b/src/main/java/apijson/framework/APIJSONFunctionParser.java index 6da1a7d..b4781d1 100755 --- a/src/main/java/apijson/framework/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/APIJSONFunctionParser.java @@ -26,6 +26,7 @@ import java.util.*; import static apijson.JSON.*; +import static apijson.JSONRequest.KEY_COUNT; import static apijson.RequestMethod.*; import static apijson.framework.APIJSONConstant.FUNCTION_; import static apijson.framework.APIJSONConstant.SCRIPT_; @@ -179,8 +180,8 @@ public static , L extends List> M init( item.put(SCRIPT_, script); } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + item.put(KEY_COUNT, 0); request.put("[]", item); - request.put(apijson.JSONRequest.KEY_COUNT, 0); } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -191,7 +192,7 @@ public static , L extends List> M init( //初始化默认脚本引擎,避免增量 if (isAll || SCRIPT_EXECUTOR_MAP.get("js") == null) { - ScriptExecutor javaScriptExecutor = new JavaScriptExecutor(); + ScriptExecutor javaScriptExecutor = new JavaScriptExecutor<>(); javaScriptExecutor.init(); SCRIPT_EXECUTOR_MAP.put("js", javaScriptExecutor); SCRIPT_EXECUTOR_MAP.put("JavaScript", javaScriptExecutor); @@ -199,7 +200,7 @@ public static , L extends List> M init( } Map scriptMap = new HashMap<>(); - L scriptList = (L) JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); + L scriptList = JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); if (scriptList != null && ! scriptList.isEmpty()) { //if (isAll) { // SCRIPT_MAP = new LinkedHashMap<>(); @@ -207,8 +208,8 @@ public static , L extends List> M init( Map newMap = new LinkedHashMap<>(); for (int i = 0; i < scriptList.size(); i++) { - M item = (M) JSON.get(scriptList, i); - item = item == null ? null : (M) JSON.get(item, SCRIPT_); + M item = JSON.get(scriptList, i); + item = item == null ? null : JSON.get(item, SCRIPT_); if (item == null) { // 关联查不到很正常 continue; } @@ -267,7 +268,7 @@ public static , L extends List> M init( // } //脚本语言执行 if (SCRIPT_EXECUTOR_MAP.containsKey(language)){ - ScriptExecutor scriptExecutor = SCRIPT_EXECUTOR_MAP.get(language); + ScriptExecutor scriptExecutor = (ScriptExecutor) SCRIPT_EXECUTOR_MAP.get(language); M script = scriptMap.get(name); scriptExecutor.load(name, getString(script, "script")); } diff --git a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java index 7df3f9e..663b0a0 100644 --- a/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java +++ b/src/main/java/apijson/framework/javax/APIJSONFunctionParser.java @@ -26,6 +26,7 @@ import java.util.*; import static apijson.JSON.*; +import static apijson.JSONRequest.KEY_COUNT; import static apijson.RequestMethod.*; import static apijson.framework.javax.APIJSONConstant.FUNCTION_; import static apijson.framework.javax.APIJSONConstant.SCRIPT_; @@ -179,8 +180,8 @@ public static , L extends List> M init( item.put(SCRIPT_, script); } // Script >>>>>>>>>>>>>>>>>>>>>>>>>>>>> + item.put(KEY_COUNT, 0); request.put("[]", item); - request.put(apijson.JSONRequest.KEY_COUNT, 0); } // [] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> @@ -191,7 +192,7 @@ public static , L extends List> M init( //初始化默认脚本引擎,避免增量 if (isAll || SCRIPT_EXECUTOR_MAP.get("js") == null) { - ScriptExecutor javaScriptExecutor = new JavaScriptExecutor(); + ScriptExecutor javaScriptExecutor = new JavaScriptExecutor<>(); javaScriptExecutor.init(); SCRIPT_EXECUTOR_MAP.put("js", javaScriptExecutor); SCRIPT_EXECUTOR_MAP.put("JavaScript", javaScriptExecutor); @@ -199,7 +200,7 @@ public static , L extends List> M init( } Map scriptMap = new HashMap<>(); - L scriptList = (L) JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); + L scriptList = JSON.get(response, "[]"); // response.getJSONArray(SCRIPT_ + "[]"); if (scriptList != null && ! scriptList.isEmpty()) { //if (isAll) { // SCRIPT_MAP = new LinkedHashMap<>(); @@ -207,8 +208,8 @@ public static , L extends List> M init( Map newMap = new LinkedHashMap<>(); for (int i = 0; i < scriptList.size(); i++) { - M item = (M) JSON.get(scriptList, i); - item = item == null ? null : (M) JSON.get(item, SCRIPT_); + M item = JSON.get(scriptList, i); + item = item == null ? null : JSON.get(item, SCRIPT_); if (item == null) { // 关联查不到很正常 continue; } @@ -267,7 +268,7 @@ public static , L extends List> M init( // } //脚本语言执行 if (SCRIPT_EXECUTOR_MAP.containsKey(language)){ - ScriptExecutor scriptExecutor = SCRIPT_EXECUTOR_MAP.get(language); + ScriptExecutor scriptExecutor = (ScriptExecutor) SCRIPT_EXECUTOR_MAP.get(language); M script = scriptMap.get(name); scriptExecutor.load(name, getString(script, "script")); } From 8f88df2504b147791e0d7c59bf093705b7d6d90e Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Mon, 21 Apr 2025 01:05:05 +0800 Subject: [PATCH 58/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E8=87=AA=E8=BA=AB?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E4=B8=BA=207.2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- src/main/java/apijson/framework/APIJSONVerifier.java | 2 +- src/main/java/apijson/framework/javax/APIJSONVerifier.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index a521cd1..b44c6e8 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 7.2.0 + 7.2.1 jar APIJSONFramework diff --git a/src/main/java/apijson/framework/APIJSONVerifier.java b/src/main/java/apijson/framework/APIJSONVerifier.java index 55b8efd..b0fcc11 100755 --- a/src/main/java/apijson/framework/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/APIJSONVerifier.java @@ -163,7 +163,7 @@ public static , L extends List> M initA } M accessItem = JSON.createJSONObject(); accessItem.put(ACCESS_, access); - accessItem.put(apijson.JSONRequest.KEY_COUNT, 0); + accessItem.put(KEY_COUNT, 0); M request = JSON.createJSONObject(); request.put(ACCESS_ + "[]", accessItem); diff --git a/src/main/java/apijson/framework/javax/APIJSONVerifier.java b/src/main/java/apijson/framework/javax/APIJSONVerifier.java index 36c335a..db47db2 100755 --- a/src/main/java/apijson/framework/javax/APIJSONVerifier.java +++ b/src/main/java/apijson/framework/javax/APIJSONVerifier.java @@ -163,7 +163,7 @@ public static , L extends List> M initA } M accessItem = JSON.createJSONObject(); accessItem.put(ACCESS_, access); - accessItem.put(apijson.JSONRequest.KEY_COUNT, 0); + accessItem.put(KEY_COUNT, 0); M request = JSON.createJSONObject(); request.put(ACCESS_ + "[]", accessItem); From e114485e251224afdb754ab9a63f540769c1cc6f Mon Sep 17 00:00:00 2001 From: TommyLemon Date: Sun, 15 Jun 2025 01:44:49 +0800 Subject: [PATCH 59/59] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20APIJSON=208.0.2?= =?UTF-8?q?=EF=BC=8C=E8=87=AA=E8=BA=AB=207.2.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index b44c6e8..32eb7cc 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ apijson.framework apijson-framework - 7.2.1 + 7.2.2 jar APIJSONFramework @@ -39,7 +39,7 @@ com.github.Tencent APIJSON - 8.0.0 + 8.0.2

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 HgM<4YT#1Xx literal 0 HcmV?d00001 diff --git a/libs/unitauto-jar-2.9.0.jar b/libs/unitauto-jar-3.0.5.jar similarity index 58% rename from libs/unitauto-jar-2.9.0.jar rename to libs/unitauto-jar-3.0.5.jar index b7315fe01a6eb230e052bd118e0579bc49de0a9f..346459ce4e227beb3d9476309c2252f471e8fea2 100644 GIT binary patch delta 716 zcmZ3cwo;8Rz?+$civa{U^D4t9@+ot00BMzEf8B|e?V{7%_QdRoVL&JXNlv_~%mSwW zsDtUr>WoHU#^zYYcN`FwKi3{c7LbXP`FS)U3>zLZ2&0V0nUf7D6{wb6{(15t9#58> zOIlr%`FVp_;@R&Uo}9`XSMTt-@xkX_$4k@1_bYte?Em*waI;+@) z^_P7ObEbT@<#k#ZwIexP=~_T`w)5A*D4(vGlQug>Z@E?T$KSS2t$D%xRk`!O@AiR0$93VNxk$5 z{=t6i5cg!KJ@y~&hkExl>NY>^>QA5emlYO49N<{2l#E`TGMR}#BF;}I@WW~SU<0F2 z1Cwn=8#fr4gmdr~h8Y+c7(LVS*3~+9=KN;UYsMFhpL*$^(%1dqvr+f#X&p};-ILc( zd+9v#($PBUeEa(AA5cPtV5XK%sHwc4GC>SY;BngFbg3=PiUk8LlnLhAM=H|DY NEFdhvwvr!|cmd}e85sZo delta 750 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