bug fix for version field

This commit is contained in:
Rizwan Idrees 2013-02-06 12:49:37 +00:00
parent c3f7309b9f
commit 2adecd33ad
4 changed files with 44 additions and 22 deletions

View File

@ -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.action.search.SearchType.DFS_QUERY_THEN_FETCH;
import static org.elasticsearch.client.Requests.indicesExistsRequest; import static org.elasticsearch.client.Requests.indicesExistsRequest;
import static org.elasticsearch.client.Requests.refreshRequest; import static org.elasticsearch.client.Requests.refreshRequest;
import static org.elasticsearch.index.VersionType.EXTERNAL;
public class ElasticsearchTemplate implements ElasticsearchOperations { public class ElasticsearchTemplate implements ElasticsearchOperations {
@ -220,6 +221,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
.setSource(objectMapper.writeValueAsString(query.getObject())); .setSource(objectMapper.writeValueAsString(query.getObject()));
if(query.getVersion() != null){ if(query.getVersion() != null){
indexRequestBuilder.setVersion(query.getVersion()); indexRequestBuilder.setVersion(query.getVersion());
indexRequestBuilder.setVersionType(EXTERNAL);
} }
return indexRequestBuilder; return indexRequestBuilder;
} catch (IOException e) { } catch (IOException e) {

View File

@ -62,10 +62,10 @@ public class SimpleElasticsearchRepository<T> implements ElasticsearchRepository
Assert.notNull(metadata); Assert.notNull(metadata);
this.entityInformation = metadata; this.entityInformation = metadata;
setEntityClass(this.entityInformation.getJavaType()); setEntityClass(this.entityInformation.getJavaType());
createIndex();
} }
@PostConstruct private void createIndex(){
public void createIndex(){
elasticsearchOperations.createIndex(getEntityClass()); elasticsearchOperations.createIndex(getEntityClass());
} }

View File

@ -2,23 +2,18 @@ package org.springframework.data.elasticsearch;
import org.junit.Test; 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.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 { public class NonDocumentEntityTest {
@Resource
private NonDocumentEntityRepository nonDocumentEntityRepository;
@Test(expected = IllegalArgumentException.class) @Test(expected = BeanCreationException.class)
public void shouldNotIndexEntitiesWhichAreNotADocument(){ public void shouldNotInitialiseRepositoryWithNonDocument(){
//when //when
nonDocumentEntityRepository.save(new NonDocumentEntity()); ClassPathXmlApplicationContext ctx =
new ClassPathXmlApplicationContext("/repository-non-document-entity.xml");
ctx.getBean(NonDocumentEntityRepository.class);
} }
} }

View File

