Skip to content

Commit 18aa112

Browse files
authored
JAVA-2950: Remove reference to Reflection class from DependencyCheck (#1561)
Decoupled dependency definition from logic to check for presence of dependencies. This check logic has been moved to two discrete classes, one for regular lookups and one for Graal build-time lookups which has to be a bit more restrictive about what it can use.
1 parent c4c561f commit 18aa112

15 files changed

+232
-104
lines changed

changelog/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
<!-- Note: contrary to 3.x, insert new entries *first* in their section -->
44

5+
### 4.11.3 (in progress)
6+
7+
- [bug] JAVA-2950: Remove reference to Reflection class from DependencyCheck
8+
59
### 4.11.2
610

711
- [bug] JAVA-2932: Make DefaultDriverConfigLoader.close() resilient to terminated executors

core/src/main/java/com/datastax/dse/driver/internal/core/type/codec/DseTypeCodecsRegistrar.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
*/
1616
package com.datastax.dse.driver.internal.core.type.codec;
1717

18+
import static com.datastax.oss.driver.internal.core.util.Dependency.ESRI;
19+
1820
import com.datastax.dse.driver.api.core.type.codec.DseTypeCodecs;
1921
import com.datastax.oss.driver.api.core.type.codec.registry.MutableCodecRegistry;
20-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
22+
import com.datastax.oss.driver.internal.core.util.DefaultDependencyChecker;
2123
import org.slf4j.Logger;
2224
import org.slf4j.LoggerFactory;
2325

@@ -27,7 +29,7 @@ public class DseTypeCodecsRegistrar {
2729

2830
public static void registerDseCodecs(MutableCodecRegistry registry) {
2931
registry.register(DseTypeCodecs.DATE_RANGE);
30-
if (DependencyCheck.ESRI.isPresent()) {
32+
if (DefaultDependencyChecker.isPresent(ESRI)) {
3133
registry.register(DseTypeCodecs.LINE_STRING, DseTypeCodecs.POINT, DseTypeCodecs.POLYGON);
3234
} else {
3335
LOG.debug("ESRI was not found on the classpath: geo codecs will not be available");

core/src/main/java/com/datastax/dse/driver/internal/core/type/codec/DseTypeCodecsRegistrarSubstitutions.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
*/
1616
package com.datastax.dse.driver.internal.core.type.codec;
1717

18+
import static com.datastax.oss.driver.internal.core.util.Dependency.ESRI;
19+
1820
import com.datastax.dse.driver.api.core.type.codec.DseTypeCodecs;
1921
import com.datastax.oss.driver.api.core.type.codec.registry.MutableCodecRegistry;
20-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
22+
import com.datastax.oss.driver.internal.core.util.GraalDependencyChecker;
2123
import com.oracle.svm.core.annotate.Substitute;
2224
import com.oracle.svm.core.annotate.TargetClass;
2325
import java.util.function.BooleanSupplier;
@@ -37,7 +39,7 @@ public static void registerDseCodecs(MutableCodecRegistry registry) {
3739
public static class EsriMissing implements BooleanSupplier {
3840
@Override
3941
public boolean getAsBoolean() {
40-
return !DependencyCheck.ESRI.isPresent();
42+
return !GraalDependencyChecker.isPresent(ESRI);
4143
}
4244
}
4345
}

core/src/main/java/com/datastax/oss/driver/internal/core/context/DefaultDriverContext.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package com.datastax.oss.driver.internal.core.context;
1717

18+
import static com.datastax.oss.driver.internal.core.util.Dependency.JACKSON;
19+
1820
import com.datastax.dse.driver.api.core.config.DseDriverOption;
1921
import com.datastax.dse.driver.internal.core.InsightsClientLifecycleListener;
2022
import com.datastax.dse.driver.internal.core.tracker.MultiplexingRequestTracker;
@@ -82,7 +84,7 @@
8284
import com.datastax.oss.driver.internal.core.tracker.NoopRequestTracker;
8385
import com.datastax.oss.driver.internal.core.tracker.RequestLogFormatter;
8486
import com.datastax.oss.driver.internal.core.type.codec.registry.DefaultCodecRegistry;
85-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
87+
import com.datastax.oss.driver.internal.core.util.DefaultDependencyChecker;
8688
import com.datastax.oss.driver.internal.core.util.Reflection;
8789
import com.datastax.oss.driver.internal.core.util.concurrent.CycleDetector;
8890
import com.datastax.oss.driver.internal.core.util.concurrent.LazyReference;
@@ -655,7 +657,7 @@ protected Optional<AuthProvider> buildAuthProvider(AuthProvider authProviderFrom
655657
}
656658

657659
protected List<LifecycleListener> buildLifecycleListeners() {
658-
if (DependencyCheck.JACKSON.isPresent()) {
660+
if (DefaultDependencyChecker.isPresent(JACKSON)) {
659661
return Collections.singletonList(new InsightsClientLifecycleListener(this, initStackTrace));
660662
} else {
661663
if (config.getDefaultProfile().getBoolean(DseDriverOption.MONITOR_REPORTING_ENABLED)) {

core/src/main/java/com/datastax/oss/driver/internal/core/metrics/DefaultMetricsFactory.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
*/
1616
package com.datastax.oss.driver.internal.core.metrics;
1717

18+
import static com.datastax.oss.driver.internal.core.util.Dependency.DROPWIZARD;
19+
1820
import com.datastax.oss.driver.api.core.context.DriverContext;
1921
import com.datastax.oss.driver.api.core.metadata.Node;
2022
import com.datastax.oss.driver.api.core.metrics.Metrics;
21-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
23+
import com.datastax.oss.driver.internal.core.util.DefaultDependencyChecker;
2224
import java.util.Optional;
2325
import net.jcip.annotations.ThreadSafe;
2426
import org.slf4j.Logger;
@@ -33,7 +35,7 @@ public class DefaultMetricsFactory implements MetricsFactory {
3335

3436
@SuppressWarnings("unused")
3537
public DefaultMetricsFactory(DriverContext context) {
36-
if (DependencyCheck.DROPWIZARD.isPresent()) {
38+
if (DefaultDependencyChecker.isPresent(DROPWIZARD)) {
3739
this.delegate = new DropwizardMetricsFactory(context);
3840
} else {
3941
this.delegate = new NoopMetricsFactory(context);

core/src/main/java/com/datastax/oss/driver/internal/core/metrics/DefaultMetricsFactorySubstitutions.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
*/
1616
package com.datastax.oss.driver.internal.core.metrics;
1717

18+
import static com.datastax.oss.driver.internal.core.util.Dependency.DROPWIZARD;
19+
1820
import com.datastax.oss.driver.api.core.context.DriverContext;
19-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
21+
import com.datastax.oss.driver.internal.core.util.GraalDependencyChecker;
2022
import com.oracle.svm.core.annotate.Alias;
2123
import com.oracle.svm.core.annotate.Delete;
2224
import com.oracle.svm.core.annotate.Substitute;
@@ -49,7 +51,7 @@ public static final class DeleteDropwizardMetricsFactory {}
4951
public static class DropwizardMissing implements BooleanSupplier {
5052
@Override
5153
public boolean getAsBoolean() {
52-
return !DependencyCheck.DROPWIZARD.isPresent();
54+
return !GraalDependencyChecker.isPresent(DROPWIZARD);
5355
}
5456
}
5557
}

core/src/main/java/com/datastax/oss/driver/internal/core/protocol/CompressorSubstitutions.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
*/
1616
package com.datastax.oss.driver.internal.core.protocol;
1717

18+
import static com.datastax.oss.driver.internal.core.util.Dependency.LZ4;
19+
1820
import com.datastax.oss.driver.api.core.config.DefaultDriverOption;
1921
import com.datastax.oss.driver.api.core.context.DriverContext;
20-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
22+
import com.datastax.oss.driver.internal.core.util.GraalDependencyChecker;
2123
import com.datastax.oss.protocol.internal.Compressor;
2224
import com.oracle.svm.core.annotate.Delete;
2325
import com.oracle.svm.core.annotate.Substitute;
@@ -91,7 +93,7 @@ public static final class DeleteSnappyCompressor {}
9193
public static class Lz4Present implements BooleanSupplier {
9294
@Override
9395
public boolean getAsBoolean() {
94-
return DependencyCheck.LZ4.isPresent();
96+
return GraalDependencyChecker.isPresent(LZ4);
9597
}
9698
}
9799

core/src/main/java/com/datastax/oss/driver/internal/core/protocol/Lz4Compressor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
*/
1616
package com.datastax.oss.driver.internal.core.protocol;
1717

18+
import static com.datastax.oss.driver.internal.core.util.Dependency.LZ4;
19+
1820
import com.datastax.oss.driver.api.core.context.DriverContext;
19-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
21+
import com.datastax.oss.driver.internal.core.util.DefaultDependencyChecker;
2022
import com.datastax.oss.driver.shaded.guava.common.annotations.VisibleForTesting;
2123
import io.netty.buffer.ByteBuf;
2224
import java.nio.ByteBuffer;
@@ -41,7 +43,7 @@ public Lz4Compressor(DriverContext context) {
4143

4244
@VisibleForTesting
4345
Lz4Compressor(String sessionName) {
44-
if (DependencyCheck.LZ4.isPresent()) {
46+
if (DefaultDependencyChecker.isPresent(LZ4)) {
4547
LZ4Factory lz4Factory = LZ4Factory.fastestInstance();
4648
LOG.info("[{}] Using {}", sessionName, lz4Factory.toString());
4749
this.compressor = lz4Factory.fastCompressor();

core/src/main/java/com/datastax/oss/driver/internal/core/protocol/SnappyCompressor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
package com.datastax.oss.driver.internal.core.protocol;
1717

1818
import com.datastax.oss.driver.api.core.context.DriverContext;
19-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
19+
import com.datastax.oss.driver.internal.core.util.DefaultDependencyChecker;
20+
import com.datastax.oss.driver.internal.core.util.Dependency;
2021
import io.netty.buffer.ByteBuf;
2122
import java.io.IOException;
2223
import java.nio.ByteBuffer;
@@ -34,7 +35,7 @@
3435
public class SnappyCompressor extends ByteBufCompressor {
3536

3637
public SnappyCompressor(@SuppressWarnings("unused") DriverContext context) {
37-
if (!DependencyCheck.SNAPPY.isPresent()) {
38+
if (!DefaultDependencyChecker.isPresent(Dependency.SNAPPY)) {
3839
throw new IllegalStateException(
3940
"Could not find the Snappy library on the classpath "
4041
+ "(the driver declares it as an optional dependency, "

core/src/main/java/com/datastax/oss/driver/internal/core/session/BuiltInRequestProcessors.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
*/
1616
package com.datastax.oss.driver.internal.core.session;
1717

18+
import static com.datastax.oss.driver.internal.core.util.Dependency.REACTIVE_STREAMS;
19+
import static com.datastax.oss.driver.internal.core.util.Dependency.TINKERPOP;
20+
1821
import com.datastax.dse.driver.internal.core.cql.continuous.ContinuousCqlRequestAsyncProcessor;
1922
import com.datastax.dse.driver.internal.core.cql.continuous.ContinuousCqlRequestSyncProcessor;
2023
import com.datastax.dse.driver.internal.core.cql.continuous.reactive.ContinuousCqlRequestReactiveProcessor;
@@ -28,7 +31,7 @@
2831
import com.datastax.oss.driver.internal.core.cql.CqlPrepareSyncProcessor;
2932
import com.datastax.oss.driver.internal.core.cql.CqlRequestAsyncProcessor;
3033
import com.datastax.oss.driver.internal.core.cql.CqlRequestSyncProcessor;
31-
import com.datastax.oss.driver.internal.core.util.DependencyCheck;
34+
import com.datastax.oss.driver.internal.core.util.DefaultDependencyChecker;
3235
import java.util.ArrayList;
3336
import java.util.List;
3437
import org.slf4j.Logger;
@@ -41,18 +44,19 @@ public class BuiltInRequestProcessors {
4144
public static List<RequestProcessor<?, ?>> createDefaultProcessors(DefaultDriverContext context) {
4245
List<RequestProcessor<?, ?>> processors = new ArrayList<>();
4346
addBasicProcessors(processors);
44-
if (DependencyCheck.TINKERPOP.isPresent()) {
47+
if (DefaultDependencyChecker.isPresent(TINKERPOP)) {
4548
addGraphProcessors(context, processors);
4649
} else {
4750
LOG.debug("Tinkerpop was not found on the classpath: graph extensions will not be available");
4851
}
49-
if (DependencyCheck.REACTIVE_STREAMS.isPresent()) {
52+
if (DefaultDependencyChecker.isPresent(REACTIVE_STREAMS)) {
5053
addReactiveProcessors(processors);
5154
} else {
5255
LOG.debug(
5356
"Reactive Streams was not found on the classpath: reactive extensions will not be available");
5457
}
55-
if (DependencyCheck.REACTIVE_STREAMS.isPresent() && DependencyCheck.TINKERPOP.isPresent()) {
58+
if (DefaultDependencyChecker.isPresent(REACTIVE_STREAMS)
59+
&& DefaultDependencyChecker.isPresent(TINKERPOP)) {
5660
addGraphReactiveProcessors(context, processors);
5761
}
5862
return processors;

0 commit comments

Comments
 (0)