Skip to content

Commit 7376e47

Browse files
committed
rm jackson-serde from shaded driver deps
1 parent 72095da commit 7376e47

File tree

8 files changed

+242
-13
lines changed

8 files changed

+242
-13
lines changed

.github/workflows/maven.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,12 +242,15 @@ jobs:
242242
run: mvn -version
243243
- name: Install
244244
run: mvn --no-transfer-progress install -DskipTests=true -Dgpg.skip=true -Dmaven.javadoc.skip=true
245+
- name: Test internal-serde
246+
working-directory: shaded-integration-tests
247+
run: mvn --no-transfer-progress -Pinternal-serde test
245248
- name: Test jackson-serde
246249
working-directory: shaded-integration-tests
247-
run: mvn --no-transfer-progress -P jackson-serde test
250+
run: mvn --no-transfer-progress -Pjackson-serde test
248251
- name: Test jsonb-serde
249252
working-directory: shaded-integration-tests
250-
run: mvn --no-transfer-progress -P jsonb-serde test
253+
run: mvn --no-transfer-progress -Pjsonb-serde test
251254

252255
sonar:
253256
timeout-minutes: 10

shaded-integration-tests/pom.xml

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,33 @@
3333
</build>
3434

3535
<profiles>
36+
<profile>
37+
<id>internal-serde</id>
38+
<activation>
39+
<activeByDefault>true</activeByDefault>
40+
</activation>
41+
<properties>
42+
<testSourceDirectory>src/test/internal/java</testSourceDirectory>
43+
<serde>jackson</serde>
44+
</properties>
45+
<dependencies>
46+
<dependency>
47+
<groupId>com.arangodb</groupId>
48+
<artifactId>arangodb-java-driver-shaded</artifactId>
49+
<scope>test</scope>
50+
</dependency>
51+
<dependency>
52+
<groupId>com.arangodb</groupId>
53+
<artifactId>jackson-dataformat-velocypack</artifactId>
54+
<scope>test</scope>
55+
</dependency>
56+
<dependency>
57+
<groupId>com.tngtech.archunit</groupId>
58+
<artifactId>archunit-junit5</artifactId>
59+
<scope>test</scope>
60+
</dependency>
61+
</dependencies>
62+
</profile>
3663
<profile>
3764
<id>jackson-serde</id>
3865
<activation>
@@ -48,6 +75,11 @@
4875
<artifactId>arangodb-java-driver-shaded</artifactId>
4976
<scope>test</scope>
5077
</dependency>
78+
<dependency>
79+
<groupId>com.arangodb</groupId>
80+
<artifactId>jackson-serde</artifactId>
81+
<scope>test</scope>
82+
</dependency>
5183
<dependency>
5284
<groupId>com.arangodb</groupId>
5385
<artifactId>jackson-dataformat-velocypack</artifactId>
@@ -71,12 +103,6 @@
71103
<groupId>com.arangodb</groupId>
72104
<artifactId>arangodb-java-driver-shaded</artifactId>
73105
<scope>test</scope>
74-
<exclusions>
75-
<exclusion>
76-
<groupId>com.arangodb</groupId>
77-
<artifactId>jackson-serde</artifactId>
78-
</exclusion>
79-
</exclusions>
80106
</dependency>
81107
<dependency>
82108
<groupId>com.arangodb</groupId>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package arch;
2+
3+
import com.arangodb.ArangoDB;
4+
import com.arangodb.entity.ArangoDBVersion;
5+
import org.junit.jupiter.params.ParameterizedTest;
6+
import org.junit.jupiter.params.provider.MethodSource;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
class AdbTest extends BaseTest {
11+
@ParameterizedTest
12+
@MethodSource("adbByProtocol")
13+
void getVersion(ArangoDB adb) {
14+
final ArangoDBVersion version = adb.getVersion();
15+
assertThat(version.getServer()).isNotNull();
16+
assertThat(version.getVersion()).isNotNull();
17+
}
18+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package arch;
2+
3+
import com.arangodb.ArangoDB;
4+
import com.arangodb.ContentType;
5+
import com.arangodb.DbName;
6+
import com.arangodb.Protocol;
7+
import com.arangodb.internal.config.FileConfigPropertiesProvider;
8+
import org.junit.jupiter.params.provider.Arguments;
9+
10+
import java.util.Arrays;
11+
import java.util.stream.Stream;
12+
13+
public class BaseTest {
14+
protected static final DbName TEST_DB = DbName.of("java_driver_integration_tests");
15+
16+
protected static ArangoDB createAdb() {
17+
return new ArangoDB.Builder()
18+
.loadProperties(new FileConfigPropertiesProvider())
19+
.build();
20+
}
21+
22+
protected static ArangoDB createAdb(ContentType contentType) {
23+
Protocol protocol = contentType == ContentType.VPACK ? Protocol.HTTP2_VPACK : Protocol.HTTP2_JSON;
24+
return new ArangoDB.Builder()
25+
.loadProperties(new FileConfigPropertiesProvider())
26+
.useProtocol(protocol)
27+
.build();
28+
}
29+
30+
protected static ArangoDB createAdb(Protocol protocol) {
31+
return new ArangoDB.Builder()
32+
.loadProperties(new FileConfigPropertiesProvider())
33+
.useProtocol(protocol)
34+
.build();
35+
}
36+
37+
protected static Stream<Arguments> adbByProtocol() {
38+
return Arrays.stream(Protocol.values())
39+
.map(BaseTest::createAdb)
40+
.map(Arguments::of);
41+
}
42+
43+
protected static Stream<Arguments> adbByContentType() {
44+
return Arrays.stream(ContentType.values())
45+
.map(BaseTest::createAdb)
46+
.map(Arguments::of);
47+
}
48+
49+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package arch;
2+
3+
4+
import com.arangodb.shaded.fasterxml.jackson.annotation.JsonProperty;
5+
6+
public record Person(
7+
@JsonProperty("_key")
8+
String key,
9+
@JsonProperty("firstName")
10+
String name,
11+
int age
12+
) {
13+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package arch;
2+
3+
import com.tngtech.archunit.core.importer.ImportOption.DoNotIncludeTests;
4+
import com.tngtech.archunit.junit.AnalyzeClasses;
5+
import com.tngtech.archunit.junit.ArchTest;
6+
import com.tngtech.archunit.lang.ArchRule;
7+
8+
import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;
9+
10+
11+
@AnalyzeClasses(packages = "com.arangodb..", importOptions = {DoNotIncludeTests.class})
12+
public class RelocationsTest {
13+
14+
@ArchTest
15+
public static final ArchRule nettyRelocation = noClasses().that()
16+
.resideInAPackage("com.arangodb..")
17+
.should().dependOnClassesThat()
18+
.resideInAPackage("io.netty..");
19+
20+
@ArchTest
21+
public static final ArchRule vertxRelocation = noClasses().that()
22+
.resideInAPackage("com.arangodb..")
23+
.should().dependOnClassesThat()
24+
.resideInAPackage("io.vertx..");
25+
26+
@ArchTest
27+
public static final ArchRule jacksonRelocation = noClasses().that()
28+
.resideInAPackage("com.arangodb..").and()
29+
.resideOutsideOfPackage("com.arangodb.jackson.dataformat.velocypack..").and()
30+
.resideOutsideOfPackage("com.arangodb.serde.jackson..")
31+
.should().dependOnClassesThat()
32+
.resideInAPackage("com.fasterxml.jackson..");
33+
34+
@ArchTest
35+
public static final ArchRule jacksonDataformatVelocypackRelocation = noClasses().that()
36+
.resideInAPackage("com.arangodb..").and()
37+
.resideOutsideOfPackage("com.arangodb.jackson.dataformat.velocypack..").and()
38+
.resideOutsideOfPackage("com.arangodb.serde.jackson..")
39+
.should().dependOnClassesThat()
40+
.resideInAPackage("com.arangodb.jackson.dataformat.velocypack..");
41+
42+
@ArchTest
43+
public static final ArchRule noJsonbDependency = noClasses().that()
44+
.resideInAPackage("com.arangodb..")
45+
.should().dependOnClassesThat()
46+
.resideInAPackage("com.arangodb.serde.jsonb..");
47+
48+
@ArchTest
49+
// jackson-serde is accessed via SPI
50+
public static final ArchRule noExplicitDependencyOnJacksonSerde = noClasses().that()
51+
.resideInAPackage("com.arangodb..").and()
52+
.resideOutsideOfPackage("com.arangodb.serde.jackson..")
53+
.should().dependOnClassesThat()
54+
.resideInAPackage("com.arangodb.serde.jackson..");
55+
56+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package arch;
2+
3+
import com.arangodb.ArangoDB;
4+
import com.arangodb.shaded.fasterxml.jackson.databind.JsonNode;
5+
import com.arangodb.shaded.fasterxml.jackson.databind.node.JsonNodeFactory;
6+
import com.arangodb.util.RawJson;
7+
import org.junit.jupiter.params.ParameterizedTest;
8+
import org.junit.jupiter.params.provider.MethodSource;
9+
10+
import java.util.Collections;
11+
import java.util.Map;
12+
13+
import static org.assertj.core.api.Assertions.assertThat;
14+
15+
class SerdeTest extends BaseTest {
16+
17+
@ParameterizedTest
18+
@MethodSource("adbByContentType")
19+
void shadedJsonNode(ArangoDB adb) {
20+
// uses the internal serde
21+
JsonNode doc = JsonNodeFactory.instance
22+
.objectNode()
23+
.put("foo", "bar");
24+
JsonNode res = adb.db().query("return @d", Collections.singletonMap("d", doc), JsonNode.class).next();
25+
assertThat(res.size()).isEqualTo(1);
26+
assertThat(res.get("foo").asText()).isEqualTo("bar");
27+
JsonNode value = adb.db().query("return @d.foo", Collections.singletonMap("d", doc), JsonNode.class).next();
28+
assertThat(value.textValue()).isEqualTo("bar");
29+
}
30+
31+
@ParameterizedTest
32+
@MethodSource("adbByContentType")
33+
void map(ArangoDB adb) {
34+
Map<String, String> doc = Collections.singletonMap("foo", "bar");
35+
Map<?, ?> res = adb.db().query("return @d", Collections.singletonMap("d", doc), Map.class).next();
36+
assertThat(res).hasSize(1);
37+
assertThat(res.get("foo")).isEqualTo("bar");
38+
String value = adb.db().query("return @d.foo", Collections.singletonMap("d", doc), String.class).next();
39+
assertThat(value).isEqualTo("bar");
40+
}
41+
42+
@ParameterizedTest
43+
@MethodSource("adbByContentType")
44+
void rawJson(ArangoDB adb) {
45+
RawJson doc = RawJson.of("""
46+
{"foo":"bar"}""");
47+
RawJson res = adb.db().query("return @d", Collections.singletonMap("d", doc), RawJson.class).next();
48+
assertThat(res.getValue()).isEqualTo(doc.getValue());
49+
RawJson value = adb.db().query("return @d.foo", Collections.singletonMap("d", doc), RawJson.class).next();
50+
assertThat(value.getValue()).isEqualTo("\"bar\"");
51+
}
52+
53+
@ParameterizedTest
54+
@MethodSource("adbByContentType")
55+
void person(ArangoDB adb) {
56+
Person doc = new Person("key", "Jim", 22);
57+
Person res = adb.db().query("return @d", Collections.singletonMap("d", doc), Person.class).next();
58+
assertThat(res).isEqualTo(doc);
59+
String key = adb.db().query("return @d._key", Collections.singletonMap("d", doc), String.class).next();
60+
assertThat(key).isEqualTo("key");
61+
String name = adb.db().query("return @d.firstName", Collections.singletonMap("d", doc), String.class).next();
62+
assertThat(name).isEqualTo("Jim");
63+
}
64+
65+
}

shaded/pom.xml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@
2828
<groupId>com.arangodb</groupId>
2929
<artifactId>serde-api</artifactId>
3030
</exclusion>
31+
<exclusion>
32+
<groupId>com.arangodb</groupId>
33+
<artifactId>jackson-serde</artifactId>
34+
</exclusion>
3135
</exclusions>
3236
</dependency>
3337
<dependency>
3438
<groupId>com.arangodb</groupId>
3539
<artifactId>jackson-dataformat-velocypack</artifactId>
3640
</dependency>
37-
<dependency>
38-
<groupId>com.arangodb</groupId>
39-
<artifactId>jackson-serde</artifactId>
40-
</dependency>
4141
<dependency>
4242
<groupId>org.slf4j</groupId>
4343
<artifactId>slf4j-api</artifactId>
@@ -66,7 +66,6 @@
6666
<artifactSet>
6767
<excludes>
6868
<exclude>org.slf4j:slf4j-api</exclude>
69-
<exclude>com.arangodb:jackson-serde</exclude>
7069
<exclude>com.arangodb:velocypack</exclude>
7170
</excludes>
7271
</artifactSet>

0 commit comments

Comments
 (0)