From fa0672fb1b1597fcf08042b502fbffb143e7af91 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 11 Jun 2025 11:23:36 +0200 Subject: [PATCH] Upgrade to Spring Data 2025.1.0-M3. Closes gh-921 --- pom.xml | 2 +- .../repository/core/VaultKeyValueAdapter.java | 6 +++--- .../repository/core/VaultKeyValueTemplate.java | 18 ++++++++++-------- .../repository/core/VaultQueryEngine.java | 2 +- .../repository/query/VaultQueryCreator.java | 4 +++- .../support/VaultRepositoryFactory.java | 4 +++- .../support/VaultRevisionRepository.java | 3 +++ 7 files changed, 24 insertions(+), 15 deletions(-) diff --git a/pom.xml b/pom.xml index 57cd8dcb..709a0468 100644 --- a/pom.xml +++ b/pom.xml @@ -48,7 +48,7 @@ 0.12.3 3.14.9 7.0.0-M5 - 2025.1.0-M1 + 2025.1.0-M3 6.2.0 2025.0.0-M4 diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultKeyValueAdapter.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultKeyValueAdapter.java index d45ad241..e882e0c8 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultKeyValueAdapter.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultKeyValueAdapter.java @@ -151,7 +151,7 @@ public class VaultKeyValueAdapter extends AbstractKeyValueAdapter { } @Override - public Iterable getAllOf(String keyspace) { + public Iterable getAllOf(String keyspace) { List list = doList(keyspace); List items = new ArrayList<>(list.size()); @@ -173,7 +173,7 @@ public class VaultKeyValueAdapter extends AbstractKeyValueAdapter { List list = doList(keyspace); Iterator iterator = list.iterator(); - return new CloseableIterator>() { + return new CloseableIterator<>() { @Override public void close() { @@ -189,7 +189,7 @@ public class VaultKeyValueAdapter extends AbstractKeyValueAdapter { final String key = iterator.next(); - return new Entry() { + return new Entry<>() { @Override public Object getKey() { return key; diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultKeyValueTemplate.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultKeyValueTemplate.java index 65b443dc..55ad2337 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultKeyValueTemplate.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultKeyValueTemplate.java @@ -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 delete(T objectToDelete) { + public @Nullable T delete(T objectToDelete) { Class type = (Class) 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()); } } diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultQueryEngine.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultQueryEngine.java index 753d89d5..e4698931 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultQueryEngine.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/core/VaultQueryEngine.java @@ -121,7 +121,7 @@ class VaultQueryEngine extends QueryEngine query) { + public @Nullable VaultQuery resolve(KeyValueQuery query) { return (VaultQuery) query.getCriteria(); } diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/query/VaultQueryCreator.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/query/VaultQueryCreator.java index 33487ecd..0af96ea0 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/repository/query/VaultQueryCreator.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/query/VaultQueryCreator.java @@ -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 complete(VaultQuery vaultQuery, Sort sort) { + protected KeyValueQuery complete(@Nullable VaultQuery vaultQuery, Sort sort) { KeyValueQuery query = new KeyValueQuery<>(vaultQuery); diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/support/VaultRepositoryFactory.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/support/VaultRepositoryFactory.java index 710d8929..f2824468 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/repository/support/VaultRepositoryFactory.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/support/VaultRepositoryFactory.java @@ -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 entityInformation = getEntityInformation(metadata.getDomainType()); VaultRevisionRepository repository = new VaultRevisionRepository<>(entityInformation, - entity.getKeySpace(), template); + Objects.requireNonNull(entity.getKeySpace()), template); return fragments.append(RepositoryFragment.implemented(repository)); } diff --git a/spring-vault-core/src/main/java/org/springframework/vault/repository/support/VaultRevisionRepository.java b/spring-vault-core/src/main/java/org/springframework/vault/repository/support/VaultRevisionRepository.java index c87ad9e2..fe34e43c 100644 --- a/spring-vault-core/src/main/java/org/springframework/vault/repository/support/VaultRevisionRepository.java +++ b/spring-vault-core/src/main/java/org/springframework/vault/repository/support/VaultRevisionRepository.java @@ -107,6 +107,7 @@ public class VaultRevisionRepository implements RevisionRepository> collectRevisions(String id, List versions) { List> revisions = new ArrayList<>(); @@ -121,6 +122,7 @@ public class VaultRevisionRepository implements RevisionRepository implements RevisionRepository> toRevision(@Nullable Versioned> versioned, String id) { if (versioned == null) {