Skip to content

Commit 412bdf5

Browse files
committed
bugfix lazy findAll
1 parent 4bf93aa commit 412bdf5

File tree

2 files changed

+42
-78
lines changed

2 files changed

+42
-78
lines changed

src/main/java/com/arangodb/springframework/core/template/ArangoTemplate.java

Lines changed: 25 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -20,77 +20,45 @@
2020

2121
package com.arangodb.springframework.core.template;
2222

23-
import java.util.ArrayList;
24-
import java.util.Arrays;
25-
import java.util.Collection;
26-
import java.util.Collections;
27-
import java.util.HashMap;
28-
import java.util.Iterator;
29-
import java.util.Map;
30-
import java.util.Map.Entry;
31-
import java.util.Optional;
32-
import java.util.concurrent.ConcurrentHashMap;
33-
import java.util.stream.Collectors;
34-
import java.util.stream.StreamSupport;
35-
36-
import org.springframework.beans.BeansException;
37-
import org.springframework.context.ApplicationContext;
38-
import org.springframework.context.ApplicationContextAware;
39-
import org.springframework.context.ApplicationEventPublisher;
40-
import org.springframework.context.expression.BeanFactoryAccessor;
41-
import org.springframework.context.expression.BeanFactoryResolver;
42-
import org.springframework.dao.DataAccessException;
43-
import org.springframework.dao.support.PersistenceExceptionTranslator;
44-
import org.springframework.data.domain.Persistable;
45-
import org.springframework.data.mapping.PersistentPropertyAccessor;
46-
import org.springframework.expression.Expression;
47-
import org.springframework.expression.ParserContext;
48-
import org.springframework.expression.spel.standard.SpelExpressionParser;
49-
import org.springframework.expression.spel.support.StandardEvaluationContext;
50-
51-
import com.arangodb.ArangoCollection;
52-
import com.arangodb.ArangoCursor;
53-
import com.arangodb.ArangoDB;
54-
import com.arangodb.ArangoDBException;
55-
import com.arangodb.ArangoDatabase;
23+
import com.arangodb.*;
5624
import com.arangodb.entity.ArangoDBVersion;
5725
import com.arangodb.entity.DocumentEntity;
5826
import com.arangodb.entity.MultiDocumentEntity;
5927
import com.arangodb.entity.UserEntity;
60-
import com.arangodb.model.AqlQueryOptions;
61-
import com.arangodb.model.CollectionCreateOptions;
62-
import com.arangodb.model.DocumentCreateOptions;
63-
import com.arangodb.model.DocumentDeleteOptions;
64-
import com.arangodb.model.DocumentReadOptions;
65-
import com.arangodb.model.DocumentReplaceOptions;
66-
import com.arangodb.model.DocumentUpdateOptions;
67-
import com.arangodb.model.FulltextIndexOptions;
68-
import com.arangodb.model.GeoIndexOptions;
69-
import com.arangodb.model.HashIndexOptions;
70-
import com.arangodb.model.PersistentIndexOptions;
71-
import com.arangodb.model.SkiplistIndexOptions;
72-
import com.arangodb.springframework.annotation.FulltextIndex;
73-
import com.arangodb.springframework.annotation.GeoIndex;
74-
import com.arangodb.springframework.annotation.HashIndex;
75-
import com.arangodb.springframework.annotation.PersistentIndex;
76-
import com.arangodb.springframework.annotation.SkiplistIndex;
28+
import com.arangodb.model.*;
29+
import com.arangodb.springframework.annotation.*;
7730
import com.arangodb.springframework.core.ArangoOperations;
7831
import com.arangodb.springframework.core.CollectionOperations;
7932
import com.arangodb.springframework.core.UserOperations;
8033
import com.arangodb.springframework.core.convert.ArangoConverter;
8134
import com.arangodb.springframework.core.mapping.ArangoPersistentEntity;
8235
import com.arangodb.springframework.core.mapping.ArangoPersistentProperty;
83-
import com.arangodb.springframework.core.mapping.event.AfterDeleteEvent;
84-
import com.arangodb.springframework.core.mapping.event.AfterLoadEvent;
85-
import com.arangodb.springframework.core.mapping.event.AfterSaveEvent;
86-
import com.arangodb.springframework.core.mapping.event.ArangoMappingEvent;
87-
import com.arangodb.springframework.core.mapping.event.BeforeDeleteEvent;
88-
import com.arangodb.springframework.core.mapping.event.BeforeSaveEvent;
36+
import com.arangodb.springframework.core.mapping.event.*;
8937
import com.arangodb.springframework.core.template.DefaultUserOperation.CollectionCallback;
9038
import com.arangodb.springframework.core.util.ArangoExceptionTranslator;
9139
import com.arangodb.springframework.core.util.MetadataUtils;
9240
import com.arangodb.util.MapBuilder;
9341
import com.arangodb.velocypack.VPackSlice;
42+
import org.springframework.beans.BeansException;
43+
import org.springframework.context.ApplicationContext;
44+
import org.springframework.context.ApplicationContextAware;
45+
import org.springframework.context.ApplicationEventPublisher;
46+
import org.springframework.context.expression.BeanFactoryAccessor;
47+
import org.springframework.context.expression.BeanFactoryResolver;
48+
import org.springframework.dao.DataAccessException;
49+
import org.springframework.dao.support.PersistenceExceptionTranslator;
50+
import org.springframework.data.domain.Persistable;
51+
import org.springframework.data.mapping.PersistentPropertyAccessor;
52+
import org.springframework.expression.Expression;
53+
import org.springframework.expression.ParserContext;
54+
import org.springframework.expression.spel.standard.SpelExpressionParser;
55+
import org.springframework.expression.spel.support.StandardEvaluationContext;
56+
57+
import java.util.*;
58+
import java.util.Map.Entry;
59+
import java.util.concurrent.ConcurrentHashMap;
60+
import java.util.stream.Collectors;
61+
import java.util.stream.StreamSupport;
9462

