Skip to content

Commit 65023bc

Browse files
committed
[DE-771] stream transactions mapping
1 parent 7b29bff commit 65023bc

File tree

56 files changed

+2110
-1722
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+2110
-1722
lines changed

src/main/java/com/arangodb/springframework/config/ArangoConfiguration.java

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,19 @@
33
*/
44
package com.arangodb.springframework.config;
55

6-
import java.io.IOException;
7-
import java.lang.annotation.Annotation;
8-
import java.util.Collection;
9-
import java.util.Collections;
10-
import java.util.Optional;
11-
import java.util.Set;
12-
6+
import com.arangodb.ArangoDB;
7+
import com.arangodb.ArangoDBException;
138
import com.arangodb.ContentType;
9+
import com.arangodb.RequestContext;
1410
import com.arangodb.serde.ArangoSerde;
1511
import com.arangodb.serde.jackson.JacksonMapperProvider;
12+
import com.arangodb.springframework.annotation.*;
13+
import com.arangodb.springframework.core.ArangoOperations;
14+
import com.arangodb.springframework.core.convert.*;
15+
import com.arangodb.springframework.core.convert.resolver.*;
16+
import com.arangodb.springframework.core.mapping.ArangoMappingContext;
17+
import com.arangodb.springframework.core.mapping.TransactionMappingContext;
18+
import com.arangodb.springframework.core.template.ArangoTemplate;
1619
import com.fasterxml.jackson.core.JsonProcessingException;
1720
import com.fasterxml.jackson.databind.ObjectMapper;
1821
import org.springframework.context.annotation.Bean;
@@ -22,31 +25,11 @@
2225
import org.springframework.data.mapping.model.FieldNamingStrategy;
2326
import org.springframework.data.mapping.model.PropertyNameFieldNamingStrategy;
2427

25-
import com.arangodb.ArangoDB;
26-
import com.arangodb.ArangoDBException;
27-
import com.arangodb.springframework.annotation.Document;
28-
import com.arangodb.springframework.annotation.Edge;
29-
import com.arangodb.springframework.annotation.From;
30-
import com.arangodb.springframework.annotation.Ref;
31-
import com.arangodb.springframework.annotation.Relations;
32-
import com.arangodb.springframework.annotation.To;
33-
import com.arangodb.springframework.core.ArangoOperations;
34-
import com.arangodb.springframework.core.convert.ArangoConverter;
35-
import com.arangodb.springframework.core.convert.ArangoCustomConversions;
36-
import com.arangodb.springframework.core.convert.ArangoTypeMapper;
37-
import com.arangodb.springframework.core.convert.DefaultArangoConverter;
38-
import com.arangodb.springframework.core.convert.DefaultArangoTypeMapper;
39-
import com.arangodb.springframework.core.convert.resolver.DocumentFromResolver;
40-
import com.arangodb.springframework.core.convert.resolver.DocumentToResolver;
41-
import com.arangodb.springframework.core.convert.resolver.EdgeFromResolver;
42-
import com.arangodb.springframework.core.convert.resolver.EdgeToResolver;
43-
import com.arangodb.springframework.core.convert.resolver.RefResolver;
44-
import com.arangodb.springframework.core.convert.resolver.ReferenceResolver;
45-
import com.arangodb.springframework.core.convert.resolver.RelationResolver;
46-
import com.arangodb.springframework.core.convert.resolver.RelationsResolver;
47-
import com.arangodb.springframework.core.convert.resolver.ResolverFactory;
48-
import com.arangodb.springframework.core.mapping.ArangoMappingContext;
49-
import com.arangodb.springframework.core.template.ArangoTemplate;
28+
import java.lang.annotation.Annotation;
29+
import java.util.Collection;
30+
import java.util.Collections;
31+
import java.util.Optional;
32+
import java.util.Set;
5033

5134
/**
5235
* Defines methods to customize the Java-based configuration for Spring Data
@@ -104,9 +87,14 @@ public byte[] serialize(Object value) {
10487

10588
@Override
10689
public <T> T deserialize(byte[] content, Class<T> clazz) {
90+
return deserialize(content, clazz, RequestContext.EMPTY);
91+
}
92+
93+
@Override
94+
public <T> T deserialize(byte[] content, Class<T> clazz, RequestContext ctx) {
10795
try {
108-
return converter.read(clazz, om.readTree(content));
109-
} catch (IOException e) {
96+
return converter.read(clazz, new ArangoJsonNode(om.readTree(content), new TransactionMappingContext(ctx)));
97+
} catch (Exception e) {
11098
throw new MappingException("Exception while deserializing.", e);
11199
}
112100
}

src/main/java/com/arangodb/springframework/core/convert/ArangoEntityReader.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020

2121
package com.arangodb.springframework.core.convert;
2222

23-
import org.springframework.data.convert.EntityReader;
24-
23+
import com.arangodb.springframework.core.mapping.TransactionMappingContext;
2524
import com.fasterxml.jackson.databind.JsonNode;
25+
import org.springframework.data.convert.EntityReader;
2626

2727
/**
2828
* @author Mark Vollmary
2929
* @author Christian Lechner
3030
*/
31-
public interface ArangoEntityReader extends EntityReader<Object, JsonNode> {
31+
public interface ArangoEntityReader extends EntityReader<Object, ArangoJsonNode> {
32+
33+
default <R> R read(Class<R> type, JsonNode source) {
34+
return read(type, new ArangoJsonNode(source, TransactionMappingContext.EMPTY));
35+
}
3236

3337
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.arangodb.springframework.core.convert;
2+
3+
import com.arangodb.springframework.core.mapping.TransactionMappingContext;
4+
import com.fasterxml.jackson.databind.JsonNode;
5+
6+
/**
7+
* JsonNode with TransactionMappingContext
8+
*/
9+
public record ArangoJsonNode(
10+
JsonNode value,
11+
TransactionMappingContext transactionContext
12+
) {
13+
}

0 commit comments

Comments
 (0)