diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2024-04-11 09:12:53 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2024-04-11 09:12:53 +0200 |
commit | 42a9f71995b99044652bddf52ad869a824d98ddc (patch) | |
tree | 8766842d727e4a766c39d19dab6eb756ed06f829 | |
parent | ed76cd45f86c8af9431860a9ac7c40fc59fb9e3c (diff) |
Unify on Map.of
53 files changed, 121 insertions, 251 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java index e0ddf16ab5f..7991e1c34b6 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/AnnotatedClusterState.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.clustercontroller.core; import com.yahoo.vdslib.state.ClusterState; import com.yahoo.vdslib.state.Node; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -47,7 +46,7 @@ public class AnnotatedClusterState implements Cloneable { Map<Node, NodeStateReason> nodeStateReasons) { this.clusterState = Objects.requireNonNull(clusterState, "Cluster state cannot be null"); this.clusterStateReason = Objects.requireNonNull(clusterStateReason, "Cluster state reason cannot be null"); - this.nodeStateReasons = Objects.requireNonNull(nodeStateReasons, "Node state reasons cannot be null"); + this.nodeStateReasons = Map.copyOf(Objects.requireNonNull(nodeStateReasons, "Node state reasons cannot be null")); } public static AnnotatedClusterState emptyState() { @@ -59,7 +58,7 @@ public class AnnotatedClusterState implements Cloneable { } static Map<Node, NodeStateReason> emptyNodeStateReasons() { - return Collections.emptyMap(); + return Map.of(); } public ClusterState getClusterState() { @@ -67,7 +66,7 @@ public class AnnotatedClusterState implements Cloneable { } public Map<Node, NodeStateReason> getNodeStateReasons() { - return Collections.unmodifiableMap(nodeStateReasons); + return nodeStateReasons; } public Optional<ClusterStateReason> getClusterStateReason() { diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java index 53a39968720..d99d46c11ce 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundle.java @@ -4,7 +4,6 @@ package com.yahoo.vespa.clustercontroller.core; import com.yahoo.vdslib.state.ClusterState; import java.util.Arrays; -import java.util.Collections; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -56,7 +55,7 @@ public class ClusterStateBundle { public FeedBlock(boolean blockFeedInCluster, String description) { this.blockFeedInCluster = blockFeedInCluster; this.description = description; - this.concreteExhaustions = Collections.emptySet(); + this.concreteExhaustions = Set.of(); } public FeedBlock(boolean blockFeedInCluster, String description, @@ -165,14 +164,10 @@ public class ClusterStateBundle { return ClusterStateBundle.ofBaselineOnly(baselineState, feedBlock, deferredActivation); } Map<String, AnnotatedClusterState> derived; - if (explicitDerivedStates != null) { - derived = explicitDerivedStates; - } else { - derived = bucketSpaces.stream() - .collect(Collectors.toMap( - Function.identity(), - s -> stateDeriver.derivedFrom(baselineState, s))); - } + derived = Objects.requireNonNullElseGet(explicitDerivedStates, () -> bucketSpaces.stream() + .collect(Collectors.toUnmodifiableMap( + Function.identity(), + s -> stateDeriver.derivedFrom(baselineState, s)))); return new ClusterStateBundle(baselineState, derived, feedBlock, deferredActivation); } } @@ -186,7 +181,7 @@ public class ClusterStateBundle { FeedBlock feedBlock, boolean deferredActivation) { this.baselineState = baselineState; - this.derivedBucketSpaceStates = Collections.unmodifiableMap(derivedBucketSpaceStates); + this.derivedBucketSpaceStates = Map.copyOf(derivedBucketSpaceStates); this.feedBlock = feedBlock; this.deferredActivation = deferredActivation; } @@ -209,11 +204,11 @@ public class ClusterStateBundle { public static ClusterStateBundle ofBaselineOnly(AnnotatedClusterState baselineState, FeedBlock feedBlock, boolean deferredActivation) { - return new ClusterStateBundle(baselineState, Collections.emptyMap(), feedBlock, deferredActivation); + return new ClusterStateBundle(baselineState, Map.of(), feedBlock, deferredActivation); } public static ClusterStateBundle ofBaselineOnly(AnnotatedClusterState baselineState) { - return new ClusterStateBundle(baselineState, Collections.emptyMap()); + return new ClusterStateBundle(baselineState, Map.of()); } public static ClusterStateBundle empty() { @@ -238,7 +233,7 @@ public class ClusterStateBundle { AnnotatedClusterState clonedBaseline = baselineState.cloneWithClusterState( mapper.apply(baselineState.getClusterState().clone())); Map<String, AnnotatedClusterState> clonedDerived = derivedBucketSpaceStates.entrySet().stream() - .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue().cloneWithClusterState( + .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().cloneWithClusterState( mapper.apply(e.getValue().getClusterState().clone())))); return new ClusterStateBundle(clonedBaseline, clonedDerived, feedBlock, deferredActivation); } diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java index a0efaa70b58..44b2c8833db 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/FleetControllerOptions.java @@ -10,7 +10,6 @@ import com.yahoo.vespa.clustercontroller.core.database.ZooKeeperDatabaseFactory; import java.time.Duration; import java.util.Collection; -import java.util.Collections; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -433,7 +432,7 @@ public class FleetControllerOptions { private double minMergeCompletionRatio = 1.0; private int maxDivergentNodesPrintedInTaskErrorMessages = 10; private boolean clusterFeedBlockEnabled = false; - private Map<String, Double> clusterFeedBlockLimit = Collections.emptyMap(); + private Map<String, Double> clusterFeedBlockLimit = Map.of(); private double clusterFeedBlockNoiseLevel = 0.01; private int maxNumberOfGroupsAllowedToBeDown = 1; private Function<FleetControllerContext, DatabaseFactory> dbFactoryFn = ZooKeeperDatabaseFactory::new; diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java index 12db5c27375..3a6b9a635fa 100644 --- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java +++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/rpc/SlimeClusterStateBundleCodec.java @@ -41,11 +41,10 @@ public class SlimeClusterStateBundleCodec implements ClusterStateBundleCodec, En // TODO add another function that is not toString for this..! states.setString("baseline", stateBundle.getBaselineClusterState().toString()); Cursor spaces = states.setObject("spaces"); - stateBundle.getDerivedBucketSpaceStates().entrySet() - .forEach(entry -> spaces.setString(entry.getKey(), entry.getValue().toString())); + stateBundle.getDerivedBucketSpaceStates().forEach((key, value) -> spaces.setString(key, value.toString())); // Only bother to encode feed block state if cluster is actually blocked - if (stateBundle.getFeedBlock().map(fb -> fb.blockFeedInCluster()).orElse(false)) { + if (stateBundle.getFeedBlock().map(ClusterStateBundle.FeedBlock::blockFeedInCluster).orElse(false)) { Cursor feedBlock = root.setObject("feed-block"); feedBlock.setBool("block-feed-in-cluster", true); feedBlock.setString("description", stateBundle.getFeedBlock().get().getDescription()); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java index 7c39135291c..8280706bcd2 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ClusterStateBundleUtil.java @@ -14,13 +14,13 @@ public class ClusterStateBundleUtil { public static ClusterStateBundle.Builder makeBundleBuilder(String baselineState, StateMapping... bucketSpaceStates) { return ClusterStateBundle.builder(AnnotatedClusterState.withoutAnnotations(ClusterState.stateFromString(baselineState))) - .explicitDerivedStates(Stream.of(bucketSpaceStates).collect(Collectors.toMap(sm -> sm.bucketSpace, + .explicitDerivedStates(Stream.of(bucketSpaceStates).collect(Collectors.toUnmodifiableMap(sm -> sm.bucketSpace, sm -> AnnotatedClusterState.withoutAnnotations(sm.state)))); } public static ClusterStateBundle makeBundle(String baselineState, StateMapping... bucketSpaceStates) { return ClusterStateBundle.of(AnnotatedClusterState.withoutAnnotations(ClusterState.stateFromString(baselineState)), - Stream.of(bucketSpaceStates).collect(Collectors.toMap(sm -> sm.bucketSpace, + Stream.of(bucketSpaceStates).collect(Collectors.toUnmodifiableMap(sm -> sm.bucketSpace, sm -> AnnotatedClusterState.withoutAnnotations(sm.state)))); } diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java index 175b7de8f4f..8048e77b05c 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ContentClusterHtmlRendererTest.java @@ -11,7 +11,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.Collections; import java.util.Map; import java.util.TreeMap; @@ -53,7 +52,7 @@ public class ContentClusterHtmlRendererTest { statsAggregator, 1.0, 10, - Collections.emptyMap(), + Map.of(), eventLog, "pathPrefix", "name"); diff --git a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java index b4246806079..168fe6521d5 100644 --- a/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java +++ b/clustercontroller-core/src/test/java/com/yahoo/vespa/clustercontroller/core/ResourceUsageStatsTest.java @@ -4,7 +4,7 @@ package com.yahoo.vespa.clustercontroller.core; import org.junit.jupiter.api.Test; import java.util.Collection; -import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.Optional; @@ -46,20 +46,20 @@ public class ResourceUsageStatsTest { @Test void nodes_above_limit_is_zero_without_feed_block_status() { - var stats = ResourceUsageStats.calculateFrom(Collections.emptyList(), Collections.emptyMap(), Optional.empty()); + var stats = ResourceUsageStats.calculateFrom(List.of(), Map.of(), Optional.empty()); assertEquals(0, stats.getNodesAboveLimit()); } @Test void nodes_above_limit_is_equal_to_node_resource_exhaustions() { - var stats = ResourceUsageStats.calculateFrom(Collections.emptyList(), Collections.emptyMap(), + var stats = ResourceUsageStats.calculateFrom(List.of(), Map.of(), createFeedBlock(exhaustion(1, "disk"), exhaustion(2, "memory"))); assertEquals(2, stats.getNodesAboveLimit()); } @Test void nodes_above_limit_counts_each_node_only_once() { - var stats = ResourceUsageStats.calculateFrom(Collections.emptyList(), Collections.emptyMap(), + var stats = ResourceUsageStats.calculateFrom(List.of(), Map.of(), createFeedBlock(exhaustion(1, "disk"), exhaustion(1, "memory"))); assertEquals(1, stats.getNodesAboveLimit()); } diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java index 0f89608f9bd..deef16cfe8c 100644 --- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java +++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java @@ -14,7 +14,6 @@ import java.io.File; import java.io.IOException; import java.io.Reader; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -213,11 +212,11 @@ public interface ApplicationPackage { } default Map<Version, FileRegistry> getFileRegistries() { - return Collections.emptyMap(); + return Map.of(); } default Map<String, String> legacyOverrides() { - return Collections.emptyMap(); + return Map.of(); } /** diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/Notifications.java b/config-model-api/src/main/java/com/yahoo/config/application/api/Notifications.java index 9eef386d7d0..370dfbff2b8 100644 --- a/config-model-api/src/main/java/com/yahoo/config/application/api/Notifications.java +++ b/config-model-api/src/main/java/com/yahoo/config/application/api/Notifications.java @@ -5,7 +5,6 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; @@ -25,7 +24,7 @@ import static java.util.Collections.emptyList; */ public class Notifications { - private static final Notifications none = new Notifications(Collections.emptyMap(), Collections.emptyMap()); + private static final Notifications none = new Notifications(Map.of(), Map.of()); public static Notifications none() { return none; } private final Map<When, List<String>> emailAddresses; diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java b/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java index 3424dad4ee5..f6bc8c34aa6 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/SuperModel.java @@ -6,7 +6,6 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.TenantName; import java.util.ArrayList; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; @@ -23,7 +22,7 @@ public class SuperModel { private final boolean complete; public SuperModel() { - this(Collections.emptyMap(), false); + this(Map.of(), false); } public SuperModel(Map<ApplicationId, ApplicationInfo> models, boolean complete) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java b/configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java index 51918b4902a..bfad5af504c 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/StaticConfigDefinitionRepo.java @@ -6,7 +6,6 @@ import com.yahoo.config.model.api.ConfigDefinitionRepo; import com.yahoo.vespa.config.ConfigDefinitionKey; import com.yahoo.vespa.config.buildergen.ConfigDefinition; -import java.util.Collections; import java.util.Map; /** @@ -24,7 +23,7 @@ public class StaticConfigDefinitionRepo implements ConfigDefinitionRepo { this.repo = new ConfigDefinitionRepo() { @Override public Map<ConfigDefinitionKey, ConfigDefinition> getConfigDefinitions() { - return Collections.emptyMap(); + return Map.of(); } @Override diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java b/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java index 3de35a20008..57ecd175435 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/application/FileDistributionStatus.java @@ -16,7 +16,6 @@ import com.yahoo.vespa.config.server.http.JSONResponse; import java.time.Duration; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -75,7 +74,7 @@ public class FileDistributionStatus extends AbstractComponent { if (request.isError()) { return new HostStatus(hostname, Status.UNKNOWN, - Collections.emptyMap(), + Map.of(), "error: " + request.errorMessage() + "(" + request.errorCode() + ")"); } else { Map<String, Double> fileReferenceStatuses = new HashMap<>(); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java index b0ecedd4853..6d671377e63 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/rpc/RpcServer.java @@ -48,7 +48,6 @@ import com.yahoo.vespa.filedistribution.FileReferenceDownload; import java.nio.ByteBuffer; import java.time.Duration; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -131,7 +130,7 @@ public class RpcServer implements Runnable, ConfigActivationListener, TenantList this.superModelRequestHandler = superModelRequestHandler; metricUpdaterFactory = metrics; supervisor.setMaxOutputBufferSize(config.maxoutputbuffersize()); - this.metrics = metrics.getOrCreateMetricUpdater(Collections.emptyMap()); + this.metrics = metrics.getOrCreateMetricUpdater(Map.of()); BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(config.maxgetconfigclients()); int rpcWorkerThreads = (config.numRpcThreads() == 0) ? threadsToUse() : config.numRpcThreads(); executorService = new ThreadPoolExecutor(rpcWorkerThreads, rpcWorkerThreads, diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java index 8c4445f897c..f9f477c9693 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/TenantRepository.java @@ -194,7 +194,7 @@ public class TenantRepository { this.configserverConfig = configserverConfig; this.curator = curator; this.metrics = metrics; - metricUpdater = metrics.getOrCreateMetricUpdater(Collections.emptyMap()); + metricUpdater = metrics.getOrCreateMetricUpdater(Map.of()); this.zkCacheExecutor = zkCacheExecutor; this.zkApplicationWatcherExecutor = zkApplicationWatcherExecutor; this.zkSessionWatcherExecutor = zkSessionWatcherExecutor; @@ -312,7 +312,7 @@ public class TenantRepository { } } - if (failed.size() > 0) + if (!failed.isEmpty()) throw new RuntimeException("Could not create all tenants when bootstrapping, failed to create: " + failed); metricUpdater.setTenants(tenants.size()); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java index b8c9a2f8fb8..4fb514bde17 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/http/v2/SessionCreateHandlerTest.java @@ -30,7 +30,6 @@ import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -93,7 +92,7 @@ public class SessionCreateHandlerTest extends SessionHandlerTest { @Ignore @Test public void require_that_from_parameter_cannot_be_set_if_data_in_request() throws IOException { - HttpRequest request = post(Collections.singletonMap("from", "active")); + HttpRequest request = post(Map.of("from", "active")); HttpResponse response = createHandler().handle(request); assertHttpStatusCodeErrorCodeAndMessage(response, BAD_REQUEST, HttpErrorResponse.ErrorCode.BAD_REQUEST, "Parameter 'from' is illegal for POST"); } @@ -114,14 +113,14 @@ public class SessionCreateHandlerTest extends SessionHandlerTest { private void assertIllegalFromParameter(String fromValue) throws IOException { File outFile = CompressedApplicationInputStreamTest.createTarFile(temporaryFolder.getRoot().toPath()); - HttpRequest request = post(outFile, postHeaders, Collections.singletonMap("from", fromValue)); + HttpRequest request = post(outFile, postHeaders, Map.of("from", fromValue)); assertHttpStatusCodeErrorCodeAndMessage(createHandler().handle(request), BAD_REQUEST, HttpErrorResponse.ErrorCode.BAD_REQUEST, "Parameter 'from' has illegal value '" + fromValue + "'"); } @Test public void require_that_prepare_url_is_returned_on_success() throws IOException { File outFile = CompressedApplicationInputStreamTest.createTarFile(temporaryFolder.getRoot().toPath()); - Map<String, String> parameters = Collections.singletonMap("name", "foo"); + Map<String, String> parameters = Map.of("name", "foo"); HttpResponse response = createHandler().handle(post(outFile, postHeaders, parameters)); assertNotNull(response); assertEquals(OK, response.getStatus()); @@ -160,7 +159,7 @@ public class SessionCreateHandlerTest extends SessionHandlerTest { @Test public void require_that_application_urls_can_be_given_as_from_parameter() throws Exception { ApplicationId applicationId = ApplicationId.from(tenant.value(), "foo", "quux"); - HttpRequest request = post(Collections.singletonMap( + HttpRequest request = post(Map.of( "from", "http://myhost:40555/application/v2/tenant/" + tenant + "/application/foo/environment/test/region/baz/instance/quux")); assertEquals(applicationId, SessionCreateHandler.getFromApplicationId(request)); @@ -180,7 +179,7 @@ public class SessionCreateHandlerTest extends SessionHandlerTest { public void require_that_content_type_is_parsed_correctly() throws FileNotFoundException { HttpRequest request = post(new ByteArrayInputStream("foo".getBytes(StandardCharsets.UTF_8)), Map.of("Content-Type", "multipart/form-data; charset=ISO-8859-1; boundary=g5gJAzUWl_t6"), - Collections.emptyMap()); + Map.of()); // Valid header should validate ok SessionCreateHandler.validateDataAndHeader(request, List.of(ContentType.MULTIPART_FORM_DATA.getMimeType())); diff --git a/container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java b/container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java index da5b040e296..29a45c10af3 100644 --- a/container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java +++ b/container-core/src/main/java/com/yahoo/container/bundle/MockBundle.java @@ -157,7 +157,7 @@ public class MockBundle implements Bundle, BundleWiring { @Override public Map<X509Certificate, List<X509Certificate>> getSignerCertificates(int signersType) { - return Collections.emptyMap(); + return Map.of(); } @SuppressWarnings("unchecked") diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java index 1c325654f2e..71449d6edae 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/HttpRequest.java @@ -412,7 +412,7 @@ public class HttpRequest { Map<String, String> mask; Map<String, String> view; - mask = Objects.requireNonNullElse(parameterMask, Collections.emptyMap()); + mask = Objects.requireNonNullElse(parameterMask, Map.of()); view = new HashMap<>(parameters.size() + mask.size()); for (Map.Entry<String, List<String>> parameter : parameters.entrySet()) { if (existsAsOriginalParameter(parameter.getValue())) { diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java index 4cb19653848..6d6635ecc94 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/state/StateMetricContext.java @@ -3,10 +3,11 @@ package com.yahoo.container.jdisc.state; import com.yahoo.jdisc.Metric; -import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.Objects; + +import static java.util.stream.Collectors.toUnmodifiableMap; /** * A context implementation whose identity is the key and values such that this can be used as @@ -41,16 +42,10 @@ public final class StateMetricContext implements MetricDimensions, Metric.Contex } public static StateMetricContext newInstance(Map<String, ?> properties) { - Map<String, String> data; - if (properties != null) { - data = new HashMap<>(properties.size()); - for (Map.Entry<String, ?> entry : properties.entrySet()) { - data.put(entry.getKey(), entry.getValue() != null ? entry.getValue().toString() : null); - } - data = Collections.unmodifiableMap(data); - } else { - data = Collections.emptyMap(); - } + Map<String, String> data = (properties != null) + ? properties.entrySet().stream().collect( + toUnmodifiableMap(Map.Entry::getKey, e -> Objects.requireNonNullElse(e.getValue(), "").toString())) + : Map.of(); return new StateMetricContext(data); } diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java index b43281c524a..7e6b9b822ac 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/FormPostRequestHandler.java @@ -20,7 +20,6 @@ import java.nio.charset.Charset; import java.nio.charset.IllegalCharsetNameException; import java.nio.charset.StandardCharsets; import java.nio.charset.UnsupportedCharsetException; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -134,7 +133,7 @@ class FormPostRequestHandler extends AbstractRequestHandler implements ContentCh */ private static Map<String, List<String>> parseFormParameters(String formContent) { if (formContent.isEmpty()) { - return Collections.emptyMap(); + return Map.of(); } Map<String, List<String>> parameterMap = new HashMap<>(); diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java index aacc43d725b..e99f98cb842 100644 --- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java @@ -21,9 +21,9 @@ import com.yahoo.vespa.config.ConfigKey; import org.junit.jupiter.api.Test; import java.lang.annotation.Annotation; -import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.concurrent.Executor; import java.util.concurrent.Executors; @@ -480,7 +480,7 @@ public class ComponentGraphTest { ComponentGraph graph = new ComponentGraph(); graph.add(mockComponentNodeWithId(ExecutorProvider.class, "dummyId")); graph.complete(); - graph.setAvailableConfigs(Collections.emptyMap()); + graph.setAvailableConfigs(Map.of()); return graph; } @@ -607,7 +607,7 @@ public class ComponentGraphTest { } public static class ExecutorProvider implements Provider<Executor> { - private Executor executor = Executors.newSingleThreadExecutor(); + private final Executor executor = Executors.newSingleThreadExecutor(); public Executor get() { return executor; diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java index 59c939863dd..17ead389c48 100644 --- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java @@ -16,7 +16,7 @@ import com.yahoo.container.di.componentgraph.core.ComponentGraphTest.SimpleCompo import com.yahoo.vespa.config.ConfigKey; import org.junit.jupiter.api.Test; -import java.util.Collections; +import java.util.Map; import java.util.concurrent.Executor; import java.util.function.Function; import java.util.function.Supplier; @@ -68,12 +68,12 @@ public class ReuseComponentsTest { Class<ComponentTakingConfig> componentClass = ComponentTakingConfig.class; ComponentGraph graph = buildGraph(componentClass); - graph.setAvailableConfigs(Collections.singletonMap(new ConfigKey<>(TestConfig.class, "component"), + graph.setAvailableConfigs(Map.of(new ConfigKey<>(TestConfig.class, "component"), ConfigGetter.getConfig(TestConfig.class, "raw: stringVal \"oldConfig\""))); ComponentTakingConfig instance = getComponent(graph, componentClass); ComponentGraph newGraph = buildGraph(componentClass); - newGraph.setAvailableConfigs(Collections.singletonMap(new ConfigKey<>(TestConfig.class, "component"), + newGraph.setAvailableConfigs(Map.of(new ConfigKey<>(TestConfig.class, "component"), ConfigGetter.getConfig(TestConfig.class, "raw: stringVal \"newConfig\""))); newGraph.reuseNodes(graph); ComponentTakingConfig instance2 = getComponent(newGraph, componentClass); @@ -98,7 +98,7 @@ public class ReuseComponentsTest { graph.add(injectedComponent); graph.complete(); - graph.setAvailableConfigs(Collections.singletonMap(new ConfigKey<>(TestConfig.class, configId), + graph.setAvailableConfigs(Map.of(new ConfigKey<>(TestConfig.class, configId), ConfigGetter.getConfig(TestConfig.class, "raw: stringVal \"" + config + "\""))); return graph; @@ -132,7 +132,7 @@ public class ReuseComponentsTest { } graph.complete(); - graph.setAvailableConfigs(Collections.emptyMap()); + graph.setAvailableConfigs(Map.of()); return graph; }; @@ -163,7 +163,7 @@ public class ReuseComponentsTest { graph.add(injectedComponent); graph.complete(); - graph.setAvailableConfigs(Collections.singletonMap(new ConfigKey<>(TestConfig.class, configId), + graph.setAvailableConfigs(Map.of(new ConfigKey<>(TestConfig.class, configId), ConfigGetter.getConfig(TestConfig.class, "raw: stringVal \"" + config + "\""))); return graph; @@ -188,7 +188,7 @@ public class ReuseComponentsTest { ComponentGraph graph = new ComponentGraph(); graph.add(mockComponentNode(ComponentTakingExecutor.class, "dummyId")); graph.complete(ComponentGraphTest.singletonExecutorInjector); - graph.setAvailableConfigs(Collections.emptyMap()); + graph.setAvailableConfigs(Map.of()); return graph; }; @@ -224,7 +224,7 @@ public class ReuseComponentsTest { private void completeNode(ComponentNode node) { node.setArguments(new Object[0]); - node.setAvailableConfigs(Collections.emptyMap()); + node.setAvailableConfigs(Map.of()); } private ComponentGraph buildGraph(Class<?> componentClass) { @@ -237,7 +237,7 @@ public class ReuseComponentsTest { private ComponentGraph buildGraphAndSetNoConfigs(Class<?> componentClass) { ComponentGraph g = buildGraph(componentClass); - g.setAvailableConfigs(Collections.emptyMap()); + g.setAvailableConfigs(Map.of()); return g; } diff --git a/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java b/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java index 3217bff4bb3..ccc7b22f348 100644 --- a/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java +++ b/container-core/src/test/java/com/yahoo/container/jdisc/state/MetricSnapshotTest.java @@ -3,8 +3,8 @@ package com.yahoo.container.jdisc.state; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.HashMap; +import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -29,8 +29,8 @@ public class MetricSnapshotTest { @Test void testEquality() { - assertEquals(Collections.unmodifiableMap(new HashMap(0)).hashCode(), Collections.emptyMap().hashCode()); - assertEquals(Collections.unmodifiableMap(new HashMap(0)), Collections.emptyMap()); + assertEquals(new HashMap(0).hashCode(), Map.of().hashCode()); + assertEquals(new HashMap(0), Map.of()); } } diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java index 0368c925bcc..ad95c87ca8c 100644 --- a/container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java +++ b/container-core/src/test/java/com/yahoo/metrics/simple/PointTest.java @@ -3,8 +3,8 @@ package com.yahoo.metrics.simple; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.HashMap; +import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -15,7 +15,7 @@ public class PointTest { @Test void testPointEquality() { - Point a = new Point(Collections.emptyMap()); + Point a = new Point(Map.of()); Point b = new Point(new HashMap<>(0)); assertEquals(a.hashCode(), b.hashCode()); assertEquals(a, b); diff --git a/container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java b/container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java index d8743d063fb..40ec5973510 100644 --- a/container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java +++ b/container-core/src/test/java/com/yahoo/metrics/simple/jdisc/SnapshotConverterTest.java @@ -14,7 +14,6 @@ import com.yahoo.metrics.simple.Point; import com.yahoo.metrics.simple.UntypedMetric; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -29,7 +28,7 @@ public class SnapshotConverterTest { @Test void testPointConversion() { - MetricDimensions a = SnapshotConverter.convert(new Point(Collections.emptyMap())); + MetricDimensions a = SnapshotConverter.convert(new Point(Map.of())); MetricDimensions b = SnapshotConverter.convert(new Point(new HashMap<>(0))); MetricDimensions c = SnapshotConverter.convert((Point) null); assertEquals(a.hashCode(), b.hashCode()); diff --git a/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java b/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java index e514453bc08..1c85ec37e34 100644 --- a/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java +++ b/container-messagebus/src/test/java/com/yahoo/container/jdisc/messagebus/MbusClientProviderTest.java @@ -5,11 +5,9 @@ import com.yahoo.container.jdisc.ContainerMbusConfig; import com.yahoo.container.jdisc.config.SessionConfig; import com.yahoo.document.DocumentTypeManager; import com.yahoo.document.config.DocumentmanagerConfig; -import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig; import com.yahoo.messagebus.MessagebusConfig; import com.yahoo.messagebus.network.NetworkMultiplexer; import com.yahoo.messagebus.shared.NullNetwork; -import com.yahoo.vespa.config.content.DistributionConfig; import org.junit.Test; import static org.junit.Assert.assertNotNull; diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java index f59124e293e..7b969404984 100644 --- a/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java +++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/config/PageTemplateXMLReader.java @@ -331,7 +331,7 @@ public class PageTemplateXMLReader { private Map<String,String> readParameters(Element containingElement) { List<Element> parameterElements=XML.getChildren(containingElement,"parameter"); - if (parameterElements.size()==0) return Collections.emptyMap(); // Shortcut + if (parameterElements.size()==0) return Map.of(); // Shortcut Map<String,String> parameters=new LinkedHashMap<>(); for (Element parameter : parameterElements) { diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java b/container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java index 53f8ccbe6de..3587175b671 100644 --- a/container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java +++ b/container-search/src/main/java/com/yahoo/search/query/profile/CopyOnWriteContent.java @@ -66,7 +66,7 @@ public class CopyOnWriteContent extends FreezableClass implements Cloneable { public void freeze() { // Freeze this if (unmodifiableMap==null) - unmodifiableMap= map!=null ? Collections.unmodifiableMap(map) : Collections.<String, Object>emptyMap(); + unmodifiableMap= map!=null ? Collections.unmodifiableMap(map) : Map.of(); map=null; // just to keep the states simpler // Freeze content @@ -119,7 +119,7 @@ public class CopyOnWriteContent extends FreezableClass implements Cloneable { //------- Content access ------------------------------------------------------- public Map<String,Object> unmodifiableMap() { - if (isEmpty()) return Collections.emptyMap(); + if (isEmpty()) return Map.of(); if (map==null) // in COPYONWRITE or FROZEN state return unmodifiableMap; // In WRITABLE state: Create unmodifiable wrapper if necessary and return it diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java index 8778dcc7348..261e42a972d 100644 --- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java +++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileProperties.java @@ -18,7 +18,6 @@ import com.yahoo.search.query.profile.types.QueryProfileType; import com.yahoo.tensor.Tensor; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -127,7 +126,7 @@ public class QueryProfileProperties extends Properties { name = unalias(name, context); if (context == null) - context = Collections.emptyMap(); + context = Map.of(); if ( ! profile.isOverridable(name, context)) return; @@ -237,7 +236,7 @@ public class QueryProfileProperties extends Properties { context = contextWithZoneInfo(context); path = unalias(path, context); - if (context == null) context = Collections.emptyMap(); + if (context == null) context = Map.of(); Map<String, Object> properties = new HashMap<>(); for (var entry : profile.listValues(path, context, substitution).entrySet()) { diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfile.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfile.java index 4b3c3ede1e9..562d59846d1 100644 --- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfile.java +++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/CompiledQueryProfile.java @@ -9,7 +9,6 @@ import com.yahoo.search.query.profile.QueryProfileProperties; import com.yahoo.search.query.profile.SubstituteString; import com.yahoo.search.query.profile.types.QueryProfileType; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; @@ -102,7 +101,7 @@ public class CompiledQueryProfile extends AbstractComponent implements Cloneable * For example, if {a.d => "a.d-value" ,a.e => "a.e-value", b.d => "b.d-value", then calling listValues("a") * will return {"d" => "a.d-value","e" => "a.e-value"} */ - public final Map<String, Object> listValues(CompoundName prefix) { return listValues(prefix, Collections.emptyMap()); } + public final Map<String, Object> listValues(CompoundName prefix) { return listValues(prefix, Map.of()); } public final Map<String, Object> listValues(String prefix) { return listValues(new CompoundName(prefix)); } /** diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java index b6fa58628a1..0823989a104 100644 --- a/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java +++ b/container-search/src/main/java/com/yahoo/search/query/profile/compiled/DimensionalValue.java @@ -2,18 +2,15 @@ package com.yahoo.search.query.profile.compiled; import com.yahoo.processing.request.CompoundName; -import com.yahoo.search.query.profile.DimensionBinding; import com.yahoo.search.query.profile.SubstituteString; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; /** * Contains the values a given key in a DimensionalMap may take for different dimensional contexts. @@ -44,7 +41,7 @@ public class DimensionalValue<VALUE> { /** Returns the value matching this context, or null if none */ public VALUE get(Map<String, String> context) { if (context == null) - context = Collections.emptyMap(); + context = Map.of(); for (BindingSpec spec : bindingSpecs) { if ( ! spec.matches(context)) continue; @@ -156,8 +153,7 @@ public class DimensionalValue<VALUE> { variants.add(binding); // We're combining values for efficiency, so remove incorrect provenance info - if (value instanceof ValueWithSource) { - ValueWithSource v1 = (ValueWithSource)value; + if (value instanceof ValueWithSource v1) { ValueWithSource v2 = (ValueWithSource)newValue; if (v1.source() != null && ! v1.source().equals(v2.source())) @@ -220,14 +216,12 @@ public class DimensionalValue<VALUE> { private VALUE substituteIfRelative(VALUE value, Binding variant, Map<CompoundName, DimensionalValue.Builder<VALUE>> entries) { - if (value instanceof ValueWithSource && ((ValueWithSource)value).value() instanceof SubstituteString) { - ValueWithSource valueWithSource = (ValueWithSource)value; + if (value instanceof ValueWithSource valueWithSource && ((ValueWithSource)value).value() instanceof SubstituteString) { SubstituteString substitute = (SubstituteString)valueWithSource.value(); if (substitute.hasRelative()) { List<SubstituteString.Component> resolvedComponents = new ArrayList<>(substitute.components().size()); for (SubstituteString.Component component : substitute.components()) { - if (component instanceof SubstituteString.RelativePropertyComponent) { - SubstituteString.RelativePropertyComponent relativeComponent = (SubstituteString.RelativePropertyComponent)component; + if (component instanceof SubstituteString.RelativePropertyComponent relativeComponent) { var substituteValues = lookupByLocalName(relativeComponent.fieldName(), entries); if (substituteValues == null) throw new IllegalArgumentException("Could not resolve local substitution '" + @@ -274,8 +268,8 @@ public class DimensionalValue<VALUE> { /** Returns whether this context contains all the keys of this */ public boolean matches(Map<String, String> context) { - for (int i = 0; i < dimensions.length; i++) - if ( ! context.containsKey(dimensions[i])) return false; + for (String dimension : dimensions) + if (!context.containsKey(dimension)) return false; return true; } diff --git a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java index 080f938d61a..e5319b50b4f 100644 --- a/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java +++ b/container-search/src/main/java/com/yahoo/search/query/textserialize/item/ItemArguments.java @@ -1,7 +1,6 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.query.textserialize.item; -import java.util.Collections; import java.util.List; import java.util.Map; @@ -19,7 +18,7 @@ public class ItemArguments { properties = (Map<?, ?>) ListUtil.first(arguments); children = ListUtil.rest(arguments); } else { - properties = Collections.emptyMap(); + properties = Map.of(); children = arguments; } } diff --git a/container-search/src/main/java/com/yahoo/search/result/Hit.java b/container-search/src/main/java/com/yahoo/search/result/Hit.java index d81880cc548..045388ba31c 100644 --- a/container-search/src/main/java/com/yahoo/search/result/Hit.java +++ b/container-search/src/main/java/com/yahoo/search/result/Hit.java @@ -333,7 +333,7 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi */ public void setFillable() { if (filled == null) { - filled = Collections.emptySet(); + filled = Set.of(); unmodifiableFilled = filled; } } @@ -347,7 +347,7 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi */ public void setFilled(String summaryClass) { if (filled == null || filled.isEmpty()) { - filled = Collections.singleton(summaryClass); + filled = Set.of(summaryClass); unmodifiableFilled = filled; } else if (filled.size() == 1) { filled = new HashSet<>(filled); @@ -483,7 +483,7 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi private Map<String, Object> getUnmodifiableFieldMap() { if (unmodifiableFieldMap == null) { if (fields == null) { - return Collections.emptyMap(); + return Map.of(); } else { unmodifiableFieldMap = Collections.unmodifiableMap(fields); } @@ -574,12 +574,12 @@ public class Hit extends ListenableFreezableClass implements Data, Comparable<Hi /** Attach some data to this hit for this searcher */ public void setSearcherSpecificMetaData(Searcher searcher, Object data) { if (searcherSpecificMetaData == null) { - searcherSpecificMetaData = Collections.singletonMap(searcher, data); + searcherSpecificMetaData = Map.of(searcher, data); } else { if (searcherSpecificMetaData.size() == 1) { Object tmp = searcherSpecificMetaData.get(searcher); if (tmp != null) { - searcherSpecificMetaData = Collections.singletonMap(searcher, data); + searcherSpecificMetaData = Map.of(searcher, data); } else { searcherSpecificMetaData = new TreeMap<>(searcherSpecificMetaData); searcherSpecificMetaData.put(searcher, data); diff --git a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java index 7ae02c18e7a..e66cac5766c 100644 --- a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java +++ b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java @@ -913,7 +913,7 @@ public class YqlParser implements Parser { GroupingOperation groupingOperation = GroupingOperation.fromString(groupingAst.getArgument(0)); VespaGroupingStep groupingStep = new VespaGroupingStep(groupingOperation); List<Object> continuations = getAnnotation(groupingAst, "continuations", List.class, - Collections.emptyList(), "grouping continuations"); + List.of(), "grouping continuations"); for (Object continuation : continuations) { groupingStep.continuations().add(Continuation.fromString(dereference(continuation))); @@ -1614,7 +1614,7 @@ public class YqlParser implements Parser { { Item leaf = (Item) out; Map<?, ?> itemAnnotations = getAnnotation(ast, ANNOTATIONS, - Map.class, Collections.emptyMap(), "item annotation map"); + Map.class, Map.of(), "item annotation map"); for (Map.Entry<?, ?> entry : itemAnnotations.entrySet()) { Preconditions.checkArgument(entry.getKey() instanceof String, "Expected String annotation key, got %s.", entry.getKey().getClass()); diff --git a/container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java b/container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java index 561d2bf34d0..c957432a957 100644 --- a/container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java +++ b/container-search/src/main/java/com/yahoo/text/interpretation/Annotations.java @@ -1,7 +1,6 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.text.interpretation; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -28,7 +27,7 @@ public class Annotations { public Map<String,Object> getMap() { if (annotations == null) { - return Collections.emptyMap(); + return Map.of(); } else { return annotations; } diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/QueryEncoder.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/QueryEncoder.java index 112c3669133..c0ded6a4c39 100644 --- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/QueryEncoder.java +++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/QueryEncoder.java @@ -8,7 +8,6 @@ import com.yahoo.search.Query; import com.yahoo.search.dispatch.rpc.ProtobufSerialization; import java.nio.ByteBuffer; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -68,10 +67,10 @@ class QueryEncoder { return cacheSettingMap; } if (query.getGroupingSessionCache()) - return Collections.singletonMap("grouping", true); + return Map.of("grouping", true); if (query.getRanking().getQueryCache()) - return Collections.singletonMap("query", true); - return Collections.emptyMap(); + return Map.of("query", true); + return Map.of(); } private static Map<String, String> createModelMap(Query query) { diff --git a/container-search/src/test/java/ai/vespa/llm/clients/ConfigurableLanguageModelTest.java b/container-search/src/test/java/ai/vespa/llm/clients/ConfigurableLanguageModelTest.java index a9f4c3dfac5..35d5cfd3855 100644 --- a/container-search/src/test/java/ai/vespa/llm/clients/ConfigurableLanguageModelTest.java +++ b/container-search/src/test/java/ai/vespa/llm/clients/ConfigurableLanguageModelTest.java @@ -11,7 +11,6 @@ import com.yahoo.container.jdisc.secretstore.SecretStore; import org.junit.jupiter.api.Test; import java.util.Arrays; -import java.util.Collections; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -85,7 +84,7 @@ public class ConfigurableLanguageModelTest { } private static InferenceParameters inferenceParams() { - return new InferenceParameters(s -> lookupParameter(s, Collections.emptyMap())); + return new InferenceParameters(s -> lookupParameter(s, Map.of())); } private static InferenceParameters inferenceParams(Map<String, String> params) { @@ -93,7 +92,7 @@ public class ConfigurableLanguageModelTest { } private static InferenceParameters inferenceParamsWithDefaultKey() { - return new InferenceParameters(MockLLMClient.ACCEPTED_API_KEY, s -> lookupParameter(s, Collections.emptyMap())); + return new InferenceParameters(MockLLMClient.ACCEPTED_API_KEY, s -> lookupParameter(s, Map.of())); } private LlmClientConfig modelParams(String apiKeySecretName, String endpoint) { diff --git a/container-search/src/test/java/com/yahoo/search/searchers/test/MockMetric.java b/container-search/src/test/java/com/yahoo/search/searchers/test/MockMetric.java deleted file mode 100644 index 7835a9934c7..00000000000 --- a/container-search/src/test/java/com/yahoo/search/searchers/test/MockMetric.java +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.search.searchers.test; - -import com.yahoo.jdisc.Metric; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -/** -* @author bratseth -*/ -class MockMetric implements Metric { - - private Map<Context, Map<String, Number>> metrics = new HashMap<>(); - - public Map<String, Number> values(Context context) { - return metricsForContext(context); - } - - @Override - public void set(String key, Number val, Context context) { - metricsForContext(context).put(key, val); - } - - @Override - public void add(String key, Number value, Context context) { - Number previousValue = metricsForContext(context).get(key); - if (previousValue == null) - previousValue = 0; - metricsForContext(context).put(key, value.doubleValue() + previousValue.doubleValue()); - } - - /** Returns the metrics for a given context, never null */ - private Map<String, Number> metricsForContext(Context context) { - Map<String, Number> metricsForContext = metrics.get(context); - if (metricsForContext == null) { - metricsForContext = new HashMap<>(); - metrics.put(context, metricsForContext); - } - return metricsForContext; - } - - @Override - public Context createContext(Map<String, ?> dimensions) { - return new MapContext(dimensions); - } - - /** Creates a context containing a single dimension */ - public Metric.Context createContext(String dimensionName, String dimensionValue) { - if (dimensionName.isEmpty()) - return createContext(Collections.emptyMap()); - return createContext(Collections.singletonMap(dimensionName, dimensionValue)); - } - - private class MapContext implements Metric.Context { - - private final Map<String, ?> dimensions; - - public MapContext(Map<String, ?> dimensions) { - this.dimensions = dimensions; - } - - @Override - public int hashCode() { - return dimensions.hashCode(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if ( ! (o instanceof MapContext)) return false; - return dimensions.equals(((MapContext)o).dimensions); - } - - } - -} diff --git a/flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java b/flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java index c4597d1d3b4..73803e5bc5f 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/file/FlagDbFile.java @@ -14,7 +14,6 @@ import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.util.ArrayList; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -55,7 +54,7 @@ public class FlagDbFile { public Map<FlagId, FlagData> read() { Optional<byte[]> bytes = readFile(); - if (!bytes.isPresent()) return Collections.emptyMap(); + if (!bytes.isPresent()) return Map.of(); return FlagData.deserializeList(bytes.get()).stream().collect(Collectors.toMap(FlagData::id, Function.identity())); } diff --git a/flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java b/flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java index 4ea4f8ab638..d8530bf0a9d 100644 --- a/flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java +++ b/flags/src/test/java/com/yahoo/vespa/flags/file/FlagDbFileTest.java @@ -12,7 +12,6 @@ import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; import java.nio.file.FileSystem; import java.nio.file.Files; -import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -68,7 +67,7 @@ public class FlagDbFileTest { assertThat(anotherReadDataMap, IsMapContaining.hasKey(id3)); assertThat(anotherReadDataMap.get(id1).serializeToJson(), equalTo("{\"id\":\"id1\",\"attributes\":{\"hostname\":\"h1\"}}")); - assertThat(flagDb.sync(Collections.emptyMap()), equalTo(true)); + assertThat(flagDb.sync(Map.of()), equalTo(true)); assertThat(getDbContent(), equalTo("{\"flags\":[]}")); } diff --git a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java index 0bdf98f2ae0..fecb89ee167 100644 --- a/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java +++ b/indexinglanguage/src/test/java/com/yahoo/vespa/indexinglanguage/linguistics/LinguisticsAnnotatorTestCase.java @@ -244,11 +244,11 @@ public class LinguisticsAnnotatorTestCase { } private static void assertAnnotations(SpanTree expected, String value, Token... tokens) { - assertAnnotations(expected, value, new AnnotatorConfig(), newLinguistics(Arrays.asList(tokens), Collections.emptyMap())); + assertAnnotations(expected, value, new AnnotatorConfig(), newLinguistics(Arrays.asList(tokens), Map.of())); } private static void assertAnnotations(SpanTree expected, String value, AnnotatorConfig config, Token... tokens) { - assertAnnotations(expected, value, config, newLinguistics(Arrays.asList(tokens), Collections.emptyMap())); + assertAnnotations(expected, value, config, newLinguistics(Arrays.asList(tokens), Map.of())); } private static void assertAnnotations(SpanTree expected, String str, AnnotatorConfig config, Linguistics linguistics) { diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java index 3fd95220aca..44f4efb41cc 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonModel.java @@ -19,9 +19,6 @@ import java.util.Set; import java.util.stream.Collectors; import static com.yahoo.stream.CustomCollectors.toLinkedMap; -import static java.util.Collections.emptyList; -import static java.util.Collections.emptyMap; -import static java.util.Collections.emptySet; /** * Datamodel for Yamas execute output @@ -80,7 +77,7 @@ public class YamasJsonModel { } List<Metric> getMetricsList() { - if (metrics == null) return emptyList(); + if (metrics == null) return List.of(); return metrics.keySet().stream() .map(name -> new Metric(MetricId.toMetricId(name), metrics.get(name))) @@ -88,14 +85,14 @@ public class YamasJsonModel { } Map<DimensionId, String> getDimensionsById() { - if (dimensions == null) return emptyMap(); + if (dimensions == null) return Map.of(); return dimensions.keySet().stream().collect(toLinkedMap(DimensionId::toDimensionId, name -> dimensions.get(name))); } Set<ConsumerId> getYamasConsumers() { - if (routing == null || routing.get("yamas") == null) return emptySet(); + if (routing == null || routing.get("yamas") == null) return Set.of(); return routing.get("yamas").namespaces.stream() .map(ConsumerId::toConsumerId) diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java index a83a28ff9c6..573292a6592 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/service/VespaService.java @@ -7,7 +7,6 @@ import ai.vespa.metricsproxy.metric.Metrics; import ai.vespa.metricsproxy.metric.model.DimensionId; import ai.vespa.metricsproxy.metric.model.ServiceId; -import java.util.Collections; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; @@ -20,7 +19,7 @@ import java.util.concurrent.atomic.AtomicReference; */ public class VespaService implements Comparable<VespaService> { - private static final Map<DimensionId, String> EMPTY_DIMENSIONS = Collections.emptyMap(); + private static final Map<DimensionId, String> EMPTY_DIMENSIONS = Map.of(); private static final String DEFAULT_MONITORING_PREFIX = "vespa"; public static final String SEPARATOR = "."; diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java index c97e4781889..9639d9598a8 100644 --- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java +++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/configmodelview/ImportedMlModels.java @@ -7,7 +7,6 @@ import com.yahoo.yolean.Exceptions; import java.io.File; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -34,7 +33,7 @@ public class ImportedMlModels { /** Create a null imported models */ public ImportedMlModels() { - importedModels = Collections.emptyMap(); + importedModels = Map.of(); } public ImportedMlModels(File modelsDirectory, ExecutorService executor, Collection<MlModelImporter> importers) { @@ -53,7 +52,7 @@ public class ImportedMlModels { skippedModels.put(name, Exceptions.toMessageString(e)); } }); - importedModels = Collections.unmodifiableMap(models); + importedModels = Map.copyOf(models); } /** diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Reports.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Reports.java index 8e82307deb1..e10a4e82a0c 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Reports.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Reports.java @@ -6,7 +6,6 @@ import com.yahoo.slime.Inspector; import com.yahoo.slime.ObjectTraverser; import com.yahoo.slime.Type; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -20,8 +19,8 @@ public class Reports { private final Map<String, Report> reports; - public Reports() { this(Collections.emptyMap()); } - private Reports(Map<String, Report> reports) { this.reports = Collections.unmodifiableMap(reports); } + public Reports() { this(Map.of()); } + private Reports(Map<String, Report> reports) { this.reports = Map.copyOf(reports); } public boolean isEmpty() { return reports.isEmpty(); } public Optional<Report> getReport(String id) { return Optional.ofNullable(reports.get(id)); } diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java index 5409061c441..700a16577af 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/testutils/ServiceMonitorStub.java @@ -19,7 +19,6 @@ import com.yahoo.vespa.hosted.provision.NodeRepository; import com.yahoo.vespa.service.monitor.ServiceModel; import com.yahoo.vespa.service.monitor.ServiceMonitor; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -38,7 +37,7 @@ public class ServiceMonitorStub implements ServiceMonitor { @Inject @SuppressWarnings("unused") public ServiceMonitorStub(NodeRepository nodeRepository) { - this(Collections.emptyMap(), nodeRepository); + this(Map.of(), nodeRepository); } /** Create a service monitor where all nodes are initially up */ diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java index a2cf662a255..be0a532128f 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java @@ -4,8 +4,8 @@ package com.yahoo.searchlib.rankingexpression.rule; import com.yahoo.searchlib.rankingexpression.ExpressionFunction; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -23,12 +23,12 @@ public class FunctionReferenceContext { /** Create a context for a single serialization task */ public FunctionReferenceContext() { - this(Collections.emptyList()); + this(List.of()); } /** Create a context for a single serialization task */ public FunctionReferenceContext(Collection<ExpressionFunction> functions) { - this(toMap(functions), Collections.emptyMap()); + this(toMap(functions), Map.of()); } public FunctionReferenceContext(Collection<ExpressionFunction> functions, Map<String, String> bindings) { diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java index d1cb77fb1b4..271e367c1f4 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java @@ -9,9 +9,9 @@ import com.yahoo.tensor.evaluation.TypeContext; import static com.yahoo.searchlib.rankingexpression.Reference.wrapInRankingExpression; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.Optional; @@ -29,7 +29,7 @@ public class SerializationContext extends FunctionReferenceContext { /** Create a context for a single serialization task */ public SerializationContext() { - this(Collections.emptyList(), Collections.emptyMap(), Optional.empty(), new LinkedHashMap<>()); + this(List.of(), Map.of(), Optional.empty(), new LinkedHashMap<>()); } /** @@ -40,7 +40,7 @@ public class SerializationContext extends FunctionReferenceContext { */ public SerializationContext(Collection<ExpressionFunction> functions, Optional<TypeContext<Reference>> typeContext) { - this(functions, Collections.emptyMap(), typeContext, new LinkedHashMap<>()); + this(functions, Map.of(), typeContext, new LinkedHashMap<>()); } /** diff --git a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java index 0f367bb5425..7736b0e9ac7 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/rankingexpression/transform/SimplifierTestCase.java @@ -12,7 +12,7 @@ import com.yahoo.searchlib.rankingexpression.rule.ConstantNode; import com.yahoo.searchlib.rankingexpression.rule.NegativeNode; import org.junit.Test; -import java.util.Collections; +import java.util.Map; import static org.junit.Assert.*; @@ -24,7 +24,7 @@ public class SimplifierTestCase { @Test public void testSimplify() throws ParseException { Simplifier s = new Simplifier(); - TransformContext c = new TransformContext(Collections.emptyMap(), new MapTypeContext()); + TransformContext c = new TransformContext(Map.of(), new MapTypeContext()); assertEquals("a + b", s.transform(new RankingExpression("a + b"), c).toString()); assertEquals("6.5", s.transform(new RankingExpression("1.0 + 2.0 + 3.5"), c).toString()); assertEquals("6.5", s.transform(new RankingExpression("1.0 + ( 2.0 + 3.5 )"), c).toString()); @@ -48,7 +48,7 @@ public class SimplifierTestCase { @Test public void testNaNExpression() throws ParseException { Simplifier s = new Simplifier(); - TransformContext c = new TransformContext(Collections.emptyMap(), new MapTypeContext()); + TransformContext c = new TransformContext(Map.of(), new MapTypeContext()); assertEquals("0 / 0", s.transform(new RankingExpression("0/0"), c).toString()); assertEquals("1 + 0.0 / 0.0", s.transform(new RankingExpression("1 + (1-1)/(2-2)"), c).toString()); } @@ -56,7 +56,7 @@ public class SimplifierTestCase { @Test public void testSimplifyComplexExpression() throws ParseException { RankingExpression initial = new RankingExpression("sqrt(if (if (INFERRED * 0.9 < INFERRED, GMP, (1 + 1.1) * INFERRED) < INFERRED * INFERRED - INFERRED, if (GMP < 85.80799542793133 * GMP, INFERRED, if (GMP < GMP, tanh(INFERRED), log(76.89956221113943))), tanh(tanh(INFERRED))) * sqrt(sqrt(GMP + INFERRED)) * GMP ) + 13.5 * (1 - GMP) * pow(GMP * 0.1, 2 + 1.1 * 0)"); - TransformContext c = new TransformContext(Collections.emptyMap(), new MapTypeContext()); + TransformContext c = new TransformContext(Map.of(), new MapTypeContext()); RankingExpression simplified = new Simplifier().transform(initial, c); Context context = new MapContext(); @@ -81,7 +81,7 @@ public class SimplifierTestCase { @Test public void testParenthesisPreservation() throws ParseException { Simplifier s = new Simplifier(); - TransformContext c = new TransformContext(Collections.emptyMap(), new MapTypeContext()); + TransformContext c = new TransformContext(Map.of(), new MapTypeContext()); CompositeNode transformed = (CompositeNode)s.transform(new RankingExpression("a + (b + c) / 100000000.0"), c).getRoot(); assertEquals("a + (b + c) / 1.0E8", transformed.toString()); } @@ -89,7 +89,7 @@ public class SimplifierTestCase { @Test public void testOptimizingNegativeConstants() throws ParseException { Simplifier s = new Simplifier(); - TransformContext c = new TransformContext(Collections.emptyMap(), new MapTypeContext()); + TransformContext c = new TransformContext(Map.of(), new MapTypeContext()); assertEquals("-3", s.transform(new RankingExpression("-3"), c).toString()); assertEquals("-9.0", s.transform(new RankingExpression("-3 + -6"), c).toString()); assertEquals("-a", s.transform(new RankingExpression("-a"), c).toString()); diff --git a/standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java b/standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java index 8da19fcb64b..5789a69a4db 100644 --- a/standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java +++ b/standalone-container/src/main/java/com/yahoo/application/container/impl/ClassLoaderOsgiFramework.java @@ -32,7 +32,6 @@ import java.net.URLClassLoader; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Dictionary; import java.util.Enumeration; import java.util.Hashtable; @@ -226,7 +225,7 @@ public final class ClassLoaderOsgiFramework implements OsgiFramework { @Override public Map<X509Certificate, List<X509Certificate>> getSignerCertificates(int signersType) { - return Collections.emptyMap(); + return Map.of(); } @Override diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java index dd76827dd2b..1ae5171c93a 100644 --- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java +++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java @@ -5,7 +5,6 @@ import java.net.URI; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.charset.StandardCharsets; -import java.util.Collections; import java.util.Map; /** @@ -34,7 +33,7 @@ public interface Endpoint { /** Creates a request against the endpoint, with the given path. */ default HttpRequest.Builder request(String path) { - return request(path, Collections.emptyMap()); + return request(path, Map.of()); } } diff --git a/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/impl/CliArguments.java b/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/impl/CliArguments.java index e07108a84ad..35faa89388b 100644 --- a/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/impl/CliArguments.java +++ b/vespa-feed-client-cli/src/main/java/ai/vespa/feed/client/impl/CliArguments.java @@ -18,7 +18,6 @@ import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Path; import java.time.Duration; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.Optional; @@ -26,7 +25,6 @@ import java.util.OptionalDouble; import java.util.OptionalInt; import static ai.vespa.feed.client.FeedClientBuilder.Compression.auto; -import static ai.vespa.feed.client.FeedClientBuilder.Compression.none; /** * Parses command line arguments @@ -139,7 +137,7 @@ class CliArguments { Map<String, String> headers() throws CliArgumentsException { String[] rawArguments = arguments.getOptionValues(HEADER_OPTION); - if (rawArguments == null) return Collections.emptyMap(); + if (rawArguments == null) return Map.of(); Map<String, String> headers = new HashMap<>(); for (String rawArgument : rawArguments) { if (rawArgument.startsWith("\"") || rawArgument.startsWith("'")) { @@ -152,7 +150,7 @@ class CliArguments { if (colonIndex == -1) throw new CliArgumentsException("Invalid header: '" + rawArgument + "'"); headers.put(rawArgument.substring(0, colonIndex), rawArgument.substring(colonIndex + 1).trim()); } - return Collections.unmodifiableMap(headers); + return Map.copyOf(headers); } boolean sslHostnameVerificationDisabled() { return has(DISABLE_SSL_HOSTNAME_VERIFICATION_OPTION); } diff --git a/zookeeper-server/zookeeper-server-3.9.2/src/main/java/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java b/zookeeper-server/zookeeper-server-3.9.2/src/main/java/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java index 8ea94fd4daf..99c4ae16dce 100644 --- a/zookeeper-server/zookeeper-server-3.9.2/src/main/java/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java +++ b/zookeeper-server/zookeeper-server-3.9.2/src/main/java/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java @@ -19,7 +19,6 @@ package org.apache.zookeeper.server.quorum; import java.io.IOException; -import java.util.Collections; import java.util.Map; import org.apache.zookeeper.jmx.MBeanRegistry; import org.apache.zookeeper.server.DataTreeBean; @@ -61,7 +60,7 @@ public abstract class LearnerZooKeeperServer extends QuorumZooKeeperServer { if (sessionTracker != null) { return ((LearnerSessionTracker) sessionTracker).snapshot(); } - Map<Long, Integer> map = Collections.emptyMap(); + Map<Long, Integer> map = Map.of(); return map; } diff --git a/zookeeper-server/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java b/zookeeper-server/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java index 8ea94fd4daf..99c4ae16dce 100644 --- a/zookeeper-server/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java +++ b/zookeeper-server/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerZooKeeperServer.java @@ -19,7 +19,6 @@ package org.apache.zookeeper.server.quorum; import java.io.IOException; -import java.util.Collections; import java.util.Map; import org.apache.zookeeper.jmx.MBeanRegistry; import org.apache.zookeeper.server.DataTreeBean; @@ -61,7 +60,7 @@ public abstract class LearnerZooKeeperServer extends QuorumZooKeeperServer { if (sessionTracker != null) { return ((LearnerSessionTracker) sessionTracker).snapshot(); } - Map<Long, Integer> map = Collections.emptyMap(); + Map<Long, Integer> map = Map.of(); return map; } |