9563
/**
9664
* @author Mark Vollmary
@@ -524,12 +492,7 @@ public <T> Optional<T> find(final Object id, final Class<T> entityClass) throws
524492
public <T> Iterable<T> findAll(final Class<T> entityClass) throws DataAccessException {
525493
final String query = "FOR entity IN @@col RETURN entity";
526494
final Map<String, Object> bindVars = new MapBuilder().put("@col", entityClass).get();
527-
return new Iterable<T>() {
528-
@Override
529-
public Iterator<T> iterator() {
530-
return query(query, bindVars, null, entityClass);
531-
}
532-
};
495+
return query(query, bindVars, null, entityClass).asListRemaining();
533496
}
534497

535498
@Override

src/test/java/com/arangodb/springframework/repository/ArangoRepositoryTest.java

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,19 @@
11
package com.arangodb.springframework.repository;
22

3-
import static org.hamcrest.Matchers.is;
4-
import static org.junit.Assert.assertEquals;
5-
import static org.junit.Assert.assertFalse;
6-
import static org.junit.Assert.assertThat;
7-
import static org.junit.Assert.assertTrue;
3+
import com.arangodb.springframework.testdata.Address;
4+
import com.arangodb.springframework.testdata.Customer;
5+
import com.arangodb.springframework.testdata.ShoppingCart;
6+
import org.junit.Test;
7+
import org.springframework.data.domain.*;
8+
import org.springframework.data.domain.ExampleMatcher.StringMatcher;
89

910
import java.util.ArrayList;
1011
import java.util.LinkedList;
1112
import java.util.List;
1213
import java.util.Optional;
1314

14-
import com.arangodb.springframework.testdata.ShoppingCart;
15-
import org.junit.Test;
16-
import org.springframework.data.domain.Example;
17-
import org.springframework.data.domain.ExampleMatcher;
18-
import org.springframework.data.domain.ExampleMatcher.StringMatcher;
19-
import org.springframework.data.domain.Page;
20-
import org.springframework.data.domain.PageRequest;
21-
import org.springframework.data.domain.Sort;
22-
23-
import com.arangodb.springframework.testdata.Address;
24-
import com.arangodb.springframework.testdata.Customer;
15+
import static org.hamcrest.Matchers.is;
16+
import static org.junit.Assert.*;
2517

2618
/**
2719
* Created by F625633 on 06/07/2017.
@@ -40,6 +32,15 @@ public void findOneTest() {
4032
assertEquals("customers do not match", john, customer);
4133
}
4234

35+
@Test
36+
public void saveAllTest() {
37+
repository.saveAll(customers);
38+
Iterable<Customer> docs = repository.findAll();
39+
docs.forEach(d -> d.setName("saveAllTest"));
40+
repository.saveAll(docs);
41+
repository.findAll().forEach(it -> assertEquals("name does not match", "saveAllTest", it.getName()));
42+
}
43+
4344
@Test
4445
public void findAllByIterableTest() {
4546
repository.saveAll(customers);

0 commit comments

Comments
 (0)