Upgrade to Spring Data 3.1.

Closes #800
This commit is contained in:
Mark Paluch
2023-06-20 14:59:39 +02:00
parent f489c2f903
commit d877da4328
4 changed files with 70 additions and 35 deletions

View File

@@ -40,7 +40,7 @@
<okhttp3.version>3.14.9</okhttp3.version>
<spring.version>6.0.10</spring.version>
<spring-asciidoctor-backends.version>0.0.4</spring-asciidoctor-backends.version>
<spring-data-bom.version>2022.0.7</spring-data-bom.version>
<spring-data-bom.version>2023.0.1</spring-data-bom.version>
<spring-security-bom.version>6.0.2</spring-security-bom.version>
<reactor.version>2022.0.8</reactor.version>

View File

@@ -15,6 +15,7 @@
*/
package org.springframework.vault.repository.mapping;
import org.springframework.data.keyvalue.core.mapping.AnnotationBasedKeySpaceResolver;
import org.springframework.data.keyvalue.core.mapping.BasicKeyValuePersistentEntity;
import org.springframework.data.keyvalue.core.mapping.KeySpaceResolver;
import org.springframework.data.util.TypeInformation;
@@ -43,10 +44,25 @@ public class BasicVaultPersistentEntity<T> extends BasicKeyValuePersistentEntity
/**
* Creates new {@link BasicVaultPersistentEntity}.
* @param information must not be {@literal null}.
* @param fallbackKeySpaceResolver can be {@literal null}.
* @param keySpaceResolver can be {@literal null}.
*/
public BasicVaultPersistentEntity(TypeInformation<T> information, KeySpaceResolver fallbackKeySpaceResolver) {
super(information, fallbackKeySpaceResolver);
public BasicVaultPersistentEntity(TypeInformation<T> information, @Nullable KeySpaceResolver keySpaceResolver) {
super(information, type -> {
if (keySpaceResolver != null) {
return keySpaceResolver.resolveKeySpace(type);
}
String keyspace = AnnotationBasedKeySpaceResolver.INSTANCE.resolveKeySpace(type);
if (StringUtils.hasText(keyspace)) {
// fallback to use keyspace resolution and SpEL expression handling of
// BasicKeyValuePersistentEntity.
return null;
}
return SimpleClassNameKeySpaceResolver.INSTANCE.resolveKeySpace(type);
});
Secret annotation = findAnnotation(Secret.class);

View File

@@ -0,0 +1,40 @@
/*
* 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.vault.repository.mapping;
import org.springframework.data.keyvalue.core.mapping.KeySpaceResolver;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils;
/**
* Most trivial implementation of {@link KeySpaceResolver} returning the
* {@link Class#getName()}.
*
* @author Mark Paluch
*/
enum SimpleClassNameKeySpaceResolver implements KeySpaceResolver {
INSTANCE;
@Override
public String resolveKeySpace(Class<?> type) {
Assert.notNull(type, "Type must not be null");
return StringUtils.uncapitalize(ClassUtils.getUserClass(type).getSimpleName());
}
}

View File

@@ -20,9 +20,7 @@ import org.springframework.data.keyvalue.core.mapping.context.KeyValueMappingCon
import org.springframework.data.mapping.model.Property;
import org.springframework.data.mapping.model.SimpleTypeHolder;
import org.springframework.data.util.TypeInformation;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils;
import org.springframework.lang.Nullable;
/**
* Mapping context for {@link VaultPersistentEntity Vault-specific entities}.
@@ -32,20 +30,20 @@ import org.springframework.util.StringUtils;
*/
public class VaultMappingContext extends KeyValueMappingContext<VaultPersistentEntity<?>, VaultPersistentProperty> {
private KeySpaceResolver fallbackKeySpaceResolver = SimpleClassNameKeySpaceResolver.INSTANCE;
/**
* @return the {@link KeySpaceResolver} if configured.
* @deprecated since 3.1, {@link KeySpaceResolver} has fully moved into
* {@link KeyValueMappingContext}.
*/
@Nullable
@Deprecated(since = "3.1", forRemoval = true)
public KeySpaceResolver getFallbackKeySpaceResolver() {
return this.fallbackKeySpaceResolver;
}
@Override
public void setFallbackKeySpaceResolver(KeySpaceResolver fallbackKeySpaceResolver) {
this.fallbackKeySpaceResolver = fallbackKeySpaceResolver;
return super.getKeySpaceResolver();
}
@Override
protected <T> VaultPersistentEntity<?> createPersistentEntity(TypeInformation<T> typeInformation) {
return new BasicVaultPersistentEntity<>(typeInformation, this.fallbackKeySpaceResolver);
return new BasicVaultPersistentEntity<>(typeInformation, getKeySpaceResolver());
}
@Override
@@ -54,23 +52,4 @@ public class VaultMappingContext extends KeyValueMappingContext<VaultPersistentE
return new VaultPersistentProperty(property, owner, simpleTypeHolder);
}
/**
* Most trivial implementation of {@link KeySpaceResolver} returning the
* {@link Class#getName()}.
*
* @author Mark Paluch
*/
enum SimpleClassNameKeySpaceResolver implements KeySpaceResolver {
INSTANCE;
@Override
public String resolveKeySpace(Class<?> type) {
Assert.notNull(type, "Type must not be null");
return StringUtils.uncapitalize(ClassUtils.getUserClass(type).getSimpleName());
}
}
}