From eeeab27f1f24989e1791d173edb7d7f8f1605c98 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 10 Aug 2016 16:21:35 +0200 Subject: [PATCH] Polishing (cherry picked from commit 35e247a) --- .../simp/user/MultiServerUserRegistry.java | 6 +- .../jdbc/SqlScriptsTestExecutionListener.java | 66 ++++++++----------- .../context/support/ActiveProfilesUtils.java | 6 +- .../MockHttpServletRequestBuilder.java | 6 +- .../annotation/ResourceHandlerRegistry.java | 12 ++++ 5 files changed, 48 insertions(+), 48 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java index fc3e28b9a3..9e4fa61898 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java @@ -174,7 +174,7 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati @Override public String toString() { - return "local=[" + this.localRegistry + "], remote=" + this.remoteRegistries + "]"; + return "local=[" + this.localRegistry + "], remote=" + this.remoteRegistries; } @@ -260,7 +260,6 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati /** * SimpUser that can be (de)serialized and broadcast to other servers. */ - @SuppressWarnings("unused") private static class TransferSimpUser implements SimpUser { private String name; @@ -274,6 +273,7 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati /** * Default constructor for JSON deserialization. */ + @SuppressWarnings("unused") public TransferSimpUser() { this.sessions = new HashSet<>(1); } @@ -368,7 +368,6 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati /** * SimpSession that can be (de)serialized and broadcast to other servers. */ - @SuppressWarnings("unused") private static class TransferSimpSession implements SimpSession { private String id; @@ -380,6 +379,7 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati /** * Default constructor for JSON deserialization. */ + @SuppressWarnings("unused") public TransferSimpSession() { this.subscriptions = new HashSet<>(4); } diff --git a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java index 42d29020a3..bcd2afe2df 100644 --- a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java @@ -127,11 +127,11 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen private void executeSqlScripts(TestContext testContext, ExecutionPhase executionPhase) throws Exception { boolean classLevel = false; - Set sqlAnnotations = AnnotatedElementUtils.getMergedRepeatableAnnotations(testContext.getTestMethod(), Sql.class, - SqlGroup.class); + Set sqlAnnotations = AnnotatedElementUtils.getMergedRepeatableAnnotations( + testContext.getTestMethod(), Sql.class, SqlGroup.class); if (sqlAnnotations.isEmpty()) { - sqlAnnotations = AnnotatedElementUtils.getMergedRepeatableAnnotations(testContext.getTestClass(), Sql.class, - SqlGroup.class); + sqlAnnotations = AnnotatedElementUtils.getMergedRepeatableAnnotations( + testContext.getTestClass(), Sql.class, SqlGroup.class); if (!sqlAnnotations.isEmpty()) { classLevel = true; } @@ -145,26 +145,24 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen /** * Execute the SQL scripts configured via the supplied {@link Sql @Sql} * annotation for the given {@link ExecutionPhase} and {@link TestContext}. - * *

Special care must be taken in order to properly support the configured * {@link SqlConfig#transactionMode}. - * * @param sql the {@code @Sql} annotation to parse * @param executionPhase the current execution phase * @param testContext the current {@code TestContext} - * @param classLevel {@code true} if {@link Sql @Sql} was declared at the - * class level + * @param classLevel {@code true} if {@link Sql @Sql} was declared at the class level */ private void executeSqlScripts(Sql sql, ExecutionPhase executionPhase, TestContext testContext, boolean classLevel) throws Exception { + if (executionPhase != sql.executionPhase()) { return; } MergedSqlConfig mergedSqlConfig = new MergedSqlConfig(sql.config(), testContext.getTestClass()); if (logger.isDebugEnabled()) { - logger.debug(String.format("Processing %s for execution phase [%s] and test context %s.", mergedSqlConfig, - executionPhase, testContext)); + logger.debug(String.format("Processing %s for execution phase [%s] and test context %s.", + mergedSqlConfig, executionPhase, testContext)); } final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); @@ -179,15 +177,13 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen String[] scripts = getScripts(sql, testContext, classLevel); scripts = TestContextResourceUtils.convertToClasspathResourcePaths(testContext.getTestClass(), scripts); List scriptResources = TestContextResourceUtils.convertToResourceList( - testContext.getApplicationContext(), scripts); - - for (String statement : sql.statements()) { - if (StringUtils.hasText(statement)) { - statement = statement.trim(); - scriptResources.add(new ByteArrayResource(statement.getBytes(), "from inlined SQL statement: " + statement)); + testContext.getApplicationContext(), scripts); + for (String stmt : sql.statements()) { + if (StringUtils.hasText(stmt)) { + stmt = stmt.trim(); + scriptResources.add(new ByteArrayResource(stmt.getBytes(), "from inlined SQL statement: " + stmt)); } } - populator.setScripts(scriptResources.toArray(new Resource[scriptResources.size()])); if (logger.isDebugEnabled()) { logger.debug("Executing SQL scripts: " + ObjectUtils.nullSafeToString(scriptResources)); @@ -196,47 +192,39 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen String dsName = mergedSqlConfig.getDataSource(); String tmName = mergedSqlConfig.getTransactionManager(); DataSource dataSource = TestContextTransactionUtils.retrieveDataSource(testContext, dsName); - final PlatformTransactionManager transactionManager = TestContextTransactionUtils.retrieveTransactionManager( - testContext, tmName); - final boolean newTxRequired = mergedSqlConfig.getTransactionMode() == TransactionMode.ISOLATED; + PlatformTransactionManager txMgr = TestContextTransactionUtils.retrieveTransactionManager(testContext, tmName); + boolean newTxRequired = (mergedSqlConfig.getTransactionMode() == TransactionMode.ISOLATED); - if (transactionManager == null) { + if (txMgr == null) { Assert.state(!newTxRequired, () -> String.format("Failed to execute SQL scripts for test context %s: " + "cannot execute SQL scripts using Transaction Mode " + "[%s] without a PlatformTransactionManager.", testContext, TransactionMode.ISOLATED)); - Assert.state(dataSource != null, () -> String.format("Failed to execute SQL scripts for test context %s: " + "supply at least a DataSource or PlatformTransactionManager.", testContext)); - // Execute scripts directly against the DataSource populator.execute(dataSource); } else { - DataSource dataSourceFromTxMgr = getDataSourceFromTransactionManager(transactionManager); - + DataSource dataSourceFromTxMgr = getDataSourceFromTransactionManager(txMgr); // Ensure user configured an appropriate DataSource/TransactionManager pair. if (dataSource != null && dataSourceFromTxMgr != null && !dataSource.equals(dataSourceFromTxMgr)) { throw new IllegalStateException(String.format("Failed to execute SQL scripts for test context %s: " + "the configured DataSource [%s] (named '%s') is not the one associated with " + "transaction manager [%s] (named '%s').", testContext, dataSource.getClass().getName(), - dsName, transactionManager.getClass().getName(), tmName)); + dsName, txMgr.getClass().getName(), tmName)); } - if (dataSource == null) { dataSource = dataSourceFromTxMgr; - Assert.state(dataSource != null, () -> String.format("Failed to execute SQL scripts for test context %s: " + - "could not obtain DataSource from transaction manager [%s] (named '%s').", testContext, - transactionManager.getClass().getName(), tmName)); + Assert.state(dataSource != null, () -> String.format("Failed to execute SQL scripts for " + + "test context %s: could not obtain DataSource from transaction manager [%s] (named '%s').", + testContext, txMgr.getClass().getName(), tmName)); } - final DataSource finalDataSource = dataSource; int propagation = (newTxRequired ? TransactionDefinition.PROPAGATION_REQUIRES_NEW : TransactionDefinition.PROPAGATION_REQUIRED); - - TransactionAttribute transactionAttribute = TestContextTransactionUtils.createDelegatingTransactionAttribute( - testContext, new DefaultTransactionAttribute(propagation)); - - new TransactionTemplate(transactionManager, transactionAttribute).execute(status -> { + TransactionAttribute txAttr = TestContextTransactionUtils.createDelegatingTransactionAttribute( + testContext, new DefaultTransactionAttribute(propagation)); + new TransactionTemplate(txMgr, txAttr).execute(status -> { populator.execute(finalDataSource); return null; }); @@ -260,7 +248,7 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen private String[] getScripts(Sql sql, TestContext testContext, boolean classLevel) { String[] scripts = sql.scripts(); if (ObjectUtils.isEmpty(scripts) && ObjectUtils.isEmpty(sql.statements())) { - scripts = new String[] { detectDefaultScript(testContext, classLevel) }; + scripts = new String[] {detectDefaultScript(testContext, classLevel)}; } return scripts; } @@ -286,8 +274,8 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen if (classPathResource.exists()) { if (logger.isInfoEnabled()) { - logger.info(String.format("Detected default SQL script \"%s\" for test %s [%s]", prefixedResourcePath, - elementType, elementName)); + logger.info(String.format("Detected default SQL script \"%s\" for test %s [%s]", + prefixedResourcePath, elementType, elementName)); } return prefixedResourcePath; } diff --git a/spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java b/spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java index 9654fbae87..676199b2a9 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java @@ -86,7 +86,7 @@ abstract class ActiveProfilesUtils { ActiveProfiles annotation = descriptor.synthesizeAnnotation(); if (logger.isTraceEnabled()) { - logger.trace(String.format("Retrieved @ActiveProfiles [%s] for declaring class [%s].", + logger.trace(String.format("Retrieved @ActiveProfiles [%s] for declaring class [%s]", annotation, declaringClass.getName())); } @@ -101,7 +101,7 @@ abstract class ActiveProfilesUtils { } catch (Exception ex) { String msg = String.format("Could not instantiate ActiveProfilesResolver of type [%s] " + - "for test class [%s].", resolverClass.getName(), rootDeclaringClass.getName()); + "for test class [%s]", resolverClass.getName(), rootDeclaringClass.getName()); logger.error(msg); throw new IllegalStateException(msg, ex); } @@ -109,7 +109,7 @@ abstract class ActiveProfilesUtils { String[] profiles = resolver.resolve(rootDeclaringClass); if (profiles == null) { String msg = String.format( - "ActiveProfilesResolver [%s] returned a null array of bean definition profiles.", + "ActiveProfilesResolver [%s] returned a null array of bean definition profiles", resolverClass.getName()); logger.error(msg); throw new IllegalStateException(msg); diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java index 953cfcce2f..136da4b662 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java @@ -240,7 +240,7 @@ public class MockHttpServletRequestBuilder * @param mediaTypes one or more media types */ public MockHttpServletRequestBuilder accept(MediaType... mediaTypes) { - Assert.notEmpty(mediaTypes, "No 'Accept' media types"); + Assert.notEmpty(mediaTypes, "'mediaTypes' must not be empty"); this.headers.set("Accept", MediaType.toString(Arrays.asList(mediaTypes))); return this; } @@ -250,8 +250,8 @@ public class MockHttpServletRequestBuilder * @param mediaTypes one or more media types */ public MockHttpServletRequestBuilder accept(String... mediaTypes) { - Assert.notEmpty(mediaTypes, "No 'Accept' media types"); - List result = new ArrayList<>(mediaTypes.length); + Assert.notEmpty(mediaTypes, "'mediaTypes' must not be empty"); + List result = new ArrayList(mediaTypes.length); for (String mediaType : mediaTypes) { result.add(MediaType.parseMediaType(mediaType)); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistry.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistry.java index a70223500a..9ac08cd22b 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistry.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistry.java @@ -62,10 +62,22 @@ public class ResourceHandlerRegistry { private int order = Integer.MAX_VALUE -1; + /** + * Create a new resource handler registry for the given application context. + * @param applicationContext the Spring application context + * @param servletContext the corresponding Servlet context + */ public ResourceHandlerRegistry(ApplicationContext applicationContext, ServletContext servletContext) { this(applicationContext, servletContext, null); } + /** + * Create a new resource handler registry for the given application context. + * @param applicationContext the Spring application context + * @param servletContext the corresponding Servlet context + * @param contentNegotiationManager the content negotiation manager to use + * @since 4.3 + */ public ResourceHandlerRegistry(ApplicationContext applicationContext, ServletContext servletContext, ContentNegotiationManager contentNegotiationManager) {