diff --git a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java index b1deb1ae2..3c60d51e0 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java @@ -95,7 +95,8 @@ public class SimpleElasticsearchPersistentEntity extends BasicPersistentEntit @Override public String getIndexType() { - return indexType; + Expression expression = parser.parseExpression(indexType, ParserContext.TEMPLATE_EXPRESSION); + return expression.getValue(context, String.class); } @Override diff --git a/src/test/java/org/springframework/data/elasticsearch/SpELEntityTest.java b/src/test/java/org/springframework/data/elasticsearch/SpELEntityTests.java similarity index 76% rename from src/test/java/org/springframework/data/elasticsearch/SpELEntityTest.java rename to src/test/java/org/springframework/data/elasticsearch/SpELEntityTests.java index b6823170e..f9f78ad58 100644 --- a/src/test/java/org/springframework/data/elasticsearch/SpELEntityTest.java +++ b/src/test/java/org/springframework/data/elasticsearch/SpELEntityTests.java @@ -34,19 +34,15 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * SpELEntityTest * * @author Artur Konczak - * */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:/spel-repository-test.xml") -public class SpELEntityTest { +public class SpELEntityTests { + @Autowired private SpELRepository repository; - @Autowired - private SpELRepository repository; - - @Autowired - private ElasticsearchTemplate template; + @Autowired private ElasticsearchTemplate template; @Before public void init() { @@ -55,15 +51,31 @@ public class SpELEntityTest { @Test public void shouldDo() { - //Given + // Given repository.save(new SpELEntity()); repository.save(new SpELEntity()); - //When + // When - //Then + // Then NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(QueryBuilders.matchAllQuery()); nativeSearchQuery.addIndices("abz-entity"); long count = template.count(nativeSearchQuery); assertThat(count, is(2L)); } + + @Test + public void shouldSupportSpelInType() { + // Given + SpELEntity spELEntity = new SpELEntity(); + repository.save(spELEntity); + + // When + + // Then + NativeSearchQuery nativeSearchQuery = new NativeSearchQuery(QueryBuilders.matchAllQuery()); + nativeSearchQuery.addIndices("abz-entity"); + nativeSearchQuery.addTypes("myType"); + long count = template.count(nativeSearchQuery); + assertThat(count, is(1L)); + } } diff --git a/src/test/java/org/springframework/data/elasticsearch/entities/SpELEntity.java b/src/test/java/org/springframework/data/elasticsearch/entities/SpELEntity.java index 8d8197913..a90840459 100644 --- a/src/test/java/org/springframework/data/elasticsearch/entities/SpELEntity.java +++ b/src/test/java/org/springframework/data/elasticsearch/entities/SpELEntity.java @@ -22,13 +22,12 @@ import org.springframework.data.elasticsearch.annotations.Document; * SpELEntity * * @author Artur Konczak - * */ -@Document(indexName = "#{'abz'+'-'+'entity'}", type = "spel", indexStoreType = "memory", shards = 1, replicas = 0, refreshInterval = "-1") +@Document(indexName = "#{'abz'+'-'+'entity'}", type = "#{'my'+'Type'}", indexStoreType = "memory", shards = 1, + replicas = 0, refreshInterval = "-1") public class SpELEntity { - @Id - private String id; + @Id private String id; public String getId() { return id;