Upgrade to Spring Data 2025.1.0-M3.

Closes gh-921
This commit is contained in:
Mark Paluch
2025-06-11 11:23:36 +02:00
parent 709139ff86
commit fa0672fb1b
7 changed files with 24 additions and 15 deletions

View File

@@ -48,7 +48,7 @@
<nullaway.version>0.12.3</nullaway.version>
<okhttp3.version>3.14.9</okhttp3.version>
<spring.version>7.0.0-M5</spring.version>
<spring-data-bom.version>2025.1.0-M1</spring-data-bom.version>
<spring-data-bom.version>2025.1.0-M3</spring-data-bom.version>
<spring-security-bom.version>6.2.0</spring-security-bom.version>
<reactor.version>2025.0.0-M4</reactor.version>

View File

@@ -151,7 +151,7 @@ public class VaultKeyValueAdapter extends AbstractKeyValueAdapter {
}
@Override
public Iterable<?> getAllOf(String keyspace) {
public Iterable<Object> getAllOf(String keyspace) {
List<String> list = doList(keyspace);
List<Object> items = new ArrayList<>(list.size());
@@ -173,7 +173,7 @@ public class VaultKeyValueAdapter extends AbstractKeyValueAdapter {
List<String> list = doList(keyspace);
Iterator<String> iterator = list.iterator();
return new CloseableIterator<Entry<Object, Object>>() {
return new CloseableIterator<>() {
@Override
public void close() {
@@ -189,7 +189,7 @@ public class VaultKeyValueAdapter extends AbstractKeyValueAdapter {
final String key = iterator.next();
return new Entry<Object, Object>() {
return new Entry<>() {
@Override
public Object getKey() {
return key;

View File

@@ -16,6 +16,7 @@
package org.springframework.vault.repository.core;
import java.util.Collections;
import java.util.Objects;
import java.util.Set;
import org.jspecify.annotations.Nullable;
@@ -23,6 +24,7 @@ import org.jspecify.annotations.Nullable;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.keyvalue.core.KeyValueAdapter;
import org.springframework.data.keyvalue.core.KeyValueCallback;
import org.springframework.data.keyvalue.core.KeyValueTemplate;
import org.springframework.data.keyvalue.core.event.KeyValueEvent;
import org.springframework.data.keyvalue.core.mapping.KeyValuePersistentEntity;
@@ -98,7 +100,7 @@ public class VaultKeyValueTemplate extends KeyValueTemplate {
potentiallyPublishEvent(KeyValueEvent.beforeInsert(id, keyspace, objectToInsert.getClass(), objectToInsert));
T saved = execute(adapter -> {
T saved = executeRequired(adapter -> {
if (adapter.contains(id, keyspace)) {
throw new DuplicateKeyException(
@@ -124,7 +126,7 @@ public class VaultKeyValueTemplate extends KeyValueTemplate {
potentiallyPublishEvent(KeyValueEvent.beforeUpdate(id, keyspace, objectToUpdate.getClass(), objectToUpdate));
T updated = execute(adapter -> (T) adapter.put(id, objectToUpdate, keyspace));
T updated = executeRequired(adapter -> (T) adapter.put(id, objectToUpdate, keyspace));
potentiallyPublishEvent(
KeyValueEvent.afterUpdate(id, keyspace, objectToUpdate.getClass(), objectToUpdate, updated));
@@ -134,18 +136,18 @@ public class VaultKeyValueTemplate extends KeyValueTemplate {
@Override
@SuppressWarnings("unchecked")
public <T> T delete(T objectToDelete) {
public <T> @Nullable T delete(T objectToDelete) {
Class<T> type = (Class<T>) ClassUtils.getUserClass(objectToDelete);
KeyValuePersistentEntity<?, ?> entity = getEntity(type);
Object id = entity.getIdentifierAccessor(objectToDelete).getIdentifier();
Object id = Objects.requireNonNull(entity.getIdentifierAccessor(objectToDelete).getIdentifier());
String keyspace = resolveKeySpace(type);
potentiallyPublishEvent(KeyValueEvent.beforeDelete(id, keyspace, type));
T result = execute(adapter -> ((VaultKeyValueAdapter) adapter).deleteEntity(objectToDelete, keyspace));
T result = executeRequired(adapter -> ((VaultKeyValueAdapter) adapter).deleteEntity(objectToDelete, keyspace));
potentiallyPublishEvent(KeyValueEvent.afterDelete(id, keyspace, type, result));
@@ -160,7 +162,7 @@ public class VaultKeyValueTemplate extends KeyValueTemplate {
private String resolveKeySpace(Class<?> type) {
KeyValuePersistentEntity<?, ?> entity = getEntity(type);
return entity.getKeySpace();
return Objects.requireNonNull(entity.getKeySpace());
}
@SuppressWarnings("rawtypes")
@@ -181,11 +183,11 @@ public class VaultKeyValueTemplate extends KeyValueTemplate {
}
public VaultConverter getConverter() {
return execute(adapter -> ((VaultKeyValueAdapter) adapter).getConverter());
return executeRequired(adapter -> ((VaultKeyValueAdapter) adapter).getConverter());
}
public VaultOperations getVaultOperations() {
return execute(adapter -> ((VaultKeyValueAdapter) adapter).getVaultOperations());
return executeRequired(adapter -> ((VaultKeyValueAdapter) adapter).getVaultOperations());
}
}

View File

@@ -121,7 +121,7 @@ class VaultQueryEngine extends QueryEngine<VaultKeyValueAdapter, VaultQuery, Com
INSTANCE;
@Override
public VaultQuery resolve(KeyValueQuery<?> query) {
public @Nullable VaultQuery resolve(KeyValueQuery<?> query) {
return (VaultQuery) query.getCriteria();
}

View File

@@ -22,6 +22,8 @@ import java.util.function.BiPredicate;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import org.jspecify.annotations.Nullable;
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.domain.Sort;
import org.springframework.data.keyvalue.core.query.KeyValueQuery;
@@ -152,7 +154,7 @@ public class VaultQueryCreator extends AbstractQueryCreator<KeyValueQuery<VaultQ
}
@Override
protected KeyValueQuery<VaultQuery> complete(VaultQuery vaultQuery, Sort sort) {
protected KeyValueQuery<VaultQuery> complete(@Nullable VaultQuery vaultQuery, Sort sort) {
KeyValueQuery<VaultQuery> query = new KeyValueQuery<>(vaultQuery);

View File

@@ -15,6 +15,8 @@
*/
package org.springframework.vault.repository.support;
import java.util.Objects;
import org.springframework.data.keyvalue.core.KeyValueOperations;
import org.springframework.data.keyvalue.repository.query.KeyValuePartTreeQuery;
import org.springframework.data.keyvalue.repository.support.KeyValueRepositoryFactory;
@@ -72,7 +74,7 @@ public class VaultRepositoryFactory extends KeyValueRepositoryFactory {
.getRequiredPersistentEntity(metadata.getDomainType());
EntityInformation<?, String> entityInformation = getEntityInformation(metadata.getDomainType());
VaultRevisionRepository<?> repository = new VaultRevisionRepository<>(entityInformation,
entity.getKeySpace(), template);
Objects.requireNonNull(entity.getKeySpace()), template);
return fragments.append(RepositoryFragment.implemented(repository));
}

View File

@@ -107,6 +107,7 @@ public class VaultRevisionRepository<T> implements RevisionRepository<T, String,
return Revisions.of(collectRevisions(id, metadata.getVersions()));
}
@SuppressWarnings("NullAway")
private List<Revision<Integer, T>> collectRevisions(String id, List<Versioned.Metadata> versions) {
List<Revision<Integer, T>> revisions = new ArrayList<>();
@@ -121,6 +122,7 @@ public class VaultRevisionRepository<T> implements RevisionRepository<T, String,
T entity = versioned.hasData() ? converter.read(this.metadata.getJavaType(), createDocument(id, versioned))
: null;
revisions.add(Revision.of(new VaultRevisionMetadata(versioned), entity));
}
return revisions;
@@ -157,6 +159,7 @@ public class VaultRevisionRepository<T> implements RevisionRepository<T, String,
return toRevision(operations.get(getPath(id), Versioned.Version.from(revisionNumber)), id);
}
@SuppressWarnings("NullAway")
private Optional<Revision<Integer, T>> toRevision(@Nullable Versioned<Map<String, Object>> versioned, String id) {
if (versioned == null) {