From 2adecd33ad73fc6c9c2a2bcda31b2123dceb30d4 Mon Sep 17 00:00:00 2001 From: Rizwan Idrees Date: Wed, 6 Feb 2013 12:49:37 +0000 Subject: [PATCH] bug fix for version field --- .../core/ElasticsearchTemplate.java | 2 + .../SimpleElasticsearchRepository.java | 4 +- .../elasticsearch/NonDocumentEntityTest.java | 19 ++++----- .../repositories/RepositoryTest.java | 41 +++++++++++++++---- 4 files changed, 44 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index b1e41af75..aa0debae2 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -39,6 +39,7 @@ import static org.apache.commons.lang.StringUtils.isBlank; import static org.elasticsearch.action.search.SearchType.DFS_QUERY_THEN_FETCH; import static org.elasticsearch.client.Requests.indicesExistsRequest; import static org.elasticsearch.client.Requests.refreshRequest; +import static org.elasticsearch.index.VersionType.EXTERNAL; public class ElasticsearchTemplate implements ElasticsearchOperations { @@ -220,6 +221,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { .setSource(objectMapper.writeValueAsString(query.getObject())); if(query.getVersion() != null){ indexRequestBuilder.setVersion(query.getVersion()); + indexRequestBuilder.setVersionType(EXTERNAL); } return indexRequestBuilder; } catch (IOException e) { diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java index ebe84b9ab..cdead889c 100644 --- a/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java +++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepository.java @@ -62,10 +62,10 @@ public class SimpleElasticsearchRepository implements ElasticsearchRepository Assert.notNull(metadata); this.entityInformation = metadata; setEntityClass(this.entityInformation.getJavaType()); + createIndex(); } - @PostConstruct - public void createIndex(){ + private void createIndex(){ elasticsearchOperations.createIndex(getEntityClass()); } diff --git a/src/test/java/org/springframework/data/elasticsearch/NonDocumentEntityTest.java b/src/test/java/org/springframework/data/elasticsearch/NonDocumentEntityTest.java index c900f419b..629c7510f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/NonDocumentEntityTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/NonDocumentEntityTest.java @@ -2,23 +2,18 @@ package org.springframework.data.elasticsearch; import org.junit.Test; -import org.junit.runner.RunWith; +import org.springframework.beans.factory.BeanCreationException; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.data.elasticsearch.repositories.NonDocumentEntityRepository; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import javax.annotation.Resource; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration("classpath:/repository-non-document-entity.xml") public class NonDocumentEntityTest { - @Resource - private NonDocumentEntityRepository nonDocumentEntityRepository; - @Test(expected = IllegalArgumentException.class) - public void shouldNotIndexEntitiesWhichAreNotADocument(){ + @Test(expected = BeanCreationException.class) + public void shouldNotInitialiseRepositoryWithNonDocument(){ //when - nonDocumentEntityRepository.save(new NonDocumentEntity()); + ClassPathXmlApplicationContext ctx = + new ClassPathXmlApplicationContext("/repository-non-document-entity.xml"); + ctx.getBean(NonDocumentEntityRepository.class); } } diff --git a/src/test/java/org/springframework/data/elasticsearch/repositories/RepositoryTest.java b/src/test/java/org/springframework/data/elasticsearch/repositories/RepositoryTest.java index 42d37e04c..9c3d8213f 100644 --- a/src/test/java/org/springframework/data/elasticsearch/repositories/RepositoryTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/repositories/RepositoryTest.java @@ -1,6 +1,7 @@ package org.springframework.data.elasticsearch.repositories; +import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -27,23 +28,36 @@ public class RepositoryTest { @Resource private SampleElasticsearchRepository repository; + + @Before + public void before(){ + repository.deleteAll(); + } + @Test public void shouldDoBulkIndexDocument(){ //given - String documentId = randomNumeric(5); + String documentId1 = randomNumeric(5); SampleEntity sampleEntity1 = new SampleEntity(); - sampleEntity1.setId(documentId); + sampleEntity1.setId(documentId1); sampleEntity1.setMessage("some message"); + sampleEntity1.setVersion(System.currentTimeMillis()); + String documentId2 = randomNumeric(5); SampleEntity sampleEntity2 = new SampleEntity(); - sampleEntity2.setId(documentId); + sampleEntity2.setId(documentId2); sampleEntity2.setMessage("some message"); + sampleEntity2.setVersion(System.currentTimeMillis()); //when repository.save(Arrays.asList(sampleEntity1, sampleEntity2)); //then - SampleEntity entityFromElasticSearch = repository.findOne(documentId); - assertThat(entityFromElasticSearch, is(notNullValue())); + SampleEntity entity1FromElasticSearch = repository.findOne(documentId1); + assertThat(entity1FromElasticSearch, is(notNullValue())); + + SampleEntity entity2FromElasticSearch = repository.findOne(documentId2); + assertThat(entity2FromElasticSearch, is(notNullValue())); + } @Test @@ -53,6 +67,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("some message"); + sampleEntity.setVersion(System.currentTimeMillis()); //when repository.save(sampleEntity); //then @@ -67,6 +82,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("some message"); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); //when SampleEntity entityFromElasticSearch = repository.findOne(documentId); @@ -82,6 +98,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("some message"); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); //when Long count = repository.count(); @@ -104,6 +121,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("some message"); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); //when repository.delete(documentId); @@ -119,6 +137,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("some test message"); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); SearchQuery query = new SearchQuery(); @@ -137,6 +156,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("hello world."); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); //when Page page = repository.search(termQuery("message", "world"), new PageRequest(0,50)); @@ -154,12 +174,14 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("hello world."); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); String documentId2 = randomNumeric(5); SampleEntity sampleEntity2 = new SampleEntity(); sampleEntity2.setId(documentId2); sampleEntity2.setMessage("hello world."); + sampleEntity2.setVersion(System.currentTimeMillis()); repository.save(sampleEntity2); //when @@ -196,6 +218,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("hello world."); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); //when @@ -212,6 +235,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("hello world."); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); //when SearchQuery searchQuery = new SearchQuery(); @@ -239,6 +263,7 @@ public class RepositoryTest { SampleEntity sampleEntity = new SampleEntity(); sampleEntity.setId(documentId); sampleEntity.setMessage("hello world."); + sampleEntity.setVersion(System.currentTimeMillis()); repository.save(sampleEntity); //when repository.delete(sampleEntity); @@ -252,9 +277,9 @@ public class RepositoryTest { @Test public void shouldReturnIterableEntities(){ //given - String documentId = randomNumeric(5); + String documentId1 = randomNumeric(5); SampleEntity sampleEntity1 = new SampleEntity(); - sampleEntity1.setId(documentId); + sampleEntity1.setId(documentId1); sampleEntity1.setMessage("hello world."); sampleEntity1.setVersion(System.currentTimeMillis()); repository.save(sampleEntity1); @@ -267,7 +292,7 @@ public class RepositoryTest { repository.save(sampleEntity2); //when - Iterable sampleEntities=repository.search(fieldQuery("id",documentId)); + Iterable sampleEntities = repository.search(fieldQuery("id",documentId1)); //then assertNotNull("sample entities cant be null..", sampleEntities); }