Skip to content

Commit f73acf9

Browse files
committed
arangodb#80 reuse collection name from persistent entity, escape collection names
1 parent 2862137 commit f73acf9

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

src/main/java/com/arangodb/springframework/repository/query/StringBasedArangoQuery.java

+6-14
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,12 @@
2121
package com.arangodb.springframework.repository.query;
2222

2323
import com.arangodb.model.AqlQueryOptions;
24-
import com.arangodb.springframework.annotation.Document;
25-
import com.arangodb.springframework.annotation.Edge;
2624
import com.arangodb.springframework.core.ArangoOperations;
2725
import com.arangodb.springframework.core.util.AqlUtils;
2826
import com.arangodb.springframework.repository.query.ArangoParameters.ArangoParameter;
2927
import org.springframework.context.ApplicationContext;
3028
import org.springframework.context.expression.BeanFactoryAccessor;
3129
import org.springframework.context.expression.BeanFactoryResolver;
32-
import org.springframework.core.annotation.AnnotationUtils;
3330
import org.springframework.expression.Expression;
3431
import org.springframework.expression.ParserContext;
3532
import org.springframework.expression.spel.standard.SpelExpressionParser;
@@ -111,22 +108,17 @@ private Collection<String> allCollectionNames(Map<String, Object> bindVars) {
111108
bindVars.entrySet().stream()
112109
.filter(entry -> entry.getKey().startsWith("@"))
113110
.map(Map.Entry::getValue)
114-
.map(value -> value instanceof Class ? getCollectionName((Class<?>) value): value.toString())
115-
.filter(Objects::nonNull)
111+
.map(this::asCollectionName)
112+
.map(AqlUtils::buildCollectionName)
116113
.forEach(allCollections::add);
117114
return allCollections;
118115
}
119116

120-
private String getCollectionName(Class<?> value) {
121-
Document document = AnnotationUtils.findAnnotation(value, Document.class);
122-
if (document != null) {
123-
return document.value();
117+
private String asCollectionName(Object value) {
118+
if (value instanceof Class<?>) {
119+
return mappingContext.getRequiredPersistentEntity((Class<?>) value).getCollection();
124120
}
125-
Edge edge = AnnotationUtils.findAnnotation(value, Edge.class);
126-
if (edge != null) {
127-
return edge.value();
128-
}
129-
return null;
121+
return value.toString();
130122
}
131123

132124
@Override

src/main/java/com/arangodb/springframework/transaction/ArangoTransactionObject.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.arangodb.entity.StreamTransactionStatus;
2626
import com.arangodb.model.StreamTransactionOptions;
2727
import com.arangodb.springframework.core.template.CollectionCallback;
28+
import com.arangodb.springframework.core.util.AqlUtils;
2829
import org.apache.commons.logging.Log;
2930
import org.apache.commons.logging.LogFactory;
3031
import org.springframework.lang.Nullable;
@@ -35,6 +36,7 @@
3536
import java.util.Collection;
3637
import java.util.HashSet;
3738
import java.util.Set;
39+
import java.util.stream.Collectors;
3840

3941
import static org.springframework.transaction.TransactionDefinition.TIMEOUT_DEFAULT;
4042

@@ -67,7 +69,9 @@ void configure(TransactionDefinition definition) {
6769
this.timeout = definition.getTimeout();
6870
}
6971
if (definition instanceof TransactionAttribute) {
70-
addCollections(((TransactionAttribute) definition).getLabels());
72+
addCollections(((TransactionAttribute) definition).getLabels().stream()
73+
.map(AqlUtils::buildCollectionName)
74+
.collect(Collectors.toList()));
7175
}
7276
}
7377

0 commit comments

Comments
 (0)