Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1b6066a

Browse files
authored
[DE-968] Support JSON-P types (#593)
1 parent 738b9f5 commit 1b6066a

File tree

16 files changed

+106
-11
lines changed

16 files changed

+106
-11
lines changed

‎core/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@
4141
<artifactId>jackson-annotations</artifactId>
4242
<scope>compile</scope>
4343
</dependency>
44+
<dependency>
45+
<groupId>com.fasterxml.jackson.datatype</groupId>
46+
<artifactId>jackson-datatype-jakarta-jsonp</artifactId>
47+
<scope>compile</scope>
48+
</dependency>
4449
<dependency>
4550
<groupId>com.google.code.findbugs</groupId>
4651
<artifactId>jsr305</artifactId>

‎core/src/main/java/com/arangodb/internal/serde/InternalSerde.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.arangodb.arch.UsedInApi;
44
import com.arangodb.serde.ArangoSerde;
55
import com.arangodb.ContentType;
6-
import com.fasterxml.jackson.core.JsonParser;
76
import com.fasterxml.jackson.databind.JavaType;
87
import com.fasterxml.jackson.databind.JsonNode;
98

‎core/src/main/java/com/arangodb/internal/serde/InternalSerdeImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
import com.fasterxml.jackson.databind.JsonNode;
1818
import com.fasterxml.jackson.databind.Module;
1919
import com.fasterxml.jackson.databind.ObjectMapper;
20+
import com.fasterxml.jackson.datatype.jsonp.JSONPModule;
21+
import jakarta.json.JsonException;
22+
import org.slf4j.Logger;
23+
import org.slf4j.LoggerFactory;
2024

2125
import java.io.ByteArrayOutputStream;
2226
import java.io.IOException;
@@ -27,6 +31,7 @@
2731
import static com.arangodb.internal.serde.SerdeUtils.extractBytes;
2832

2933
final class InternalSerdeImpl implements InternalSerde {
34+
private static final Logger LOG = LoggerFactory.getLogger(InternalSerdeImpl.class);
3035

3136
static {
3237
checkSupportedJacksonVersion();
@@ -50,6 +55,13 @@ final class InternalSerdeImpl implements InternalSerde {
5055
new UserDataSerializer(this),
5156
new UserDataDeserializer(this)
5257
));
58+
59+
// JSON-P datatypes
60+
try {
61+
mapper.registerModule(new JSONPModule());
62+
} catch (JsonException e) {
63+
LOG.debug("Jakarta JSON-P provider not found, handling of JSON-P datatypes is disabled", e);
64+
}
5365
}
5466

5567
@Override

‎core/src/main/java/com/arangodb/internal/serde/SerdeUtils.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.fasterxml.jackson.databind.JsonNode;
1414
import com.fasterxml.jackson.databind.ObjectMapper;
1515
import com.fasterxml.jackson.databind.type.TypeFactory;
16+
import jakarta.json.JsonValue;
1617
import org.slf4j.Logger;
1718
import org.slf4j.LoggerFactory;
1819

@@ -127,7 +128,8 @@ public static byte[] extractBytes(JsonParser parser) throws IOException {
127128
}
128129

129130
public static boolean isManagedClass(Class<?> clazz) {
130-
return JsonNode.class.isAssignableFrom(clazz) ||
131+
return JsonNode.class.isAssignableFrom(clazz) || // jackson datatypes
132+
JsonValue.class.isAssignableFrom(clazz) || // JSON-B datatypes
131133
RawJson.class.equals(clazz) ||
132134
RawBytes.class.equals(clazz) ||
133135
BaseDocument.class.equals(clazz) ||

‎pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,11 @@
107107
<artifactId>slf4j-api</artifactId>
108108
<version>2.0.9</version>
109109
</dependency>
110+
<dependency>
111+
<groupId>jakarta.json</groupId>
112+
<artifactId>jakarta.json-api</artifactId>
113+
<version>2.1.3</version>
114+
</dependency>
110115
<dependency>
111116
<groupId>com.arangodb</groupId>
112117
<artifactId>arangodb-java-driver</artifactId>
@@ -186,6 +191,7 @@
186191
<scopes>compile</scopes>
187192
<maxJdkVersion>1.8</maxJdkVersion>
188193
<excludes>
194+
<exclude>jakarta.json:jakarta.json-api</exclude>
189195
<exclude>jakarta.json.bind:jakarta.json.bind-api</exclude>
190196
</excludes>
191197
</enforceBytecodeVersion>

‎shaded/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@
4747
<artifactId>slf4j-api</artifactId>
4848
<scope>compile</scope>
4949
</dependency>
50+
<dependency>
51+
<groupId>jakarta.json</groupId>
52+
<artifactId>jakarta.json-api</artifactId>
53+
<scope>compile</scope>
54+
</dependency>
5055
<dependency>
5156
<!-- build arangodb-java-driver before so that we can use the javadoc artifact -->
5257
<groupId>com.arangodb</groupId>
@@ -82,6 +87,7 @@
8287
<artifactSet>
8388
<excludes>
8489
<exclude>org.slf4j:slf4j-api</exclude>
90+
<exclude>jakarta.json:jakarta.json-api</exclude>
8591
</excludes>
8692
</artifactSet>
8793
<relocations>

‎test-functional/pom.xml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@
1717
<maven.deploy.skip>true</maven.deploy.skip>
1818
</properties>
1919

20+
<dependencies>
21+
<dependency>
22+
<groupId>org.eclipse.parsson</groupId>
23+
<artifactId>parsson</artifactId>
24+
<version>1.1.7</version>
25+
<scope>test</scope>
26+
</dependency>
27+
</dependencies>
28+
2029
<profiles>
2130
<profile>
2231
<id>shaded</id>
@@ -34,11 +43,11 @@
3443
<configuration>
3544
<filesToExclude>
3645
**/CustomSerdeTest.**,
37-
**/SerdeTest.**,
38-
**/SerializableTest.**,
46+
**/CustomSerdeAsyncTest.**,
3947
**/JacksonInterferenceTest.**,
4048
**/JacksonRequestContextTest.**,
41-
**/HttpProxyTest.**
49+
**/HttpProxyTest.**,
50+
**/RequestContextTest.**
4251
</filesToExclude>
4352
<replacements>
4453
<replacement>
@@ -49,6 +58,18 @@
4958
<token>com.fasterxml.jackson.databind.ObjectNode</token>
5059
<value>com.arangodb.shaded.fasterxml.jackson.databind.ObjectNode</value>
5160
</replacement>
61+
<replacement>
62+
<token>com.fasterxml.jackson.databind.node</token>
63+
<value>com.arangodb.shaded.fasterxml.jackson.databind.node</value>
64+
</replacement>
65+
<replacement>
66+
<token>com.fasterxml.jackson.databind.ObjectMapper</token>
67+
<value>com.arangodb.shaded.fasterxml.jackson.databind.ObjectMapper</value>
68+
</replacement>
69+
<replacement>
70+
<token>com.fasterxml.jackson.core.JsonProcessingException</token>
71+
<value>com.arangodb.shaded.fasterxml.jackson.core.JsonProcessingException</value>
72+
</replacement>
5273
</replacements>
5374
</configuration>
5475
</plugin>

‎test-functional/src/test-ssl/java/com/arangodb/HttpProxyTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737

3838
/**
39-
* @author Michele Rastelli
39+
* NB: excluded from shaded tests
4040
*/
4141
class HttpProxyTest extends BaseTest {
4242

‎test-functional/src/test/java/com/arangodb/BaseJunit5.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ static ArangoDatabase initDB(String name) {
101101
return database;
102102
}
103103

104-
static ArangoDatabase initDB() {
104+
protectedstatic ArangoDatabase initDB() {
105105
return initDB(TEST_DB);
106106
}
107107

‎test-functional/src/test/java/com/arangodb/JacksonRequestContextTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import static org.assertj.core.api.Assertions.assertThat;
4545

4646
/**
47-
* @author Michele Rastelli
47+
* NB: excluded from shaded tests
4848
*/
4949
class JacksonRequestContextTest {
5050

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /