Polishing

This commit is contained in:
Juergen Hoeller
2018-09-07 12:56:53 +02:00
parent c803ad7998
commit 90a4740279
3 changed files with 50 additions and 52 deletions

View File

@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.http.client.reactive;
import java.util.function.Consumer;
@@ -45,19 +46,16 @@ public class ReactorResourceFactory implements InitializingBean, DisposableBean
@Nullable
private Consumer<HttpResources> globalResourcesConsumer;
private Supplier<ConnectionProvider> connectionProviderSupplier = () -> ConnectionProvider.elastic("webflux");
private Supplier<LoopResources> loopResourcesSupplier = () -> LoopResources.create("webflux-http");
@Nullable
private ConnectionProvider connectionProvider;
@Nullable
private LoopResources loopResources;
private boolean manageConnectionProvider = false;
private boolean manageLoopResources = false;
@@ -76,6 +74,14 @@ public class ReactorResourceFactory implements InitializingBean, DisposableBean
this.useGlobalResources = useGlobalResources;
}
/**
* Whether this factory exposes the global
* {@link reactor.netty.http.HttpResources HttpResources} holder.
*/
public boolean isUseGlobalResources() {
return this.useGlobalResources;
}
/**
* Add a Consumer for configuring the global Reactor Netty resources on
* startup. When this option is used, {@link #setUseGlobalResources} is also
@@ -97,7 +103,7 @@ public class ReactorResourceFactory implements InitializingBean, DisposableBean
* {@link #setConnectionProvider(ConnectionProvider)} is set.
* @param supplier the supplier to use
*/
public void setConnectionProviderSupplier(@Nullable Supplier<ConnectionProvider> supplier) {
public void setConnectionProviderSupplier(Supplier<ConnectionProvider> supplier) {
this.connectionProviderSupplier = supplier;
}
@@ -109,7 +115,7 @@ public class ReactorResourceFactory implements InitializingBean, DisposableBean
* {@link #setLoopResources(LoopResources)} is set.
* @param supplier the supplier to use
*/
public void setLoopResourcesSupplier(@Nullable Supplier<LoopResources> supplier) {
public void setLoopResourcesSupplier(Supplier<LoopResources> supplier) {
this.loopResourcesSupplier = supplier;
}
@@ -118,50 +124,41 @@ public class ReactorResourceFactory implements InitializingBean, DisposableBean
* {@link ConnectionProvider} instance.
* @param connectionProvider the connection provider to use as is
*/
public void setConnectionProvider(@Nullable ConnectionProvider connectionProvider) {
public void setConnectionProvider(ConnectionProvider connectionProvider) {
this.connectionProvider = connectionProvider;
}
/**
* Return the configured {@link ConnectionProvider}.
*/
public ConnectionProvider getConnectionProvider() {
Assert.state(this.connectionProvider != null, "ConnectionProvider not initialized yet");
return this.connectionProvider;
}
/**
* Use this option when you want to provide an externally managed
* {@link LoopResources} instance.
* @param loopResources the loop resources to use as is
*/
public void setLoopResources(@Nullable LoopResources loopResources) {
public void setLoopResources(LoopResources loopResources) {
this.loopResources = loopResources;
}
/**
* Whether this factory exposes the global
* {@link reactor.netty.http.HttpResources HttpResources} holder.
*/
public boolean isUseGlobalResources() {
return this.useGlobalResources;
}
/**
* Return the configured {@link ConnectionProvider}.
*/
public ConnectionProvider getConnectionProvider() {
Assert.notNull(this.connectionProvider, "ConnectionProvider not initialized yet via InitializingBean.");
return this.connectionProvider;
}
/**
* Return the configured {@link LoopResources}.
*/
public LoopResources getLoopResources() {
Assert.notNull(this.loopResources, "LoopResources not initialized yet via InitializingBean.");
Assert.state(this.loopResources != null, "LoopResources not initialized yet");
return this.loopResources;
}
@Override
public void afterPropertiesSet() throws Exception {
public void afterPropertiesSet() {
if (this.useGlobalResources) {
Assert.isTrue(this.loopResources == null && this.connectionProvider == null,
"'useGlobalResources' is mutually exclusive with explicitly configured resources.");
"'useGlobalResources' is mutually exclusive with explicitly configured resources");
HttpResources httpResources = HttpResources.get();
if (this.globalResourcesConsumer != null) {
this.globalResourcesConsumer.accept(httpResources);

View File

@@ -156,7 +156,7 @@ public class ServletHttpHandlerAdapter implements Servlet {
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// Check for existing error attribute first
if (DispatcherType.ASYNC.equals(request.getDispatcherType())) {
Throwable ex = (Throwable) request.getAttribute(WRITE_ERROR_ATTRIBUTE_NAME);
throw new ServletException("Failed to create response content", ex);
@@ -179,9 +179,7 @@ public class ServletHttpHandlerAdapter implements Servlet {
return;
}
ServerHttpResponse httpResponse =
createResponse(((HttpServletResponse) response), asyncContext, httpRequest);
ServerHttpResponse httpResponse = createResponse(((HttpServletResponse) response), asyncContext, httpRequest);
if (httpRequest.getMethod() == HttpMethod.HEAD) {
httpResponse = new HttpHeadResponseDecorator(httpResponse);
}
@@ -247,7 +245,6 @@ public class ServletHttpHandlerAdapter implements Servlet {
private final String logPrefix;
public HandlerResultAsyncListener(AtomicBoolean isCompleted, ServletServerHttpRequest httpRequest) {
this.isCompleted = isCompleted;
this.logPrefix = httpRequest.getLogPrefix();
@@ -288,7 +285,6 @@ public class ServletHttpHandlerAdapter implements Servlet {
private final String logPrefix;
public HandlerResultSubscriber(
AsyncContext asyncContext, AtomicBoolean isCompleted, ServletServerHttpRequest httpRequest) {