Skip to content

Commit a92af0e

Browse files
gpantheakonczak
authored andcommitted
DATAES-93 Allow Spring EL usage in index name attribute of @document
1 parent fa5d1b1 commit a92af0e

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

src/main/java/org/springframework/data/elasticsearch/core/mapping/SimpleElasticsearchPersistentEntity.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
import org.springframework.data.elasticsearch.annotations.Setting;
3030
import org.springframework.data.mapping.model.BasicPersistentEntity;
3131
import org.springframework.data.util.TypeInformation;
32+
import org.springframework.expression.Expression;
33+
import org.springframework.expression.ParserContext;
34+
import org.springframework.expression.spel.standard.SpelExpressionParser;
3235
import org.springframework.expression.spel.support.StandardEvaluationContext;
3336
import org.springframework.util.Assert;
3437

@@ -43,6 +46,8 @@ public class SimpleElasticsearchPersistentEntity<T> extends BasicPersistentEntit
4346
implements ElasticsearchPersistentEntity<T>, ApplicationContextAware {
4447

4548
private final StandardEvaluationContext context;
49+
private final SpelExpressionParser parser;
50+
4651
private String indexName;
4752
private String indexType;
4853
private short shards;
@@ -56,6 +61,8 @@ public class SimpleElasticsearchPersistentEntity<T> extends BasicPersistentEntit
5661
public SimpleElasticsearchPersistentEntity(TypeInformation<T> typeInformation) {
5762
super(typeInformation);
5863
this.context = new StandardEvaluationContext();
64+
this.parser = new SpelExpressionParser();
65+
5966
Class<T> clazz = typeInformation.getType();
6067
if (clazz.isAnnotationPresent(Document.class)) {
6168
Document document = clazz.getAnnotation(Document.class);
@@ -82,7 +89,8 @@ public void setApplicationContext(ApplicationContext applicationContext) throws
8289

8390
@Override
8491
public String getIndexName() {
85-
return indexName;
92+
Expression expression = parser.parseExpression(indexName, ParserContext.TEMPLATE_EXPRESSION);
93+
return expression.getValue(context, String.class);
8694
}
8795

8896
@Override

0 commit comments

Comments
 (0)