命名优化

This commit is contained in:
redkale
2023-01-30 22:29:13 +08:00
parent afaf97aaf8
commit e47abd6417
5 changed files with 32 additions and 15 deletions

View File

@@ -42,7 +42,7 @@ public class Context {
protected final int bufferCapacity;
//服务的根Servlet
protected final DispatcherServlet prepare;
protected final DispatcherServlet dispatcher;
//日志Logger
protected final Logger logger;
@@ -80,12 +80,12 @@ public class Context {
public Context(ContextConfig config) {
this(config.serverStartTime, config.logger, config.workExecutor, config.sslBuilder, config.sslContext,
config.bufferCapacity, config.maxConns, config.maxBody, config.charset, config.serverAddress, config.resourceFactory,
config.prepare, config.aliveTimeoutSeconds, config.readTimeoutSeconds, config.writeTimeoutSeconds);
config.dispatcher, config.aliveTimeoutSeconds, config.readTimeoutSeconds, config.writeTimeoutSeconds);
}
public Context(long serverStartTime, Logger logger, ExecutorService workExecutor, SSLBuilder sslBuilder, SSLContext sslContext,
int bufferCapacity, final int maxConns, final int maxBody, Charset charset, InetSocketAddress address,
ResourceFactory resourceFactory, DispatcherServlet prepare, int aliveTimeoutSeconds, int readTimeoutSeconds, int writeTimeoutSeconds) {
ResourceFactory resourceFactory, DispatcherServlet dispatcher, int aliveTimeoutSeconds, int readTimeoutSeconds, int writeTimeoutSeconds) {
this.serverStartTime = serverStartTime;
this.logger = logger;
this.workExecutor = workExecutor;
@@ -96,7 +96,7 @@ public class Context {
this.maxBody = maxBody;
this.charset = StandardCharsets.UTF_8.equals(charset) ? null : charset;
this.serverAddress = address;
this.prepare = prepare;
this.dispatcher = dispatcher;
this.resourceFactory = resourceFactory;
this.aliveTimeoutSeconds = aliveTimeoutSeconds;
this.readTimeoutSeconds = readTimeoutSeconds;
@@ -112,11 +112,11 @@ public class Context {
protected void executeDispatch(Request request, Response response) {
if (workHashExecutor != null) {
workHashExecutor.execute(request.getHashid(), () -> prepare.prepare(request, response));
workHashExecutor.execute(request.getHashid(), () -> dispatcher.dispatch(request, response));
} else if (workExecutor != null) {
workExecutor.execute(() -> prepare.prepare(request, response));
workExecutor.execute(() -> dispatcher.dispatch(request, response));
} else {
prepare.prepare(request, response);
dispatcher.dispatch(request, response);
}
}
@@ -245,7 +245,7 @@ public class Context {
public int bufferCapacity;
//服务的根Servlet
public DispatcherServlet prepare;
public DispatcherServlet dispatcher;
//服务的监听地址
public InetSocketAddress serverAddress;

View File

@@ -11,6 +11,7 @@ import java.util.concurrent.atomic.LongAdder;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.stream.Stream;
import org.redkale.annotation.Async;
import org.redkale.boot.Application;
import org.redkale.util.*;
@@ -43,6 +44,8 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
private Map<K, S> mappings = new HashMap<>();
private volatile boolean allFilterAsync = true;
private final List<Filter<C, R, P>> filters = new ArrayList<>();
protected Application application;
@@ -176,10 +179,16 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
filter._conf = conf;
synchronized (filters) {
this.filters.add(filter);
this.allFilterAsync = this.allFilterAsync && isAsync(filter);
Collections.sort(this.filters);
}
}
private boolean isAsync(Filter filter) {
Async a = filter.getClass().getAnnotation(Async.class);
return a != null && a.value();
}
public <T extends Filter<C, R, P>> T removeFilter(Class<T> filterClass) {
return removeFilter(f -> filterClass.equals(f.getClass()));
}
@@ -232,6 +241,14 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
}
filter._next = null;
this.filters.remove(filter);
boolean async = true;
for (Filter f : filters) {
async = async && isAsync(filter);
if (!async) {
break;
}
}
this.allFilterAsync = async;
}
return (T) filter;
}
@@ -245,7 +262,7 @@ public abstract class DispatcherServlet<K extends Serializable, C extends Contex
@SuppressWarnings("unchecked")
public abstract void addServlet(S servlet, Object attachment, AnyValue conf, K... mappings);
public final void prepare(final R request, final P response) {
public final void dispatch(final R request, final P response) {
try {
Traces.computeCurrTraceid(request.getTraceid());
request.prepare();

View File

@@ -144,7 +144,7 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
final Request request = response.request;
final int rs = request.readHeader(buffer, lastReq);
if (rs < 0) { //表示数据格式不正确
final DispatcherServlet preparer = context.prepare;
final DispatcherServlet preparer = context.dispatcher;
preparer.incrExecuteCounter();
channel.offerReadBuffer(buffer);
if (rs != Integer.MIN_VALUE) {
@@ -155,7 +155,7 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
context.logger.log(Level.FINEST, "request.readHeader erroneous (" + rs + "), force to close channel ");
}
} else if (rs == 0) {
context.prepare.incrExecuteCounter();
context.dispatcher.incrExecuteCounter();
int pindex = pipelineIndex;
boolean pipeline = false;
Request hreq = lastReq;
@@ -223,7 +223,7 @@ class ProtocolCodec implements CompletionHandler<Integer, ByteBuffer> {
@Override
public void failed(Throwable exc, ByteBuffer attachment) {
context.prepare.incrIllegalRequestCounter();
context.dispatcher.incrIllegalRequestCounter();
channel.offerReadBuffer(attachment);
response.error(exc);
if (exc != null) {

View File

@@ -417,7 +417,7 @@ public abstract class Server<K extends Serializable, C extends Context, R extend
contextConfig.maxBody = this.maxBody;
contextConfig.charset = this.charset;
contextConfig.serverAddress = this.address;
contextConfig.prepare = this.dispatcher;
contextConfig.dispatcher = this.dispatcher;
contextConfig.resourceFactory = this.resourceFactory;
contextConfig.aliveTimeoutSeconds = this.aliveTimeoutSeconds;
contextConfig.readTimeoutSeconds = this.readTimeoutSeconds;

View File

@@ -3542,7 +3542,7 @@ public final class Rest {
if (ch >= '0' && ch <= '9') {
continue;
}
if (ch >= 'a' && ch <= 'a') {
if (ch >= 'a' && ch <= 'z') {
continue;
}
if (ch >= 'A' && ch <= 'Z') {
@@ -3586,7 +3586,7 @@ public final class Rest {
}
}
this.existsPound = pound;
this.newMethodName = formatMappingName(this.name.replace('/', '$').replace('.', '_'));
this.newMethodName = formatMappingName(this.name.replace('/', '$').replace('.', '_').replace('-', '_'));
this.newActionClassName = "_Dyn_" + this.newMethodName + "_ActionHttpServlet";
}