Skip to content

Commit 5419338

Browse files
committed
Server:将 APIJSONboot 抽取为 APIJSONFramework 和新的 APIJSONBoot;新增简单 Demo,叫 APIJSONBootTest
1 parent a6fe0a6 commit 5419338

53 files changed

Lines changed: 1969 additions & 551 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

APIJSON-Java-Server/APIJSONBoot/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
44
<modelVersion>4.0.0</modelVersion>
55

6-
<groupId>apijson.demo.server</groupId>
6+
<groupId>apijson.boot</groupId>
77
<artifactId>apijson-boot</artifactId>
88
<version>4.0.0</version>
99
<packaging>jar</packaging>
@@ -63,11 +63,11 @@
6363
<artifactId>jtds</artifactId>
6464
<version>1.3.1</version>
6565
</dependency>
66-
<dependency>
66+
<!-- <dependency>
6767
<groupId>com.github.APIJSON</groupId>
6868
<artifactId>apijson-orm</artifactId>
6969
<version>LATEST</version>
70-
</dependency>
70+
</dependency> -->
7171
<!-- 没找到合适且稳定的 Oracle 的 JDBC Maven 依赖,已在 libs 目录放了对应的 jar 包来替代 -->
7272

7373
</dependencies>

APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/server/APIJSONApplication.java renamed to APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/boot/DemoApplication.java

Lines changed: 51 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
See the License for the specific language governing permissions and
1313
limitations under the License.*/
1414

15-
package apijson.demo.server;
15+
package apijson.boot;
16+
17+
import java.util.Map;
18+
import java.util.regex.Pattern;
1619

1720
import org.springframework.boot.SpringApplication;
1821
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -25,6 +28,15 @@
2528
import org.springframework.web.filter.CorsFilter;
2629

2730
import apijson.Log;
31+
import apijson.StringUtil;
32+
import apijson.framework.APIJSONApplication;
33+
import apijson.framework.APIJSONCreator;
34+
import apijson.server.FunctionParser;
35+
import apijson.server.Parser;
36+
import apijson.server.SQLConfig;
37+
import apijson.server.SQLExecutor;
38+
import apijson.server.Structure;
39+
import apijson.server.Verifier;
2840

2941

