Skip to content

Commit 083a59c

Browse files
Merge pull request #10 from Talexs/develop
Develop
2 parents 95a1b72 + 94e58ec commit 083a59c

13 files changed

Lines changed: 201 additions & 166 deletions

File tree

src/main/java/com/talexframe/frame/core/modules/application/TAppManager.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@
1212
import lombok.Getter;
1313
import lombok.SneakyThrows;
1414

15+
import java.lang.annotation.Annotation;
1516
import java.lang.reflect.Field;
17+
import java.lang.reflect.Method;
18+
import java.lang.reflect.ParameterizedType;
19+
import java.util.ArrayList;
20+
import java.util.List;
1621
import java.util.concurrent.ConcurrentHashMap;
1722
import java.util.concurrent.ConcurrentMap;
1823

@@ -138,4 +143,39 @@ public boolean unRegisterController(WebPlugin plugin, TApp controller) {
138143

139144
}
140145

146+
public static class TAppAnnoGetter<T extends Annotation> {
147+
148+
@SuppressWarnings( "unchecked" )
149+
private Class<T> templateClass = (Class<T>) ( (ParameterizedType) this.getClass().getGenericSuperclass() ).getActualTypeArguments()[0];
150+
151+
public TAppAnnoGetter() {
152+
153+
154+
155+
}
156+
157+
public List<T> getAnnos() {
158+
159+
List<T> list = new ArrayList<>();
160+
161+
manager.controllers.keySet().forEach((cls) -> {
162+
163+
for( Method method : cls.getMethods() ) {
164+
165+
if( method.isAnnotationPresent(templateClass) ) {
166+
167+
list.add(method.getAnnotation(templateClass));
168+
169+
}
170+
171+
}
172+
173+
});
174+
175+
return list;
176+
177+
}
178+
179+
}
180+
141181
}

src/main/java/com/talexframe/frame/core/modules/network/connection/RequestAnalyser.java

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -97,59 +97,58 @@ private void process() {
9797

9898
if( !could.get() ) return;
9999

100-
log.debug("[解析层] # -- CLASS -- 开始执行接收器: " + addon.getClass().getName());
100+
// log.debug("[解析层] # -- CLASS -- 开始执行接收器: " + addon.getClass().getName());
101101

102102
could.set(addon.onPreCheckAppReceiver(reqReceiver, wr));
103103

104-
log.debug("[解析层] # -- CLASS -- 接收器执行结果: " + could.get());
104+
// log.debug("[解析层] # -- CLASS -- 接收器执行结果: " + could.get());
105105

106106
});
107107

108108
if( !could.get() ) return;
109109

110-
if( wr.getResponse().isCommitted() ) return;
110+
Collection<ReceiverAddon> receiverAddons = ReceiverAddonAdapter.getReceiverAddons(ReceiverAddon.ReceiverAddonType.METHOD_APP);
111111

112-
Collection<ReceiverAddon> receiverAddons = ReceiverAddonAdapter.getReceiverAddons(ReceiverAddon.ReceiverAddonType.METHOD_APP);
112+
receiverAddons.forEach((addon) -> {
113113

114-
receiverAddons.forEach((addon) -> {
115-
116-
if( !could.get() ) return;
114+
if( !could.get() ) return;
117115

118-
log.debug("[解析层] # -- METHOD -- 开始执行接收器: " + addon.getClass().getName());
116+
// log.debug("[解析层] # -- METHOD -- 开始执行接收器: " + addon.getClass().getName());
119117

120-
could.set(addon.onPreInvokeMethod(subReqReceiver, wr));
118+
could.set(addon.onPreInvokeMethod(subReqReceiver, wr));
121119

122-
log.debug("[解析层] # -- METHOD -- 接收器执行结果: " + could.get());
120+
// log.debug("[解析层] # -- METHOD -- 接收器执行结果: " + could.get());
123121

124-
});
122+
});
125123

126-
log.debug("[解析层] # -- METHOD -- 总体执行结果: " + could.get());
124+
log.debug("[解析层] # -- METHOD -- 总体执行结果: " + could.get());
127125

128-
if( !could.get() ) return;
126+
if( !could.get() ) return;
129127

130-
log.debug("[解析层] # -- METHOD -- >>> 进入 (onRequest) | {}", could.get());
128+
log.debug("[解析层] # -- METHOD -- >>> 进入 (onRequest) | {}", could.get());
131129

132-
Object obj = subReqReceiver.onRequest(reqReceiver, subReqReceiver, wr, time);
130+
Object obj = subReqReceiver.onRequest(reqReceiver, subReqReceiver, wr, time);
133131

134-
log.debug("[解析层] # -- onRequest -- 执行结果: " + JSONUtil.toJsonStr(obj));
132+
log.debug("[解析层] # -- onRequest -- 执行结果: " + JSONUtil.toJsonStr(obj));
135133

