diff --git a/pom.xml b/pom.xml
index df8759fd5..a36219397 100644
--- a/pom.xml
+++ b/pom.xml
@@ -287,7 +287,8 @@
org.jetbrains.kotlin
- kotlin-test
+ kotlin-test-junit5
+ ${kotlin}
test
diff --git a/src/main/java/org/springframework/data/util/KotlinReflectionUtils.java b/src/main/java/org/springframework/data/util/KotlinReflectionUtils.java
index 8ec5ff3f1..16206b4cd 100644
--- a/src/main/java/org/springframework/data/util/KotlinReflectionUtils.java
+++ b/src/main/java/org/springframework/data/util/KotlinReflectionUtils.java
@@ -40,13 +40,12 @@ import org.springframework.lang.Nullable;
* errors.
*
* @author Mark Paluch
+ * @author Christoph Strobl
* @since 2.3
* @see org.springframework.core.KotlinDetector#isKotlinReflectPresent()
*/
public final class KotlinReflectionUtils {
- private static final int KOTLIN_KIND_CLASS = 1;
-
private KotlinReflectionUtils() {}
/**
@@ -64,7 +63,7 @@ public final class KotlinReflectionUtils {
return Arrays.stream(type.getDeclaredAnnotations()) //
.filter(annotation -> annotation.annotationType().getName().equals("kotlin.Metadata")) //
.map(annotation -> AnnotationUtils.getValue(annotation, "k")) //
- .anyMatch(it -> Integer.valueOf(KOTLIN_KIND_CLASS).equals(it));
+ .anyMatch(it -> Integer.valueOf(KotlinClassHeaderKind.CLASS.id).equals(it));
}
/**
@@ -202,4 +201,15 @@ public final class KotlinReflectionUtils {
Method javaMethod = ReflectJvmMapping.getJavaMethod(function);
return javaMethod != null && javaMethod.equals(method);
}
+
+ private enum KotlinClassHeaderKind {
+
+ CLASS(1), FILE(2), SYNTHETIC_CLASS(3), MULTI_FILE_CLASS_FACADE(4), MULTI_FILE_CLASS_PART(5);
+
+ int id;
+
+ KotlinClassHeaderKind(int val) {
+ this.id = val;
+ }
+ }
}
diff --git a/src/main/kotlin/org/springframework/data/repository/CrudRepositoryExtensions.kt b/src/main/kotlin/org/springframework/data/repository/CrudRepositoryExtensions.kt
index 2b3ce5127..25e0cca87 100644
--- a/src/main/kotlin/org/springframework/data/repository/CrudRepositoryExtensions.kt
+++ b/src/main/kotlin/org/springframework/data/repository/CrudRepositoryExtensions.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2018-2019 the original author or authors.
+ * Copyright 2018-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.
diff --git a/src/main/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepository.kt b/src/main/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepository.kt
index 69309fe96..d25d13164 100644
--- a/src/main/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepository.kt
+++ b/src/main/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepository.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 the original author or authors.
+ * Copyright 2019-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.
@@ -24,6 +24,7 @@ import reactor.core.publisher.Mono
* Interface for generic CRUD operations using Kotlin Coroutines on a repository for a specific type.
*
* @author Mark Paluch
+ * @author Christoph Strobl
* @since 2.3
* @see Flow
*/
@@ -96,6 +97,18 @@ interface CoroutineCrudRepository : Repository {
*/
fun findAllById(ids: Iterable): Flow
+ /**
+ * Returns all instances of the type `T` with the given IDs.
+ * If some or all ids are not found, no entities are returned for these IDs.
+ * Note that the order of elements in the result is not guaranteed.
+ *
+ * @param ids must not be null nor contain any null values.
+ * @return [Flow] emitting the found entities. The size can be equal or less than the number of given
+ * ids.
+ * @throws IllegalArgumentException in case the given [ids][Iterable] or one of its items is null.
+ */
+ fun findAllById(ids: Flow): Flow
+
/**
* Returns the number of entities available.
*
@@ -128,6 +141,14 @@ interface CoroutineCrudRepository : Repository {
*/
suspend fun deleteAll(entities: Iterable)
+ /**
+ * Deletes all given entities.
+ *
+ * @param entityStream must not be null.
+ * @throws IllegalArgumentException in case the given [entityStream][Flow] is null.
+ */
+ fun deleteAll(entityStream: Flow)
+
/**
* Deletes all entities managed by the repository.
*/
diff --git a/src/main/kotlin/org/springframework/data/repository/kotlin/CoroutineSortingRepository.kt b/src/main/kotlin/org/springframework/data/repository/kotlin/CoroutineSortingRepository.kt
index 813bb7f2f..07b967e1b 100644
--- a/src/main/kotlin/org/springframework/data/repository/kotlin/CoroutineSortingRepository.kt
+++ b/src/main/kotlin/org/springframework/data/repository/kotlin/CoroutineSortingRepository.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 the original author or authors.
+ * Copyright 2019-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.
diff --git a/src/test/java/org/springframework/data/repository/core/support/DummyRepositoryFactory.java b/src/test/java/org/springframework/data/repository/core/support/DummyRepositoryFactory.java
index 36b64eeb0..9a7180d8a 100644
--- a/src/test/java/org/springframework/data/repository/core/support/DummyRepositoryFactory.java
+++ b/src/test/java/org/springframework/data/repository/core/support/DummyRepositoryFactory.java
@@ -112,7 +112,7 @@ public class DummyRepositoryFactory extends RepositoryFactorySupport {
/**
* @author Mark Paluch
*/
- public static interface MyRepositoryQuery extends RepositoryQuery {
+ public interface MyRepositoryQuery extends RepositoryQuery {
}
}
diff --git a/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt b/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt
index cb20edbb7..ee430e064 100644
--- a/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt
+++ b/src/test/kotlin/org/springframework/data/convert/KotlinClassGeneratingEntityInstantiatorUnitTests.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
diff --git a/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt b/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt
index 5dacbbf48..bf18b1d18 100644
--- a/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt
+++ b/src/test/kotlin/org/springframework/data/convert/ReflectionEntityInstantiatorDataClassUnitTests.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
diff --git a/src/test/kotlin/org/springframework/data/mapping/context/SimpleDataClass.kt b/src/test/kotlin/org/springframework/data/mapping/context/SimpleDataClass.kt
index 1f4f653dd..d9ce4a6a9 100644
--- a/src/test/kotlin/org/springframework/data/mapping/context/SimpleDataClass.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/context/SimpleDataClass.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
@@ -18,5 +18,4 @@ package org.springframework.data.mapping.context
/**
* @author Mark Paluch
*/
-data class SimpleDataClass(val firstname: String, val lastname: String) {
-}
+data class SimpleDataClass(val firstname: String, val lastname: String)
diff --git a/src/test/kotlin/org/springframework/data/mapping/context/TypeCreatingSyntheticClass.kt b/src/test/kotlin/org/springframework/data/mapping/context/TypeCreatingSyntheticClass.kt
index 60c98c803..0cf1f0622 100644
--- a/src/test/kotlin/org/springframework/data/mapping/context/TypeCreatingSyntheticClass.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/context/TypeCreatingSyntheticClass.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
@@ -18,8 +18,7 @@ package org.springframework.data.mapping.context
/**
* @author Mark Paluch
*/
-class TypeCreatingSyntheticClass {
-}
+class TypeCreatingSyntheticClass
fun foobar(args: Array) {
}
diff --git a/src/test/kotlin/org/springframework/data/mapping/model/DataClasses.kt b/src/test/kotlin/org/springframework/data/mapping/model/DataClasses.kt
index 54b7336a1..a61371a50 100644
--- a/src/test/kotlin/org/springframework/data/mapping/model/DataClasses.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/model/DataClasses.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2018-2019 the original author or authors.
+ * Copyright 2018-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.
@@ -20,8 +20,7 @@ import java.util.*
/**
* @author Mark Paluch
*/
-data class DataClassKt(val id: String) {
-}
+data class DataClassKt(val id: String)
data class ExtendedDataClassKt(val id: Long, val name: String) {
fun copy(name: String, id: Long): ExtendedDataClassKt {
diff --git a/src/test/kotlin/org/springframework/data/mapping/model/PreferredConstructorDiscovererUnitTests.kt b/src/test/kotlin/org/springframework/data/mapping/model/PreferredConstructorDiscovererUnitTests.kt
index 769547241..1ca1bb7ee 100644
--- a/src/test/kotlin/org/springframework/data/mapping/model/PreferredConstructorDiscovererUnitTests.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/model/PreferredConstructorDiscovererUnitTests.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
@@ -109,8 +109,7 @@ class PreferredConstructorDiscovererUnitTests {
constructor(firstname: String, lastname: String) : this(firstname)
}
- class DefaultConstructor(val firstname: String = "foo") {
- }
+ class DefaultConstructor(val firstname: String = "foo")
class TwoDefaultConstructorsAnnotated(val firstname: String = "foo", val lastname: String = "bar") {
diff --git a/src/test/kotlin/org/springframework/data/mapping/model/TypeCreatingSyntheticClass.kt b/src/test/kotlin/org/springframework/data/mapping/model/TypeCreatingSyntheticClass.kt
index 05fba90ae..bcfbddd82 100644
--- a/src/test/kotlin/org/springframework/data/mapping/model/TypeCreatingSyntheticClass.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/model/TypeCreatingSyntheticClass.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
@@ -18,8 +18,7 @@ package org.springframework.data.mapping.model
/**
* @author Mark Paluch
*/
-class TypeCreatingSyntheticClass {
-}
+class TypeCreatingSyntheticClass
fun foobar(args: Array) {
}
diff --git a/src/test/kotlin/org/springframework/data/mapping/model/UnusedCustomCopy.kt b/src/test/kotlin/org/springframework/data/mapping/model/UnusedCustomCopy.kt
index 3b5895c62..c20ef979d 100644
--- a/src/test/kotlin/org/springframework/data/mapping/model/UnusedCustomCopy.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/model/UnusedCustomCopy.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2018-2019 the original author or authors.
+ * Copyright 2018-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.
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.springframework.data.mapping.model;
+package org.springframework.data.mapping.model
import java.sql.Timestamp
diff --git a/src/test/kotlin/org/springframework/data/mapping/model/ValueClassKt.kt b/src/test/kotlin/org/springframework/data/mapping/model/ValueClassKt.kt
index d7e9c39f5..cc748eb58 100644
--- a/src/test/kotlin/org/springframework/data/mapping/model/ValueClassKt.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/model/ValueClassKt.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2018-2019 the original author or authors.
+ * Copyright 2018-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.
@@ -18,5 +18,4 @@ package org.springframework.data.mapping.model
/**
* @author Mark Paluch
*/
-class ValueClassKt(val immutable: String) {
-}
+class ValueClassKt(val immutable: String)
diff --git a/src/test/kotlin/org/springframework/data/mapping/model/With32Args.kt b/src/test/kotlin/org/springframework/data/mapping/model/With32Args.kt
index 591a214f6..b438e21b4 100644
--- a/src/test/kotlin/org/springframework/data/mapping/model/With32Args.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/model/With32Args.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2018-2019 the original author or authors.
+ * Copyright 2018-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.
diff --git a/src/test/kotlin/org/springframework/data/mapping/model/With33Args.kt b/src/test/kotlin/org/springframework/data/mapping/model/With33Args.kt
index b30a25ea0..13e8dd1ea 100644
--- a/src/test/kotlin/org/springframework/data/mapping/model/With33Args.kt
+++ b/src/test/kotlin/org/springframework/data/mapping/model/With33Args.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2018-2019 the original author or authors.
+ * Copyright 2018-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.
diff --git a/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt b/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt
index 767bf15a9..bcba5028f 100644
--- a/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt
+++ b/src/test/kotlin/org/springframework/data/repository/CrudRepositoryExtensionsTests.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2008-2019 the original author or authors.
+ * Copyright 2008-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.
diff --git a/src/test/kotlin/org/springframework/data/repository/core/support/KotlinUserRepository.kt b/src/test/kotlin/org/springframework/data/repository/core/support/KotlinUserRepository.kt
index 1c960a94e..4b0793dc7 100644
--- a/src/test/kotlin/org/springframework/data/repository/core/support/KotlinUserRepository.kt
+++ b/src/test/kotlin/org/springframework/data/repository/core/support/KotlinUserRepository.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
diff --git a/src/test/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepositoryCustomImplementationUnitTests.kt b/src/test/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepositoryCustomImplementationUnitTests.kt
index 7343df9f6..d5589617a 100644
--- a/src/test/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepositoryCustomImplementationUnitTests.kt
+++ b/src/test/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepositoryCustomImplementationUnitTests.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 the original author or authors.
+ * Copyright 2019-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.
@@ -35,8 +35,8 @@ import org.springframework.data.repository.sample.User
class CoroutineCrudRepositoryCustomImplementationUnitTests {
val backingRepository = mockk>()
- lateinit var factory: DummyReactiveRepositoryFactory;
- lateinit var coRepository: MyCoRepository;
+ lateinit var factory: DummyReactiveRepositoryFactory
+ lateinit var coRepository: MyCoRepository
@Before
fun before() {
diff --git a/src/test/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepositoryUnitTests.kt b/src/test/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepositoryUnitTests.kt
index 519d07875..01ff1d982 100644
--- a/src/test/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepositoryUnitTests.kt
+++ b/src/test/kotlin/org/springframework/data/repository/kotlin/CoroutineCrudRepositoryUnitTests.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 the original author or authors.
+ * Copyright 2019-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.
@@ -17,13 +17,16 @@ package org.springframework.data.repository.kotlin
import io.mockk.every
import io.mockk.mockk
+import io.mockk.verify
import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.runBlocking
import org.assertj.core.api.Assertions.assertThat
import org.junit.Before
import org.junit.Test
import org.mockito.Mockito
+import org.reactivestreams.Publisher
import org.springframework.data.repository.core.support.DummyReactiveRepositoryFactory
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.data.repository.sample.User
@@ -40,8 +43,8 @@ import rx.Single
class CoroutineCrudRepositoryUnitTests {
val backingRepository = mockk>()
- lateinit var factory: DummyReactiveRepositoryFactory;
- lateinit var coRepository: MyCoRepository;
+ lateinit var factory: DummyReactiveRepositoryFactory
+ lateinit var coRepository: MyCoRepository
@Before
fun before() {
@@ -54,7 +57,7 @@ class CoroutineCrudRepositoryUnitTests {
val sample = User()
- every { backingRepository.findAll() }.returns(Flux.just(sample))
+ every { backingRepository.findAll() } returns Flux.just(sample)
val result = runBlocking {
coRepository.findAll().toList()
@@ -63,12 +66,54 @@ class CoroutineCrudRepositoryUnitTests {
assertThat(result).hasSize(1).containsOnly(sample)
}
+ @Test // DATACMNS-1508
+ fun shouldInvokeFindAllById() {
+
+ every { backingRepository.findAllById(any>()) } returns Flux.fromArray(arrayOf(User(), User()))
+
+ val result = runBlocking {
+ coRepository.findAllById(flowOf("user-1", "user-2")).toList()
+ }
+
+ assertThat(result).hasSize(2)
+ }
+
+ @Test // DATACMNS-1508
+ fun shouldInvokeSaveAllWhenGivenIterable() {
+
+ val sample = listOf(User(), User())
+
+ every { backingRepository.saveAll(any>()) } returns Flux.fromIterable(sample)
+
+ val result = runBlocking {
+ coRepository.saveAll(sample).toList()
+ }
+
+ assertThat(result).containsExactlyElementsOf(sample)
+ }
+
+ @Test // DATACMNS-1508
+ fun shouldInvokeSaveAllWhenGivenFlow() {
+
+ val u1 = User()
+ val u2 = User()
+ val sample = flowOf(u1, u2)
+
+ every { backingRepository.saveAll(any>()) } returns Flux.fromArray(arrayOf(u1, u2))
+
+ val result = runBlocking {
+ coRepository.saveAll(sample).toList()
+ }
+
+ assertThat(result).containsExactly(u1, u2)
+ }
+
@Test // DATACMNS-1508
fun shouldInvokeFindById() {
val sample = User()
- every { backingRepository.findById("foo") }.returns(Mono.just(sample))
+ every { backingRepository.findById("foo") } returns Mono.just(sample)
val result = runBlocking {
coRepository.findById("foo")
@@ -77,6 +122,60 @@ class CoroutineCrudRepositoryUnitTests {
assertThat(result).isNotNull().isEqualTo(sample)
}
+ @Test // DATACMNS-1508
+ fun shouldInvokeExistsById() {
+
+ every { backingRepository.existsById("foo") } returns Mono.just(true)
+
+ val result = runBlocking {
+ coRepository.existsById("foo")
+ }
+
+ assertThat(result).isTrue()
+ }
+
+ @Test // DATACMNS-1508
+ fun shouldInvokeDeleteAll() {
+
+ every { backingRepository.deleteAll() } returns Mono.empty()
+
+ runBlocking {
+ coRepository.deleteAll()
+ }
+
+ verify { backingRepository.deleteAll() }
+ }
+
+ @Test // DATACMNS-1508
+ fun shouldInvokeDeleteAllWhenGivenIterable() {
+
+ val sample = listOf(User(), User())
+
+ every { backingRepository.deleteAll(any>()) } returns Mono.empty()
+
+ runBlocking {
+ coRepository.deleteAll(sample)
+ }
+
+ verify { backingRepository.deleteAll(sample) }
+ }
+
+ @Test // DATACMNS-1508
+ fun shouldInvokeDeleteAllWhenGivenFlow() {
+
+ val u1 = User()
+ val u2 = User()
+ val sample = flowOf(u1, u2)
+
+ every { backingRepository.deleteAll(any>()) } returns Mono.empty()
+
+ runBlocking {
+ coRepository.deleteAll(sample)
+ }
+
+ verify { backingRepository.deleteAll(any>()) }
+ }
+
@Test // DATACMNS-1508
fun shouldBridgeQueryMethod() {
diff --git a/src/test/kotlin/org/springframework/data/repository/query/ParameterUnitTests.kt b/src/test/kotlin/org/springframework/data/repository/query/ParameterUnitTests.kt
index 298053ee0..27ebeb95b 100644
--- a/src/test/kotlin/org/springframework/data/repository/query/ParameterUnitTests.kt
+++ b/src/test/kotlin/org/springframework/data/repository/query/ParameterUnitTests.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 the original author or authors.
+ * Copyright 2019-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.
@@ -19,7 +19,6 @@ import org.assertj.core.api.Assertions.assertThat
import org.junit.Test
import org.springframework.core.DefaultParameterNameDiscoverer
import org.springframework.core.MethodParameter
-import org.springframework.core.ParameterNameDiscoverer
import kotlin.reflect.jvm.javaMethod
/**
diff --git a/src/test/kotlin/org/springframework/data/util/DummyInterface.kt b/src/test/kotlin/org/springframework/data/util/DummyInterface.kt
index 3c3dabff2..d6e11c522 100644
--- a/src/test/kotlin/org/springframework/data/util/DummyInterface.kt
+++ b/src/test/kotlin/org/springframework/data/util/DummyInterface.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
diff --git a/src/test/kotlin/org/springframework/data/util/TypeCreatingSyntheticClass.kt b/src/test/kotlin/org/springframework/data/util/TypeCreatingSyntheticClass.kt
index fbc5b26f9..9b2f3e346 100644
--- a/src/test/kotlin/org/springframework/data/util/TypeCreatingSyntheticClass.kt
+++ b/src/test/kotlin/org/springframework/data/util/TypeCreatingSyntheticClass.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2017-2019 the original author or authors.
+ * Copyright 2017-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.
@@ -18,8 +18,7 @@ package org.springframework.data.util
/**
* @author Mark Paluch
*/
-class TypeCreatingSyntheticClass {
-}
+class TypeCreatingSyntheticClass
fun foobar(args: Array) {
}