Skip to content

Commit 1954b88

Browse files
authored
[DE-765] architectural tests (#538)
* v7.5.0-SNAPSHOT * archTest: InternalsTest * archTest: annotated API classes * archTest: annotated API methods and parameters * archTest: annotated API constructors * archTest: generic types * archTest: annotated API with generic types
1 parent 5b1b958 commit 1954b88

Some content is hidden

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

48 files changed

+391
-31
lines changed

core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>com.arangodb</groupId>
88
<artifactId>arangodb-java-driver-parent</artifactId>
9-
<version>7.4.0</version>
9+
<version>7.5.0-SNAPSHOT</version>
1010
</parent>
1111

1212
<name>core</name>

core/src/main/java/com/arangodb/ArangoDB.java

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

2121
package com.arangodb;
2222

23+
import com.arangodb.arch.UnstableApi;
2324
import com.arangodb.config.ArangoConfigProperties;
2425
import com.arangodb.config.HostDescription;
2526
import com.arangodb.entity.*;
@@ -626,6 +627,7 @@ public Builder asyncExecutor(final Executor executor) {
626627
return this;
627628
}
628629

630+
@UnstableApi
629631
protected ProtocolProvider protocolProvider(Protocol protocol) {
630632
ServiceLoader<ProtocolProvider> loader = ServiceLoader.load(ProtocolProvider.class);
631633
for (ProtocolProvider p : loader) {
@@ -637,7 +639,8 @@ protected ProtocolProvider protocolProvider(Protocol protocol) {
637639
throw new ArangoDBException("No ProtocolProvider found for protocol: " + protocol);
638640
}
639641

640-
protected HostHandler createHostHandler(final HostResolver hostResolver) {
642+
@UnstableApi
643+
protected HostHandler createHostHandler(@UnstableApi final HostResolver hostResolver) {
641644

642645
final HostHandler hostHandler;
643646

@@ -664,7 +667,8 @@ protected HostHandler createHostHandler(final HostResolver hostResolver) {
664667
return new DirtyReadHostHandler(hostHandler, new RoundRobinHostHandler(hostResolver));
665668
}
666669

667-
protected HostResolver createHostResolver(final Collection<Host> hosts, final ConnectionFactory connectionFactory) {
670+
@UnstableApi
671+
protected HostResolver createHostResolver(@UnstableApi final Collection<Host> hosts, @UnstableApi final ConnectionFactory connectionFactory) {
668672
Boolean acquireHostList = config.getAcquireHostList();
669673
if (acquireHostList != null && acquireHostList) {
670674
LOG.debug("acquireHostList -> Use ExtendedHostResolver");
@@ -676,7 +680,8 @@ protected HostResolver createHostResolver(final Collection<Host> hosts, final Co
676680
}
677681
}
678682

679-
protected Collection<Host> createHostList(final ConnectionFactory connectionFactory) {
683+
@UnstableApi
684+
protected Collection<Host> createHostList(@UnstableApi final ConnectionFactory connectionFactory) {
680685
final Collection<Host> hostList = new ArrayList<>();
681686
for (final HostDescription host : config.getHosts()) {
682687
hostList.add(HostUtils.createHost(host, config, connectionFactory));

core/src/main/java/com/arangodb/ArangoSerdeAccessor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
package com.arangodb;
2222

23+
import com.arangodb.arch.UnstableApi;
2324
import com.arangodb.internal.serde.InternalSerde;
2425

2526
import javax.annotation.concurrent.ThreadSafe;
@@ -35,6 +36,7 @@ public interface ArangoSerdeAccessor {
3536
*
3637
* @return ArangoSerde
3738
*/
39+
@UnstableApi
3840
InternalSerde getSerde();
3941

4042
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.arangodb.arch;
2+
3+
import java.lang.annotation.ElementType;
4+
import java.lang.annotation.Retention;
5+
import java.lang.annotation.RetentionPolicy;
6+
import java.lang.annotation.Target;
7+
8+
/**
9+
* Skip invoking {@code JavaType#getAllInvolvedRawTypes()} on the target class during arch tests.
10+
* Prevents StackOverflowError caused by <a href="https://github.com/TNG/ArchUnit/issues/1237">this</a>.
11+
*/
12+
@Retention(RetentionPolicy.CLASS)
13+
@Target(ElementType.TYPE)
14+
public @interface NoRawTypesInspection {
15+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.arangodb.arch;
2+
3+
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
8+
9+
/**
10+
* Indicates a public API that has references to internal classes and that should change in the next major release.
11+
* Referenced internal classes are annotated with {@link UsedInApi}.
12+
* Architectural tests consider these annotation to tolerate referencing annotated elements.
13+
*/
14+
@Retention(RetentionPolicy.CLASS)
15+
@Target({
16+
ElementType.TYPE,
17+
ElementType.METHOD,
18+
ElementType.PARAMETER,
19+
ElementType.FIELD
20+
})
21+
public @interface UnstableApi {
22+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.arangodb.arch;
2+
3+
4+
import java.lang.annotation.ElementType;
5+
import java.lang.annotation.Retention;
6+
import java.lang.annotation.RetentionPolicy;
7+
import java.lang.annotation.Target;
8+
9+
/**
10+
* Indicates an internal class referenced in public API, which should be therefore considered part of the public API.
11+
* The annotated class and/or the referencing public API element should change in the next major release.
12+
* Referencing element is annotated with {@link UnstableApi}.
13+
* Architectural tests consider these annotation to tolerate referenced annotated elements.
14+
*/
15+
@Retention(RetentionPolicy.CLASS)
16+
@Target(ElementType.TYPE)
17+
public @interface UsedInApi {
18+
}

core/src/main/java/com/arangodb/internal/InternalRequest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
package com.arangodb.internal;
2222

23+
import com.arangodb.arch.UsedInApi;
24+
2325
import java.util.Collections;
2426
import java.util.HashMap;
2527
import java.util.Locale;
@@ -28,6 +30,7 @@
2830
/**
2931
* @author Mark Vollmary
3032
*/
33+
@UsedInApi
3134
public class InternalRequest {
3235

3336
private final String dbName;

core/src/main/java/com/arangodb/internal/InternalResponse.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
package com.arangodb.internal;
2222

23+
import com.arangodb.arch.UsedInApi;
24+
2325
import java.util.Collections;
2426
import java.util.HashMap;
2527
import java.util.Locale;
@@ -28,6 +30,7 @@
2830
/**
2931
* @author Mark Vollmary
3032
*/
33+
@UsedInApi
3134
public class InternalResponse {
3235

3336
private int version = 1;

core/src/main/java/com/arangodb/internal/config/ArangoConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.arangodb.ArangoDBException;
44
import com.arangodb.ContentType;
55
import com.arangodb.Protocol;
6+
import com.arangodb.arch.UsedInApi;
67
import com.arangodb.config.ArangoConfigProperties;
78
import com.arangodb.config.HostDescription;
89
import com.arangodb.entity.LoadBalancingStrategy;
@@ -21,6 +22,7 @@
2122
import java.util.concurrent.Executor;
2223
import java.util.stream.Collectors;
2324

25+
@UsedInApi
2426
public class ArangoConfig {
2527
private final List<HostDescription> hosts = new ArrayList<>();
2628
private Protocol protocol;

core/src/main/java/com/arangodb/internal/net/Communication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.arangodb.internal.net;
22

33
import com.arangodb.ArangoDBException;
4+
import com.arangodb.arch.UsedInApi;
45
import com.arangodb.config.HostDescription;
56
import com.arangodb.internal.InternalRequest;
67
import com.arangodb.internal.InternalResponse;
@@ -22,6 +23,7 @@
2223
import java.util.concurrent.TimeoutException;
2324
import java.util.concurrent.atomic.AtomicLong;
2425

26+
@UsedInApi
2527
public abstract class Communication implements Closeable {
2628
private static final Logger LOGGER = LoggerFactory.getLogger(Communication.class);
2729
protected final HostHandler hostHandler;

0 commit comments

Comments
 (0)