136-
receiverAddons.forEach((addon) -> addon.onPostInvokeMethod(subReqReceiver, wr, obj));
134+
final Object finalObj = obj;
135+
receiverAddons.forEach((addon) -> addon.onPostInvokeMethod(subReqReceiver, wr, finalObj));
137136

138-
log.debug("[解析层] # -- METHOD -- 执行结果完毕!");
137+
log.debug("[解析层] # -- METHOD -- 执行结果完毕!");
139138

140-
if ( obj != null ) {
139+
if ( obj != null ) {
141140

142-
String tStr = JSONUtil.toJsonStr(obj);
141+
String tStr = JSONUtil.toJsonStr(obj);
143142

144-
wr.returnData(tStr);
143+
wr.returnData(tStr);
145144

146-
log.info("[应用层] ## OK Return: " + tStr + " ##");
145+
log.info("[应用层] ## OK Return: " + tStr + " ##");
147146

148-
}
147+
}
149148

150149
clsReceiverAddons.forEach((addon) -> addon.onPostCheckAppReceiver(reqReceiver, wr));
151150

152-
log.debug("[解析层] # -- CLASS -- 接收器执行结果完毕!");
151+
// log.debug("[解析层] # -- CLASS -- 接收器执行结果完毕!");
153152

154153
log.debug("-------------------------------------------");
155154

src/main/java/com/talexframe/frame/core/modules/network/connection/RequestConnector.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.talexframe.frame.core.modules.application.TAppManager;
66
import com.talexframe.frame.core.modules.event.events.request.RequestCannotGetTokenEvent;
77
import com.talexframe.frame.core.modules.event.events.request.RequestCorsTryEvent;
8+
import com.talexframe.frame.core.pojo.enums.FrameStatus;
89
import com.talexframe.frame.core.pojo.wrapper.ResultData;
910
import com.talexframe.frame.core.pojo.wrapper.WrappedResponse;
1011
import com.talexframe.frame.core.talex.TFrame;
@@ -39,6 +40,8 @@ public RequestConnector(WrappedResponse wr) {
3940

4041
this.processLimiter();
4142

43+
this.processFrameStatus();
44+
4245
}
4346

