Polishing.
Replace qualified class name access of inner classes with simple names and imports. Remove Java 8 guards. Extend supported temporal types in Jsr310Converters. Remove superfluous converter annotations. Simplify tests. See #2677 Original pull request: #2681
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* Copyright 2023 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.data.redis.core.convert;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.OffsetTime;
|
||||
import java.time.Period;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Unit test for {@link Jsr310Converters}.
|
||||
*
|
||||
* @author Mark Paluch
|
||||
*/
|
||||
class Jsr310ConvertersTest {
|
||||
|
||||
@Test // GH-2677
|
||||
void shouldReportSupportedTemporalTypes() {
|
||||
|
||||
assertThat(Jsr310Converters.supports(Object.class)).isFalse();
|
||||
assertThat(Jsr310Converters.supports(Date.class)).isFalse();
|
||||
|
||||
assertThat(Jsr310Converters.supports(Instant.class)).isTrue();
|
||||
assertThat(Jsr310Converters.supports(ZoneId.class)).isTrue();
|
||||
assertThat(Jsr310Converters.supports(ZonedDateTime.class)).isTrue();
|
||||
|
||||
assertThat(Jsr310Converters.supports(LocalDateTime.class)).isTrue();
|
||||
assertThat(Jsr310Converters.supports(LocalDate.class)).isTrue();
|
||||
assertThat(Jsr310Converters.supports(LocalTime.class)).isTrue();
|
||||
|
||||
assertThat(Jsr310Converters.supports(Duration.class)).isTrue();
|
||||
assertThat(Jsr310Converters.supports(Period.class)).isTrue();
|
||||
|
||||
assertThat(Jsr310Converters.supports(OffsetTime.class)).isTrue();
|
||||
assertThat(Jsr310Converters.supports(OffsetDateTime.class)).isTrue();
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@
|
||||
*/
|
||||
package org.springframework.data.redis.repository;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.OffsetTime;
|
||||
@@ -27,7 +27,6 @@ import java.util.Optional;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.data.annotation.Reference;
|
||||
@@ -51,9 +50,7 @@ import org.springframework.data.redis.core.index.SimpleIndexDefinition;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import org.springframework.data.repository.PagingAndSortingRepository;
|
||||
import org.springframework.data.repository.query.QueryByExampleExecutor;
|
||||
import org.springframework.lang.NonNull;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* Base for testing Redis repository support in different configurations.
|
||||
@@ -504,9 +501,7 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
@Test // GH-2677
|
||||
void shouldProperlyHandleEntityWithOffsetJavaTimeTypes() {
|
||||
|
||||
User jonDoe = User.as("Jon Doe")
|
||||
.expires(OffsetTime.now().plusMinutes(5))
|
||||
.lastAccess(OffsetDateTime.now());
|
||||
User jonDoe = User.of("Jon Doe").expires(OffsetTime.now().plusMinutes(5)).lastAccess(OffsetDateTime.now());
|
||||
|
||||
this.userRepository.save(jonDoe);
|
||||
|
||||
@@ -519,8 +514,7 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
assertThat(loadedJonDoe.getExpiration()).isEqualTo(jonDoe.getExpiration());
|
||||
}
|
||||
|
||||
public interface PersonRepository
|
||||
extends PagingAndSortingRepository<Person, String>, CrudRepository<Person, String>,
|
||||
public interface PersonRepository extends PagingAndSortingRepository<Person, String>, CrudRepository<Person, String>,
|
||||
QueryByExampleExecutor<Person> {
|
||||
|
||||
List<Person> findByFirstname(String firstname);
|
||||
@@ -566,7 +560,7 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
|
||||
public interface ImmutableObjectRepository extends CrudRepository<Immutable, String> {}
|
||||
|
||||
public interface UserRepository extends CrudRepository<User, String> { }
|
||||
public interface UserRepository extends CrudRepository<User, String> {}
|
||||
|
||||
/**
|
||||
* Custom Redis {@link IndexConfiguration} forcing index of {@link Person#lastname}.
|
||||
@@ -670,12 +664,9 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Objects.equals(this.getId(), that.getId())
|
||||
&& Objects.equals(this.getFirstname(), that.getFirstname())
|
||||
&& Objects.equals(this.getLastname(), that.getLastname())
|
||||
&& Objects.equals(this.getAlive(), that.getAlive())
|
||||
&& Objects.equals(this.getCity(), that.getCity())
|
||||
&& Objects.equals(this.getHometown(), that.getHometown());
|
||||
return Objects.equals(this.getId(), that.getId()) && Objects.equals(this.getFirstname(), that.getFirstname())
|
||||
&& Objects.equals(this.getLastname(), that.getLastname()) && Objects.equals(this.getAlive(), that.getAlive())
|
||||
&& Objects.equals(this.getCity(), that.getCity()) && Objects.equals(this.getHometown(), that.getHometown());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -725,9 +716,8 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Objects.equals(this.getId(), that.getId())
|
||||
&& Objects.equals(this.getName(), that.getName())
|
||||
&& Objects.equals(this.getLocation(), that.getLocation());
|
||||
return Objects.equals(this.getId(), that.getId()) && Objects.equals(this.getName(), that.getName())
|
||||
&& Objects.equals(this.getLocation(), that.getLocation());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -738,11 +728,7 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
return "City{" +
|
||||
"id='" + id + '\'' +
|
||||
", name='" + name + '\'' +
|
||||
", location=" + location +
|
||||
'}';
|
||||
return "City{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", location=" + location + '}';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -781,9 +767,8 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
return false;
|
||||
}
|
||||
|
||||
return Objects.equals(this.getId(), that.getId())
|
||||
&& Objects.equals(this.getName(), that.getName())
|
||||
&& Objects.equals(this.getNested(), that.getNested());
|
||||
return Objects.equals(this.getId(), that.getId()) && Objects.equals(this.getName(), that.getName())
|
||||
&& Objects.equals(this.getNested(), that.getNested());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -793,9 +778,8 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
|
||||
public String toString() {
|
||||
|
||||
return "RedisRepositoryIntegrationTestBase.Immutable(id=" + this.getId()
|
||||
+ ", name=" + this.getName()
|
||||
+ ", nested=" + this.getNested() + ")";
|
||||
return "RedisRepositoryIntegrationTestBase.Immutable(id=" + this.getId() + ", name=" + this.getName()
|
||||
+ ", nested=" + this.getNested() + ")";
|
||||
}
|
||||
|
||||
public Immutable withId(String id) {
|
||||
@@ -814,22 +798,20 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
@RedisHash("Users")
|
||||
static class User {
|
||||
|
||||
static User as(@NonNull String name) {
|
||||
Assert.hasText(name, () -> String.format("Name [%s] of User is required", name));
|
||||
return new User(name);
|
||||
}
|
||||
@Id private final String name;
|
||||
|
||||
private OffsetDateTime lastAccessed;
|
||||
|
||||
private OffsetTime expiration;
|
||||
|
||||
@Id
|
||||
private final String name;
|
||||
|
||||
private User(@NonNull String name) {
|
||||
private User(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
static User of(String name) {
|
||||
return new User(name);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public OffsetTime getExpiration() {
|
||||
return this.expiration;
|
||||
@@ -844,38 +826,15 @@ public abstract class RedisRepositoryIntegrationTestBase {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public User lastAccess(@Nullable OffsetDateTime dateTime) {
|
||||
public User lastAccess(OffsetDateTime dateTime) {
|
||||
this.lastAccessed = dateTime;
|
||||
return this;
|
||||
}
|
||||
|
||||
public User expires(@Nullable OffsetTime time) {
|
||||
public User expires(OffsetTime time) {
|
||||
this.expiration = time;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!(obj instanceof User that)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return this.getName().equals(that.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user