You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by wf...@apache.org on 2017/12/15 20:01:56 UTC

[4/4] aurora git commit: Use java.util.Optional throughout

Use java.util.Optional throughout

Reviewed at https://reviews.apache.org/r/64629/


Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/6fd765bc
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/6fd765bc
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/6fd765bc

Branch: refs/heads/master
Commit: 6fd765bcf8fa5dc0d6d8f2c2fcfce6609ab8fb01
Parents: 5f79f7c
Author: Bill Farner <wf...@apache.org>
Authored: Fri Dec 15 12:01:49 2017 -0800
Committer: Bill Farner <wf...@apache.org>
Committed: Fri Dec 15 12:01:49 2017 -0800

----------------------------------------------------------------------
 .../net/http/handlers/TimeSeriesDataSource.java |  4 +-
 .../org/apache/aurora/common/stats/Stats.java   |  2 +-
 .../aurora/common/stats/StatsProvider.java      |  3 +-
 .../aurora/benchmark/StatusUpdateBenchmark.java |  6 +--
 .../benchmark/fakes/FakeOfferManager.java       |  6 +--
 .../benchmark/fakes/FakeStatsProvider.java      |  3 +-
 .../aurora/scheduler/SchedulerLifecycle.java    |  2 +-
 .../aurora/scheduler/TaskStatusHandlerImpl.java |  8 ++--
 .../org/apache/aurora/scheduler/TaskVars.java   |  9 ++--
 .../apache/aurora/scheduler/base/JobKeys.java   |  4 +-
 .../aurora/scheduler/base/TaskTestUtil.java     |  6 +--
 .../config/converters/DataAmountConverter.java  | 13 +++---
 .../config/converters/TimeAmountConverter.java  | 13 +++---
 .../configuration/ConfigurationManager.java     |  2 +-
 .../executor/ExecutorSettingsLoader.java        |  4 +-
 .../aurora/scheduler/cron/CronPredictor.java    |  2 +-
 .../aurora/scheduler/cron/CronScheduler.java    |  2 +-
 .../aurora/scheduler/cron/CrontabEntry.java     |  4 +-
 .../aurora/scheduler/cron/SanitizedCronJob.java |  4 +-
 .../scheduler/cron/quartz/AuroraCronJob.java    |  4 +-
 .../cron/quartz/CronJobManagerImpl.java         |  5 ++-
 .../cron/quartz/CronPredictorImpl.java          |  5 +--
 .../cron/quartz/CronSchedulerImpl.java          |  5 ++-
 .../discovery/FlaggedZooKeeperConfig.java       |  6 +--
 .../scheduler/discovery/ZooKeeperConfig.java    |  7 ++--
 .../aurora/scheduler/events/PubsubEvent.java    |  4 +-
 .../aurora/scheduler/events/WebhookInfo.java    | 13 +++---
 .../aurora/scheduler/events/WebhookModule.java  |  6 +--
 .../scheduler/filter/ConstraintMatcher.java     | 10 ++---
 .../scheduler/filter/SchedulingFilter.java      |  4 +-
 .../scheduler/filter/SchedulingFilterImpl.java  | 15 +++----
 .../scheduler/http/JettyServerModule.java       |  6 +--
 .../aurora/scheduler/http/LeaderRedirect.java   | 20 ++++-----
 .../scheduler/http/LeaderRedirectFilter.java    |  2 +-
 .../org/apache/aurora/scheduler/http/Mname.java | 14 +++----
 .../apache/aurora/scheduler/http/Quotas.java    |  2 +-
 .../aurora/scheduler/http/StructDump.java       |  7 ++--
 .../http/api/security/FieldGetter.java          |  5 ++-
 .../http/api/security/FieldGetters.java         |  4 +-
 .../http/api/security/IniShiroRealmModule.java  |  7 ++--
 .../api/security/Kerberos5ShiroRealmModule.java |  6 +--
 .../ShiroAuthorizingParamInterceptor.java       | 12 +++---
 .../ShiroKerberosAuthenticationFilter.java      |  5 +--
 .../http/api/security/ThriftFieldGetter.java    |  4 +-
 .../aurora/scheduler/log/mesos/MesosLog.java    |  4 +-
 .../mesos/CommandLineDriverSettingsModule.java  |  8 ++--
 .../aurora/scheduler/mesos/DriverFactory.java   |  2 +-
 .../scheduler/mesos/DriverFactoryImpl.java      |  4 +-
 .../aurora/scheduler/mesos/DriverSettings.java  |  3 +-
 .../scheduler/mesos/LibMesosLoadingModule.java  |  4 +-
 .../scheduler/mesos/MesosCallbackHandler.java   |  9 ++--
 .../scheduler/mesos/MesosTaskFactory.java       |  6 +--
 .../scheduler/mesos/SchedulerDriverService.java |  2 +-
 .../scheduler/mesos/VersionedDriverFactory.java |  2 +-
 .../mesos/VersionedMesosSchedulerImpl.java      |  3 +-
 .../mesos/VersionedSchedulerDriverService.java  |  6 +--
 .../aurora/scheduler/offers/HostOffer.java      |  4 +-
 .../aurora/scheduler/offers/HostOffers.java     | 10 ++---
 .../aurora/scheduler/offers/OfferManager.java   |  3 +-
 .../scheduler/offers/OfferManagerImpl.java      |  3 +-
 .../scheduler/offers/OfferOrderBuilder.java     |  2 +-
 .../aurora/scheduler/preemptor/BiCache.java     |  4 +-
 .../preemptor/PendingTaskProcessor.java         |  4 +-
 .../preemptor/PreemptionVictimFilter.java       | 15 +++----
 .../aurora/scheduler/preemptor/Preemptor.java   |  6 +--
 .../scheduler/preemptor/PreemptorMetrics.java   |  2 +-
 .../scheduler/preemptor/PreemptorModule.java    |  4 +-
 .../scheduler/quota/QuotaCheckResult.java       |  5 ++-
 .../aurora/scheduler/quota/QuotaManager.java    | 18 ++++----
 .../reconciliation/TaskReconciler.java          |  4 +-
 .../scheduler/reconciliation/TaskTimeout.java   |  2 +-
 .../scheduling/FirstFitOfferSelector.java       |  5 ++-
 .../scheduler/scheduling/OfferSelector.java     |  2 +-
 .../scheduling/RescheduleCalculator.java        |  4 +-
 .../scheduler/scheduling/TaskAssignerImpl.java  |  5 ++-
 .../scheduler/scheduling/TaskSchedulerImpl.java |  3 +-
 .../scheduler/scheduling/TaskThrottler.java     |  4 +-
 .../aurora/scheduler/spi/Permissions.java       |  4 +-
 .../scheduler/state/MaintenanceController.java  | 12 +++---
 .../scheduler/state/PartitionManager.java       |  2 +-
 .../aurora/scheduler/state/SideEffect.java      |  3 +-
 .../aurora/scheduler/state/StateManager.java    |  3 +-
 .../scheduler/state/StateManagerImpl.java       | 12 +++---
 .../scheduler/state/TaskStateMachine.java       | 18 ++++----
 .../scheduler/storage/AttributeStore.java       | 10 ++---
 .../aurora/scheduler/storage/CronJobStore.java  |  2 +-
 .../scheduler/storage/JobUpdateStore.java       |  3 +-
 .../aurora/scheduler/storage/QuotaStore.java    |  3 +-
 .../scheduler/storage/SchedulerStore.java       |  2 +-
 .../aurora/scheduler/storage/Storage.java       |  3 +-
 .../aurora/scheduler/storage/TaskStore.java     |  2 +-
 .../storage/durability/WriteRecorder.java       |  2 +-
 .../storage/log/SnapshotStoreImpl.java          |  2 +-
 .../storage/mem/MemAttributeStore.java          |  6 +--
 .../scheduler/storage/mem/MemCronJobStore.java  |  4 +-
 .../storage/mem/MemJobUpdateStore.java          |  4 +-
 .../scheduler/storage/mem/MemQuotaStore.java    |  4 +-
 .../storage/mem/MemSchedulerStore.java          |  4 +-
 .../scheduler/storage/mem/MemTaskStore.java     | 12 +++---
 .../scheduler/testing/FakeStatsProvider.java    |  4 +-
 .../aurora/scheduler/thrift/AuditMessages.java  | 15 ++++---
 .../scheduler/thrift/ReadOnlySchedulerImpl.java |  8 ++--
 .../thrift/SchedulerThriftInterface.java        | 44 ++++++++++----------
 .../scheduler/updater/InstanceAction.java       |  4 +-
 .../updater/InstanceActionHandler.java          | 11 ++---
 .../scheduler/updater/InstanceUpdater.java      | 16 +++----
 .../scheduler/updater/JobUpdateController.java  |  2 +-
 .../updater/JobUpdateControllerImpl.java        |  8 ++--
 .../updater/JobUpdateStateMachine.java          |  4 +-
 .../aurora/scheduler/updater/SideEffect.java    |  2 +-
 .../scheduler/updater/StateEvaluator.java       |  8 ++--
 .../scheduler/updater/UpdateAgentReserver.java  |  4 +-
 .../aurora/scheduler/updater/UpdateFactory.java |  6 +--
 .../scheduler/TaskStatusHandlerImplTest.java    | 17 ++++----
 .../apache/aurora/scheduler/TaskVarsTest.java   |  6 +--
 .../aurora/scheduler/app/SchedulerIT.java       |  6 +--
 .../aurora/scheduler/app/local/FakeMaster.java  |  2 +-
 .../scheduler/app/local/LocalSchedulerMain.java |  4 +-
 .../aurora/scheduler/cron/CrontabEntryTest.java |  2 +-
 .../cron/quartz/AuroraCronJobTest.java          |  4 +-
 .../cron/quartz/CronJobManagerImplTest.java     | 14 ++++---
 .../cron/quartz/CronPredictorImplTest.java      |  4 +-
 .../discovery/CuratorDiscoveryModuleTest.java   |  2 +-
 .../discovery/ZooKeeperConfigTest.java          | 10 ++---
 .../filter/AttributeAggregateTest.java          |  8 ++--
 .../filter/SchedulingFilterImplTest.java        |  2 +-
 .../scheduler/http/LeaderRedirectTest.java      |  8 ++--
 .../apache/aurora/scheduler/http/MnameTest.java |  8 ++--
 .../scheduler/http/ServletFilterTest.java       | 14 ++++---
 .../ShiroAuthorizingParamInterceptorTest.java   |  2 +-
 .../api/security/ThriftFieldGetterTest.java     |  4 +-
 .../CommandLineDriverSettingsModuleTest.java    | 20 ++++-----
 .../mesos/MesosCallbackHandlerTest.java         | 28 ++++++-------
 .../mesos/SchedulerDriverServiceTest.java       |  6 +--
 .../scheduler/mesos/TaskStatusStatsTest.java    | 16 +++----
 .../mesos/VersionedMesosSchedulerImplTest.java  |  2 +-
 .../VersionedSchedulerDriverServiceTest.java    |  5 ++-
 .../scheduler/offers/OfferManagerImplTest.java  |  6 +--
 .../aurora/scheduler/preemptor/BiCacheTest.java |  4 +-
 .../preemptor/PendingTaskProcessorTest.java     |  4 +-
 .../preemptor/PreemptionVictimFilterTest.java   | 15 ++++---
 .../scheduler/preemptor/PreemptorImplTest.java  | 14 +++----
 .../preemptor/PreemptorModuleTest.java          |  5 ++-
 .../scheduler/quota/QuotaManagerImplTest.java   |  7 ++--
 .../reconciliation/TaskReconcilerTest.java      |  4 +-
 .../reconciliation/TaskTimeoutTest.java         |  2 +-
 .../scheduler/resources/AcceptedOfferTest.java  |  4 +-
 .../resources/MesosResourceConverterTest.java   | 16 +++----
 .../scheduler/resources/ResourceTestUtil.java   |  8 ++--
 .../scheduling/TaskAssignerImplTest.java        |  6 +--
 .../scheduling/TaskSchedulerImplTest.java       |  4 +-
 .../scheduler/scheduling/TaskThrottlerTest.java |  4 +-
 .../scheduler/sla/MetricCalculatorTest.java     |  6 +--
 .../state/MaintenanceControllerImplTest.java    |  8 ++--
 .../scheduler/state/PartitionManagerTest.java   |  5 +--
 .../scheduler/state/StateManagerImplTest.java   | 16 +++----
 .../scheduler/state/TaskStateMachineTest.java   | 35 ++++++++--------
 .../scheduler/stats/ResourceCounterTest.java    |  4 +-
 .../storage/AbstractAttributeStoreTest.java     |  8 ++--
 .../storage/AbstractCronJobStoreTest.java       | 20 ++++-----
 .../storage/AbstractJobUpdateStoreTest.java     |  8 ++--
 .../storage/AbstractQuotaStoreTest.java         | 14 +++----
 .../storage/AbstractSchedulerStoreTest.java     |  5 +--
 .../storage/AbstractTaskStoreTest.java          |  4 +-
 .../storage/durability/DurableStorageTest.java  |  6 +--
 .../storage/durability/WriteRecorderTest.java   |  2 +-
 .../storage/log/NonVolatileStorageTest.java     |  4 +-
 .../storage/testing/StorageTestUtil.java        |  5 ++-
 .../scheduler/thrift/AuditMessagesTest.java     | 14 +++----
 .../aurora/scheduler/thrift/Fixtures.java       |  4 +-
 .../thrift/ReadOnlySchedulerImplTest.java       | 12 +++---
 .../thrift/SchedulerThriftInterfaceTest.java    | 16 +++----
 .../aurora/scheduler/thrift/ThriftIT.java       |  2 +-
 .../scheduler/updater/InstanceUpdaterTest.java  |  8 ++--
 .../aurora/scheduler/updater/JobUpdaterIT.java  |  6 +--
 .../aurora/scheduler/updater/KillTaskTest.java  |  6 +--
 .../scheduler/updater/OneWayJobUpdaterTest.java |  8 ++--
 177 files changed, 608 insertions(+), 605 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/commons/src/main/java/org/apache/aurora/common/net/http/handlers/TimeSeriesDataSource.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/net/http/handlers/TimeSeriesDataSource.java b/commons/src/main/java/org/apache/aurora/common/net/http/handlers/TimeSeriesDataSource.java
