Switch from Guava Optionals to Java 8 Optionals

This was a surprisingly involved change. Some of the difficulties included
java.util.Optional purposely not being Serializable (so I had to move a
few Optionals in mapreduce classes to @Nullable) and having to add the Truth
Java8 extension library for assertion support.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=171863777
This commit is contained in:
mcilwain 2017-10-11 13:09:26 -07:00 committed by jianglai
parent 184b2b56ac
commit c0f8da0c6e
581 changed files with 1325 additions and 932 deletions

View file

@ -19,7 +19,6 @@ import static google.registry.request.Action.Method.POST;
import static java.util.Arrays.asList;
import static javax.servlet.http.HttpServletResponse.SC_OK;
import com.google.common.base.Optional;
import google.registry.config.RegistryConfig.Config;
import google.registry.groups.GroupsConnection;
import google.registry.groups.GroupsConnection.Role;
@ -36,6 +35,7 @@ import google.registry.util.FormattingLogger;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;
import java.util.Optional;
import javax.annotation.Nullable;
import javax.inject.Inject;
@ -83,13 +83,13 @@ public class CreateGroupsAction implements Runnable {
// that type.
groupsConnection.createGroup(groupKey);
groupsConnection.addMemberToGroup(parentGroup, groupKey, Role.MEMBER);
return Optional.<Exception>absent();
return Optional.<Exception>empty();
} catch (Exception e) {
return Optional.of(e);
}
});
// Return the correct server response based on the results of the group creations.
if (Optional.presentInstances(results).iterator().hasNext()) {
if (results.stream().filter(Optional::isPresent).count() > 0) {
StringWriter responseString = new StringWriter();
PrintWriter responseWriter = new PrintWriter(responseString);
for (int i = 0; i < results.size(); i++) {

View file

@ -22,7 +22,6 @@ import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.EntityNotFoundException;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;
import com.google.common.base.Optional;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import com.googlecode.objectify.VoidWork;
@ -33,6 +32,7 @@ import google.registry.request.Parameter;
import google.registry.request.Response;
import google.registry.request.auth.Auth;
import google.registry.util.FormattingLogger;
import java.util.Optional;
import javax.inject.Inject;
/**
@ -105,16 +105,16 @@ public class DeleteEntityAction implements Runnable {
private Optional<Object> loadOfyEntity(Key rawKey) {
EntityMetadata<Object> metadata = ofy().factory().getMetadata(rawKey.getKind());
return Optional.fromNullable(metadata == null ? null : ofy().load().key(create(rawKey)).now());
return Optional.ofNullable(metadata == null ? null : ofy().load().key(create(rawKey)).now());
}
private Optional<Entity> loadRawEntity(Key rawKey) {
try {
return Optional.fromNullable(getDatastoreService().get(rawKey));
return Optional.ofNullable(getDatastoreService().get(rawKey));
} catch (EntityNotFoundException e) {
logger.warningfmt(e, "Could not load entity from Datastore service with key %s",
rawKey.toString());
return Optional.absent();
return Optional.empty();
}
}
}

View file

@ -21,7 +21,6 @@ import static com.google.common.collect.ImmutableSet.toImmutableSet;
import com.google.common.base.Function;
import com.google.common.base.Functions;
import com.google.common.base.Joiner;
import com.google.common.base.Optional;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableBiMap;
@ -41,6 +40,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;
import javax.inject.Inject;

View file

@ -19,12 +19,12 @@ import static google.registry.request.RequestParameters.extractBooleanParameter;
import static google.registry.request.RequestParameters.extractOptionalParameter;
import static google.registry.request.RequestParameters.extractRequiredParameter;
import com.google.common.base.Optional;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableSet;
import dagger.Module;
import dagger.Provides;
import google.registry.request.Parameter;
import java.util.Optional;
import javax.servlet.http.HttpServletRequest;
/**
@ -36,7 +36,7 @@ public class ToolsServerModule {
@Provides
@Parameter("clientId")
static Optional<String> provideClientId(HttpServletRequest req) {
return Optional.fromNullable(emptyToNull(req.getParameter(CreateGroupsAction.CLIENT_ID_PARAM)));
return Optional.ofNullable(emptyToNull(req.getParameter(CreateGroupsAction.CLIENT_ID_PARAM)));
}
@Provides
@ -49,7 +49,7 @@ public class ToolsServerModule {
@Parameter("fullFieldNames")
static Optional<Boolean> provideFullFieldNames(HttpServletRequest req) {
String s = emptyToNull(req.getParameter(ListObjectsAction.FULL_FIELD_NAMES_PARAM));
return (s == null) ? Optional.<Boolean>absent() : Optional.of(Boolean.parseBoolean(s));
return (s == null) ? Optional.<Boolean>empty() : Optional.of(Boolean.parseBoolean(s));
}
@Provides
@ -74,7 +74,7 @@ public class ToolsServerModule {
@Parameter("printHeaderRow")
static Optional<Boolean> providePrintHeaderRow(HttpServletRequest req) {
String s = emptyToNull(req.getParameter(ListObjectsAction.PRINT_HEADER_ROW_PARAM));
return (s == null) ? Optional.<Boolean>absent() : Optional.of(Boolean.parseBoolean(s));
return (s == null) ? Optional.<Boolean>empty() : Optional.of(Boolean.parseBoolean(s));
}
@Provides

View file

@ -18,13 +18,13 @@ import static com.google.common.base.Preconditions.checkArgument;
import static google.registry.model.registry.label.PremiumListUtils.savePremiumListAndEntries;
import static google.registry.request.Action.Method.POST;
import com.google.common.base.Optional;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableMap;
import google.registry.model.registry.label.PremiumList;
import google.registry.request.Action;
import google.registry.request.auth.Auth;
import java.util.List;
import java.util.Optional;
import javax.inject.Inject;
/**

View file

@ -25,7 +25,6 @@ import static google.registry.util.DomainNameUtils.ACE_PREFIX;
import com.google.common.base.Ascii;
import com.google.common.base.Joiner;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.FluentIterable;
@ -51,6 +50,7 @@ import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Stream;
import javax.inject.Inject;
@ -205,7 +205,7 @@ public class VerifyOteAction implements Runnable, JsonAction {
this.requirement = requirement;
this.typeFilter = typeFilter;
if (eppInputFilter == null) {
this.eppInputFilter = Optional.<Predicate<EppInput>>absent();
this.eppInputFilter = Optional.<Predicate<EppInput>>empty();
} else {
this.eppInputFilter = Optional.of(eppInputFilter);
}
@ -260,7 +260,7 @@ public class VerifyOteAction implements Runnable, JsonAction {
// xmlBytes can be null on contact create and update for safe-harbor compliance.
final Optional<EppInput> eppInput =
(xmlBytes == null)
? Optional.<EppInput>absent()
? Optional.<EppInput>empty()
: Optional.of(unmarshal(EppInput.class, xmlBytes));
if (!statCounts.addAll(
EnumSet.allOf(StatType.class)