|
28 | 28 | import java.io.BufferedReader;
|
29 | 29 | import java.io.IOException;
|
30 | 30 | import java.io.InputStreamReader;
|
| 31 | +import java.lang.reflect.Method; |
31 | 32 | import java.util.*;
|
32 | 33 |
|
33 | 34 | import org.elasticsearch.action.ListenableActionFuture;
|
|
102 | 103 | * @author Mason Chan
|
103 | 104 | * @author Young Gu
|
104 | 105 | * @author Oliver Gierke
|
| 106 | + * @author Mark Janssen |
105 | 107 | */
|
106 | 108 |
|
107 | 109 | public class ElasticsearchTemplate implements ElasticsearchOperations, ApplicationContextAware {
|
@@ -1013,13 +1015,10 @@ private IndexRequestBuilder prepareIndex(IndexQuery query) {
|
1013 | 1015 | IndexRequestBuilder indexRequestBuilder = null;
|
1014 | 1016 |
|
1015 | 1017 | if (query.getObject() != null) {
|
1016 |
| - String entityId = null; |
1017 |
| - if (isDocument(query.getObject().getClass())) { |
1018 |
| - entityId = getPersistentEntityId(query.getObject()); |
1019 |
| - } |
| 1018 | + String id = isBlank(query.getId()) ? getPersistentEntityId(query.getObject()) : query.getId(); |
1020 | 1019 | // If we have a query id and a document id, do not ask ES to generate one.
|
1021 |
| - if (query.getId() != null && entityId != null) { |
1022 |
| - indexRequestBuilder = client.prepareIndex(indexName, type, query.getId()); |
| 1020 | + if (id != null) { |
| 1021 | + indexRequestBuilder = client.prepareIndex(indexName, type, id); |
1023 | 1022 | } else {
|
1024 | 1023 | indexRequestBuilder = client.prepareIndex(indexName, type);
|
1025 | 1024 | }
|
@@ -1096,18 +1095,18 @@ public ElasticsearchPersistentEntity getPersistentEntityFor(Class clazz) {
|
1096 | 1095 | }
|
1097 | 1096 |
|
1098 | 1097 | private String getPersistentEntityId(Object entity) {
|
1099 |
| - |
| 1098 | + |
1100 | 1099 | ElasticsearchPersistentEntity<?> persistentEntity = getPersistentEntityFor(entity.getClass());
|
1101 | 1100 | Object identifier = persistentEntity.getIdentifierAccessor(entity).getIdentifier();
|
1102 |
| - |
| 1101 | + |
1103 | 1102 | return identifier == null ? null : String.valueOf(identifier);
|
1104 | 1103 | }
|
1105 | 1104 |
|
1106 | 1105 | private void setPersistentEntityId(Object entity, String id) {
|
1107 |
| - |
| 1106 | + |
1108 | 1107 | ElasticsearchPersistentEntity<?> persistentEntity = getPersistentEntityFor(entity.getClass());
|
1109 | 1108 | PersistentProperty<?> idProperty = persistentEntity.getIdProperty();
|
1110 |
| - |
| 1109 | + |
1111 | 1110 | // Only deal with String because ES generated Ids are strings !
|
1112 | 1111 | if (idProperty != null && idProperty.getType().isAssignableFrom(String.class)) {
|
1113 | 1112 | persistentEntity.getPropertyAccessor(entity).setProperty(idProperty,id);
|
|
0 commit comments