@ -1,6 +1,7 @@
package org.springframework.data.elasticsearch.repositories; package org.springframework.data.elasticsearch.repositories;
import org.junit.Before;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@ -27,23 +28,36 @@ public class RepositoryTest {
@Resource @Resource
private SampleElasticsearchRepository repository; private SampleElasticsearchRepository repository;
@Before
public void before(){
repository.deleteAll();
}
@Test @Test
public void shouldDoBulkIndexDocument(){ public void shouldDoBulkIndexDocument(){
//given //given
String documentId = randomNumeric(5); String documentId1 = randomNumeric(5);
SampleEntity sampleEntity1 = new SampleEntity(); SampleEntity sampleEntity1 = new SampleEntity();
sampleEntity1.setId(documentId); sampleEntity1.setId(documentId1);
sampleEntity1.setMessage("some message"); sampleEntity1.setMessage("some message");
sampleEntity1.setVersion(System.currentTimeMillis());
String documentId2 = randomNumeric(5);
SampleEntity sampleEntity2 = new SampleEntity(); SampleEntity sampleEntity2 = new SampleEntity();
sampleEntity2.setId(documentId); sampleEntity2.setId(documentId2);
sampleEntity2.setMessage("some message"); sampleEntity2.setMessage("some message");
sampleEntity2.setVersion(System.currentTimeMillis());
//when //when
repository.save(Arrays.asList(sampleEntity1, sampleEntity2)); repository.save(Arrays.asList(sampleEntity1, sampleEntity2));
//then //then
SampleEntity entityFromElasticSearch = repository.findOne(documentId); SampleEntity entity1FromElasticSearch = repository.findOne(documentId1);
assertThat(entityFromElasticSearch, is(notNullValue())); assertThat(entity1FromElasticSearch, is(notNullValue()));
SampleEntity entity2FromElasticSearch = repository.findOne(documentId2);
assertThat(entity2FromElasticSearch, is(notNullValue()));
} }
@Test @Test
@ -53,6 +67,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("some message"); sampleEntity.setMessage("some message");
sampleEntity.setVersion(System.currentTimeMillis());
//when //when
repository.save(sampleEntity); repository.save(sampleEntity);
//then //then
@ -67,6 +82,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("some message"); sampleEntity.setMessage("some message");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
//when //when
SampleEntity entityFromElasticSearch = repository.findOne(documentId); SampleEntity entityFromElasticSearch = repository.findOne(documentId);
@ -82,6 +98,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("some message"); sampleEntity.setMessage("some message");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
//when //when
Long count = repository.count(); Long count = repository.count();
@ -104,6 +121,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("some message"); sampleEntity.setMessage("some message");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
//when //when
repository.delete(documentId); repository.delete(documentId);
@ -119,6 +137,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("some test message"); sampleEntity.setMessage("some test message");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
SearchQuery query = new SearchQuery(); SearchQuery query = new SearchQuery();
@ -137,6 +156,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("hello world."); sampleEntity.setMessage("hello world.");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
//when //when
Page<SampleEntity> page = repository.search(termQuery("message", "world"), new PageRequest(0,50)); Page<SampleEntity> page = repository.search(termQuery("message", "world"), new PageRequest(0,50));
@ -154,12 +174,14 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("hello world."); sampleEntity.setMessage("hello world.");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
String documentId2 = randomNumeric(5); String documentId2 = randomNumeric(5);
SampleEntity sampleEntity2 = new SampleEntity(); SampleEntity sampleEntity2 = new SampleEntity();
sampleEntity2.setId(documentId2); sampleEntity2.setId(documentId2);
sampleEntity2.setMessage("hello world."); sampleEntity2.setMessage("hello world.");
sampleEntity2.setVersion(System.currentTimeMillis());
repository.save(sampleEntity2); repository.save(sampleEntity2);
//when //when
@ -196,6 +218,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("hello world."); sampleEntity.setMessage("hello world.");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
//when //when
@ -212,6 +235,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("hello world."); sampleEntity.setMessage("hello world.");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
//when //when
SearchQuery searchQuery = new SearchQuery(); SearchQuery searchQuery = new SearchQuery();
@ -239,6 +263,7 @@ public class RepositoryTest {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage("hello world."); sampleEntity.setMessage("hello world.");
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity); repository.save(sampleEntity);
//when //when
repository.delete(sampleEntity); repository.delete(sampleEntity);
@ -252,9 +277,9 @@ public class RepositoryTest {
@Test @Test
public void shouldReturnIterableEntities(){ public void shouldReturnIterableEntities(){
//given //given
String documentId = randomNumeric(5); String documentId1 = randomNumeric(5);
SampleEntity sampleEntity1 = new SampleEntity(); SampleEntity sampleEntity1 = new SampleEntity();
sampleEntity1.setId(documentId); sampleEntity1.setId(documentId1);
sampleEntity1.setMessage("hello world."); sampleEntity1.setMessage("hello world.");
sampleEntity1.setVersion(System.currentTimeMillis()); sampleEntity1.setVersion(System.currentTimeMillis());
repository.save(sampleEntity1); repository.save(sampleEntity1);
@ -267,7 +292,7 @@ public class RepositoryTest {
repository.save(sampleEntity2); repository.save(sampleEntity2);
//when //when
Iterable<SampleEntity> sampleEntities=repository.search(fieldQuery("id",documentId)); Iterable<SampleEntity> sampleEntities = repository.search(fieldQuery("id",documentId1));
//then //then
assertNotNull("sample entities cant be null..", sampleEntities); assertNotNull("sample entities cant be null..", sampleEntities);
} }