From f28b196898008856bc66eabd2ac4a08fd335fed7 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 10 May 2018 09:49:55 +0300 Subject: [PATCH 1/2] Spring Boot 2.0.2 --- build.gradle | 22 ++++++++++++------ gradle/wrapper/gradle-wrapper.jar | Bin 54711 -> 54413 bytes gradle/wrapper/gradle-wrapper.properties | 3 +-- gradlew | 6 ++--- .../io/spring/api/security/CORSConfig.java | 4 ++-- .../api/security/WebSecurityConfig.java | 5 ++-- 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/build.gradle b/build.gradle index dbed9f5..ff5c6cb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ buildscript { ext { - springBootVersion = '1.5.6.RELEASE' + springBootVersion = '2.0.2.RELEASE' } repositories { mavenCentral() @@ -14,6 +14,14 @@ apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'org.springframework.boot' +apply plugin: 'io.spring.dependency-management' + +dependencyManagement { + imports { + mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES + } + applyMavenExclusions = false +} version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 @@ -33,17 +41,17 @@ dependencies { compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('org.flywaydb:flyway-core') compile('org.springframework.boot:spring-boot-starter-hateoas') - compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0') + compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2') compile('org.springframework.boot:spring-boot-starter-web') - compile('io.jsonwebtoken:jjwt:0.7.0') + compile('io.jsonwebtoken:jjwt:0.9.0') compile('org.springframework.boot:spring-boot-starter-security') compile('joda-time:joda-time:2.9.9') compileOnly('org.projectlombok:lombok') runtime('com.h2database:h2') - testCompile 'io.rest-assured:rest-assured:3.0.2' - testCompile 'io.rest-assured:spring-mock-mvc:3.0.2' - testCompile 'org.springframework.security:spring-security-test:4.0.4.RELEASE' + testCompile 'io.rest-assured:rest-assured:3.1.0' + testCompile 'io.rest-assured:spring-mock-mvc:3.1.0' + testCompile 'org.springframework.security:spring-security-test' testCompile('org.springframework.boot:spring-boot-starter-test') testCompile('org.springframework.restdocs:spring-restdocs-mockmvc') - testCompile('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.0') + testCompile('org.mybatis.spring.boot:mybatis-spring-boot-starter-test:1.3.2') } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 1a958be6420a4dd04b588fe4b31eb5d7ff8748c2..91ca28c8b802289c3a438766657a5e98f20eff03 100644 GIT binary patch delta 26748 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 W|9%GkHHqCGh~X>~yj1T$wf_$q=Dnf- diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8767f3b..e6a3091 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Mon Aug 07 11:04:20 CST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-all.zip diff --git a/gradlew b/gradlew index 543c9aa..4d1833a 100755 --- a/gradlew +++ b/gradlew @@ -33,11 +33,11 @@ DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -155,7 +155,7 @@ if $cygwin ; then fi # Escape application args -save ( ) { +save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } diff --git a/src/main/java/io/spring/api/security/CORSConfig.java b/src/main/java/io/spring/api/security/CORSConfig.java index e4f5d61..2d30d41 100644 --- a/src/main/java/io/spring/api/security/CORSConfig.java +++ b/src/main/java/io/spring/api/security/CORSConfig.java @@ -2,10 +2,10 @@ package io.spring.api.security; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration -public class CORSConfig extends WebMvcConfigurerAdapter { +public class CORSConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") diff --git a/src/main/java/io/spring/api/security/WebSecurityConfig.java b/src/main/java/io/spring/api/security/WebSecurityConfig.java index 336d190..02c599c 100644 --- a/src/main/java/io/spring/api/security/WebSecurityConfig.java +++ b/src/main/java/io/spring/api/security/WebSecurityConfig.java @@ -1,14 +1,15 @@ package io.spring.api.security; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.security.Http401AuthenticationEntryPoint; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.web.authentication.HttpStatusEntryPoint; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; @@ -40,7 +41,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { http.csrf().disable() .cors() .and() - .exceptionHandling().authenticationEntryPoint(new Http401AuthenticationEntryPoint("Unauthenticated")) + .exceptionHandling().authenticationEntryPoint(new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED)) .and() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() .authorizeRequests() From d2503be5448672975c46d5cc5dc607afbf21455e Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Thu, 10 May 2018 09:50:44 +0300 Subject: [PATCH 2/2] Fix deprecation warnings --- src/main/java/io/spring/api/ArticlesApi.java | 2 +- src/main/java/io/spring/api/CommentsApi.java | 2 +- src/main/java/io/spring/api/CurrentUserApi.java | 2 +- src/main/java/io/spring/api/UsersApi.java | 4 ++-- src/test/java/io/spring/api/ArticleApiTest.java | 6 +++--- src/test/java/io/spring/api/ArticleFavoriteApiTest.java | 4 ++-- src/test/java/io/spring/api/ArticlesApiTest.java | 2 +- src/test/java/io/spring/api/CommentsApiTest.java | 6 +++--- src/test/java/io/spring/api/CurrentUserApiTest.java | 4 ++-- src/test/java/io/spring/api/ListArticleApiTest.java | 2 +- src/test/java/io/spring/api/ProfileApiTest.java | 2 +- src/test/java/io/spring/api/TestWithCurrentUser.java | 2 +- src/test/java/io/spring/api/UsersApiTest.java | 4 ++-- 13 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/io/spring/api/ArticlesApi.java b/src/main/java/io/spring/api/ArticlesApi.java index a4f72d3..56997b4 100644 --- a/src/main/java/io/spring/api/ArticlesApi.java +++ b/src/main/java/io/spring/api/ArticlesApi.java @@ -9,7 +9,7 @@ import io.spring.core.article.ArticleRepository; import io.spring.core.user.User; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.NotBlank; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; diff --git a/src/main/java/io/spring/api/CommentsApi.java b/src/main/java/io/spring/api/CommentsApi.java index eccbd18..ce38bd8 100644 --- a/src/main/java/io/spring/api/CommentsApi.java +++ b/src/main/java/io/spring/api/CommentsApi.java @@ -14,7 +14,7 @@ import io.spring.core.comment.CommentRepository; import io.spring.core.user.User; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.NotBlank; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; diff --git a/src/main/java/io/spring/api/CurrentUserApi.java b/src/main/java/io/spring/api/CurrentUserApi.java index 33115e4..7de1775 100644 --- a/src/main/java/io/spring/api/CurrentUserApi.java +++ b/src/main/java/io/spring/api/CurrentUserApi.java @@ -9,7 +9,7 @@ import io.spring.core.user.User; import io.spring.core.user.UserRepository; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Email; +import javax.validation.constraints.Email; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; diff --git a/src/main/java/io/spring/api/UsersApi.java b/src/main/java/io/spring/api/UsersApi.java index df291bf..a6e599f 100644 --- a/src/main/java/io/spring/api/UsersApi.java +++ b/src/main/java/io/spring/api/UsersApi.java @@ -11,8 +11,8 @@ import io.spring.core.user.User; import io.spring.core.user.UserRepository; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.validator.constraints.Email; -import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; diff --git a/src/test/java/io/spring/api/ArticleApiTest.java b/src/test/java/io/spring/api/ArticleApiTest.java index 5f6a75f..dd63a7a 100644 --- a/src/test/java/io/spring/api/ArticleApiTest.java +++ b/src/test/java/io/spring/api/ArticleApiTest.java @@ -27,9 +27,9 @@ import java.util.Optional; import static io.restassured.module.mockmvc.RestAssuredMockMvc.given; import static org.hamcrest.core.IsEqual.equalTo; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; diff --git a/src/test/java/io/spring/api/ArticleFavoriteApiTest.java b/src/test/java/io/spring/api/ArticleFavoriteApiTest.java index 8fc2113..a1e25ae 100644 --- a/src/test/java/io/spring/api/ArticleFavoriteApiTest.java +++ b/src/test/java/io/spring/api/ArticleFavoriteApiTest.java @@ -25,8 +25,8 @@ import java.util.stream.Collectors; import static io.restassured.module.mockmvc.RestAssuredMockMvc.given; import static org.hamcrest.core.IsEqual.equalTo; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; diff --git a/src/test/java/io/spring/api/ArticlesApiTest.java b/src/test/java/io/spring/api/ArticlesApiTest.java index 91c1d39..2bb6c1e 100644 --- a/src/test/java/io/spring/api/ArticlesApiTest.java +++ b/src/test/java/io/spring/api/ArticlesApiTest.java @@ -23,7 +23,7 @@ import java.util.Optional; import static io.restassured.module.mockmvc.RestAssuredMockMvc.given; import static org.hamcrest.core.IsEqual.equalTo; -import static org.mockito.Matchers.any; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; diff --git a/src/test/java/io/spring/api/CommentsApiTest.java b/src/test/java/io/spring/api/CommentsApiTest.java index 3151b08..6e4f4f0 100644 --- a/src/test/java/io/spring/api/CommentsApiTest.java +++ b/src/test/java/io/spring/api/CommentsApiTest.java @@ -26,9 +26,9 @@ import java.util.Optional; import static io.restassured.module.mockmvc.RestAssuredMockMvc.given; import static org.hamcrest.core.IsEqual.equalTo; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; @WebMvcTest(CommentsApi.class) diff --git a/src/test/java/io/spring/api/CurrentUserApiTest.java b/src/test/java/io/spring/api/CurrentUserApiTest.java index 0560912..5ae2475 100644 --- a/src/test/java/io/spring/api/CurrentUserApiTest.java +++ b/src/test/java/io/spring/api/CurrentUserApiTest.java @@ -19,8 +19,8 @@ import java.util.Optional; import static io.restassured.module.mockmvc.RestAssuredMockMvc.given; import static org.hamcrest.core.IsEqual.equalTo; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; @WebMvcTest(CurrentUserApi.class) diff --git a/src/test/java/io/spring/api/ListArticleApiTest.java b/src/test/java/io/spring/api/ListArticleApiTest.java index 91c2e36..a0762de 100644 --- a/src/test/java/io/spring/api/ListArticleApiTest.java +++ b/src/test/java/io/spring/api/ListArticleApiTest.java @@ -18,7 +18,7 @@ import org.springframework.test.web.servlet.MockMvc; import static io.restassured.module.mockmvc.RestAssuredMockMvc.given; import static io.spring.TestHelper.articleDataFixture; import static java.util.Arrays.asList; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; @WebMvcTest(ArticlesApi.class) diff --git a/src/test/java/io/spring/api/ProfileApiTest.java b/src/test/java/io/spring/api/ProfileApiTest.java index dddce43..cb69658 100644 --- a/src/test/java/io/spring/api/ProfileApiTest.java +++ b/src/test/java/io/spring/api/ProfileApiTest.java @@ -19,7 +19,7 @@ import java.util.Optional; import static io.restassured.module.mockmvc.RestAssuredMockMvc.given; import static org.hamcrest.core.IsEqual.equalTo; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; diff --git a/src/test/java/io/spring/api/TestWithCurrentUser.java b/src/test/java/io/spring/api/TestWithCurrentUser.java index 67a5a12..9c8f62b 100644 --- a/src/test/java/io/spring/api/TestWithCurrentUser.java +++ b/src/test/java/io/spring/api/TestWithCurrentUser.java @@ -12,7 +12,7 @@ import org.springframework.test.context.junit4.SpringRunner; import java.util.Optional; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; @RunWith(SpringRunner.class) diff --git a/src/test/java/io/spring/api/UsersApiTest.java b/src/test/java/io/spring/api/UsersApiTest.java index 0176e05..e13ef20 100644 --- a/src/test/java/io/spring/api/UsersApiTest.java +++ b/src/test/java/io/spring/api/UsersApiTest.java @@ -26,8 +26,8 @@ import java.util.Optional; import static io.restassured.module.mockmvc.RestAssuredMockMvc.given; import static org.hamcrest.core.IsEqual.equalTo; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when;