diff --git a/build.gradle b/build.gradle index 29c36b2b0e..b15142a0e3 100644 --- a/build.gradle +++ b/build.gradle @@ -23,8 +23,8 @@ configure(allprojects) { project -> dependencyManagement { imports { - mavenBom "com.fasterxml.jackson:jackson-bom:2.10.3" - mavenBom "io.netty:netty-bom:4.1.49.Final" + mavenBom "com.fasterxml.jackson:jackson-bom:2.10.4" + mavenBom "io.netty:netty-bom:4.1.50.Final" mavenBom "io.projectreactor:reactor-bom:Dysprosium-SR7" mavenBom "io.rsocket:rsocket-bom:1.0.0" mavenBom "org.eclipse.jetty:jetty-bom:9.4.28.v20200408" @@ -114,19 +114,19 @@ configure(allprojects) { project -> dependency "net.sf.ehcache:ehcache:2.10.6" dependency "org.ehcache:jcache:1.0.1" dependency "org.ehcache:ehcache:3.4.0" - dependency "org.hibernate:hibernate-core:5.4.14.Final" - dependency "org.hibernate:hibernate-validator:6.1.4.Final" + dependency "org.hibernate:hibernate-core:5.4.15.Final" + dependency "org.hibernate:hibernate-validator:6.1.5.Final" dependency "org.webjars:webjars-locator-core:0.44" dependency "org.webjars:underscorejs:1.8.3" - dependencySet(group: 'org.apache.tomcat', version: '9.0.34') { + dependencySet(group: 'org.apache.tomcat', version: '9.0.35') { entry 'tomcat-util' entry('tomcat-websocket') { exclude group: "org.apache.tomcat", name: "tomcat-websocket-api" exclude group: "org.apache.tomcat", name: "tomcat-servlet-api" } } - dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.34') { + dependencySet(group: 'org.apache.tomcat.embed', version: '9.0.35') { entry 'tomcat-embed-core' entry 'tomcat-embed-websocket' } @@ -326,7 +326,7 @@ configure([rootProject] + javaProjects) { project -> } checkstyle { - toolVersion = "8.31" + toolVersion = "8.32" configDirectory.set(rootProject.file("src/checkstyle")) } diff --git a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java index dad782da32..8baf92adbf 100644 --- a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java +++ b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,7 +52,7 @@ import org.springframework.validation.annotation.Validated; * at the type level of the containing target class, applying to all public service methods * of that class. By default, JSR-303 will validate against its default group only. * - *
As of Spring 5.0, this functionality requires a Bean Validation 1.1 provider. + *
As of Spring 5.0, this functionality requires a Bean Validation 1.1+ provider. * * @author Juergen Hoeller * @since 3.1 diff --git a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationPostProcessor.java b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationPostProcessor.java index b5907bf6fe..45e5d13a5f 100644 --- a/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationPostProcessor.java +++ b/spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,7 +50,7 @@ import org.springframework.validation.annotation.Validated; * inline constraint annotations. Validation groups can be specified through {@code @Validated} * as well. By default, JSR-303 will validate against its default group only. * - *
As of Spring 5.0, this functionality requires a Bean Validation 1.1 provider. + *
As of Spring 5.0, this functionality requires a Bean Validation 1.1+ provider. * * @author Juergen Hoeller * @since 3.1 diff --git a/spring-core/src/main/java/org/springframework/core/ResolvableType.java b/spring-core/src/main/java/org/springframework/core/ResolvableType.java index 162f152802..ae6fe4f084 100644 --- a/spring-core/src/main/java/org/springframework/core/ResolvableType.java +++ b/spring-core/src/main/java/org/springframework/core/ResolvableType.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -464,15 +464,25 @@ public class ResolvableType implements Serializable { */ public ResolvableType getSuperType() { Class> resolved = resolve(); - if (resolved == null || resolved.getGenericSuperclass() == null) { + if (resolved == null) { return NONE; } - ResolvableType superType = this.superType; - if (superType == null) { - superType = forType(resolved.getGenericSuperclass(), this); - this.superType = superType; + try { + Type superclass = resolved.getGenericSuperclass(); + if (superclass == null) { + return NONE; + } + ResolvableType superType = this.superType; + if (superType == null) { + superType = forType(superclass, this); + this.superType = superType; + } + return superType; + } + catch (TypeNotPresentException ex) { + // Ignore non-present types in generic signature + return NONE; } - return superType; } /** @@ -544,13 +554,18 @@ public class ResolvableType implements Serializable { } Class> resolved = resolve(); if (resolved != null) { - for (Type genericInterface : resolved.getGenericInterfaces()) { - if (genericInterface instanceof Class) { - if (forClass((Class>) genericInterface).hasGenerics()) { - return true; + try { + for (Type genericInterface : resolved.getGenericInterfaces()) { + if (genericInterface instanceof Class) { + if (forClass((Class>) genericInterface).hasGenerics()) { + return true; + } } } } + catch (TypeNotPresentException ex) { + // Ignore non-present types in generic signature + } return getSuperType().hasUnresolvableGenerics(); } return false; diff --git a/spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java b/spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java index 839e3f05f0..3ec0b1b630 100644 --- a/spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java +++ b/spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,6 +38,7 @@ import javax.xml.stream.events.StartElement; import javax.xml.stream.events.XMLEvent; import org.xml.sax.Attributes; +import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.ext.Locator2; import org.xml.sax.helpers.AttributesImpl; @@ -163,9 +164,11 @@ class StaxEventXMLReader extends AbstractStaxXMLReader { this.encoding = startDocument.getCharacterEncodingScheme(); } } - if (getContentHandler() != null) { + + ContentHandler contentHandler = getContentHandler(); + if (contentHandler != null) { final Location location = event.getLocation(); - getContentHandler().setDocumentLocator(new Locator2() { + contentHandler.setDocumentLocator(new Locator2() { @Override public int getColumnNumber() { return (location != null ? location.getColumnNumber() : -1); @@ -194,7 +197,7 @@ class StaxEventXMLReader extends AbstractStaxXMLReader { return encoding; } }); - getContentHandler().startDocument(); + contentHandler.startDocument(); } } diff --git a/spring-core/src/main/java/org/springframework/util/xml/StaxStreamXMLReader.java b/spring-core/src/main/java/org/springframework/util/xml/StaxStreamXMLReader.java index fefe1ab623..5812c4335e 100644 --- a/spring-core/src/main/java/org/springframework/util/xml/StaxStreamXMLReader.java +++ b/spring-core/src/main/java/org/springframework/util/xml/StaxStreamXMLReader.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,6 +23,7 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import org.xml.sax.Attributes; +import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.ext.Locator2; import org.xml.sax.helpers.AttributesImpl; @@ -139,9 +140,11 @@ class StaxStreamXMLReader extends AbstractStaxXMLReader { } this.encoding = this.reader.getCharacterEncodingScheme(); } - if (getContentHandler() != null) { + + ContentHandler contentHandler = getContentHandler(); + if (contentHandler != null) { final Location location = this.reader.getLocation(); - getContentHandler().setDocumentLocator(new Locator2() { + contentHandler.setDocumentLocator(new Locator2() { @Override public int getColumnNumber() { return (location != null ? location.getColumnNumber() : -1); @@ -170,7 +173,7 @@ class StaxStreamXMLReader extends AbstractStaxXMLReader { return encoding; } }); - getContentHandler().startDocument(); + contentHandler.startDocument(); if (this.reader.standaloneSet()) { setStandalone(this.reader.isStandalone()); } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java index 5c691b5c85..b69f9bed0a 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -415,8 +415,8 @@ public class GenericTableMetaDataProvider implements TableMetaDataProvider { TableParameterMetaData meta = new TableParameterMetaData(columnName, dataType, nullable); this.tableParameterMetaData.add(meta); if (logger.isDebugEnabled()) { - logger.debug("Retrieved meta-data: " + meta.getParameterName() + " " + - meta.getSqlType() + " " + meta.isNullable()); + logger.debug("Retrieved meta-data: '" + meta.getParameterName() + "', sqlType=" + + meta.getSqlType() + ", nullable=" + meta.isNullable()); } } } diff --git a/spring-jdbc/src/test/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslatorTests.java b/spring-jdbc/src/test/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslatorTests.java index cef07433d3..17105ccf27 100644 --- a/spring-jdbc/src/test/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslatorTests.java +++ b/spring-jdbc/src/test/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslatorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,14 +45,14 @@ public class SQLErrorCodeSQLExceptionTranslatorTests { private static SQLErrorCodes ERROR_CODES = new SQLErrorCodes(); static { - ERROR_CODES.setBadSqlGrammarCodes(new String[] { "1", "2" }); - ERROR_CODES.setInvalidResultSetAccessCodes(new String[] { "3", "4" }); - ERROR_CODES.setDuplicateKeyCodes(new String[] {"10"}); - ERROR_CODES.setDataAccessResourceFailureCodes(new String[] { "5" }); - ERROR_CODES.setDataIntegrityViolationCodes(new String[] { "6" }); - ERROR_CODES.setCannotAcquireLockCodes(new String[] { "7" }); - ERROR_CODES.setDeadlockLoserCodes(new String[] { "8" }); - ERROR_CODES.setCannotSerializeTransactionCodes(new String[] { "9" }); + ERROR_CODES.setBadSqlGrammarCodes("1", "2"); + ERROR_CODES.setInvalidResultSetAccessCodes("3", "4"); + ERROR_CODES.setDuplicateKeyCodes("10"); + ERROR_CODES.setDataAccessResourceFailureCodes("5"); + ERROR_CODES.setDataIntegrityViolationCodes("6"); + ERROR_CODES.setCannotAcquireLockCodes("7"); + ERROR_CODES.setDeadlockLoserCodes("8"); + ERROR_CODES.setCannotSerializeTransactionCodes("9"); }