index e40f327..d243245 100644
--- a/commons/src/main/java/org/apache/aurora/common/net/http/handlers/TimeSeriesDataSource.java
+++ b/commons/src/main/java/org/apache/aurora/common/net/http/handlers/TimeSeriesDataSource.java
@@ -14,6 +14,7 @@
 package org.apache.aurora.common.net.http.handlers;
 
 import java.util.List;
+import java.util.Optional;
 
 import javax.annotation.Nullable;
 import javax.ws.rs.GET;
@@ -23,7 +24,6 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -85,7 +85,7 @@ public class TimeSeriesDataSource {
       tsData.add(series.getSamples());
     }
 
-    final long since = Long.parseLong(Optional.fromNullable(sinceQuery).or("0"));
+    final long since = Long.parseLong(Optional.ofNullable(sinceQuery).orElse("0"));
     Predicate<List<Number>> sinceFilter = next -> next.get(0).longValue() > since;
 
     ResponseStruct response = new ResponseStruct(

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/commons/src/main/java/org/apache/aurora/common/stats/Stats.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/stats/Stats.java b/commons/src/main/java/org/apache/aurora/common/stats/Stats.java
index af1a7b3..304aaa3 100644
--- a/commons/src/main/java/org/apache/aurora/common/stats/Stats.java
+++ b/commons/src/main/java/org/apache/aurora/common/stats/Stats.java
@@ -21,10 +21,10 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Supplier;
 import java.util.regex.Pattern;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Supplier;
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.collect.ImmutableList;

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java b/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java
index c02dd38..db3b5cc 100644
--- a/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java
+++ b/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java
@@ -15,8 +15,7 @@ package org.apache.aurora.common.stats;
 
 import java.util.Collection;
 import java.util.concurrent.atomic.AtomicLong;
-
-import com.google.common.base.Supplier;
+import java.util.function.Supplier;
 
 /**
  * A minimal interface to a Stats repository.

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java
----------------------------------------------------------------------
diff --git a/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java b/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java
index 0c31c4a..37374dc 100644
--- a/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java
+++ b/src/jmh/java/org/apache/aurora/benchmark/StatusUpdateBenchmark.java
@@ -13,6 +13,7 @@
  */
 package org.apache.aurora.benchmark;
 
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.CountDownLatch;
@@ -22,7 +23,6 @@ import java.util.concurrent.TimeUnit;
 
 import javax.inject.Singleton;
 
-import com.google.common.base.Optional;
 import com.google.common.eventbus.EventBus;
 import com.google.common.eventbus.Subscribe;
 import com.google.common.util.concurrent.AbstractExecutionThreadService;
@@ -120,7 +120,7 @@ public class StatusUpdateBenchmark {
    */
   private static final class SlowStorageWrapper implements Storage {
     private final Storage underlyingStorage;
-    private Optional<Amount<Long, Time>> latency = Optional.absent();
+    private Optional<Amount<Long, Time>> latency = Optional.empty();
 
     private SlowStorageWrapper(Storage underlyingStorage) {
       this.underlyingStorage = requireNonNull(underlyingStorage);
@@ -209,7 +209,7 @@ public class StatusUpdateBenchmark {
             bind(DriverSettings.class).toInstance(
                 new DriverSettings(
                     "fakemaster",
-                    Optional.absent()));
+                    Optional.empty()));
             bind(FrameworkInfoFactory.class).toInstance(() -> Protos.FrameworkInfo.newBuilder()
                     .setUser("framework user")
                     .setName("test framework")

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeOfferManager.java
----------------------------------------------------------------------
diff --git a/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeOfferManager.java b/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeOfferManager.java
index c70f108..f0dacd4 100644
--- a/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeOfferManager.java
+++ b/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeOfferManager.java
@@ -13,7 +13,7 @@
  */
 package org.apache.aurora.benchmark.fakes;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 import org.apache.aurora.scheduler.base.TaskGroupKey;
 import org.apache.aurora.scheduler.events.PubsubEvent;
@@ -50,7 +50,7 @@ public class FakeOfferManager implements OfferManager {
 
   @Override
   public Optional<HostOffer> get(Protos.AgentID agentId) {
-    return Optional.absent();
+    return Optional.empty();
   }
 
   @Override
@@ -63,7 +63,7 @@ public class FakeOfferManager implements OfferManager {
                                          ResourceRequest resourceRequest,
                                          boolean revocable) {
 
-    return Optional.absent();
+    return Optional.empty();
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeStatsProvider.java
----------------------------------------------------------------------
diff --git a/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeStatsProvider.java b/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeStatsProvider.java
index d83a11f..3d1b3dd 100644
--- a/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeStatsProvider.java
+++ b/src/jmh/java/org/apache/aurora/benchmark/fakes/FakeStatsProvider.java
@@ -14,8 +14,7 @@
 package org.apache.aurora.benchmark.fakes;
 
 import java.util.concurrent.atomic.AtomicLong;
-
-import com.google.common.base.Supplier;
+import java.util.function.Supplier;
 
 import org.apache.aurora.common.stats.Stat;
 import org.apache.aurora.common.stats.StatsProvider;

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/SchedulerLifecycle.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/SchedulerLifecycle.java b/src/main/java/org/apache/aurora/scheduler/SchedulerLifecycle.java
index aa09aff..99610d6 100644
--- a/src/main/java/org/apache/aurora/scheduler/SchedulerLifecycle.java
+++ b/src/main/java/org/apache/aurora/scheduler/SchedulerLifecycle.java
@@ -77,7 +77,7 @@ import static org.apache.aurora.common.zookeeper.SingletonService.LeadershipList
  *       {@link LeaderControl#advertise() advertise()}.</li>
  * </ol>
  * If this call order is broken, calls will fail by throwing
- * {@link java.lang.IllegalStateException}.
+ * {@link IllegalStateException}.
  * <p>
  * At any point in the lifecycle, the scheduler will respond to
  * {@link LeadershipListener#onDefeated()

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java b/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java
index 1aacecf..f506e9e 100644
--- a/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/TaskStatusHandlerImpl.java
@@ -16,6 +16,7 @@ package org.apache.aurora.scheduler;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import java.util.ArrayDeque;
+import java.util.Optional;
 import java.util.Queue;
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.atomic.AtomicReference;
@@ -24,7 +25,6 @@ import javax.inject.Inject;
 import javax.inject.Qualifier;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.util.concurrent.AbstractExecutionThreadService;
 import com.google.common.util.concurrent.MoreExecutors;
 
@@ -158,7 +158,7 @@ public class TaskStatusHandlerImpl extends AbstractExecutionThreadService
             StateChangeResult result = stateManager.changeState(
                 storeProvider,
                 status.getTaskId().getValue(),
-                Optional.absent(),
+                Optional.empty(),
                 translatedState,
                 formatMessage(status));
 
@@ -183,7 +183,7 @@ public class TaskStatusHandlerImpl extends AbstractExecutionThreadService
   }
 
   private static Optional<String> formatMessage(TaskStatus status) {
-    Optional<String> message = Optional.absent();
+    Optional<String> message = Optional.empty();
     if (status.hasMessage()) {
       message = Optional.of(status.getMessage());
     }
@@ -206,7 +206,7 @@ public class TaskStatusHandlerImpl extends AbstractExecutionThreadService
 
         case REASON_EXECUTOR_UNREGISTERED:
           // Suppress "Unregistered executor" message as it bears no meaning to the user.
-          message = Optional.absent();
+          message = Optional.empty();
           break;
 
         default:

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/TaskVars.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/TaskVars.java b/src/main/java/org/apache/aurora/scheduler/TaskVars.java
index 3911626..ee20ed3 100644
--- a/src/main/java/org/apache/aurora/scheduler/TaskVars.java
+++ b/src/main/java/org/apache/aurora/scheduler/TaskVars.java
@@ -14,6 +14,7 @@
 package org.apache.aurora.scheduler;
 
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -21,7 +22,6 @@ import javax.inject.Inject;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.base.Strings;
 import com.google.common.base.Supplier;
@@ -142,13 +142,14 @@ public class TaskVars extends AbstractIdleService implements EventSubscriber {
     final String host = task.getAssignedTask().getSlaveHost();
     Optional<String> rack;
     if (Strings.isNullOrEmpty(task.getAssignedTask().getSlaveHost())) {
-      rack = Optional.absent();
+      rack = Optional.empty();
     } else {
       rack = storage.read(storeProvider -> {
         Optional<IAttribute> rack1 = FluentIterable
             .from(AttributeStore.Util.attributesOrNone(storeProvider, host))
-            .firstMatch(IS_RACK);
-        return rack1.transform(ATTR_VALUE);
+            .firstMatch(IS_RACK)
+            .toJavaUtil();
+        return rack1.map(ATTR_VALUE);
       });
     }
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/base/JobKeys.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/base/JobKeys.java b/src/main/java/org/apache/aurora/scheduler/base/JobKeys.java
index 0136afb..cab620d 100644
--- a/src/main/java/org/apache/aurora/scheduler/base/JobKeys.java
+++ b/src/main/java/org/apache/aurora/scheduler/base/JobKeys.java
@@ -14,11 +14,11 @@
 package org.apache.aurora.scheduler.base;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
 import javax.annotation.Nullable;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableSet;
 
@@ -136,7 +136,7 @@ public final class JobKeys {
       builder.addAll(taskQuery.getJobKeys());
       return Optional.of(assertValid(builder.build()));
     } else {
-      return Optional.absent();
+      return Optional.empty();
     }
   }
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java b/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
index e1f20f4..22d5a64 100644
--- a/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
+++ b/src/main/java/org/apache/aurora/scheduler/base/TaskTestUtil.java
@@ -14,9 +14,9 @@
 package org.apache.aurora.scheduler.base;
 
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -155,7 +155,7 @@ public final class TaskTestUtil {
   }
 
   public static IScheduledTask makeTask(String id, IJobKey job, int instanceId) {
-    return makeTask(id, makeConfig(job), instanceId, Optional.absent());
+    return makeTask(id, makeConfig(job), instanceId, Optional.empty());
   }
 
   public static IScheduledTask makeTask(String id, IJobKey job, int instanceId, String agentId) {
@@ -167,7 +167,7 @@ public final class TaskTestUtil {
   }
 
   public static IScheduledTask makeTask(String id, ITaskConfig config, int instanceId) {
-    return makeTask(id, config, instanceId, Optional.absent());
+    return makeTask(id, config, instanceId, Optional.empty());
   }
 
   public static IScheduledTask makeTask(

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java b/src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java
index a0d2620..7087cea 100644
--- a/src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java
+++ b/src/main/java/org/apache/aurora/scheduler/config/converters/DataAmountConverter.java
@@ -14,15 +14,13 @@
 
 package org.apache.aurora.scheduler.config.converters;
 
+import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Stream;
 
 import com.beust.jcommander.ParameterException;
 import com.beust.jcommander.converters.BaseConverter;
-import com.google.common.base.Functions;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicates;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 import org.apache.aurora.common.quantity.Data;
@@ -43,10 +41,9 @@ public class DataAmountConverter extends BaseConverter<DataAmount> {
       throw new ParameterException(getErrorString(raw, "must be of the format 1KB, 2GB, etc."));
     }
 
-    Optional<Data> unit = FluentIterable.from(Data.values())
-        .firstMatch(Predicates.compose(
-            Predicates.equalTo(matcher.group(2)),
-            Functions.toStringFunction()));
+    Optional<Data> unit = Stream.of(Data.values())
+        .filter(value -> value.toString().equals(matcher.group(2)))
+        .findFirst();
     if (unit.isPresent()) {
       return new DataAmount(Integer.parseInt(matcher.group(1)), unit.get());
     } else {

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java b/src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java
index 7e66cf2..7891d54 100644
--- a/src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java
+++ b/src/main/java/org/apache/aurora/scheduler/config/converters/TimeAmountConverter.java
@@ -14,15 +14,13 @@
 
 package org.apache.aurora.scheduler.config.converters;
 
+import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Stream;
 
 import com.beust.jcommander.ParameterException;
 import com.beust.jcommander.converters.BaseConverter;
-import com.google.common.base.Functions;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicates;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 import org.apache.aurora.common.quantity.Time;
@@ -43,10 +41,9 @@ public class TimeAmountConverter extends BaseConverter<TimeAmount> {
       throw new ParameterException(getErrorString(raw, "must be of the format 1ns, 2secs, etc."));
     }
 
-    Optional<Time> unit = FluentIterable.from(Time.values())
-        .firstMatch(Predicates.compose(
-            Predicates.equalTo(matcher.group(2)),
-            Functions.toStringFunction()));
+    Optional<Time> unit = Stream.of(Time.values())
+        .filter(value -> value.toString().equals(matcher.group(2)))
+        .findFirst();
     if (unit.isPresent()) {
       return new TimeAmount(Long.parseLong(matcher.group(1)), unit.get());
     } else {

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java b/src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java
index f3e98f2..4073229 100644
--- a/src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java
+++ b/src/main/java/org/apache/aurora/scheduler/configuration/ConfigurationManager.java
@@ -14,6 +14,7 @@
 package org.apache.aurora.scheduler.configuration;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
@@ -21,7 +22,6 @@ import javax.annotation.Nullable;
 import javax.inject.Inject;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorSettingsLoader.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorSettingsLoader.java b/src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorSettingsLoader.java
index af28913..7fdf642 100644
--- a/src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorSettingsLoader.java
+++ b/src/main/java/org/apache/aurora/scheduler/configuration/executor/ExecutorSettingsLoader.java
@@ -17,10 +17,10 @@ package org.apache.aurora.scheduler.configuration.executor;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.io.CharStreams;
 import com.hubspot.jackson.datatype.protobuf.ProtobufModule;
@@ -88,7 +88,7 @@ public final class ExecutorSettingsLoader {
               m -> m.executor.getName(),
               m -> new ExecutorConfig(
                   m.executor.setExecutorId(PLACEHOLDER_EXECUTOR_ID).build(),
-                  Optional.fromNullable(m.volumeMounts).or(ImmutableList.of()),
+                  Optional.ofNullable(m.volumeMounts).orElse(ImmutableList.of()),
                   m.taskPrefix)));
 
     } catch (RuntimeException e) {

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/cron/CronPredictor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/CronPredictor.java b/src/main/java/org/apache/aurora/scheduler/cron/CronPredictor.java
index 8957b3a..c43926e 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/CronPredictor.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/CronPredictor.java
@@ -15,7 +15,7 @@ package org.apache.aurora.scheduler.cron;
 
 import java.util.Date;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 /**
  * A utility function that predicts a cron run given a schedule.

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/cron/CronScheduler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/CronScheduler.java b/src/main/java/org/apache/aurora/scheduler/cron/CronScheduler.java
index ac45f15..5db07a7 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/CronScheduler.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/CronScheduler.java
@@ -13,7 +13,7 @@
  */
 package org.apache.aurora.scheduler.cron;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 import org.apache.aurora.scheduler.storage.entities.IJobKey;
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/cron/CrontabEntry.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/CrontabEntry.java b/src/main/java/org/apache/aurora/scheduler/cron/CrontabEntry.java
index 6e56867..c1e0269 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/CrontabEntry.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/CrontabEntry.java
@@ -17,11 +17,11 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
 import com.google.common.collect.BiMap;
 import com.google.common.collect.ContiguousSet;
@@ -136,7 +136,7 @@ public final class CrontabEntry {
     try {
       return Optional.of(parse(schedule));
     } catch (IllegalArgumentException e) {
-      return Optional.absent();
+      return Optional.empty();
     }
   }
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/cron/SanitizedCronJob.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/SanitizedCronJob.java b/src/main/java/org/apache/aurora/scheduler/cron/SanitizedCronJob.java
index 87970f6..85b2468 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/SanitizedCronJob.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/SanitizedCronJob.java
@@ -14,12 +14,12 @@
 package org.apache.aurora.scheduler.cron;
 
 import java.util.Objects;
+import java.util.Optional;
 
 import javax.annotation.Nullable;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 
 import org.apache.aurora.gen.CronCollisionPolicy;
@@ -67,7 +67,7 @@ public final class SanitizedCronJob {
    * @return The given policy or a default if the policy was null.
    */
   public static CronCollisionPolicy orDefault(@Nullable CronCollisionPolicy policy) {
-    return Optional.fromNullable(policy).or(CronCollisionPolicy.KILL_EXISTING);
+    return Optional.ofNullable(policy).orElse(CronCollisionPolicy.KILL_EXISTING);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/cron/quartz/AuroraCronJob.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/quartz/AuroraCronJob.java b/src/main/java/org/apache/aurora/scheduler/cron/quartz/AuroraCronJob.java
index d890cad..3604dd4 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/quartz/AuroraCronJob.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/quartz/AuroraCronJob.java
@@ -16,6 +16,7 @@ package org.apache.aurora.scheduler.cron.quartz;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import java.util.Date;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
@@ -25,7 +26,6 @@ import javax.inject.Inject;
 import javax.inject.Qualifier;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
 
@@ -196,7 +196,7 @@ class AuroraCronJob implements Job, EventSubscriber {
             stateManager.changeState(
                 storeProvider,
                 taskId,
-                Optional.absent(),
+                Optional.empty(),
                 KILLING,
                 KILL_AUDIT_MESSAGE);
           }

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronJobManagerImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronJobManagerImpl.java b/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronJobManagerImpl.java
index 90399f2..8949617 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronJobManagerImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronJobManagerImpl.java
@@ -14,11 +14,11 @@
 package org.apache.aurora.scheduler.cron.quartz;
 
 import java.util.Map;
+import java.util.Optional;
 import java.util.TimeZone;
 
 import javax.inject.Inject;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableMap;
 
@@ -197,7 +197,8 @@ class CronJobManagerImpl implements CronJobManager {
         // we're defensive here since this function is used for debugging.
         Optional<CronTrigger> trigger = FluentIterable.from(scheduler.getTriggersOfJob(jobKey))
             .filter(CronTrigger.class)
-            .first();
+            .first()
+            .toJavaUtil();
         if (trigger.isPresent()) {
           scheduledJobs.put(
               Quartz.auroraJobKey(jobKey),

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronPredictorImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronPredictorImpl.java b/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronPredictorImpl.java
index e937667..445aeb3 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronPredictorImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronPredictorImpl.java
@@ -14,12 +14,11 @@
 package org.apache.aurora.scheduler.cron.quartz;
 
 import java.util.Date;
+import java.util.Optional;
 import java.util.TimeZone;
 
 import javax.inject.Inject;
 
-import com.google.common.base.Optional;
-
 import org.apache.aurora.common.util.Clock;
 import org.apache.aurora.scheduler.cron.CronPredictor;
 import org.apache.aurora.scheduler.cron.CrontabEntry;
@@ -41,6 +40,6 @@ class CronPredictorImpl implements CronPredictor {
   public Optional<Date> predictNextRun(CrontabEntry schedule) {
     CronExpression cronExpression = Quartz.cronExpression(schedule, timeZone);
     // The getNextValidTimeAfter call may return null; eg: if the date is too far in the future.
-    return Optional.fromNullable(cronExpression.getNextValidTimeAfter(new Date(clock.nowMillis())));
+    return Optional.ofNullable(cronExpression.getNextValidTimeAfter(new Date(clock.nowMillis())));
   }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronSchedulerImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronSchedulerImpl.java b/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronSchedulerImpl.java
index ead85c3..0518017 100644
--- a/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronSchedulerImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/cron/quartz/CronSchedulerImpl.java
@@ -13,9 +13,10 @@
  */
 package org.apache.aurora.scheduler.cron.quartz;
 
+import java.util.Optional;
+
 import javax.inject.Inject;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Iterables;
 
@@ -56,7 +57,7 @@ class CronSchedulerImpl implements CronScheduler {
       LOG.error(
           "Error reading job " + JobKeys.canonicalString(jobKey) + " cronExpression Quartz: " + e,
           e);
-      return Optional.absent();
+      return Optional.empty();
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java b/src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java
index 48c7bfd..694a4fc 100644
--- a/src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java
+++ b/src/main/java/org/apache/aurora/scheduler/discovery/FlaggedZooKeeperConfig.java
@@ -15,12 +15,12 @@ package org.apache.aurora.scheduler.discovery;
 
 import java.net.InetSocketAddress;
 import java.util.List;
+import java.util.Optional;
 
 import javax.annotation.Nullable;
 
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
-import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableList;
 
@@ -81,7 +81,7 @@ public final class FlaggedZooKeeperConfig {
   public static ZooKeeperConfig create(Options opts) {
     return new ZooKeeperConfig(
         opts.zkEndpoints,
-        Optional.fromNullable(opts.chrootPath),
+        Optional.ofNullable(opts.chrootPath),
         opts.inProcess,
         Amount.of(opts.sessionTimeout.getValue().intValue(), opts.sessionTimeout.getUnit()),
         Amount.of(opts.connectionTimeout.getValue().intValue(), opts.connectionTimeout.getUnit()),
@@ -90,7 +90,7 @@ public final class FlaggedZooKeeperConfig {
 
   private static Optional<Credentials> getCredentials(@Nullable String userAndPass) {
     if (userAndPass == null) {
-      return Optional.absent();
+      return Optional.empty();
     }
 
     List<String> parts = ImmutableList.copyOf(Splitter.on(":").split(userAndPass));

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java b/src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java
index 1a7e8cb..d3112dc 100644
--- a/src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java
+++ b/src/main/java/org/apache/aurora/scheduler/discovery/ZooKeeperConfig.java
@@ -14,8 +14,7 @@
 package org.apache.aurora.scheduler.discovery;
 
 import java.net.InetSocketAddress;
-
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 import org.apache.aurora.common.base.MorePreconditions;
 import org.apache.aurora.common.quantity.Amount;
@@ -50,11 +49,11 @@ public class ZooKeeperConfig {
   public static ZooKeeperConfig create(Iterable<InetSocketAddress> servers) {
     return new ZooKeeperConfig(
         servers,
-        Optional.absent(), // chrootPath
+        Optional.empty(), // chrootPath
         false,
         ZooKeeperUtils.DEFAULT_ZK_SESSION_TIMEOUT,
         ZooKeeperUtils.DEFAULT_ZK_CONNECTION_TIMEOUT,
-        Optional.absent()); // credentials
+        Optional.empty()); // credentials
   }
 
   private final Iterable<InetSocketAddress> servers;

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/events/PubsubEvent.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/events/PubsubEvent.java b/src/main/java/org/apache/aurora/scheduler/events/PubsubEvent.java
index 73fcdd0..1d19f67 100644
--- a/src/main/java/org/apache/aurora/scheduler/events/PubsubEvent.java
+++ b/src/main/java/org/apache/aurora/scheduler/events/PubsubEvent.java
@@ -14,10 +14,10 @@
 package org.apache.aurora.scheduler.events;
 
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
 
 import com.google.common.base.MoreObjects;
-import com.google.common.base.Optional;
 import com.google.gson.Gson;
 
 import org.apache.aurora.gen.ScheduleStatus;
@@ -98,7 +98,7 @@ public interface PubsubEvent {
      * @return A state change event.
      */
     public static TaskStateChange initialized(IScheduledTask task) {
-      return new TaskStateChange(task, Optional.absent());
+      return new TaskStateChange(task, Optional.empty());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/events/WebhookInfo.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/events/WebhookInfo.java b/src/main/java/org/apache/aurora/scheduler/events/WebhookInfo.java
index 44789d6..c89f7f3 100644
--- a/src/main/java/org/apache/aurora/scheduler/events/WebhookInfo.java
+++ b/src/main/java/org/apache/aurora/scheduler/events/WebhookInfo.java
@@ -19,12 +19,11 @@ import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
-
-import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -81,8 +80,8 @@ public class WebhookInfo {
   }
 
   private static final Predicate<List<String>> IS_ALL_WHITELISTED = statuses ->
-      !Optional.fromNullable(statuses).isPresent()
-          || Optional.fromNullable(statuses).get().stream().anyMatch(status -> "*".equals(status));
+      !Optional.ofNullable(statuses).isPresent()
+          || Optional.ofNullable(statuses).get().stream().anyMatch(status -> "*".equals(status));
 
   @JsonCreator
   public WebhookInfo(
@@ -94,8 +93,8 @@ public class WebhookInfo {
     this.headers = ImmutableMap.copyOf(headers);
     this.targetURI = new URI(requireNonNull(targetURL));
     this.connectTimeoutMsec = requireNonNull(timeout);
-    this.whitelistedStatuses = IS_ALL_WHITELISTED.apply(statuses) ? Optional.absent()
-        : Optional.fromNullable(statuses).transform(
+    this.whitelistedStatuses = IS_ALL_WHITELISTED.apply(statuses) ? Optional.empty()
+        : Optional.ofNullable(statuses).map(
             s -> ImmutableList.copyOf(s.stream()
                 .map(ScheduleStatus::valueOf)
                 .collect(Collectors.toList())));
@@ -171,7 +170,7 @@ public class WebhookInfo {
         .add("headers", headers.toString())
         .add("targetURI", targetURI.toString())
         .add("connectTimeoutMsec", connectTimeoutMsec)
-        .add("whitelistedStatuses", whitelistedStatuses.orNull())
+        .add("whitelistedStatuses", whitelistedStatuses.orElse(null))
         .toString();
   }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java b/src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java
index b0a9081..5ad1251 100644
--- a/src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/events/WebhookModule.java
@@ -16,11 +16,11 @@ package org.apache.aurora.scheduler.events;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.util.Optional;
 
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 import com.google.common.io.Files;
 import com.google.inject.AbstractModule;
@@ -60,8 +60,8 @@ public class WebhookModule extends AbstractModule {
   private final Optional<String> webhookConfig;
 
   public WebhookModule(Options options) {
-    this.webhookConfig = Optional.fromNullable(options.webhookConfigFile)
-        .transform(f -> {
+    this.webhookConfig = Optional.ofNullable(options.webhookConfigFile)
+        .map(f -> {
           try {
             return Files.asCharSource(options.webhookConfigFile, StandardCharsets.UTF_8).read();
           } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/filter/ConstraintMatcher.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/filter/ConstraintMatcher.java b/src/main/java/org/apache/aurora/scheduler/filter/ConstraintMatcher.java
index d4099c2..3194051 100644
--- a/src/main/java/org/apache/aurora/scheduler/filter/ConstraintMatcher.java
+++ b/src/main/java/org/apache/aurora/scheduler/filter/ConstraintMatcher.java
@@ -13,10 +13,10 @@
  */
 package org.apache.aurora.scheduler.filter;
 
+import java.util.Optional;
 import java.util.Set;
 
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
@@ -55,7 +55,7 @@ final class ConstraintMatcher {
         Iterables.filter(hostAttributes, new NameFilter(constraint.getName()));
     Optional<IAttribute> attribute;
     if (Iterables.isEmpty(sameNameAttributes)) {
-      attribute = Optional.absent();
+      attribute = Optional.empty();
     } else {
       Set<String> attributeValues = ImmutableSet.copyOf(
           Iterables.concat(Iterables.transform(sameNameAttributes, GET_VALUES)));
@@ -67,10 +67,10 @@ final class ConstraintMatcher {
     switch (taskConstraint.getSetField()) {
       case VALUE:
         boolean matches = AttributeFilter.matches(
-            attribute.transform(GET_VALUES).or(ImmutableSet.of()),
+            attribute.map(GET_VALUES).orElse(ImmutableSet.of()),
             taskConstraint.getValue());
         return matches
-            ? Optional.absent()
+            ? Optional.empty()
             : Optional.of(Veto.constraintMismatch(constraint.getName()));
 
       case LIMIT:
@@ -83,7 +83,7 @@ final class ConstraintMatcher {
             taskConstraint.getLimit().getLimit(),
             cachedjobState);
         return satisfied
-            ? Optional.absent()
+            ? Optional.empty()
             : Optional.of(Veto.unsatisfiedLimit(constraint.getName()));
 
       default:

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilter.java b/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilter.java
index 82a7a16..bd41590 100644
--- a/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilter.java
+++ b/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilter.java
@@ -15,11 +15,11 @@ package org.apache.aurora.scheduler.filter;
 
 import java.time.Instant;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.Set;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
-import com.google.common.base.Optional;
 
 import org.apache.aurora.scheduler.offers.HostOffer;
 import org.apache.aurora.scheduler.resources.ResourceBag;
@@ -256,7 +256,7 @@ public interface SchedulingFilter {
 
     @VisibleForTesting
     public UnusedResource(ResourceBag offer, IHostAttributes attributes) {
-      this(offer, attributes, Optional.absent());
+      this(offer, attributes, Optional.empty());
     }
 
     public UnusedResource(HostOffer offer, boolean revocable) {

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilterImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilterImpl.java b/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilterImpl.java
index 41a0764..e6e8e95 100644
--- a/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilterImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/filter/SchedulingFilterImpl.java
@@ -16,11 +16,12 @@ package org.apache.aurora.scheduler.filter;
 import java.time.Instant;
 import java.util.Comparator;
 import java.util.EnumSet;
+import java.util.Optional;
 import java.util.Set;
+
 import javax.inject.Inject;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Ordering;
@@ -117,13 +118,13 @@ public class SchedulingFilterImpl implements SchedulingFilter {
       }
     }
 
-    return Optional.absent();
+    return Optional.empty();
   }
 
   private Optional<Veto> getAuroraMaintenanceVeto(MaintenanceMode mode) {
     return VETO_MODES.contains(mode)
         ? Optional.of(Veto.maintenance(mode.toString().toLowerCase()))
-        : Optional.absent();
+        : Optional.empty();
   }
 
   private Optional<Veto> getMesosMaintenanceVeto(Optional<Instant> unavailabilityStart) {
@@ -135,7 +136,7 @@ public class SchedulingFilterImpl implements SchedulingFilter {
         return Optional.of(Veto.maintenance(DRAINING.toString().toLowerCase()));
       }
     }
-    return Optional.absent();
+    return Optional.empty();
   }
 
   private boolean isDedicated(IHostAttributes attributes) {
@@ -161,13 +162,13 @@ public class SchedulingFilterImpl implements SchedulingFilter {
     // 2. Host maintenance check.
     Optional<Veto> maintenanceVeto = getAuroraMaintenanceVeto(resource.getAttributes().getMode());
     if (maintenanceVeto.isPresent()) {
-      return maintenanceVeto.asSet();
+      return ImmutableSet.of(maintenanceVeto.get());
     }
 
     Optional<Veto> mesosMaintenanceVeto =
         getMesosMaintenanceVeto(resource.getUnavailabilityStart());
     if (mesosMaintenanceVeto.isPresent()) {
-      return mesosMaintenanceVeto.asSet();
+      return ImmutableSet.of(mesosMaintenanceVeto.get());
     }
 
     // 3. Value and limit constraint check.
@@ -177,7 +178,7 @@ public class SchedulingFilterImpl implements SchedulingFilter {
         resource.getAttributes().getAttributes());
 
     if (constraintVeto.isPresent()) {
-      return constraintVeto.asSet();
+      return ImmutableSet.of(constraintVeto.get());
     }
 
     // 4. Resource check (lowest score).

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java b/src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java
index 9a03140..905ec11 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/JettyServerModule.java
@@ -19,6 +19,7 @@ import java.net.UnknownHostException;
 import java.util.EnumSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
 
@@ -33,7 +34,6 @@ import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Supplier;
 import com.google.common.base.Suppliers;
@@ -155,7 +155,7 @@ public class JettyServerModule extends AbstractModule {
         .toInstance(Suppliers.ofInstance(true));
 
     final Optional<String> hostnameOverride =
-        Optional.fromNullable(options.jetty.hostnameOverride);
+        Optional.ofNullable(options.jetty.hostnameOverride);
     if (hostnameOverride.isPresent()) {
       try {
         InetAddress.getByName(hostnameOverride.get());
@@ -368,7 +368,7 @@ public class JettyServerModule extends AbstractModule {
     public HostAndPort getAddress() {
       Preconditions.checkState(state() == State.RUNNING);
       return HostAndPort.fromParts(
-          advertisedHostOverride.or(serverAddress.getHost()),
+          advertisedHostOverride.orElse(serverAddress.getHost()),
           serverAddress.getPort());
     }
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirect.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirect.java b/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirect.java
index 41bed3e..ebc0bc9 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirect.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirect.java
@@ -15,12 +15,12 @@ package org.apache.aurora.scheduler.http;
 
 import java.io.Closeable;
 import java.io.IOException;
+import java.util.Optional;
 
 import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.net.HostAndPort;
@@ -91,12 +91,12 @@ class LeaderRedirect implements Closeable {
     }
 
     LOG.warn("Leader service instance seems to be incomplete: " + leadingScheduler);
-    return Optional.absent();
+    return Optional.empty();
   }
 
   private Optional<HostAndPort> getLocalHttp() {
     HostAndPort localHttp = httpService.getAddress();
-    return (localHttp == null) ? Optional.absent()
+    return (localHttp == null) ? Optional.empty()
         : Optional.of(HostAndPort.fromParts(localHttp.getHost(), localHttp.getPort()));
   }
 
@@ -113,13 +113,13 @@ class LeaderRedirect implements Closeable {
 
     if (leaderHttp.isPresent()) {
       if (leaderHttp.equals(localHttp)) {
-        return Optional.absent();
+        return Optional.empty();
       } else {
         return leaderHttp;
       }
     } else {
       LOG.info("No leader found, not redirecting.");
-      return Optional.absent();
+      return Optional.empty();
     }
   }
 
@@ -165,9 +165,9 @@ class LeaderRedirect implements Closeable {
           .append(
               // If Jetty rewrote the path, we want to be sure to redirect to the original path
               // rather than the rewritten path to be sure it's a route the UI code recognizes.
-              Optional.fromNullable(
+              Optional.ofNullable(
                   req.getAttribute(JettyServerModule.ORIGINAL_PATH_ATTRIBUTE_NAME))
-                  .or(req.getRequestURI()));
+                  .orElse(req.getRequestURI()));
 
       String queryString = req.getQueryString();
       if (queryString != null) {
@@ -176,7 +176,7 @@ class LeaderRedirect implements Closeable {
 
       return Optional.of(redirect.toString());
     } else {
-      return Optional.absent();
+      return Optional.empty();
     }
   }
 
@@ -185,13 +185,13 @@ class LeaderRedirect implements Closeable {
     switch (hostSet.size()) {
       case 0:
         LOG.warn("No serviceGroupMonitor in host set, will not redirect despite not being leader.");
-        return Optional.absent();
+        return Optional.empty();
       case 1:
         LOG.debug("Found leader scheduler at {}", hostSet);
         return Optional.of(Iterables.getOnlyElement(hostSet));
       default:
         LOG.error("Multiple serviceGroupMonitor detected, will not redirect: {}", hostSet);
-        return Optional.absent();
+        return Optional.empty();
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirectFilter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirectFilter.java b/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirectFilter.java
index 8b8b305..a744d45 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirectFilter.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/LeaderRedirectFilter.java
@@ -15,6 +15,7 @@ package org.apache.aurora.scheduler.http;
 
 import java.io.IOException;
 import java.util.Objects;
+import java.util.Optional;
 
 import javax.inject.Inject;
 import javax.servlet.FilterChain;
@@ -24,7 +25,6 @@ import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.core.HttpHeaders;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.io.Resources;
 
 import org.slf4j.Logger;

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/Mname.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/Mname.java b/src/main/java/org/apache/aurora/scheduler/http/Mname.java
index c1ff654..b89b16d 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/Mname.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/Mname.java
@@ -16,6 +16,7 @@ package org.apache.aurora.scheduler.http;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.Set;
 
 import javax.inject.Inject;
@@ -32,7 +33,6 @@ import javax.ws.rs.core.UriBuilder;
 import javax.ws.rs.core.UriInfo;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 
@@ -139,7 +139,7 @@ public class Mname {
       @PathParam("instance") int instanceId,
       @Context UriInfo uriInfo) {
 
-    return get(role, env, job, instanceId, uriInfo, Optional.absent());
+    return get(role, env, job, instanceId, uriInfo, Optional.empty());
   }
 
   @PUT
@@ -151,7 +151,7 @@ public class Mname {
       @PathParam("instance") int instanceId,
       @Context UriInfo uriInfo) {
 
-    return get(role, env, job, instanceId, uriInfo, Optional.absent());
+    return get(role, env, job, instanceId, uriInfo, Optional.empty());
   }
 
   @POST
@@ -163,7 +163,7 @@ public class Mname {
       @PathParam("instance") int instanceId,
       @Context UriInfo uriInfo) {
 
-    return get(role, env, job, instanceId, uriInfo, Optional.absent());
+    return get(role, env, job, instanceId, uriInfo, Optional.empty());
   }
 
   @DELETE
@@ -175,7 +175,7 @@ public class Mname {
       @PathParam("instance") int instanceId,
       @Context UriInfo uriInfo) {
 
-    return get(role, env, job, instanceId, uriInfo, Optional.absent());
+    return get(role, env, job, instanceId, uriInfo, Optional.empty());
   }
 
   private Response get(
@@ -205,7 +205,7 @@ public class Mname {
     }
 
     UriBuilder redirect = UriBuilder
-        .fromPath(forwardRequest.or("/"))
+        .fromPath(forwardRequest.orElse("/"))
         .scheme("http")
         .host(assignedTask.getSlaveHost())
         .port(port.get());
@@ -227,7 +227,7 @@ public class Mname {
         return Optional.of(port);
       }
     }
-    return Optional.absent();
+    return Optional.empty();
   }
 
   private Response respond(Status status, String message) {

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/Quotas.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/Quotas.java b/src/main/java/org/apache/aurora/scheduler/http/Quotas.java
index 399203b..aa68c44 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/Quotas.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/Quotas.java
@@ -15,6 +15,7 @@ package org.apache.aurora.scheduler.http;
 
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 
 import javax.inject.Inject;
 import javax.ws.rs.GET;
@@ -25,7 +26,6 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/StructDump.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/StructDump.java b/src/main/java/org/apache/aurora/scheduler/http/StructDump.java
index 8826d25..1710e39 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/StructDump.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/StructDump.java
@@ -13,6 +13,8 @@
  */
 package org.apache.aurora.scheduler.http;
 
+import java.util.Optional;
+
 import javax.inject.Inject;
 import javax.ws.rs.GET;
 import javax.ws.rs.Path;
@@ -22,7 +24,6 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Response.Status;
 
-import com.google.common.base.Optional;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
@@ -77,7 +78,7 @@ public class StructDump extends JerseyTemplateServlet {
     return dumpEntity(
         "Task " + taskId,
         storeProvider ->
-            storeProvider.getTaskStore().fetchTask(taskId).transform(IScheduledTask::newBuilder));
+            storeProvider.getTaskStore().fetchTask(taskId).map(IScheduledTask::newBuilder));
   }
 
   /**
@@ -96,7 +97,7 @@ public class StructDump extends JerseyTemplateServlet {
     final IJobKey jobKey = JobKeys.from(role, environment, job);
     return dumpEntity("Cron job " + JobKeys.canonicalString(jobKey),
         storeProvider -> storeProvider.getCronJobStore().fetchJob(jobKey)
-            .transform(IJobConfiguration::newBuilder));
+            .map(IJobConfiguration::newBuilder));
   }
 
   private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetter.java b/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetter.java
index b2ca012..db98ec3 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetter.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetter.java
@@ -13,8 +13,9 @@
  */
 package org.apache.aurora.scheduler.http.api.security;
 
+import java.util.Optional;
+
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 
 import static java.util.Objects.requireNonNull;
 
@@ -67,7 +68,7 @@ interface FieldGetter<T, V> extends Function<T, Optional<V>> {
 
     @Override
     public Optional<T> apply(T input) {
-      return Optional.fromNullable(input);
+      return Optional.ofNullable(input);
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetters.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetters.java b/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetters.java
index a833672..03670ef 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetters.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/api/security/FieldGetters.java
@@ -13,7 +13,7 @@
  */
 package org.apache.aurora.scheduler.http.api.security;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 import org.apache.thrift.TBase;
 
@@ -42,7 +42,7 @@ final class FieldGetters {
         if (parentValue.isPresent()) {
           return child.apply(parentValue.get());
         } else {
-          return Optional.absent();
+          return Optional.empty();
         }
       }
     };

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java b/src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java
index fc4c3ec..42ae5dd 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/api/security/IniShiroRealmModule.java
@@ -13,12 +13,13 @@
  */
 package org.apache.aurora.scheduler.http.api.security;
 
+import java.util.Optional;
+
 import javax.inject.Singleton;
 
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
 
@@ -58,8 +59,8 @@ public class IniShiroRealmModule extends AbstractModule {
 
   public IniShiroRealmModule(CliOptions options) {
     this(
-        Optional.fromNullable(options.iniShiroRealm.shiroIniPath),
-        Optional.fromNullable(options.iniShiroRealm.shiroCredentialsMatcher));
+        Optional.ofNullable(options.iniShiroRealm.shiroIniPath),
+        Optional.ofNullable(options.iniShiroRealm.shiroCredentialsMatcher));
   }
 
   @VisibleForTesting

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java b/src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java
index 8da06a0..b662043 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/api/security/Kerberos5ShiroRealmModule.java
@@ -17,6 +17,7 @@ import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.security.PrivilegedAction;
+import java.util.Optional;
 
 import javax.inject.Singleton;
 import javax.security.auth.Subject;
@@ -27,7 +28,6 @@ import javax.security.auth.login.LoginException;
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.io.Files;
 import com.google.inject.AbstractModule;
 import com.google.inject.PrivateModule;
@@ -93,8 +93,8 @@ public class Kerberos5ShiroRealmModule extends AbstractModule {
 
   public Kerberos5ShiroRealmModule(CliOptions options) {
     this(
-        Optional.fromNullable(options.kerberos.serverKeytab),
-        Optional.fromNullable(options.kerberos.serverPrincipal),
+        Optional.ofNullable(options.kerberos.serverKeytab),
+        Optional.ofNullable(options.kerberos.serverPrincipal),
         GSSManager.getInstance(),
         options.kerberos.kerberosDebug);
   }

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java b/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java
index 203599e..d550cde 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroAuthorizingParamInterceptor.java
@@ -16,6 +16,7 @@ package org.apache.aurora.scheduler.http.api.security;
 import java.lang.reflect.Method;
 import java.lang.reflect.Parameter;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
@@ -24,7 +25,6 @@ import javax.inject.Provider;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
@@ -150,7 +150,9 @@ class ShiroAuthorizingParamInterceptor implements MethodInterceptor {
         }
 
         Iterable<Class<?>> searchOrder = ImmutableList.<Class<?>>builder()
-            .addAll(Optional.fromNullable(declaringClass.getSuperclass()).asSet())
+            .addAll(Optional.ofNullable(declaringClass.getSuperclass())
+                .map(ImmutableSet::of)
+                .orElse(ImmutableSet.of()))
             .addAll(ImmutableList.copyOf(declaringClass.getInterfaces()))
             .build();
 
@@ -177,7 +179,7 @@ class ShiroAuthorizingParamInterceptor implements MethodInterceptor {
           Class<?> parameterType = param.getType();
           @SuppressWarnings("unchecked")
           Optional<Function<Object, Optional<JobKey>>> jobKeyGetter =
-              Optional.fromNullable(
+              Optional.ofNullable(
                   (Function<Object, Optional<JobKey>>) FIELD_GETTERS_BY_TYPE.get(parameterType));
           if (!jobKeyGetter.isPresent()) {
             throw new UnsupportedOperationException(
@@ -226,7 +228,7 @@ class ShiroAuthorizingParamInterceptor implements MethodInterceptor {
             Iterable<JobKeyGetter> nonNullArgGetters =
                 Iterables.filter(getters, getter -> arguments[getter.index] != null);
             if (Iterables.isEmpty(nonNullArgGetters)) {
-              return Optional.absent();
+              return Optional.empty();
             } else {
               if (Iterables.size(nonNullArgGetters) > 1) {
                 throw new IllegalStateException(
@@ -280,7 +282,7 @@ class ShiroAuthorizingParamInterceptor implements MethodInterceptor {
     Optional<IJobKey> jobKey = authorizingParamGetters
         .getUnchecked(invocation.getMethod())
         .apply(invocation.getArguments())
-        .transform(IJobKey::build);
+        .map(IJobKey::build);
     if (jobKey.isPresent() && JobKeys.isValid(jobKey.get())) {
       Permission targetPermission = makeTargetPermission(method.getName(), jobKey.get());
       if (subject.isPermitted(targetPermission)) {

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroKerberosAuthenticationFilter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroKerberosAuthenticationFilter.java b/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroKerberosAuthenticationFilter.java
index 2b7621a..54b81ea 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroKerberosAuthenticationFilter.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/api/security/ShiroKerberosAuthenticationFilter.java
@@ -14,6 +14,7 @@
 package org.apache.aurora.scheduler.http.api.security;
 
 import java.io.IOException;
+import java.util.Optional;
 
 import javax.inject.Inject;
 import javax.inject.Provider;
@@ -23,8 +24,6 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.ws.rs.core.HttpHeaders;
 
-import com.google.common.base.Optional;
-
 import org.apache.aurora.scheduler.http.AbstractFilter;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.subject.Subject;
@@ -56,7 +55,7 @@ public class ShiroKerberosAuthenticationFilter extends AbstractFilter {
       FilterChain chain) throws IOException, ServletException {
 
     Optional<String> authorizationHeaderValue =
-        Optional.fromNullable(request.getHeader(HttpHeaders.AUTHORIZATION));
+        Optional.ofNullable(request.getHeader(HttpHeaders.AUTHORIZATION));
     if (authorizationHeaderValue.isPresent()) {
       LOG.debug("Authorization header is present");
       AuthorizeHeaderToken token;

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/http/api/security/ThriftFieldGetter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/http/api/security/ThriftFieldGetter.java b/src/main/java/org/apache/aurora/scheduler/http/api/security/ThriftFieldGetter.java
index 0b64d1a..4ccd633 100644
--- a/src/main/java/org/apache/aurora/scheduler/http/api/security/ThriftFieldGetter.java
+++ b/src/main/java/org/apache/aurora/scheduler/http/api/security/ThriftFieldGetter.java
@@ -13,7 +13,7 @@
  */
 package org.apache.aurora.scheduler.http.api.security;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 import org.apache.aurora.scheduler.http.api.security.FieldGetter.AbstractFieldGetter;
 import org.apache.thrift.TBase;
@@ -58,7 +58,7 @@ class ThriftFieldGetter<T extends TBase<T, F>, F extends TFieldIdEnum, V extends
     if (input.isSet(fieldId)) {
       return Optional.of((V) input.getFieldValue(fieldId));
     } else {
-      return Optional.absent();
+      return Optional.empty();
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLog.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLog.java b/src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLog.java
index bcdd459..d7b4645 100644
--- a/src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLog.java
+++ b/src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLog.java
@@ -18,6 +18,7 @@ import java.lang.annotation.Target;
 import java.util.Iterator;
 import java.util.List;
 import java.util.NoSuchElementException;
+import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicLong;
@@ -29,7 +30,6 @@ import javax.inject.Qualifier;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.UnmodifiableIterator;
@@ -197,7 +197,7 @@ public class MesosLog implements org.apache.aurora.scheduler.log.Log {
      * When {@code true}, indicates that the log has suffered a fatal error and no further
      * operations may be performed.
      */
-    @Nullable private Optional<WriterInterface> writer = Optional.absent();
+    @Nullable private Optional<WriterInterface> writer = Optional.empty();
 
     LogStream(
         LogInterface log,

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java b/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
index bcfb888..0310a60 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/CommandLineDriverSettingsModule.java
@@ -18,6 +18,7 @@ import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Optional;
 import java.util.Properties;
 
 import javax.inject.Singleton;
@@ -25,7 +26,6 @@ import javax.inject.Singleton;
 import com.beust.jcommander.Parameter;
 import com.beust.jcommander.Parameters;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.inject.AbstractModule;
 
@@ -121,11 +121,11 @@ public class CommandLineDriverSettingsModule extends AbstractModule {
   @Override
   protected void configure() {
     Optional<Protos.Credential> credentials = getCredentials(options);
-    Optional<String> principal = Optional.absent();
+    Optional<String> principal = Optional.empty();
     if (options.frameworkAnnouncePrincipal && credentials.isPresent()) {
       principal = Optional.of(credentials.get().getPrincipal());
     }
-    Optional<String> role = Optional.fromNullable(options.mesosRole);
+    Optional<String> role = Optional.ofNullable(options.mesosRole);
     DriverSettings settings = new DriverSettings(options.mesosMasterAddress, credentials);
     bind(DriverSettings.class).toInstance(settings);
 
@@ -149,7 +149,7 @@ public class CommandLineDriverSettingsModule extends AbstractModule {
 
   private static Optional<Protos.Credential> getCredentials(Options opts) {
     if (opts.frameworkAuthenticationFile == null) {
-      return Optional.absent();
+      return Optional.empty();
     } else {
       Properties properties;
       try {

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactory.java b/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactory.java
index 88a12b8..5916158 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactory.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactory.java
@@ -13,7 +13,7 @@
  */
 package org.apache.aurora.scheduler.mesos;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 import org.apache.mesos.Scheduler;
 import org.apache.mesos.SchedulerDriver;

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactoryImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactoryImpl.java b/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactoryImpl.java
index 2fc37e4..d56d77a 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactoryImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/DriverFactoryImpl.java
@@ -13,7 +13,7 @@
  */
 package org.apache.aurora.scheduler.mesos;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 import org.apache.mesos.MesosSchedulerDriver;
 import org.apache.mesos.Protos.Credential;
@@ -38,7 +38,7 @@ class DriverFactoryImpl implements DriverFactory {
       String master) {
 
     FrameworkInfo convertedFrameworkInfo = convert(frameworkInfo);
-    Optional<Credential> convertedCredentials = credentials.transform(ProtosConversion::convert);
+    Optional<Credential> convertedCredentials = credentials.map(ProtosConversion::convert);
 
     if (credentials.isPresent()) {
       return new MesosSchedulerDriver(

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/mesos/DriverSettings.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/DriverSettings.java b/src/main/java/org/apache/aurora/scheduler/mesos/DriverSettings.java
index 39c0144..ba9e51a 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/DriverSettings.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/DriverSettings.java
@@ -13,8 +13,9 @@
  */
 package org.apache.aurora.scheduler.mesos;
 
+import java.util.Optional;
+
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 
 import org.apache.mesos.v1.Protos;
 

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java b/src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java
index ec07279..1cf6582 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/LibMesosLoadingModule.java
@@ -39,11 +39,11 @@ public class LibMesosLoadingModule extends AbstractModule {
         break;
       case V0_DRIVER:
         bind(VersionedDriverFactory.class).toInstance((scheduler, frameworkInfo, master, creds)
-            -> new V0Mesos(scheduler, frameworkInfo, master, creds.orNull()));
+            -> new V0Mesos(scheduler, frameworkInfo, master, creds.orElse(null)));
         break;
       case V1_DRIVER:
         bind(VersionedDriverFactory.class).toInstance((scheduler, frameworkInfo, master, creds)
-            -> new V1Mesos(scheduler, master, creds.orNull()));
+            -> new V1Mesos(scheduler, master, creds.orElse(null)));
         break;
       default:
         checkState(false, "Unknown driver kind");

http://git-wip-us.apache.org/repos/asf/aurora/blob/6fd765bc/src/main/java/org/apache/aurora/scheduler/mesos/MesosCallbackHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/aurora/scheduler/mesos/MesosCallbackHandler.java b/src/main/java/org/apache/aurora/scheduler/mesos/MesosCallbackHandler.java
index c61af2b..3b4df55 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/MesosCallbackHandler.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/MesosCallbackHandler.java
@@ -16,14 +16,15 @@ package org.apache.aurora.scheduler.mesos;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.Executor;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
+
 import javax.inject.Inject;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 
 import org.apache.aurora.GuiceUtils.AllowUnchecked;
 import org.apache.aurora.common.application.Lifecycle;
@@ -322,9 +323,9 @@ public interface MesosCallbackHandler {
       eventSink.post(new PubsubEvent.TaskStatusReceived(
           status.getState(),
           // Source and Reason are enums. They cannot be null so we we need to use `hasXXX`.
-          status.hasSource() ? Optional.of(status.getSource()) : Optional.absent(),
-          status.hasReason() ? Optional.of(status.getReason()) : Optional.absent(),
-          Optional.fromNullable(status.getTimestamp()).transform(SECONDS_TO_MICROS)));
+          status.hasSource() ? Optional.of(status.getSource()) : Optional.empty(),
+          status.hasReason() ? Optional.of(status.getReason()) : Optional.empty(),
+          Optional.ofNullable(status.getTimestamp()).map(SECONDS_TO_MICROS)));
 
       try {
         // The status handler is responsible for acknowledging the update.