Skip to content

Commit 9727c2c

Browse files
committed
DATAKV-184 - Adapt to API changes in mapping subsystem.
1 parent d5d09ac commit 9727c2c

File tree

4 files changed

+22
-28
lines changed

4 files changed

+22
-28
lines changed

src/main/java/org/springframework/data/keyvalue/core/GeneratingIdAccessor.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2014 the original author or authors.
2+
* Copyright 2014-2017 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -15,9 +15,6 @@
1515
*/
1616
package org.springframework.data.keyvalue.core;
1717

18-
import java.io.Serializable;
19-
import java.util.Optional;
20-
2118
import org.springframework.data.mapping.IdentifierAccessor;
2219
import org.springframework.data.mapping.PersistentProperty;
2320
import org.springframework.data.mapping.PersistentPropertyAccessor;
@@ -26,8 +23,9 @@
2623
/**
2724
* {@link IdentifierAccessor} adding a {@link #getOrGenerateIdentifier()} to automatically generate an identifier and
2825
* set it on the underling bean instance.
29-
*
26+
*
3027
* @author Oliver Gierke
28+
* @author Mark Paluch
3129
* @see #getOrGenerateIdentifier()
3230
*/
3331
class GeneratingIdAccessor implements IdentifierAccessor {
@@ -39,7 +37,7 @@ class GeneratingIdAccessor implements IdentifierAccessor {
3937
/**
4038
* Creates a new {@link GeneratingIdAccessor} using the given {@link PersistentPropertyAccessor}, identifier property
4139
* and {@link IdentifierGenerator}.
42-
*
40+
*
4341
* @param accessor must not be {@literal null}.
4442
* @param identifierProperty must not be {@literal null}.
4543
* @param generator must not be {@literal null}.
@@ -61,26 +59,26 @@ public GeneratingIdAccessor(PersistentPropertyAccessor accessor, PersistentPrope
6159
* @see org.springframework.data.keyvalue.core.IdentifierAccessor#getIdentifier()
6260
*/
6361
@Override
64-
public Optional<Object> getIdentifier() {
62+
public Object getIdentifier() {
6563
return accessor.getProperty(identifierProperty);
6664
}
6765

6866
/**
6967
* Returns the identifier value of the backing bean or generates a new one using the configured
7068
* {@link IdentifierGenerator}.
71-
*
69+
*
7270
* @return
7371
*/
7472
public Object getOrGenerateIdentifier() {
7573

76-
Optional<Object> existingIdentifier = getIdentifier();
74+
Object existingIdentifier = getIdentifier();
7775

78-
if (existingIdentifier.isPresent()) {
79-
return existingIdentifier.get();
76+
if (existingIdentifier != null) {
77+
return existingIdentifier;
8078
}
8179

8280
Object generatedIdentifier = generator.generateIdentifierOfType(identifierProperty.getTypeInformation());
83-
accessor.setProperty(identifierProperty, Optional.ofNullable(generatedIdentifier));
81+
accessor.setProperty(identifierProperty, generatedIdentifier);
8482

8583
return generatedIdentifier;
8684
}

src/main/java/org/springframework/data/keyvalue/core/KeyValueTemplate.java

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
* @author Christoph Strobl
4747
* @author Oliver Gierke
4848
* @author Thomas Darimont
49+
* @author Mark Paluch
4950
*/
5051
public class KeyValueTemplate implements KeyValueOperations, ApplicationEventPublisherAware {
5152

@@ -134,8 +135,7 @@ public <T> T insert(T objectToInsert) {
134135
KeyValuePersistentEntity<?, ?> entity = getKeyValuePersistentEntity(objectToInsert);
135136

136137
GeneratingIdAccessor generatingIdAccessor = new GeneratingIdAccessor(entity.getPropertyAccessor(objectToInsert),
137-
entity.getIdProperty()
138-
.orElseThrow(() -> new IllegalArgumentException("Unable to extract 'id' for object to be deleted")),
138+
entity.getIdProperty(),
139139
identifierGenerator);
140140
Object id = generatingIdAccessor.getOrGenerateIdentifier();
141141

@@ -144,10 +144,7 @@ public <T> T insert(T objectToInsert) {
144144
}
145145

146146
private KeyValuePersistentEntity<?, ?> getKeyValuePersistentEntity(Object objectToInsert) {
147-
148-
return this.mappingContext.getPersistentEntity(ClassUtils.getUserClass(objectToInsert))
149-
.orElseThrow(() -> new IllegalArgumentException(
150-
String.format("Unable to find PersistentEntity for %s", ObjectUtils.nullSafeClassName(objectToInsert))));
147+
return this.mappingContext.getRequiredPersistentEntity(ClassUtils.getUserClass(objectToInsert));
151148
}
152149

153150
/*
@@ -197,7 +194,7 @@ public void update(Object objectToUpdate) {
197194
String.format("Cannot determine id for type %s", ClassUtils.getUserClass(objectToUpdate)));
198195
}
199196

200-
update((Serializable) entity.getIdentifierAccessor(objectToUpdate).getIdentifier().get(), objectToUpdate);
197+
update((Serializable) entity.getIdentifierAccessor(objectToUpdate).getRequiredIdentifier(), objectToUpdate);
201198
}
202199

203200
/*
@@ -331,8 +328,7 @@ public <T> T delete(T objectToDelete) {
331328
Class<T> type = (Class<T>) ClassUtils.getUserClass(objectToDelete);
332329
KeyValuePersistentEntity<?, ?> entity = getKeyValuePersistentEntity(objectToDelete);
333330

334-
return delete((Serializable) entity.getIdentifierAccessor(objectToDelete).getIdentifier()
335-
.orElseThrow(() -> new IllegalArgumentException("Unable to extract 'id' for object to be deleted")), type);
331+
return delete((Serializable) entity.getIdentifierAccessor(objectToDelete).getIdentifier(), type);
336332
}
337333

338334
/*
@@ -485,7 +481,7 @@ public void destroy() throws Exception {
485481
}
486482

487483
private String resolveKeySpace(Class<?> type) {
488-
return this.mappingContext.getPersistentEntity(type).get().getKeySpace();
484+
return this.mappingContext.getRequiredPersistentEntity(type).getKeySpace();
489485
}
490486

491487
private RuntimeException resolveExceptionIfPossible(RuntimeException e) {

src/main/java/org/springframework/data/keyvalue/repository/support/KeyValueRepositoryFactory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
*
5252
* @author Christoph Strobl
5353
* @author Oliver Gierke
54+
* @author Mark Paluch
5455
*/
5556
public class KeyValueRepositoryFactory extends RepositoryFactorySupport {
5657

@@ -113,10 +114,9 @@ public KeyValueRepositoryFactory(KeyValueOperations keyValueOperations,
113114
@SuppressWarnings("unchecked")
114115
public <T, ID> EntityInformation<T, ID> getEntityInformation(Class<T> domainClass) {
115116

116-
PersistentEntity<T, ?> entity = (PersistentEntity<T, ?>) context.getPersistentEntity(domainClass).get();
117-
PersistentEntityInformation<T, ID> entityInformation = new PersistentEntityInformation<>(entity);
117+
PersistentEntity<T, ?> entity = (PersistentEntity<T, ?>) context.getRequiredPersistentEntity(domainClass);
118118

119-
return entityInformation;
119+
return new PersistentEntityInformation<>(entity);
120120
}
121121

122122
/*

src/main/java/org/springframework/data/keyvalue/repository/support/SimpleKeyValueRepository.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
/**
3434
* @author Christoph Strobl
3535
* @author Oliver Gierke
36+
* @author Mark Paluch
3637
* @param <T>
3738
* @param <ID>
3839
*/
@@ -97,7 +98,7 @@ public <S extends T> S save(S entity) {
9798
if (entityInformation.isNew(entity)) {
9899
operations.insert(entity);
99100
} else {
100-
operations.update(entityInformation.getId(entity).get(), entity);
101+
operations.update(entityInformation.getRequiredId(entity), entity);
101102
}
102103
return entity;
103104
}
@@ -188,8 +189,7 @@ public void deleteById(ID id) {
188189
*/
189190
@Override
190191
public void delete(T entity) {
191-
deleteById(entityInformation.getId(entity)
192-
.orElseThrow(() -> new IllegalArgumentException("Cannot delete entity with 'null' id.")));
192+
deleteById(entityInformation.getRequiredId(entity));
193193
}
194194

195195
/*

0 commit comments

Comments
 (0)