3042
/**SpringBootApplication
@@ -33,66 +45,48 @@
3345
*/
3446
@Configuration
3547
@SpringBootApplication
36-
public class APIJSONApplication {
48+
public class DemoApplication {
49+
50+
static {
51+
Map<String, Pattern> COMPILE_MAP = Structure.COMPILE_MAP;
52+
COMPILE_MAP.put("PHONE", StringUtil.PATTERN_PHONE);
53+
COMPILE_MAP.put("EMAIL", StringUtil.PATTERN_EMAIL);
54+
COMPILE_MAP.put("ID_CARD", StringUtil.PATTERN_ID_CARD);
55+
56+
APIJSONApplication.DEFAULT_APIJSON_CREATOR = new APIJSONCreator() {
57+
58+
@Override
59+
public Parser<Long> createParser() {
60+
return new DemoParser();
61+
}
62+
@Override
63+
public FunctionParser createFunctionParser() {
64+
return new DemoFunctionParser();
65+
}
66+
67+
@Override
68+
public Verifier<Long> createVerifier() {
69+
return new DemoVerifier();
70+
}
71+
72+
@Override
73+
public SQLConfig createSQLConfig() {
74+
return new DemoSQLConfig();
75+
}
76+
@Override
77+
public SQLExecutor createSQLExecutor() {
78+
return new DemoSQLExecutor();
79+
}
80+
81+
};
82+
}
3783

84+
3885
public static void main(String[] args) throws Exception {
39-
SpringApplication.run(APIJSONApplication.class, args);
86+
SpringApplication.run(DemoApplication.class, args);
4087

4188
Log.DEBUG = true; //上线生产环境前改为 false,可不输出 APIJSONORM 的日志 以及 SQLException 的原始(敏感)信息
42-
43-
System.out.println("\n\n\n\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON 开始启动 >>>>>>>>>>>>>>>>>>>>>>>>\n");
44-
45-
System.out.println("\n\n\n开始初始化:远程函数配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
46-
try {
47-
DemoFunction.init(true);
48-
}
49-
catch (Exception e) {
50-
e.printStackTrace();
51-
}
52-
System.out.println("\n完成初始化:远程函数配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
53-
54-
System.out.println("开始测试:远程函数 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
55-
try {
56-
DemoFunction.test();
57-
}
58-
catch (Exception e) {
59-
e.printStackTrace();
60-
}
61-
System.out.println("\n完成测试:远程函数 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
62-
63-
64-
65-
System.out.println("\n\n\n开始初始化:请求校验配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
66-
try {
67-
StructureUtil.init(true);
68-
}
69-
catch (Exception e) {
70-
e.printStackTrace();
71-
}
72-
System.out.println("\n完成初始化:请求校验配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
73-
74-
System.out.println("\n\n\n开始测试:请求校验 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
75-
try {
76-
StructureUtil.test();
77-
}
78-
catch (Exception e) {
79-
e.printStackTrace();
80-
}
81-
System.out.println("\n完成测试:请求校验 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
82-
83-
84-
85-
System.out.println("\n\n\n开始初始化:权限校验配置 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
86-
try {
87-
DemoVerifier.init(true);
88-
}
89-
catch (Exception e) {
90-
e.printStackTrace();
91-
}
92-
System.out.println("\n完成初始化:权限校验配置 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
93-
94-
95-
System.out.println("\n\n<<<<<<<<<<<<<<<<<<<<<<<<< APIJSON 启动完成,试试调用自动化 API 吧 ^_^ >>>>>>>>>>>>>>>>>>>>>>>>\n");
89+
APIJSONApplication.init(true);
9690
}
9791

9892
//SpringBoot 2.x 自定义端口方式

APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/demo/server/Controller.java renamed to APIJSON-Java-Server/APIJSONBoot/src/main/java/apijson/boot/DemoController.java

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
See the License for the specific language governing permissions and
1313
limitations under the License.*/
1414

15-
package apijson.demo.server;
15+
package apijson.boot;
1616

1717
import static apijson.RequestMethod.DELETE;
1818
import static apijson.RequestMethod.GET;
@@ -21,6 +21,14 @@
2121
import static apijson.RequestMethod.HEADS;
2222
import static apijson.RequestMethod.POST;
2323
import static apijson.RequestMethod.PUT;
24+
import static apijson.framework.APIJSONConstant.ACCESS_;
25+
import static apijson.framework.APIJSONConstant.COUNT;
26+
import static apijson.framework.APIJSONConstant.FORMAT;
27+
import static apijson.framework.APIJSONConstant.FUNCTION_;
28+
import static apijson.framework.APIJSONConstant.ID;
29+
import static apijson.framework.APIJSONConstant.REQUEST_;
30+
import static apijson.framework.APIJSONConstant.USER_ID;
31+
import static apijson.framework.APIJSONConstant.VERSION;
2432

2533
import java.net.URLDecoder;
2634
import java.rmi.ServerException;
@@ -61,18 +69,17 @@
6169
import apijson.Log;
6270
import apijson.RequestMethod;
6371
import apijson.StringUtil;
64-
import apijson.demo.server.model.BaseModel;
65-
import apijson.demo.server.model.Privacy;
66-
import apijson.demo.server.model.User;
67-
import apijson.demo.server.model.Verify;
72+
import apijson.boot.model.Privacy;
73+
import apijson.boot.model.User;
74+
import apijson.boot.model.Verify;
75+
import apijson.framework.APIJSONController;
76+
import apijson.framework.BaseModel;
77+
import apijson.framework.StructureUtil;
6878
import apijson.server.JSONRequest;
6979
import apijson.server.exception.ConditionErrorException;
7080
import apijson.server.exception.ConflictException;
7181
import apijson.server.exception.NotExistException;
7282
import apijson.server.exception.OutOfRangeException;
73-
import apijson.server.model.Access;
74-
import apijson.server.model.Function;
75-
import apijson.server.model.Request;
7683

7784

7885
/**request controller
@@ -85,8 +92,8 @@
8592
@Service
8693
@RestController
8794
@RequestMapping("")
88-
public class Controller {
89-
private static final String TAG = "Controller";
95+
public class DemoController extends APIJSONController {
96+
private static final String TAG = "DemoController";
9097

9198
//通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
9299

@@ -217,32 +224,19 @@ public String openHead(@PathVariable String request, HttpSession session) {
217224

218225

219226

220-
public static final String FUNCTION_;
221-
public static final String REQUEST_;
222-
public static final String ACCESS_;
223-
227+
224228
public static final String USER_;
225229
public static final String PRIVACY_;
226230
public static final String VERIFY_; //加下划线后缀是为了避免 Verify 和 verify 都叫VERIFY,分不清
227231
static {
228-
FUNCTION_ = Function.class.getSimpleName();
229-
REQUEST_ = Request.class.getSimpleName();
230-
ACCESS_ = Access.class.getSimpleName();
231-
232232
USER_ = User.class.getSimpleName();
233233
PRIVACY_ = Privacy.class.getSimpleName();
234234
VERIFY_ = Verify.class.getSimpleName();
235235
}
236236

237-
public static final String VERSION = JSONRequest.KEY_VERSION;
238-
public static final String FORMAT = JSONRequest.KEY_FORMAT;
239-
public static final String COUNT = JSONResponse.KEY_COUNT;
240-
public static final String TOTAL = JSONResponse.KEY_TOTAL;
237+
241238

242-
public static final String ID = "id";
243-
public static final String USER_ID = "userId";
244239
public static final String CURRENT_USER_ID = "currentUserId";
245-
246240
public static final String NAME = "name";
247241
public static final String PHONE = "phone";
248242
public static final String PASSWORD = "password";
@@ -268,6 +262,7 @@ public String openHead(@PathVariable String request, HttpSession session) {
268262
* </pre>
269263
*/
270264
@PostMapping("reload")
265+
@Override
271266
public JSONObject reload(@RequestBody String request) {
272267
JSONObject requestObject = null;
273268
String type;
@@ -294,7 +289,7 @@ public JSONObject reload(@RequestBody String request) {
294289

295290
if (reloadAll || "FUNCTION".equals(type)) {
296291
try {
297-
result.put(FUNCTION_, DemoFunction.init());
292+
result.put(FUNCTION_, DemoFunctionParser.init());
298293
} catch (ServerException e) {
299294
e.printStackTrace();
300295
result.put(FUNCTION_, DemoParser.newErrorResult(e));
@@ -593,16 +588,14 @@ public JSONObject login(@RequestBody String request, HttpSession session) {
593588
}
594589

595590
//登录状态保存至session
591+
super.login(session, user, version, format, defaults);
596592
session.setAttribute(USER_ID, userId); //用户id
597593
session.setAttribute(TYPE, isPassword ? LOGIN_TYPE_PASSWORD : LOGIN_TYPE_VERIFY); //登录方式
598594
session.setAttribute(USER_, user); //用户
599595
session.setAttribute(PRIVACY_, privacy); //用户隐私信息
600-
session.setAttribute(VERSION, version); //全局默认版本号
601-
session.setAttribute(FORMAT, format); //全局默认格式化配置
602596
session.setAttribute(REMEMBER, remember); //是否记住登录
603-
session.setAttribute(DEFAULTS, defaults); //给每个请求JSON最外层加的字段
604597
session.setMaxInactiveInterval(60*60*24*(remember ? 7 : 1)); //设置session过期时间
605-
598+
606599
response.put(REMEMBER, remember);
607600
response.put(DEFAULTS, defaults);
608601
return response;
@@ -613,12 +606,13 @@ public JSONObject login(@RequestBody String request, HttpSession session) {
613606
* @return
614607
*/
615608
@PostMapping("logout")
609+
@Override
616610
public JSONObject logout(HttpSession session) {
617611
long userId;
618612
try {
619613
userId = DemoVerifier.getVisitorId(session);//必须在session.invalidate();前!
620614
Log.d(TAG, "logout userId = " + userId + "; session.getId() = " + (session == null ? null : session.getId()));
621-
session.invalidate();
615+
super.logout(session);
622616
} catch (Exception e) {
623617
return DemoParser.newErrorResult(e);
624618
}

0 commit comments

Comments
 (0)