4447
/**
@@ -74,7 +77,21 @@ private void processLimiter() {
7477

7578
globalLimiter.acquire();
7679

77-
this.headerProcessor();
80+
}
81+
82+
private void processFrameStatus() {
83+
84+
if( tframe.getFrameStatus() != FrameStatus.RUNNING ) {
85+
86+
wr.returnDataByFailed(ResultData.ResultEnum.SERVER_ERROR, "服务器维护");
87+
88+
log.warn("[连接层] 请求已被拦截 - 服务器状态异常 | {}", tframe.getFrameStatus().getMsg());
89+
90+
} else {
91+
92+
this.headerProcessor();
93+
94+
}
7895

7996
}
8097

src/main/java/com/talexframe/frame/core/modules/network/connection/app/addon/cache/redis/ReceiverCacheRedisAddon.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,7 @@ private String getRedisCacheKey( TRedisCache tRedisCache, String url, List<Objec
194194

195195
key = url;
196196

197-
}
198-
199-
if ( key.startsWith("#url") ) {
197+
} else if ( key.startsWith("#url") ) {
200198

201199
int index = Integer.parseInt(key.substring(5, 6));
202200

src/main/java/com/talexframe/frame/core/modules/network/connection/app/subapp/MethodAppReceiver.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.talexframe.frame.core.modules.network.connection.IRequestReceiver;
66
import com.talexframe.frame.core.modules.network.connection.TRequest;
77
import com.talexframe.frame.core.modules.network.connection.app.ClassAppReceiver;
8+
import com.talexframe.frame.core.pojo.wrapper.ResultData;
89
import com.talexframe.frame.core.pojo.wrapper.WrappedResponse;
910
import com.talexframe.frame.core.talex.FrameCreator;
1011
import lombok.Getter;
@@ -79,6 +80,12 @@ public Object onRequest(ClassAppReceiver clzAppReceiver, MethodAppReceiver metho
7980
log.info("[应用层] 应用执行完毕!");
8081
log.info("[应用层] ------------------------");
8182

83+
if ( !(obj instanceof ResultData ) ) {
84+
85+
obj = ResultData.SUCCESS(obj);
86+
87+
}
88+
8289
return obj;
8390

8491
} catch (Exception e) {
Lines changed: 62 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,62 @@
1-
package com.talexframe.frame.core.modules.network.interceptor;
2-
3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import com.talexframe.frame.core.pojo.annotations.WrapperResponse;
5-
import com.talexframe.frame.core.pojo.wrapper.ResultData;
6-
import lombok.SneakyThrows;
7-
import org.springframework.core.MethodParameter;
8-
import org.springframework.http.MediaType;
9-
import org.springframework.http.converter.HttpMessageConverter;
10-
import org.springframework.http.server.ServerHttpRequest;
11-
import org.springframework.http.server.ServerHttpResponse;
12-
import org.springframework.web.bind.annotation.RestControllerAdvice;
13-
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
14-
15-
import java.util.Objects;
16-
17-
/**
18-
* <br /> {@link com.talexframe.frame.interceptor Package }
19-
*
20-
* @author TalexDreamSoul
21-
* @date 2022/1/16 10:33 <br /> Project: TalexFrame <br />
22-
*/
23-
@RestControllerAdvice
24-
public class ResponseAdviceInterceptor implements ResponseBodyAdvice<Object> {
25-
26-
private final ObjectMapper objectMapper;
27-
28-
public ResponseAdviceInterceptor(ObjectMapper objectMapper) {this.objectMapper = objectMapper;}
29-
30-
@Override
31-
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
32-
33-
WrapperResponse wr = converterType.getAnnotation(WrapperResponse.class);
34-
35-
if ( wr != null && !wr.value() ) {
36-
return false;
37-
}
38-
39-
wr = Objects.requireNonNull(returnType.getMethod()).getAnnotation(WrapperResponse.class);
40-
41-
return wr == null || wr.value();
42-
43-
}
44-
45-
@SneakyThrows
46-
@Override
47-
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
48-
49-
if ( body instanceof ResultData ) {
50-
return body;
51-
}
52-
53-
if ( body instanceof String ) {
54-
55-
return objectMapper.writeValueAsString(ResultData.SUCCESS(body));
56-
57-
}
58-
59-
return ResultData.SUCCESS(body);
60-
61-
}
62-
63-
}
1+
// package com.talexframe.frame.core.modules.network.interceptor;
2+
//
3+
// import com.fasterxml.jackson.databind.ObjectMapper;
4+
// import com.talexframe.frame.core.pojo.wrapper.ResultData;
5+
// import lombok.SneakyThrows;
6+
// import org.springframework.core.MethodParameter;
7+
// import org.springframework.http.MediaType;
8+
// import org.springframework.http.converter.HttpMessageConverter;
9+
// import org.springframework.http.server.ServerHttpRequest;
10+
// import org.springframework.http.server.ServerHttpResponse;
11+
// import org.springframework.web.bind.annotation.RestControllerAdvice;
12+
// import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
13+
//
14+
// import java.util.Objects;
15+
//
16+
// /**
17+
// * <br /> {@link com.talexframe.frame.interceptor Package }
18+
// *
19+
// * @author TalexDreamSoul
20+
// * @date 2022/1/16 10:33 <br /> Project: TalexFrame <br />
21+
// */
22+
// @RestControllerAdvice
23+
// public class ResponseAdviceInterceptor implements ResponseBodyAdvice<Object> {
24+
//
25+
// private final ObjectMapper objectMapper;
26+
//
27+
// public ResponseAdviceInterceptor(ObjectMapper objectMapper) {this.objectMapper = objectMapper;}
28+
//
29+
// @Override
30+
// public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
31+
//
32+
// WrapperResponse wr = converterType.getAnnotation(WrapperResponse.class);
33+
//
34+
// if ( wr != null && !wr.value() ) {
35+
// return false;
36+
// }
37+
//
38+
// wr = Objects.requireNonNull(returnType.getMethod()).getAnnotation(WrapperResponse.class);
39+
//
40+
// return wr == null || wr.value();
41+
//
42+
// }
43+
//
44+
// @SneakyThrows
45+
// @Override
46+
// public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
47+
//
48+
// if ( body instanceof ResultData ) {
49+
// return body;
50+
// }
51+
//
52+
// if ( body instanceof String ) {
53+
//
54+
// return objectMapper.writeValueAsString(ResultData.SUCCESS(body));
55+
//
56+
// }
57+
//
58+
// return ResultData.SUCCESS(body);
59+
//
60+
// }
61+
//
62+
// }

src/main/java/com/talexframe/frame/core/modules/repository/TRepoCompAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class TRepoCompAdapter extends PluginCompAdapter<TRepo> {
2121
@Override
2222
public boolean injectWithInstance(PluginScanner scanner, WebPlugin webPlugin, TRepo instance) {
2323

24-
log.info("[TRepoCompAdapter] injectWithInstance: {}", instance.getClass().getName());
24+
log.debug("[TRepoCompAdapter] injectWithInstance: {}", instance.getClass().getName());
2525

2626
return repoManager.registerRepo( webPlugin, instance );
2727

src/main/java/com/talexframe/frame/core/modules/repository/TRepoManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,15 @@ public boolean registerRepo(WebPlugin plugin, TRepo Repo) {
133133

134134
if ( Repo instanceof TRepoPlus ) {
135135

136+
log.debug("Init table Repo - " + Repo.getClass().getName());
137+
136138
TRepoPlus<?> plusRepo = ( (TRepoPlus<?>) Repo );
137139
plusRepo.initTable();
138140

139141
scanner.pushService(() -> {
140142

143+
log.debug("Init Repo - " + Repo.getClass().getName());
144+
141145
plusRepo.onInstall();
142146

143147
scanner.pushService(plusRepo::onAllRepoDone);

0 commit comments

Comments
 (0)