core: switch to Java 7 source and bytecode (#4801)
javac can produce code that invokes Object.requireNonNull when instantiating
an inner class using a instance variable. See
https://bugs.openjdk.java.net/browse/JDK-8202137
diff --git a/core/build.gradle b/core/build.gradle
index e5670e4..700592f 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -1,11 +1,5 @@
description = 'gRPC: Core'
-// Workaround:
-// [Undefined reference (android-api-level-14-4.0_r4)] io.grpc.internal.(Rescheduler.java:87)
-// >> Object java.util.Objects.requireNonNull(Object)
-sourceCompatibility = 1.6
-targetCompatibility = 1.6
-
dependencies {
compile project(':grpc-context'),
libraries.gson,
diff --git a/core/src/main/java/io/grpc/internal/Rescheduler.java b/core/src/main/java/io/grpc/internal/Rescheduler.java
index e4d1980..75a106e 100644
--- a/core/src/main/java/io/grpc/internal/Rescheduler.java
+++ b/core/src/main/java/io/grpc/internal/Rescheduler.java
@@ -60,7 +60,7 @@
if (wakeUp != null) {
wakeUp.cancel(false);
}
- wakeUp = scheduler.schedule(new FutureRunnable(this), delayNanos, TimeUnit.NANOSECONDS);
+ wakeUp = scheduler.schedule(new FutureRunnable(), delayNanos, TimeUnit.NANOSECONDS);
}
runAtNanos = newRunAtNanos;
}
@@ -74,17 +74,14 @@
}
}
- private static final class FutureRunnable implements Runnable {
-
- private final Rescheduler rescheduler;
-
- FutureRunnable(Rescheduler rescheduler) {
- this.rescheduler = rescheduler;
- }
-
+ private final class FutureRunnable implements Runnable {
@Override
public void run() {
- rescheduler.serializingExecutor.execute(rescheduler.new ChannelFutureRunnable());
+ Rescheduler.this.serializingExecutor.execute(new ChannelFutureRunnable());
+ }
+
+ private boolean isEnabled() {
+ return Rescheduler.this.enabled;
}
}
@@ -99,7 +96,7 @@
long now = nanoTime();
if (runAtNanos - now > 0) {
wakeUp = scheduler.schedule(
- new FutureRunnable(Rescheduler.this), runAtNanos - now, TimeUnit.NANOSECONDS);
+ new FutureRunnable(), runAtNanos - now, TimeUnit.NANOSECONDS);
} else {
enabled = false;
wakeUp = null;
@@ -110,7 +107,7 @@
@VisibleForTesting
static boolean isEnabled(Runnable r) {
- return ((FutureRunnable) r).rescheduler.enabled;
+ return ((FutureRunnable) r).isEnabled();
}
private long nanoTime() {