命名优化
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user