From 90a4740279dbc5b747093613a5d3b1bca750e1d4 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 7 Sep 2018 12:56:53 +0200 Subject: [PATCH] Polishing --- .../spel/SpelCompilationCoverageTests.java | 43 +++++++++------- .../reactive/ReactorResourceFactory.java | 51 +++++++++---------- .../reactive/ServletHttpHandlerAdapter.java | 8 +-- 3 files changed, 50 insertions(+), 52 deletions(-) diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java index 5d4888852f..301ea54891 100644 --- a/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java +++ b/spring-expression/src/test/java/org/springframework/expression/spel/SpelCompilationCoverageTests.java @@ -692,7 +692,7 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { } @Test - public void ternaryWithBooleanReturn() { // SPR-12271 + public void ternaryWithBooleanReturn_SPR12271() { expression = parser.parseExpression("T(Boolean).TRUE?'abc':'def'"); assertEquals("abc", expression.getValue()); assertCanCompile(expression); @@ -4199,7 +4199,7 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { } @Test - public void propertyReferenceVisibility() { // SPR-12771 + public void propertyReferenceVisibility_SPR12771() { StandardEvaluationContext ctx = new StandardEvaluationContext(); ctx.setVariable("httpServletRequest", HttpServlet3RequestFactory.getOne()); // Without a fix compilation was inserting a checkcast to a private type @@ -4898,7 +4898,6 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { assertIsCompiled(exp); } - @Test public void elvisOperator_SPR17214() throws Exception { SpelParserConfiguration spc = new SpelParserConfiguration(SpelCompilerMode.IMMEDIATE, null); @@ -4947,22 +4946,6 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { assertNull(expression.getValue(rh)); } - public static class RecordHolder { - public void add(String key, Long value) { - record.put(key, value); - } - public long get(String key) { - return record.get(key); - } - public Map record = new HashMap<>(); - public LongHolder expression = new LongHolder(); - - } - - public static class LongHolder { - public Long someLong = 3L; - } - @Test public void ternaryOperator_SPR15192() { SpelParserConfiguration configuration = new SpelParserConfiguration(SpelCompilerMode.IMMEDIATE, null); @@ -6125,4 +6108,26 @@ public class SpelCompilationCoverageTests extends AbstractExpressionTests { } } + + public static class RecordHolder { + + public Map record = new HashMap<>(); + + public LongHolder expression = new LongHolder(); + + public void add(String key, Long value) { + record.put(key, value); + } + + public long get(String key) { + return record.get(key); + } + } + + + public static class LongHolder { + + public Long someLong = 3L; + } + } diff --git a/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java b/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java index b6496f7a01..a76ea801de 100644 --- a/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/reactive/ReactorResourceFactory.java @@ -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 globalResourcesConsumer; - private Supplier connectionProviderSupplier = () -> ConnectionProvider.elastic("webflux"); private Supplier 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 supplier) { + public void setConnectionProviderSupplier(Supplier 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 supplier) { + public void setLoopResourcesSupplier(Supplier 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); diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java b/spring-web/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java index 64ed4d1a02..bba1de048f 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java @@ -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) {