diff options
160 files changed, 368 insertions, 507 deletions
diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java index cbe5e97374c..74780cdaa25 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/bundle/AnalyzeBundle.java @@ -9,7 +9,6 @@ import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.jar.Manifest; @@ -37,7 +36,7 @@ public class AnalyzeBundle { static List<Export> exportedPackages(File jarFile) { var manifest = getOsgiManifest(jarFile); - if (manifest == null) return Collections.emptyList(); + if (manifest == null) return List.of(); try { return parseExports(manifest); } catch (Exception e) { @@ -55,7 +54,7 @@ public class AnalyzeBundle { private static List<String> nonPublicApiPackages(File jarFile) { var manifest = getOsgiManifest(jarFile); - if (manifest == null) return Collections.emptyList(); + if (manifest == null) return List.of(); return getMainAttributeValue(manifest, "X-JDisc-Non-PublicApi-Export-Package") .map(s -> Arrays.asList(s.split(","))) .orElseGet(ArrayList::new); diff --git a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java index af403946f39..c66aa61a8ee 100644 --- a/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java +++ b/bundle-plugin/src/main/java/com/yahoo/container/plugin/util/JarFiles.java @@ -4,7 +4,6 @@ package com.yahoo.container.plugin.util; import java.io.File; import java.io.InputStream; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.jar.JarFile; @@ -25,8 +24,8 @@ public class JarFiles { .map(s -> Arrays.stream(s.split(",")) .map(ArtifactId::fromStringValue) .toList()) - .orElse(Collections.emptyList())) - .orElse(Collections.emptyList()); + .orElse(List.of())) + .orElse(List.of()); } diff --git a/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java b/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java index caaa8d5c6c0..7ad1afff01d 100644 --- a/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java +++ b/bundle-plugin/src/test/java/com/yahoo/container/plugin/osgi/ImportPackageTest.java @@ -6,7 +6,6 @@ import com.yahoo.container.plugin.osgi.ExportPackages.Parameter; import com.yahoo.container.plugin.osgi.ImportPackages.Import; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -23,8 +22,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue; */ public class ImportPackageTest { private static final String PACKAGE_NAME = "com.yahoo.exported"; - private final Set<String> referencedPackages = Collections.singleton(PACKAGE_NAME); - private final Map<String, Export> exports = exportByPackageName(new Export(List.of(PACKAGE_NAME), Collections.emptyList())); + private final Set<String> referencedPackages = Set.of(PACKAGE_NAME); + private final Map<String, Export> exports = exportByPackageName(new Export(List.of(PACKAGE_NAME), List.of())); private final Map<String, Export> exportsWithVersion = exportByPackageName( new Export(List.of(PACKAGE_NAME), List.of(new Parameter("version", "1.3")))); diff --git a/client/src/main/java/ai/vespa/client/dsl/Sources.java b/client/src/main/java/ai/vespa/client/dsl/Sources.java index b6dd1b06536..cecf27aa240 100644 --- a/client/src/main/java/ai/vespa/client/dsl/Sources.java +++ b/client/src/main/java/ai/vespa/client/dsl/Sources.java @@ -3,7 +3,6 @@ package ai.vespa.client.dsl; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -19,7 +18,7 @@ public class Sources { } Sources(Select select, String searchDefinition) { - this(select, Collections.singletonList(searchDefinition)); + this(select, List.of(searchDefinition)); } Sources(Select select, String searchDefinition, String... others) { diff --git a/client/src/test/java/ai/vespa/client/dsl/QTest.java b/client/src/test/java/ai/vespa/client/dsl/QTest.java index 3dbf714ed62..7673d0ff717 100644 --- a/client/src/test/java/ai/vespa/client/dsl/QTest.java +++ b/client/src/test/java/ai/vespa/client/dsl/QTest.java @@ -4,9 +4,9 @@ package ai.vespa.client.dsl; import org.junit.jupiter.api.Test; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -498,7 +498,7 @@ class QTest { @Test void use_contains_instead_of_contains_equiv_when_input_size_is_1() { - String q = Q.p("f1").containsEquiv(Collections.singletonList("p1")) + String q = Q.p("f1").containsEquiv(List.of("p1")) .build(); assertEquals(q, "yql=select * from sources * where f1 contains \"p1\""); @@ -506,16 +506,16 @@ class QTest { @Test void contains_phrase_near_onear_equiv_empty_list_should_throw_illegal_argument_exception() { - assertThrows(IllegalArgumentException.class, () -> Q.p("f1").containsPhrase(Collections.emptyList()) + assertThrows(IllegalArgumentException.class, () -> Q.p("f1").containsPhrase(List.of()) .build()); - assertThrows(IllegalArgumentException.class, () -> Q.p("f1").containsNear(Collections.emptyList()) + assertThrows(IllegalArgumentException.class, () -> Q.p("f1").containsNear(List.of()) .build()); - assertThrows(IllegalArgumentException.class, () -> Q.p("f1").containsOnear(Collections.emptyList()) + assertThrows(IllegalArgumentException.class, () -> Q.p("f1").containsOnear(List.of()) .build()); - assertThrows(IllegalArgumentException.class, () -> Q.p("f1").containsEquiv(Collections.emptyList()) + assertThrows(IllegalArgumentException.class, () -> Q.p("f1").containsEquiv(List.of()) .build()); } diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java index 16cd7bf7e88..4308e0c2a0e 100644 --- a/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java +++ b/config-model-api/src/main/java/com/yahoo/config/application/api/DeploymentSpec.java @@ -386,7 +386,7 @@ public class DeploymentSpec { public abstract boolean concerns(Environment environment, Optional<RegionName> region); /** Returns the zones deployed to in this step. */ - public List<DeclaredZone> zones() { return Collections.emptyList(); } + public List<DeclaredZone> zones() { return List.of(); } /** The delay introduced by this step (beyond the time it takes to execute the step). */ public Duration delay() { return Duration.ZERO; } 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 370dfbff2b8..ac8900ab67b 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 @@ -7,10 +7,9 @@ import com.google.common.collect.ImmutableSet; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; -import static java.util.Collections.emptyList; - /** * Configuration of notifications for deployment jobs. * @@ -59,7 +58,7 @@ public class Notifications { /** Returns all email addresses to notify for the given condition. */ public Set<String> emailAddressesFor(When when) { ImmutableSet.Builder<String> addresses = ImmutableSet.builder(); - addresses.addAll(emailAddresses.getOrDefault(when, emptyList())); + addresses.addAll(emailAddresses.getOrDefault(when, List.of())); for (When include : when.includes) addresses.addAll(emailAddressesFor(include)); return addresses.build(); @@ -68,7 +67,7 @@ public class Notifications { /** Returns all roles for which email notification is to be sent for the given condition. */ public Set<Role> emailRolesFor(When when) { ImmutableSet.Builder<Role> roles = ImmutableSet.builder(); - roles.addAll(emailRoles.getOrDefault(when, emptyList())); + roles.addAll(emailRoles.getOrDefault(when, List.of())); for (When include : when.includes) roles.addAll(emailRolesFor(include)); return roles.build(); @@ -81,17 +80,17 @@ public class Notifications { author; public static String toValue(Role role) { - switch (role) { - case author: return "author"; - default: throw new IllegalArgumentException("Unexpected constant '" + role.name() + "'."); + if (Objects.requireNonNull(role) == Role.author) { + return "author"; } + throw new IllegalArgumentException("Unexpected constant '" + role.name() + "'."); } public static Role fromValue(String value) { - switch (value) { - case "author": return author; - default: throw new IllegalArgumentException("Unknown value '" + value + "'."); + if (value.equals("author")) { + return author; } + throw new IllegalArgumentException("Unknown value '" + value + "'."); } } @@ -112,11 +111,11 @@ public class Notifications { } public static String toValue(When when) { - switch (when) { - case failing: return "failing"; - case failingCommit: return "failing-commit"; - default: throw new IllegalArgumentException("Unexpected constant '" + when.name() + "'."); - } + return switch (when) { + case failing -> "failing"; + case failingCommit -> "failing-commit"; + default -> throw new IllegalArgumentException("Unexpected constant '" + when.name() + "'."); + }; } public static When fromValue(String value) { diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java index 99c9dad02de..05807ae6cc1 100644 --- a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java +++ b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecTest.java @@ -23,7 +23,6 @@ import java.time.Clock; import java.time.Duration; import java.time.Instant; import java.time.ZoneId; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -1152,7 +1151,7 @@ public class DeploymentSpecTest { <instance id='default'/> </deployment> """); - assertEquals(Collections.emptyList(), spec.requireInstance("default").endpoints()); + assertEquals(List.of(), spec.requireInstance("default").endpoints()); assertEquals(ZoneEndpoint.defaultEndpoint, spec.zoneEndpoint(InstanceName.defaultName(), defaultId(), ClusterSpec.Id.from("cluster"))); diff --git a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java index e102e3afaa7..e25069fdc3a 100644 --- a/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java +++ b/config-model-api/src/test/java/com/yahoo/config/application/api/DeploymentSpecWithoutInstanceTest.java @@ -16,7 +16,6 @@ import java.io.StringReader; import java.time.Duration; import java.time.Instant; import java.time.ZoneId; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -599,7 +598,7 @@ public class DeploymentSpecWithoutInstanceTest { @Test public void emptyEndpoints() { var spec = DeploymentSpec.fromXml("<deployment><endpoints/></deployment>"); - assertEquals(Collections.emptyList(), spec.requireInstance("default").endpoints()); + assertEquals(List.of(), spec.requireInstance("default").endpoints()); } @Test diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java index 87165c0afef..93995bace63 100644 --- a/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/HostFilterTest.java @@ -4,7 +4,7 @@ package com.yahoo.config.provision; import com.yahoo.component.Vtag; import org.junit.jupiter.api.Test; -import java.util.Collections; +import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -45,10 +45,10 @@ public class HostFilterTest { @Test void testMultiConditionFilter() { - HostFilter typeAndId = HostFilter.from(Collections.emptyList(), - Collections.emptyList(), - Collections.singletonList(ClusterSpec.Type.content), - Collections.singletonList(ClusterSpec.Id.from("type1"))); + HostFilter typeAndId = HostFilter.from(List.of(), + List.of(), + List.of(ClusterSpec.Type.content), + List.of(ClusterSpec.Id.from("type1"))); assertFalse(typeAndId.matches("anyhost", "flavor", membership("content/anyType/0/0/stateful"))); assertFalse(typeAndId.matches("anyhost", "flavor", membership("container/type1/0/0"))); diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java index e69d76ec124..a34ad69d22c 100644 --- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java +++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/MemoryCacheConfigClient.java @@ -6,7 +6,6 @@ import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.config.RawConfig; import com.yahoo.vespa.config.protocol.JRTServerConfigRequest; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.logging.Level; @@ -56,7 +55,7 @@ class MemoryCacheConfigClient implements ConfigSourceClient { @Override public List<String> getSourceConnections() { - return Collections.singletonList("N/A"); + return List.of("N/A"); } @Override diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java index aa063b1ea54..656187ea8e5 100644 --- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java +++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/ConfigTester.java @@ -17,7 +17,6 @@ import com.yahoo.vespa.config.protocol.Payload; import com.yahoo.vespa.config.protocol.Trace; import com.yahoo.vespa.config.util.ConfigUtils; -import java.util.Collections; import java.util.List; import java.util.Optional; @@ -30,7 +29,7 @@ import static com.yahoo.vespa.config.PayloadChecksum.Type.XXHASH64; public class ConfigTester { private static final long defaultTimeout = 10000; - private static final List<String> defContent = Collections.singletonList("bar string"); + private static final List<String> defContent = List.of("bar string"); static RawConfig fooConfig; static RawConfig barConfig; diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java index baafe2ae2dd..69f6e0e8dae 100644 --- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java +++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/MockConfigSourceClient.java @@ -5,7 +5,6 @@ import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.config.RawConfig; import com.yahoo.vespa.config.protocol.JRTServerConfigRequest; -import java.util.Collections; import java.util.List; import java.util.Optional; @@ -51,7 +50,7 @@ public class MockConfigSourceClient implements ConfigSourceClient{ @Override public List<String> getSourceConnections() { - return Collections.singletonList("N/A"); + return List.of("N/A"); } @Override diff --git a/config/src/main/java/com/yahoo/vespa/config/RawConfig.java b/config/src/main/java/com/yahoo/vespa/config/RawConfig.java index 9964e63bfd6..3f7d9c15fa7 100755..100644 --- a/config/src/main/java/com/yahoo/vespa/config/RawConfig.java +++ b/config/src/main/java/com/yahoo/vespa/config/RawConfig.java @@ -11,7 +11,6 @@ import com.yahoo.vespa.config.protocol.Payload; import com.yahoo.vespa.config.protocol.VespaVersion; import com.yahoo.vespa.config.util.ConfigUtils; -import java.util.Collections; import java.util.List; import java.util.Optional; @@ -40,7 +39,7 @@ public class RawConfig extends ConfigInstance { * @param defMd5 The md5 sum of the .def-file. */ public RawConfig(ConfigKey<?> key, String defMd5) { - this(key, defMd5, null, PayloadChecksums.empty(), 0L, false, 0, Collections.emptyList(), Optional.empty()); + this(key, defMd5, null, PayloadChecksums.empty(), 0L, false, 0, List.of(), Optional.empty()); } public RawConfig(ConfigKey<?> key, String defMd5, Payload payload, PayloadChecksums payloadChecksums, long generation, diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java index 69ec2ff2d7b..c347880f239 100644 --- a/config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java +++ b/config/src/test/java/com/yahoo/config/subscription/ConfigSubscriptionTest.java @@ -11,7 +11,6 @@ import com.yahoo.vespa.config.ConfigKey; import com.yahoo.vespa.config.TimingValues; import org.junit.Test; -import java.util.Collections; import java.util.List; import static org.junit.Assert.assertEquals; @@ -78,7 +77,7 @@ public class ConfigSubscriptionTest { @Test public void testSubscribeWithException() { TestConfigSubscriber sub = new TestConfigSubscriber(); - ConfigSourceSet configSourceSet = new ConfigSourceSet(Collections.singletonList("tcp/localhost:99999")); + ConfigSourceSet configSourceSet = new ConfigSourceSet(List.of("tcp/localhost:99999")); try { sub.subscribe(SimpletypesConfig.class, "configid", configSourceSet, new TimingValues().setSubscribeTimeout(100)); fail(); diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java index 06e5ded4cdb..c80d034a2f9 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/http/HttpConfigRequest.java @@ -19,7 +19,7 @@ import com.yahoo.vespa.config.server.http.v2.request.HttpConfigRequests; import com.yahoo.vespa.config.server.http.v2.request.TenantRequest; import com.yahoo.vespa.config.util.ConfigUtils; -import java.util.Collections; +import java.util.List; import java.util.Optional; import java.util.Set; @@ -190,7 +190,7 @@ public class HttpConfigRequest implements GetConfigRequest, TenantRequest { @Override public DefContent getDefContent() { - return DefContent.fromList(Collections.emptyList()); + return DefContent.fromList(List.of()); } @Override diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java index 801f599c2d8..34900f61463 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ConfigServerBootstrapTest.java @@ -35,7 +35,6 @@ import java.io.IOException; import java.nio.file.Paths; import java.time.Duration; import java.time.Instant; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.function.BooleanSupplier; @@ -311,7 +310,7 @@ public class ConfigServerBootstrapTest { } private Host createHost(String hostname, String version) { - return new Host(hostname, Collections.emptyList(), Optional.empty(), Optional.of(com.yahoo.component.Version.fromString(version))); + return new Host(hostname, List.of(), Optional.empty(), Optional.of(com.yahoo.component.Version.fromString(version))); } private VipStatus createVipStatus(StateMonitor stateMonitor) { diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java index af86463bb81..39f1cb70112 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java @@ -30,8 +30,8 @@ import org.xml.sax.SAXException; import java.io.File; import java.io.IOException; -import java.util.Collections; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.Optional; @@ -73,7 +73,7 @@ public class SuperModelControllerTest { public void test_unknown_config_definition() { PayloadChecksums payloadChecksums = PayloadChecksums.empty(); Request request = createWithParams(new ConfigKey<>("foo", "id", "bar", null), - DefContent.fromList(Collections.emptyList()), "fromHost", + DefContent.fromList(List.of()), "fromHost", payloadChecksums, 1, 1, Trace.createDummy(), CompressionType.UNCOMPRESSED, Optional.empty()) .getRequest(); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java b/configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java index c18dad1ea67..4025c88de32 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/application/MockModel.java @@ -48,7 +48,7 @@ public class MockModel implements Model { hostnames.forEach(hostname -> { ServiceInfo configProxy = createServiceInfo(hostname, "configproxy", "configproxy", ClusterSpec.Type.admin, rpcPort, "rpc"); - hostInfos.add(new HostInfo(hostname, Collections.singletonList(configProxy))); + hostInfos.add(new HostInfo(hostname, List.of(configProxy))); }); return new MockModel(hostInfos); } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java index 67a1a335067..68add64ddd9 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/DeployTester.java @@ -53,7 +53,6 @@ import java.time.Instant; import java.time.LocalDate; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; -import java.util.Collections; import java.util.List; import java.util.Optional; @@ -219,7 +218,7 @@ public class DeployTester { public ModelCreateResult createAndValidateModel(ModelContext modelContext, ValidationParameters validationParameters) { if ( ! validationParameters.ignoreValidationErrors()) throw new IllegalArgumentException("Model building fails"); - return new ModelCreateResult(createModel(modelContext), Collections.emptyList()); + return new ModelCreateResult(createModel(modelContext), List.of()); } } diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java index 838b1b6b209..512f4dff6b7 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/deploy/HostedDeployTest.java @@ -47,7 +47,6 @@ import java.time.Clock; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -581,7 +580,7 @@ public class HostedDeployTest { } private Host createHost(String hostname, String version) { - return new Host(hostname, Collections.emptyList(), Optional.empty(), Optional.ofNullable(version).map(Version::fromString)); + return new Host(hostname, List.of(), Optional.empty(), Optional.ofNullable(version).map(Version::fromString)); } private DeployTester createTester(List<Host> hosts, List<ModelFactory> modelFactories, Zone zone) { diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java index 2ca0155ac6f..0773ace0051 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/rpc/DelayedConfigResponseTest.java @@ -17,7 +17,6 @@ import org.junit.rules.TemporaryFolder; import java.io.IOException; import java.time.Duration; -import java.util.Collections; import java.util.List; import java.util.Optional; @@ -80,7 +79,7 @@ public class DelayedConfigResponseTest { private JRTServerConfigRequest createRequest(String configName, String configId, long generation, long timeout, String namespace) { Request request = createWithParams(new ConfigKey<>(configName, configId, namespace, null), - DefContent.fromList(Collections.emptyList()), "fromHost", + DefContent.fromList(List.of()), "fromHost", PayloadChecksums.empty(), generation, timeout, Trace.createDummy(), CompressionType.UNCOMPRESSED, Optional.empty()) .getRequest(); diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java index f736eab0576..0ec651468cd 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/session/SessionPreparerTest.java @@ -61,7 +61,6 @@ import java.security.KeyPair; import java.security.cert.X509Certificate; import java.time.Instant; import java.time.temporal.ChronoUnit; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -192,7 +191,7 @@ public class SessionPreparerTest { public void require_exception_for_overlapping_host() throws IOException { FilesApplicationPackage app = getApplicationPackage(testApp); HostRegistry hostValidator = new HostRegistry(); - hostValidator.update(applicationId("foo"), Collections.singletonList("mytesthost")); + hostValidator.update(applicationId("foo"), List.of("mytesthost")); preparer.prepare(hostValidator, new BaseDeployLogger(), new PrepareParams.Builder().applicationId(applicationId("default")).build(), Optional.empty(), Instant.now(), app.getAppDir(), app, createSessionZooKeeperClient()); } @@ -206,7 +205,7 @@ public class SessionPreparerTest { FilesApplicationPackage app = getApplicationPackage(testApp); HostRegistry hostValidator = new HostRegistry(); ApplicationId applicationId = applicationId(); - hostValidator.update(applicationId, Collections.singletonList("mytesthost")); + hostValidator.update(applicationId, List.of("mytesthost")); preparer.prepare(hostValidator, logger, new PrepareParams.Builder().applicationId(applicationId).build(), Optional.empty(), Instant.now(), app.getAppDir(), app, createSessionZooKeeperClient()); diff --git a/container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java b/container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java index 12a833881f7..d98e7e9c730 100644 --- a/container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java +++ b/container-core/src/main/java/com/yahoo/component/chain/ChainedComponent.java @@ -13,7 +13,6 @@ import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.List; /** @@ -90,7 +89,7 @@ public abstract class ChainedComponent extends AbstractComponent { Object values = annotationClass.getMethod("value").invoke(annotation); return Arrays.asList((String[])values); } - return Collections.emptyList(); + return List.of(); } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException(e); 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 29a45c10af3..b00455b1e2a 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 @@ -239,7 +239,7 @@ public class MockBundle implements Bundle, BundleWiring { @Override public Collection<String> listResources(String p1, String p2, int p3) { - return Collections.emptyList(); + return List.of(); } @Override diff --git a/container-core/src/main/java/com/yahoo/container/di/componentgraph/cycle/CycleFinder.java b/container-core/src/main/java/com/yahoo/container/di/componentgraph/cycle/CycleFinder.java index f8fa0756cb3..6364eab6d42 100644 --- a/container-core/src/main/java/com/yahoo/container/di/componentgraph/cycle/CycleFinder.java +++ b/container-core/src/main/java/com/yahoo/container/di/componentgraph/cycle/CycleFinder.java @@ -6,13 +6,11 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.logging.Logger; -import java.util.stream.Collectors; import static com.yahoo.container.di.componentgraph.cycle.CycleFinder.State.BLACK; import static com.yahoo.container.di.componentgraph.cycle.CycleFinder.State.GRAY; import static com.yahoo.container.di.componentgraph.cycle.CycleFinder.State.WHITE; import static java.util.logging.Level.FINE; -import static java.util.Collections.singletonList; /** @@ -55,7 +53,7 @@ public class CycleFinder<T> { resetState(); for (T vertex : graph.getVertices()) { if (colors.get(vertex) == WHITE) { - if (visitDepthFirst(vertex, new ArrayList<>(singletonList(vertex)))) { + if (visitDepthFirst(vertex, new ArrayList<>(List.of(vertex)))) { if (cycle == null) throw new IllegalStateException("Null cycle - this should never happen"); if (cycle.isEmpty()) throw new IllegalStateException("Empty cycle - this should never happen"); log.log(FINE, () -> "Cycle detected: " + cycle); diff --git a/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java b/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java index 020022dc9fd..10f8400fa37 100644 --- a/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java +++ b/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java @@ -22,12 +22,11 @@ import com.yahoo.jdisc.http.filter.chain.ResponseFilterChain; import com.yahoo.processing.execution.chain.ChainRegistry; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Set; import java.util.logging.Logger; -import static java.util.Collections.emptyList; +import static java.util.List.of; import static java.util.stream.Collectors.toSet; /** @@ -158,7 +157,7 @@ public class FilterChainRepository extends AbstractComponent { } private static Object wrapIfSecurityFilter(Object filter) { - if (isSecurityFilter(filter)) return createSecurityChain(Collections.singletonList(filter)); + if (isSecurityFilter(filter)) return createSecurityChain(List.of(filter)); return filter; } diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java b/container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java index e3c2d20ba51..3f32ca97a1c 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/CookieHelper.java @@ -4,7 +4,6 @@ package com.yahoo.jdisc.http; import com.yahoo.jdisc.HeaderFields; import java.util.Arrays; -import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -20,7 +19,7 @@ public class CookieHelper { public static List<Cookie> decodeSetCookieHeader(HeaderFields headers) { List<String> cookies = headers.get(HttpHeaders.Names.SET_COOKIE); if (cookies == null) { - return Collections.emptyList(); + return List.of(); } List<Cookie> ret = new LinkedList<>(); for (String cookie : cookies) { diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java index 4f1a0bf0d03..e801873e2cd 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/HttpRequest.java @@ -16,7 +16,6 @@ import java.net.InetSocketAddress; import java.net.SocketAddress; import java.net.URI; import java.security.Principal; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -226,7 +225,7 @@ public class HttpRequest extends Request { public List<Cookie> decodeCookieHeader() { List<String> cookies = headers().get(HttpHeaders.Names.COOKIE); if (cookies == null) { - return Collections.emptyList(); + return List.of(); } List<Cookie> ret = new LinkedList<>(); for (String cookie : cookies) { diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java index a1ea14d80a3..c22e4afec1c 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java @@ -242,7 +242,7 @@ public class DiscFilterRequest { public List<String> getHeadersAsList(String name) { List<String> values = parent.headers().get(name); if(values == null) { - return Collections.emptyList(); + return List.of(); } return parent.headers().get(name); } @@ -401,7 +401,7 @@ public class DiscFilterRequest { return Optional.ofNullable(parent.context().get(RequestUtils.JDISC_REQUEST_X509CERT)) .map(X509Certificate[].class::cast) .map(Arrays::asList) - .orElse(Collections.emptyList()); + .orElse(List.of()); } public void setUserRoles(String[] roles) { diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java index e6d5e67bc57..f3e722fbd61 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityResponseFilterChain.java @@ -9,7 +9,6 @@ import com.yahoo.jdisc.http.HttpRequest; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Optional; @@ -20,12 +19,14 @@ import java.util.Optional; */ public class SecurityResponseFilterChain extends AbstractResource implements ResponseFilter { - private final List<SecurityResponseFilter> filters = new ArrayList<>(); + private final List<SecurityResponseFilter> filters; private SecurityResponseFilterChain(Iterable<? extends SecurityResponseFilter> filters) { + List<SecurityResponseFilter> builder = new ArrayList<>(); for (SecurityResponseFilter filter : filters) { - this.filters.add(filter); + builder.add(filter); } + this.filters = List.copyOf(builder); } @Override @@ -51,7 +52,7 @@ public class SecurityResponseFilterChain extends AbstractResource implements Res /** Returns an unmodifiable view of the filters in this */ public List<SecurityResponseFilter> getFilters() { - return Collections.unmodifiableList(filters); + return filters; } static class RequestViewImpl implements RequestView { @@ -74,7 +75,7 @@ public class SecurityResponseFilterChain extends AbstractResource implements Res @Override public List<String> getHeaders(String name) { List<String> headers = request.headers().get(name); - return headers == null ? Collections.emptyList() : Collections.unmodifiableList(headers); + return headers == null ? List.of() : List.copyOf(headers); } @Override diff --git a/container-core/src/main/java/com/yahoo/osgi/MockOsgi.java b/container-core/src/main/java/com/yahoo/osgi/MockOsgi.java index e8a92211afb..decf7a557be 100644 --- a/container-core/src/main/java/com/yahoo/osgi/MockOsgi.java +++ b/container-core/src/main/java/com/yahoo/osgi/MockOsgi.java @@ -7,7 +7,6 @@ import com.yahoo.jdisc.test.NonWorkingOsgiFramework; import org.osgi.framework.Bundle; import org.osgi.framework.ServiceReference; -import java.util.Collections; import java.util.List; /** @@ -23,7 +22,7 @@ public class MockOsgi extends NonWorkingOsgiFramework implements Osgi { @Override public List<Bundle> getCurrentBundles() { - return Collections.emptyList(); + return List.of(); } @Override @@ -33,7 +32,7 @@ public class MockOsgi extends NonWorkingOsgiFramework implements Osgi { @Override public List<Bundle> install(String absolutePath) { - return Collections.emptyList(); + return List.of(); } } diff --git a/container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java b/container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java index d820c2812e5..ee2e920afcc 100644 --- a/container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java +++ b/container-core/src/main/java/com/yahoo/processing/response/DefaultIncomingData.java @@ -5,7 +5,6 @@ import com.yahoo.collections.Tuple2; import com.yahoo.concurrent.CompletableFutures; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @@ -60,13 +59,13 @@ public class DefaultIncomingData<DATATYPE extends Data> implements IncomingData< /** Adds new data and marks this as completed */ @Override public synchronized void addLast(DATATYPE data) { - addLast(Collections.singletonList(data)); + addLast(List.of(data)); } /** Adds new data without completing this */ @Override public synchronized void add(DATATYPE data) { - add(Collections.singletonList(data)); + add(List.of(data)); } /** Adds new data and marks this as completed */ diff --git a/container-core/src/main/java/com/yahoo/processing/response/IncomingData.java b/container-core/src/main/java/com/yahoo/processing/response/IncomingData.java index 45dec0ad2ba..fb891f0b8ea 100644 --- a/container-core/src/main/java/com/yahoo/processing/response/IncomingData.java +++ b/container-core/src/main/java/com/yahoo/processing/response/IncomingData.java @@ -3,7 +3,6 @@ package com.yahoo.processing.response; import com.yahoo.processing.impl.ProcessingFuture; -import java.util.Collections; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; @@ -158,7 +157,7 @@ public interface IncomingData<DATATYPE extends Data> { } public List<DATATYPE> drain() { - return Collections.emptyList(); + return List.of(); } /** diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java index a629acd0d1b..ab20c86ded6 100644 --- a/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java +++ b/container-core/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java @@ -9,7 +9,6 @@ import org.junit.jupiter.api.Test; import java.net.InetSocketAddress; import java.net.URI; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; @@ -98,7 +97,7 @@ public class HttpRequestTestCase { assertEquals(Long.valueOf(1000), request.getConnectionTimeout(TimeUnit.MILLISECONDS)); assertEquals(Arrays.asList("bar", "baz"), request.parameters().get("foo")); - assertEquals(Collections.singletonList("69"), request.parameters().get("cox")); + assertEquals(List.of("69"), request.parameters().get("cox")); request.parameters().put("cox", Arrays.asList("6", "9")); assertEquals(Arrays.asList("bar", "baz"), request.parameters().get("foo")); assertEquals(Arrays.asList("6", "9"), request.parameters().get("cox")); @@ -170,7 +169,7 @@ public class HttpRequestTestCase { @Test void requireThatCookieHeaderCanBeEncoded() throws Exception { final HttpRequest request = newRequest(HttpRequest.Version.HTTP_1_0); - final List<Cookie> cookies = Collections.singletonList(new Cookie("foo", "bar")); + final List<Cookie> cookies = List.of(new Cookie("foo", "bar")); request.encodeCookieHeader(cookies); final List<String> headers = request.headers().get(com.yahoo.jdisc.http.HttpHeaders.Names.COOKIE); assertEquals(1, headers.size()); @@ -180,7 +179,7 @@ public class HttpRequestTestCase { @Test void requireThatCookieHeaderCanBeDecoded() throws Exception { final HttpRequest request = newRequest(HttpRequest.Version.HTTP_1_0); - final List<Cookie> cookies = Collections.singletonList(new Cookie("foo", "bar")); + final List<Cookie> cookies = List.of(new Cookie("foo", "bar")); request.encodeCookieHeader(cookies); assertEquals(cookies, request.decodeCookieHeader()); } diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java b/container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java index da897794af2..c948251daad 100644 --- a/container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java +++ b/container-core/src/test/java/com/yahoo/jdisc/http/HttpResponseTestCase.java @@ -5,7 +5,6 @@ import com.yahoo.jdisc.Response; import org.junit.jupiter.api.Test; import java.util.Arrays; -import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.*; @@ -79,7 +78,7 @@ public class HttpResponseTestCase { @Test void requireThatCookieHeaderCanBeEncoded() throws Exception { final HttpResponse response = newResponse(69); - final List<Cookie> cookies = Collections.singletonList(new Cookie("foo", "bar")); + final List<Cookie> cookies = List.of(new Cookie("foo", "bar")); response.encodeSetCookieHeader(cookies); final List<String> headers = response.headers().get(HttpHeaders.Names.SET_COOKIE); assertEquals(1, headers.size()); @@ -100,7 +99,7 @@ public class HttpResponseTestCase { @Test void requireThatCookieHeaderCanBeDecoded() throws Exception { final HttpResponse response = newResponse(69); - final List<Cookie> cookies = Collections.singletonList(new Cookie("foo", "bar")); + final List<Cookie> cookies = List.of(new Cookie("foo", "bar")); response.encodeSetCookieHeader(cookies); assertEquals(cookies, response.decodeSetCookieHeader()); } diff --git a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java index 9c17ce7d0da..73dfb85519c 100644 --- a/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java +++ b/container-core/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpServerTest.java @@ -54,7 +54,6 @@ import java.time.Duration; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.ArrayList; -import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -667,7 +666,7 @@ public class HttpServerTest { private ResponseMetricAggregator.StatisticsEntry waitForStatistics(ResponseMetricAggregator statisticsCollector) { - List<ResponseMetricAggregator.StatisticsEntry> entries = Collections.emptyList(); + List<ResponseMetricAggregator.StatisticsEntry> entries = List.of(); int tries = 0; // Wait up to 30 seconds before giving up while (entries.isEmpty() && tries < 300) { @@ -912,7 +911,7 @@ public class HttpServerTest { @Override public ContentChannel handleRequest(final Request request, final ResponseHandler handler) { final HttpResponse response = HttpResponse.newInstance(OK); - response.encodeSetCookieHeader(Collections.singletonList(cookie)); + response.encodeSetCookieHeader(List.of(cookie)); ResponseDispatch.newInstance(response).dispatch(handler); return null; } @@ -922,8 +921,8 @@ public class HttpServerTest { @Override public ContentChannel handleRequest(final Request request, final ResponseHandler handler) { - final List<Cookie> cookies = new ArrayList<>(((HttpRequest)request).decodeCookieHeader()); - Collections.sort(cookies, new CookieComparator()); + List<Cookie> cookies = new ArrayList<>(((HttpRequest)request).decodeCookieHeader()); + cookies.sort(new CookieComparator()); final ContentChannel out = ResponseDispatch.newInstance(Response.Status.OK).connect(handler); out.write(StandardCharsets.UTF_8.encode(cookies.toString()), null); out.close(null); diff --git a/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java b/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java index 76de0767ef0..0149842393f 100644 --- a/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java +++ b/container-core/src/test/java/com/yahoo/processing/processors/MockUserDatabaseClientTest.java @@ -17,7 +17,7 @@ import org.junit.jupiter.api.Test; import java.io.ByteArrayInputStream; import java.net.URI; import java.util.Collection; -import java.util.Collections; +import java.util.List; import static org.junit.jupiter.api.Assertions.*; @@ -30,7 +30,7 @@ public class MockUserDatabaseClientTest { Request request = null; try { Chain<Processor> chain = new Chain<>("default", new MockUserDatabaseClient()); - setupJDisc(Collections.singletonList(chain)); + setupJDisc(List.of(chain)); request = createRequest(); Response response = Execution.createRoot(chain, 0, Execution.Environment.createEmpty()).process(request); MockUserDatabaseClient.User user = (MockUserDatabaseClient.User) response.data().request().properties().get("User"); diff --git a/container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java b/container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java index 1f1f1d65677..43c7ccc75b2 100644 --- a/container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java +++ b/container-core/src/test/java/com/yahoo/processing/request/test/PropertyMapTestCase.java @@ -5,7 +5,6 @@ import com.yahoo.lang.PublicCloneable; import com.yahoo.processing.request.properties.PropertyMap; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.*; @@ -24,8 +23,8 @@ public class PropertyMapTestCase { map.set("clonableArray", new ClonableObject[]{new ClonableObject()}); map.set("publicClonableArray", new ClonableObject[]{new ClonableObject()}); map.set("nonclonableArray", new NonClonableObject[]{new NonClonableObject()}); - map.set("clonableList", Collections.singletonList(new ClonableObject())); - map.set("nonclonableList", Collections.singletonList(new NonClonableObject())); + map.set("clonableList", List.of(new ClonableObject())); + map.set("nonclonableList", List.of(new NonClonableObject())); assertNotNull(map.get("clonable")); assertNotNull(map.get("nonclonable")); diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java index 6e8b8d44d0d..f0173fe4d68 100644 --- a/container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java +++ b/container-disc/src/test/java/com/yahoo/container/jdisc/component/DeconstructorTest.java @@ -13,7 +13,6 @@ import java.time.Instant; import java.util.List; import java.util.function.Supplier; -import static java.util.Collections.emptyList; import static java.util.Collections.singleton; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -33,7 +32,7 @@ public class DeconstructorTest { deconstructor = new Deconstructor(); var slowDeconstructComponent = new SlowDeconstructComponent(); - deconstructor.deconstruct(0, List.of(slowDeconstructComponent), emptyList()); + deconstructor.deconstruct(0, List.of(slowDeconstructComponent), List.of()); deconstructor.shutdown(); assertTrue(slowDeconstructComponent.destructed); } @@ -41,7 +40,7 @@ public class DeconstructorTest { @Test void require_abstract_component_destructed() throws InterruptedException { TestAbstractComponent abstractComponent = new TestAbstractComponent(); - deconstructor.deconstruct(0, List.of(abstractComponent), emptyList()); + deconstructor.deconstruct(0, List.of(abstractComponent), List.of()); waitForDeconstructToComplete(() -> abstractComponent.destructed); assertTrue(abstractComponent.destructed); @@ -50,7 +49,7 @@ public class DeconstructorTest { @Test void require_provider_destructed() throws InterruptedException { TestProvider provider = new TestProvider(); - deconstructor.deconstruct(0, List.of(provider), emptyList()); + deconstructor.deconstruct(0, List.of(provider), List.of()); waitForDeconstructToComplete(() -> provider.destructed); assertTrue(provider.destructed); @@ -59,7 +58,7 @@ public class DeconstructorTest { @Test void require_shared_resource_released() throws InterruptedException { TestSharedResource sharedResource = new TestSharedResource(); - deconstructor.deconstruct(0, List.of(sharedResource), emptyList()); + deconstructor.deconstruct(0, List.of(sharedResource), List.of()); waitForDeconstructToComplete(() -> sharedResource.released); assertTrue(sharedResource.released); } @@ -68,7 +67,7 @@ public class DeconstructorTest { void bundles_are_uninstalled() throws InterruptedException { var bundle = new UninstallableMockBundle(); // Done by executor, so it takes some time even with a 0 delay. - deconstructor.deconstruct(0, emptyList(), singleton(bundle)); + deconstructor.deconstruct(0, List.of(), singleton(bundle)); waitForDeconstructToComplete(() -> bundle.uninstalled); assertTrue(bundle.uninstalled); diff --git a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java index 6cc22beb921..9d1668ba671 100644 --- a/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java +++ b/container-messagebus/src/test/java/com/yahoo/messagebus/jdisc/MbusServerConformanceTest.java @@ -24,7 +24,7 @@ import org.junit.Test; import java.io.Closeable; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.Collections; +import java.util.List; import java.util.concurrent.BlockingDeque; import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.TimeUnit; @@ -643,7 +643,7 @@ public class MbusServerConformanceTest extends ServerProviderConformanceTest { @Override public Iterable<ByteBuffer> newResponseContent() { - return Collections.emptyList(); + return List.of(); } @Override diff --git a/container-search/src/main/java/com/yahoo/search/Query.java b/container-search/src/main/java/com/yahoo/search/Query.java index 3227b047984..4ec3fa358d2 100644 --- a/container-search/src/main/java/com/yahoo/search/Query.java +++ b/container-search/src/main/java/com/yahoo/search/Query.java @@ -772,7 +772,7 @@ public class Query extends com.yahoo.processing.Request implements Cloneable { private String serializeSortingAndLimits(boolean includeHitsAndOffset) { StringBuilder insert = new StringBuilder(); - if (getRanking().getSorting() != null && getRanking().getSorting().fieldOrders().size() > 0) { + if (getRanking().getSorting() != null && !getRanking().getSorting().fieldOrders().isEmpty()) { serializeSorting(insert); } if (includeHitsAndOffset) { diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/InvokerResult.java b/container-search/src/main/java/com/yahoo/search/dispatch/InvokerResult.java index 88d6b68a610..9c41c0b930f 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/InvokerResult.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/InvokerResult.java @@ -7,7 +7,6 @@ import com.yahoo.search.Result; import com.yahoo.search.query.Sorting; import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** @@ -22,7 +21,7 @@ public class InvokerResult { public InvokerResult(Result result) { this.result = result; - this.leanHits = Collections.emptyList(); + this.leanHits = List.of(); } public InvokerResult(Query query, int expectedHits) { @@ -54,7 +53,8 @@ public class InvokerResult { fh.setCached(false); result.hits().add(fh); } - leanHits.clear(); + if (!leanHits.isEmpty()) + leanHits.clear(); } } diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java b/container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java index 9302ce5b7c6..add562bd5ad 100644 --- a/container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java +++ b/container-search/src/main/java/com/yahoo/search/dispatch/SearchPath.java @@ -8,7 +8,6 @@ import com.yahoo.search.dispatch.searchcluster.Node; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Optional; @@ -163,7 +162,7 @@ public class SearchPath { nodes = parseNodeRange(nodes, ret); } else { if (isWildcard(nodes)) { // any node will be accepted - return Collections.emptyList(); + return List.of(); } nodes = parseNodeNum(nodes, ret); } @@ -231,7 +230,7 @@ public class SearchPath { public Collection<Integer> matches(int max) { if (from >= max) { - return Collections.emptyList(); + return List.of(); } int end = Math.min(to, max); return IntStream.range(from, end).boxed().toList(); diff --git a/container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java b/container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java index 3ad610f6ee0..da0b258d6ef 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/GroupingQueryParser.java @@ -15,7 +15,6 @@ import com.yahoo.search.query.Select; import com.yahoo.search.searchchain.Execution; import com.yahoo.search.searchchain.PhaseNames; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; @@ -83,7 +82,7 @@ public class GroupingQueryParser extends Searcher { private List<Continuation> getContinuations(String param) { if (param == null) { - return Collections.emptyList(); + return List.of(); } List<Continuation> ret = new LinkedList<>(); for (String str : param.split(" ")) { diff --git a/container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java b/container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java index 6d2b416700a..e319740f741 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/UniqueGroupingSearcher.java @@ -27,7 +27,6 @@ import com.yahoo.search.searchchain.Execution; import com.yahoo.search.searchchain.PhaseNames; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.logging.Logger; @@ -188,7 +187,7 @@ public class UniqueGroupingSearcher extends Searcher { private static List<Hit> getRequestedHits(GroupList resultGroups, int offset, int hits) { List<Hit> receivedHits = getAllHitsFromGroupingResult(resultGroups); if (receivedHits.size() <= offset) { - return Collections.emptyList(); // There weren't any hits as far out as requested. + return List.of(); // There weren't any hits as far out as requested. } int lastRequestedHit = Math.min(offset + hits, receivedHits.size()); return receivedHits.subList(offset, lastRequestedHit); diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java index b6fc0ffb968..fe49b46fc6f 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java @@ -537,12 +537,7 @@ public abstract class GroupingOperation extends GroupingNode { } else if (level == 1) { return "single group"; } else { - StringBuilder ret = new StringBuilder(); - for (int i = 1; i < level; ++i) { - ret.append("list of "); - } - ret.append("groups"); - return ret.toString(); + return "list of ".repeat(level - 1) + "groups"; } } @@ -571,8 +566,8 @@ public abstract class GroupingOperation extends GroupingNode { * @throws IllegalArgumentException thrown if the string could not be parsed */ public static List<GroupingOperation> fromStringAsList(String string) { - if (string == null || string.trim().length() == 0) { - return Collections.emptyList(); + if (string == null || string.trim().isEmpty()) { + return List.of(); } GroupingParserInput input = new GroupingParserInput(string); try { diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java index 7026e726675..a2e2bcd649a 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java @@ -1,8 +1,7 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.grouping.request; -import java.util.Arrays; -import java.util.Collections; +import java.util.List; /** * This class represents a now-function in a {@link GroupingExpression}. It evaluates to a long that equals the number @@ -21,7 +20,7 @@ public class NowFunction extends FunctionNode { } private NowFunction(String label, Integer level) { - super("now", label, level, Collections.emptyList()); + super("now", label, level, List.of()); } @Override diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java index be4f2f786e5..fba9064298c 100644 --- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java +++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java @@ -21,7 +21,6 @@ import com.yahoo.search.searchchain.Execution; import com.yahoo.searchlib.aggregation.Grouping; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; @@ -357,7 +356,7 @@ public class GroupingExecutor extends Searcher { public static List<Grouping> getGroupingList(Query query) { Object obj = query.properties().get(PROP_GROUPINGLIST); if (!(obj instanceof List)) { - return Collections.emptyList(); + return List.of(); } return (List<Grouping>)obj; } diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java index e07b290f66e..6504949e174 100644 --- a/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/PageTemplateSearcher.java @@ -23,7 +23,6 @@ import com.yahoo.search.searchchain.Execution; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -145,7 +144,7 @@ public class PageTemplateSearcher extends Searcher { // If none set, just return the default or null if none if (pageIds == null) { PageElement defaultPage=templateRegistry.getComponent("default"); - return (defaultPage == null ? Collections.<PageElement>emptyList() : Collections.singletonList(defaultPage)); + return (defaultPage == null ? List.of() : List.of(defaultPage)); } // Resolve the id list to page templates 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 7b969404984..d8cfaab7cba 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 @@ -72,7 +72,7 @@ public class PageTemplateXMLReader { File file = new File(fileName); pageReader = new NamedReader(fileName,new FileReader(file)); String firstName = file.getName().substring(0, file.getName().length() - 4); - return read(Collections.singletonList(pageReader), true).getComponent(firstName); + return read(List.of(pageReader), true).getComponent(firstName); } catch (IOException e) { throw new IllegalArgumentException("Could not read the page template '" + fileName + "'", e); @@ -296,7 +296,7 @@ public class PageTemplateXMLReader { if ("item".equals(value.getNodeName())) map.values().add(readPageElements(value)); else - map.values().add(Collections.singletonList(readPageElement(value))); + map.values().add(List.of(readPageElement(value))); } return map; } @@ -311,7 +311,7 @@ public class PageTemplateXMLReader { else if (alternative.getNodeName().equals("include")) // Implicit include choice.alternatives().add(readInclude(alternative)); else // Other implicit - choice.alternatives().add(Collections.singletonList(readPageElement(alternative))); + choice.alternatives().add(List.of(readPageElement(alternative))); } return choice; } @@ -323,7 +323,7 @@ public class PageTemplateXMLReader { if ("alternative".equals(alternative.getNodeName())) // Explicit alternative container source.renderer().alternatives().addAll(readRenderers(XML.children(alternative))); else // Implicit alternative - yes implicit and explicit may be combined - source.renderer().alternatives().addAll(readRenderers(Collections.singletonList(alternative))); + source.renderer().alternatives().addAll(readRenderers(List.of(alternative))); } } } diff --git a/container-search/src/main/java/com/yahoo/search/query/Select.java b/container-search/src/main/java/com/yahoo/search/query/Select.java index 32e28dc3ff7..6735a6bd050 100644 --- a/container-search/src/main/java/com/yahoo/search/query/Select.java +++ b/container-search/src/main/java/com/yahoo/search/query/Select.java @@ -10,7 +10,6 @@ import com.yahoo.search.query.profile.types.QueryProfileType; import com.yahoo.search.yql.VespaGroupingStep; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -53,7 +52,7 @@ public class Select implements Cloneable { } public Select(String where, String grouping, Query query) { - this(where, grouping, null, query, Collections.emptyList()); + this(where, grouping, null, query, List.of()); } private Select(String where, String grouping, String groupingExpressionString, Query query, List<GroupingRequest> groupingRequests) { diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java index 1c694417475..d638f57422c 100644 --- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java +++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfile.java @@ -121,7 +121,7 @@ public class QueryProfile extends FreezableSimpleComponent implements Cloneable */ public List<QueryProfile> inherited() { if (isFrozen()) return inherited; // Frozen profiles always have an unmodifiable, non-null list - if (inherited == null) return Collections.emptyList(); + if (inherited == null) return List.of(); return Collections.unmodifiableList(inherited); } diff --git a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java index 0ed6b590227..c9dbfe9d89a 100644 --- a/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java +++ b/container-search/src/main/java/com/yahoo/search/query/profile/QueryProfileVariants.java @@ -5,7 +5,6 @@ import com.yahoo.component.provider.Freezable; import com.yahoo.search.query.profile.types.QueryProfileType; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -187,7 +186,7 @@ public class QueryProfileVariants implements Freezable, Cloneable { * @param dimensionBinding the dimension bindings to use in this */ public Object get(String name, QueryProfileType type, boolean allowQueryProfileResult, DimensionBinding dimensionBinding) { - SingleValueQueryProfileVisitor visitor = new SingleValueQueryProfileVisitor(Collections.singletonList(name),allowQueryProfileResult); + SingleValueQueryProfileVisitor visitor = new SingleValueQueryProfileVisitor(List.of(name),allowQueryProfileResult); visitor.enter(""); accept(true, type, visitor, dimensionBinding); visitor.leave(""); @@ -370,7 +369,7 @@ public class QueryProfileVariants implements Freezable, Cloneable { /** Returns the field values (values for various dimensions) for this field as a read-only list (never null) */ public List<FieldValue> asList() { - if (resolutionList == null) return Collections.emptyList(); + if (resolutionList == null) return List.of(); return resolutionList; } diff --git a/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java b/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java index d62860afcda..74e79475ce6 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/RendererRegistry.java @@ -10,7 +10,7 @@ import com.yahoo.search.Result; import com.yahoo.search.pagetemplates.result.PageTemplatesXmlRenderer; import java.util.Collection; -import java.util.Collections; +import java.util.List; import java.util.concurrent.Executor; /** @@ -34,7 +34,7 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi * Use MoreExecutors.directExecutor(). */ public RendererRegistry(Executor executor) { - this(Collections.emptyList(), executor); + this(List.of(), executor); } /** @@ -111,7 +111,7 @@ public final class RendererRegistry extends ComponentRegistry<com.yahoo.processi private String rendererNames() { StringBuilder r = new StringBuilder(); for (Renderer<Result> c : allComponents()) { - if (r.length() > 0) + if (!r.isEmpty()) r.append(", "); r.append(c.getId().stringValue()); } diff --git a/container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java index 6f376042f2d..7bd3ca1174f 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/SectionedRenderer.java @@ -15,7 +15,6 @@ import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; @@ -156,7 +155,7 @@ abstract public class SectionedRenderer<WRITER> extends Renderer { } private void renderResultContent(WRITER writer, Result result) throws IOException { - if (result.hits().getError() != null || result.hits().getQuery().errors().size() > 0) { + if (result.hits().getError() != null || !result.hits().getQuery().errors().isEmpty()) { error(writer, asUnmodifiableSearchErrorList(result.hits().getQuery().errors(), result.hits().getError())); } @@ -172,14 +171,14 @@ abstract public class SectionedRenderer<WRITER> extends Renderer { } private Collection<ErrorMessage> asUnmodifiableSearchErrorList(List<com.yahoo.processing.request.ErrorMessage> queryErrors,ErrorMessage resultError) { - if (queryErrors.size() == 0) - return Collections.singletonList(resultError); + if (queryErrors.isEmpty()) + return List.of(resultError); List<ErrorMessage> searchErrors = new ArrayList<>(queryErrors.size() + (resultError != null ? 1 :0) ); - for (int i=0; i<queryErrors.size(); i++) - searchErrors.add(ErrorMessage.from(queryErrors.get(i))); + for (com.yahoo.processing.request.ErrorMessage queryError : queryErrors) + searchErrors.add(ErrorMessage.from(queryError)); if (resultError != null) searchErrors.add(resultError); - return Collections.unmodifiableCollection(searchErrors); + return List.copyOf(searchErrors); } private void renderHitGroup(WRITER writer, HitGroup hitGroup) throws IOException { diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java index f21ea506fde..69a1f8ec6cb 100644 --- a/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java +++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java @@ -11,7 +11,6 @@ import com.yahoo.search.searchchain.model.federation.FederationSearcherModel; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -61,7 +60,7 @@ public class VespaSearchers { private static FederationSearcherModel federationSearcherModel() { return new FederationSearcherModel(new ComponentSpecification("federation"), Dependencies.emptyDependencies(), - Collections.emptyList(), + List.of(), true); } diff --git a/container-search/src/test/java/com/yahoo/container/core/config/testutil/MockOsgiWrapper.java b/container-search/src/test/java/com/yahoo/container/core/config/testutil/MockOsgiWrapper.java index 150a2a5d78a..ebe4ccdd2ba 100644 --- a/container-search/src/test/java/com/yahoo/container/core/config/testutil/MockOsgiWrapper.java +++ b/container-search/src/test/java/com/yahoo/container/core/config/testutil/MockOsgiWrapper.java @@ -8,8 +8,6 @@ import org.osgi.framework.Bundle; import java.util.Collection; import java.util.List; -import static java.util.Collections.emptyList; - /** * @author gjoranv */ @@ -22,7 +20,7 @@ public class MockOsgiWrapper implements OsgiWrapper { @Override public List<Bundle> getCurrentBundles() { - return emptyList(); + return List.of(); } @Override @@ -32,7 +30,7 @@ public class MockOsgiWrapper implements OsgiWrapper { @Override public List<Bundle> install(String absolutePath) { - return emptyList(); + return List.of(); } @Override diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/IndexedBackendTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/IndexedBackendTestCase.java index 58427bee30a..3cefeeabdcf 100644 --- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/IndexedBackendTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/IndexedBackendTestCase.java @@ -20,7 +20,6 @@ import com.yahoo.search.schema.Schema; import com.yahoo.search.schema.SchemaInfo; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -98,7 +97,7 @@ public class IndexedBackendTestCase { var backend = new IndexedBackend(new ClusterParams(CLUSTER_PARAMS.getSearcherName(), CLUSTER_PARAMS.getServerId(), CLUSTER_PARAMS.getDefaultSummary(), CLUSTER_PARAMS.getDocumentdbInfoConfig(), new SchemaInfo(List.of(schema.build()), List.of())), - MockDispatcher.create(Collections.singletonList(new Node(CLUSTER, 0, "host0", 0)))); + MockDispatcher.create(List.of(new Node(CLUSTER, 0, "host0", 0)))); Query q = new Query("?query=foo"); Result result = doSearch(backend, q, 0, 10); assertFalse(backend.summaryNeedsQuery(q)); diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java index 8b6b3c4d13a..3053fe7d730 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java @@ -10,7 +10,6 @@ import org.junit.jupiter.api.Test; import java.time.Duration; import java.time.Instant; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -238,7 +237,7 @@ public class LoadBalancerTest { } private GroupStatus newGroupStatus(int id) { - Group dummyGroup = new Group(id, Collections.emptyList()) { + Group dummyGroup = new Group(id, List.of()) { @Override public boolean hasSufficientCoverage() { return true; diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java index be8f99a4ef4..6459d67480d 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/rpc/ProtobufSerializationTest.java @@ -14,7 +14,6 @@ import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry; import com.yahoo.search.query.profile.config.QueryProfileXMLReader; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.List; import java.util.Set; @@ -66,7 +65,7 @@ public class ProtobufSerializationTest { builder.setTimeout(0); var hit = new FastHit(); hit.setGlobalId(new GlobalId(IdString.createIdString("id:ns:type::id")).getRawId()); - var bytes = ProtobufSerialization.serializeDocsumRequest(builder, Collections.singletonList(hit)); + var bytes = ProtobufSerialization.serializeDocsumRequest(builder, List.of(hit)); assertEquals(56, bytes.length); } diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java index 76a1a71f6ed..540ecfa6e12 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java @@ -9,7 +9,6 @@ import com.yahoo.search.searchchain.Execution; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.List; import java.util.TimeZone; @@ -22,12 +21,12 @@ public class GroupingQueryParserTestCase { @Test void requireThatNoRequestIsSkipped() { - assertEquals(Collections.emptyList(), executeQuery(null, null, null)); + assertEquals(List.of(), executeQuery(null, null, null)); } @Test void requireThatEmptyRequestIsSkipped() { - assertEquals(Collections.emptyList(), executeQuery("", null, null)); + assertEquals(List.of(), executeQuery("", null, null)); } @Test diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java index 97eed95946f..f064180222c 100644 --- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java @@ -12,7 +12,6 @@ import org.junit.jupiter.api.Test; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.*; @@ -121,7 +120,7 @@ public class GroupingRequestTestCase { @Test void requireThatGetRequestsReturnsAllRequests() { Query query = new Query(); - assertEquals(Collections.emptyList(), query.getSelect().getGrouping()); + assertEquals(List.of(), query.getSelect().getGrouping()); GroupingRequest foo = GroupingRequest.newInstance(query); assertEquals(List.of(foo), query.getSelect().getGrouping()); diff --git a/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java b/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java index 42dcab41015..793a907b5d1 100644 --- a/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/query/properties/test/PropertyMapTestCase.java @@ -4,7 +4,6 @@ package com.yahoo.search.query.properties.test; import com.yahoo.processing.request.properties.PropertyMap; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -22,8 +21,8 @@ public class PropertyMapTestCase { map.set("nonclonable", new NonClonableObject()); map.set("clonableArray", new ClonableObject[]{new ClonableObject()}); map.set("nonclonableArray", new NonClonableObject[]{new NonClonableObject()}); - map.set("clonableList", Collections.singletonList(new ClonableObject())); - map.set("nonclonableList", Collections.singletonList(new NonClonableObject())); + map.set("clonableList", List.of(new ClonableObject())); + map.set("nonclonableList", List.of(new NonClonableObject())); assertNotNull(map.get("clonable")); assertNotNull(map.get("nonclonable")); diff --git a/container-search/src/test/java/com/yahoo/search/ranking/GlobalPhaseRerankHitsImplTest.java b/container-search/src/test/java/com/yahoo/search/ranking/GlobalPhaseRerankHitsImplTest.java index 39b202daf1e..b37e1d5551b 100644 --- a/container-search/src/test/java/com/yahoo/search/ranking/GlobalPhaseRerankHitsImplTest.java +++ b/container-search/src/test/java/com/yahoo/search/ranking/GlobalPhaseRerankHitsImplTest.java @@ -35,7 +35,7 @@ public class GlobalPhaseRerankHitsImplTest { } } static FunEvalSpec makeConstSpec(double constValue) { - return new FunEvalSpec(() -> new EvalSum(constValue), Collections.emptyList(), Collections.emptyList()); + return new FunEvalSpec(() -> new EvalSum(constValue), List.of(), List.of()); } static FunEvalSpec makeSumSpec(List<String> fromQuery, List<String> fromMF) { List<MatchFeatureInput> mfList = new ArrayList<>(); @@ -175,15 +175,15 @@ public class GlobalPhaseRerankHitsImplTest { } @Test void partialRerankWithRescaling() { var setup = setup().rerank(2).eval(makeConstSpec(3.0)).build(); - var query = makeQuery(Collections.emptyList()); + var query = makeQuery(List.of()); var result = makeResult(query, List.of(hit("a", 3), hit("b", 4), hit("c", 5), hit("d", 6))); var expect = Expect.make(List.of(hit("a", 1), hit("b", 2), hit("c", 3), hit("d", 3))); GlobalPhaseRanker.rerankHitsImpl(setup, query, result); expect.verifyScores(result); } @Test void matchFeaturesCanBePartiallyHidden() { - var setup = setup().eval(makeSumSpec(Collections.emptyList(), List.of("public_value", "private_value"))).hide("private_value").build(); - var query = makeQuery(Collections.emptyList()); + var setup = setup().eval(makeSumSpec(List.of(), List.of("public_value", "private_value"))).hide("private_value").build(); + var query = makeQuery(List.of()); var factory = new HitFactory(List.of("public_value", "private_value")); var result = makeResult(query, List.of(factory.create("a", 1, List.of(value("public_value", 2), value("private_value", 3))), factory.create("b", 2, List.of(value("public_value", 5), value("private_value", 7))))); @@ -194,8 +194,8 @@ public class GlobalPhaseRerankHitsImplTest { verifyDoesNotHaveMF(result, "private_value"); } @Test void matchFeaturesCanBeRemoved() { - var setup = setup().eval(makeSumSpec(Collections.emptyList(), List.of("private_value"))).hide("private_value").build(); - var query = makeQuery(Collections.emptyList()); + var setup = setup().eval(makeSumSpec(List.of(), List.of("private_value"))).hide("private_value").build(); + var query = makeQuery(List.of()); var factory = new HitFactory(List.of("private_value")); var result = makeResult(query, List.of(factory.create("a", 1, List.of(value("private_value", 3))), factory.create("b", 2, List.of(value("private_value", 7))))); @@ -227,7 +227,7 @@ public class GlobalPhaseRerankHitsImplTest { verifyHasMF(result, "bar"); } @Test void queryFeaturesCanBeDefaultValues() { - var setup = setup().eval(makeSumSpec(List.of("foo", "bar"), Collections.emptyList())) + var setup = setup().eval(makeSumSpec(List.of("foo", "bar"), List.of())) .addDefault("query(bar)", Tensor.from(5.0)).build(); var query = makeQuery(List.of(value("query(foo)", 7))); var result = makeResult(query, List.of(hit("a", 1))); @@ -236,7 +236,7 @@ public class GlobalPhaseRerankHitsImplTest { expect.verifyScores(result); } @Test void withNormalizer() { - var setup = setup().eval(makeSumSpec(Collections.emptyList(), List.of("bar"))) + var setup = setup().eval(makeSumSpec(List.of(), List.of("bar"))) .addNormalizer(makeNormalizer("foo", List.of(115.0, 65.0, 55.0, 45.0, 15.0), makeSumSpec(List.of("x"), List.of("bar")))).build(); var query = makeQuery(List.of(value("query(x)", 5))); var factory = new HitFactory(List.of("bar")); diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java index bfcde54d65b..fda7bec9d71 100644 --- a/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java @@ -16,7 +16,7 @@ import com.yahoo.search.searchchain.SearchChainRegistry; import com.yahoo.search.searchchain.model.federation.FederationOptions; import org.junit.jupiter.api.Test; -import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -82,7 +82,7 @@ public class FutureDataTestCase { void testFutureData() throws InterruptedException, ExecutionException, TimeoutException { // Set up AsyncProviderSearcher futureDataSource = new AsyncProviderSearcher(); - Chain<Searcher> chain = new Chain<>(Collections.<Searcher>singletonList(futureDataSource)); + Chain<Searcher> chain = new Chain<>(List.of(futureDataSource)); // Execute Query query = new Query(); diff --git a/docproc/src/main/java/com/yahoo/docproc/Processing.java b/docproc/src/main/java/com/yahoo/docproc/Processing.java index cc9d7b9e8b7..c8c536cb4c1 100644 --- a/docproc/src/main/java/com/yahoo/docproc/Processing.java +++ b/docproc/src/main/java/com/yahoo/docproc/Processing.java @@ -9,7 +9,6 @@ import com.yahoo.document.DocumentOperation; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -221,7 +220,7 @@ public final class Processing extends ProcessingAccess { @Override protected List<DocumentOperation> getOnceOperationsToBeProcessed() { if (operationsGotten) - return Collections.emptyList(); + return List.of(); operationsGotten = true; return getDocumentOperations(); diff --git a/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java b/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java index 2f07958e39e..7abfdc324b3 100644 --- a/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java +++ b/docprocs/src/test/java/com/yahoo/docprocs/indexing/DocumentScriptTestCase.java @@ -21,7 +21,6 @@ import com.yahoo.document.fieldpathupdate.AssignFieldPathUpdate; import com.yahoo.document.fieldpathupdate.FieldPathUpdate; import com.yahoo.document.update.AssignValueUpdate; import com.yahoo.document.update.FieldUpdate; -import com.yahoo.document.update.MapValueUpdate; import com.yahoo.document.update.ValueUpdate; import com.yahoo.vespa.indexinglanguage.AdapterFactory; import com.yahoo.vespa.indexinglanguage.SimpleAdapterFactory; @@ -33,8 +32,7 @@ import com.yahoo.vespa.indexinglanguage.parser.ParseException; import org.junit.Test; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; +import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -160,7 +158,7 @@ public class DocumentScriptTestCase { assertSpanTrees(str, "mySpanTree"); } - private class FieldPathFixture { + private static class FieldPathFixture { final DocumentType type; final StructDataType structType; final DataType structMap; @@ -264,7 +262,7 @@ public class DocumentScriptTestCase { } private static DocumentScript newScript(DocumentType docType, String fieldName) { - return new DocumentScript(docType.getName(), Collections.singletonList(fieldName), + return new DocumentScript(docType.getName(), List.of(fieldName), new StatementExpression(new InputExpression(fieldName), new IndexExpression(fieldName))); } @@ -285,7 +283,7 @@ public class DocumentScriptTestCase { private static void assertSpanTrees(FieldValue actual, String... expectedSpanTrees) { assertTrue(actual instanceof StringFieldValue); StringFieldValue str = (StringFieldValue)actual; - assertEquals(new ArrayList<>(Arrays.asList(expectedSpanTrees)), + assertEquals(List.of(expectedSpanTrees), new ArrayList<>(str.getSpanTreeMap().keySet())); } @@ -359,7 +357,7 @@ public class DocumentScriptTestCase { } private static DocumentScript newScript() throws ParseException { - return new DocumentScript("documentType", Arrays.asList("documentField"), + return new DocumentScript("documentType", List.of("documentField"), Expression.fromString("input documentField | index documentField")); } } diff --git a/document/src/main/java/com/yahoo/document/FieldPath.java b/document/src/main/java/com/yahoo/document/FieldPath.java index b78e48d2b41..7596e359d99 100755..100644 --- a/document/src/main/java/com/yahoo/document/FieldPath.java +++ b/document/src/main/java/com/yahoo/document/FieldPath.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.document; -import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -19,7 +18,7 @@ public class FieldPath implements Iterable<FieldPathEntry> { * Constructs an empty path. */ public FieldPath() { - list = Collections.emptyList(); + list = List.of(); } /** @@ -109,7 +108,7 @@ public class FieldPath implements Iterable<FieldPathEntry> { FieldPathEntry.Type type = entry.getType(); switch (type) { case STRUCT_FIELD: - if (out.length() > 0) { + if (!out.isEmpty()) { out.append("."); } Field field = entry.getFieldRef(); diff --git a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java index 656fb8dd033..334a994ebe8 100644 --- a/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java +++ b/document/src/main/java/com/yahoo/vespaxmlparser/VespaXMLUpdateReader.java @@ -1,7 +1,17 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespaxmlparser; -import com.yahoo.document.*; +import com.yahoo.document.ArrayDataType; +import com.yahoo.document.DataType; +import com.yahoo.document.DocumentId; +import com.yahoo.document.DocumentType; +import com.yahoo.document.DocumentTypeManager; +import com.yahoo.document.DocumentUpdate; +import com.yahoo.document.Field; +import com.yahoo.document.FieldPath; +import com.yahoo.document.MapDataType; +import com.yahoo.document.NumericDataType; +import com.yahoo.document.WeightedSetDataType; import com.yahoo.document.datatypes.Array; import com.yahoo.document.datatypes.FieldValue; import com.yahoo.document.datatypes.IntegerFieldValue; diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java index 0a0fc5f4991..5eb5b6f2567 100755..100644 --- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java +++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/DocumentProtocol.java @@ -16,7 +16,6 @@ import com.yahoo.messagebus.routing.RoutingPolicy; import com.yahoo.text.Utf8String; import com.yahoo.vespa.config.content.DistributionConfig; -import java.util.Collections; import java.util.HashSet; import java.util.LinkedList; import java.util.List; @@ -283,7 +282,7 @@ public class DocumentProtocol implements Protocol { // Prepare version specifications to use when adding routable factories. VersionSpecification version6 = new VersionSpecification(6, 221); - List<VersionSpecification> from6 = Collections.singletonList(version6); + List<VersionSpecification> from6 = List.of(version6); // 6.x serialization (keep alphabetized please) putRoutableFactory(MESSAGE_CREATEVISITOR, new RoutableFactories60.CreateVisitorMessageFactory(), from6); @@ -322,7 +321,7 @@ public class DocumentProtocol implements Protocol { private void registerV8Factories() { var version8 = new VersionSpecification(8, 310); // Must be same as in C++ impl - var from8 = Collections.singletonList(version8); + var from8 = List.of(version8); putRoutableFactory(MESSAGE_CREATEVISITOR, RoutableFactories80.createCreateVisitorMessageFactory(), from8); putRoutableFactory(MESSAGE_DESTROYVISITOR, RoutableFactories80.createDestroyVisitorMessageFactory(), from8); diff --git a/hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java b/hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java index ca4e6f6963c..f5674b15a79 100644 --- a/hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java +++ b/hosted-api/src/test/java/ai/vespa/hosted/api/TestDescriptorTest.java @@ -5,7 +5,6 @@ import com.yahoo.test.json.JsonTestHelper; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.List; /** @@ -31,13 +30,13 @@ public class TestDescriptorTest { Assertions.assertIterableEquals(List.of("ai.vespa.test.SystemTest1", "ai.vespa.test.SystemTest2"), systemTests); var stagingTests = testClassDescriptor.getConfiguredTests(TestDescriptor.TestCategory.stagingtest); - Assertions.assertIterableEquals(Collections.emptyList(), stagingTests); + Assertions.assertIterableEquals(List.of(), stagingTests); var stagingSetupTests = testClassDescriptor.getConfiguredTests(TestDescriptor.TestCategory.stagingtest); - Assertions.assertIterableEquals(Collections.emptyList(), stagingSetupTests); + Assertions.assertIterableEquals(List.of(), stagingSetupTests); var productionTests = testClassDescriptor.getConfiguredTests(TestDescriptor.TestCategory.productiontest); - Assertions.assertIterableEquals(Collections.emptyList(), productionTests); + Assertions.assertIterableEquals(List.of(), productionTests); } @Test diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java index 7d180b9fd7a..929f51f0fef 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java @@ -14,7 +14,6 @@ import com.yahoo.vespa.indexinglanguage.parser.ParseException; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -26,7 +25,7 @@ import java.util.Objects; public final class ScriptExpression extends ExpressionList<StatementExpression> { public ScriptExpression() { - this(Collections.emptyList()); + this(List.of()); } public ScriptExpression(StatementExpression... statements) { diff --git a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java index 30af4a9ac23..1da5b1b39a3 100644 --- a/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java +++ b/jdisc-security-filters/src/test/java/com/yahoo/jdisc/http/filter/security/misc/VespaTlsFilterTest.java @@ -17,7 +17,6 @@ import java.math.BigInteger; import java.security.cert.X509Certificate; import java.time.Instant; import java.time.temporal.ChronoUnit; -import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -28,7 +27,7 @@ public class VespaTlsFilterTest { @Test void testFilter() { assertSuccess(createRequest(List.of(createCertificate()))); - assertForbidden(createRequest(Collections.emptyList())); + assertForbidden(createRequest(List.of())); } private static X509Certificate createCertificate() { diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java index 60ca0851fd4..1e0050335dc 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/BundleInstaller.java @@ -5,11 +5,9 @@ import com.google.inject.Inject; import org.osgi.framework.Bundle; import org.osgi.framework.BundleException; -import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import static java.util.Collections.singletonList; /** * <p>This is a utility class to help with installing, starting, stopping and uninstalling OSGi Bundles. You can choose @@ -30,7 +28,7 @@ public final class BundleInstaller { } public List<Bundle> installAndStart(String... locations) throws BundleException { - return installAndStart(Arrays.asList(locations)); + return installAndStart(List.of(locations)); } public List<Bundle> installAndStart(Iterable<String> locations) throws BundleException { @@ -56,7 +54,7 @@ public final class BundleInstaller { } public void stopAndUninstall(Bundle... bundles) throws BundleException { - stopAndUninstall(Arrays.asList(bundles)); + stopAndUninstall(List.of(bundles)); } public void stopAndUninstall(Iterable<Bundle> bundles) throws BundleException { @@ -76,7 +74,7 @@ public final class BundleInstaller { throw new BundleException("OSGi header '" + OsgiHeader.APPLICATION + "' not allowed for " + "non-application bundle " + bundle.getSymbolicName() + "."); } - osgiFramework.startBundles(singletonList(bundle), false); + osgiFramework.startBundles(List.of(bundle), false); } private void stop(Bundle bundle) throws BundleException { diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java index 6550d9b5386..8b3fe4c13aa 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/application/ContainerBuilder.java @@ -8,7 +8,6 @@ import com.google.inject.Module; import com.yahoo.jdisc.Container; import com.yahoo.jdisc.handler.RequestHandler; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -107,7 +106,7 @@ public class ContainerBuilder { public static List<String> safeStringSplit(Object obj, String delim) { if (!(obj instanceof String)) { - return Collections.emptyList(); + return List.of(); } List<String> lst = new LinkedList<>(); for (String str : ((String)obj).split(delim)) { diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java b/jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java index edd4dd40496..b2a8660e2a8 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/core/Main.java @@ -6,8 +6,7 @@ import com.yahoo.jdisc.application.ContainerBuilder; import com.yahoo.jdisc.application.OsgiFramework; import java.io.IOException; -import java.util.Arrays; -import java.util.Collections; +import java.util.List; /** * @author Simon Thoresen Hult @@ -31,7 +30,7 @@ public class Main { static Iterable<Module> newConfigModule() { String configFile = System.getProperty("jdisc.config.file"); if (configFile == null) { - return Collections.emptyList(); + return List.of(); } Module configModule; try { @@ -39,7 +38,7 @@ public class Main { } catch (IOException e) { throw new IllegalStateException("Exception thrown while reading config file '" + configFile + "'.", e); } - return Arrays.asList(configModule); + return List.of(configModule); } } diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java index ef420d69f16..c39a70c7093 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java @@ -8,7 +8,7 @@ import com.yahoo.jdisc.Response; import com.yahoo.jdisc.SharedResource; import java.nio.ByteBuffer; -import java.util.Collections; +import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; @@ -35,7 +35,7 @@ import java.util.concurrent.TimeoutException; * } * @Override * protected Iterable<ByteBuffer> requestContent() { - * return Collections.singleton(ByteBuffer.wrap(new byte[] { 6, 9 })); + * return Set.of(ByteBuffer.wrap(new byte[] { 6, 9 })); * } * @Override * public ContentChannel handleResponse(Response response) { @@ -69,7 +69,7 @@ public abstract class RequestDispatch implements Future<Response>, ResponseHandl * @return The ByteBuffers to write to the Request's ContentChannel. */ protected Iterable<ByteBuffer> requestContent() { - return Collections.emptyList(); + return List.of(); } /** diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java index ff1f23917d7..0670aa5ea67 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/ResponseDispatch.java @@ -5,8 +5,7 @@ import com.yahoo.jdisc.Response; import com.yahoo.jdisc.SharedResource; import java.nio.ByteBuffer; -import java.util.Arrays; -import java.util.Collections; +import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; @@ -28,7 +27,7 @@ import java.util.concurrent.TimeoutException; * } * @Override * protected Iterable<ByteBuffer> responseContent() { - * return Collections.singleton(ByteBuffer.wrap(new byte[] { 6, 9 })); + * return Set.of(ByteBuffer.wrap(new byte[] { 6, 9 })); * } * }.dispatch(handler); * } @@ -56,7 +55,7 @@ public abstract class ResponseDispatch implements Future<Boolean> { * @return The ByteBuffers to write to the Response's ContentChannel. */ protected Iterable<ByteBuffer> responseContent() { - return Collections.emptyList(); + return List.of(); } /** @@ -130,7 +129,7 @@ public abstract class ResponseDispatch implements Future<Boolean> { * @return The created ResponseDispatch. */ public static ResponseDispatch newInstance(int responseStatus, ByteBuffer... content) { - return newInstance(new Response(responseStatus), Arrays.asList(content)); + return newInstance(new Response(responseStatus), List.of(content)); } /** @@ -155,7 +154,7 @@ public abstract class ResponseDispatch implements Future<Boolean> { * @return The created ResponseDispatch. */ public static ResponseDispatch newInstance(Response response, ByteBuffer... content) { - return newInstance(response, Arrays.asList(content)); + return newInstance(response, List.of(content)); } /** diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java index 1b90e8adcfe..3565a1ec4c5 100644 --- a/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java +++ b/jdisc_core/src/main/java/com/yahoo/jdisc/test/NonWorkingOsgiFramework.java @@ -6,7 +6,6 @@ import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import java.util.Collection; -import java.util.Collections; import java.util.List; /** @@ -36,12 +35,12 @@ public class NonWorkingOsgiFramework implements OsgiFramework { @Override public List<Bundle> bundles() { - return Collections.emptyList(); + return List.of(); } @Override public List<Bundle> getBundles(Bundle requestingBundle) { - return Collections.emptyList(); + return List.of(); } @Override diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java index fa949ccaabd..063ddc81f45 100644 --- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java +++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/UriPatternTestCase.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; import java.net.URI; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -20,7 +19,7 @@ import static org.junit.jupiter.api.Assertions.fail; */ public class UriPatternTestCase { - private static final List<String> NO_GROUPS = Collections.emptyList(); + private static final List<String> NO_GROUPS = List.of(); @Test void requireThatIllegalPatternsAreDetected() { diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java index dfc52b92583..af3fa418556 100644 --- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java +++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java @@ -17,7 +17,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ThreadFactory; -import static java.util.Collections.emptyList; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -40,7 +39,7 @@ public class ApplicationEnvironmentModuleTestCase { expected.add(entry.getKey().getTypeLiteral().getRawType()); } - ApplicationLoader loader = new ApplicationLoader(new NonWorkingOsgiFramework(), emptyList()); + ApplicationLoader loader = new ApplicationLoader(new NonWorkingOsgiFramework(), List.of()); injector = Guice.createInjector(new ApplicationEnvironmentModule(loader)); for (Map.Entry<Key<?>, Binding<?>> entry : injector.getBindings().entrySet()) { assertNotNull(expected.remove(entry.getKey().getTypeLiteral().getRawType())); @@ -50,7 +49,7 @@ public class ApplicationEnvironmentModuleTestCase { @Test void requireThatContainerBuilderCanBeInjected() { - ApplicationLoader loader = new ApplicationLoader(new NonWorkingOsgiFramework(), emptyList()); + ApplicationLoader loader = new ApplicationLoader(new NonWorkingOsgiFramework(), List.of()); assertNotNull(new ApplicationEnvironmentModule(loader).containerBuilder()); assertNotNull(Guice.createInjector(new ApplicationEnvironmentModule(loader)) .getInstance(ContainerBuilder.class)); diff --git a/jrt/tests/com/yahoo/jrt/CryptoUtils.java b/jrt/tests/com/yahoo/jrt/CryptoUtils.java index 7bad0e64aa8..772e7722391 100644 --- a/jrt/tests/com/yahoo/jrt/CryptoUtils.java +++ b/jrt/tests/com/yahoo/jrt/CryptoUtils.java @@ -25,7 +25,6 @@ import static com.yahoo.security.X509CertificateBuilder.generateRandomSerialNumb import static java.time.Instant.EPOCH; import static java.time.temporal.ChronoUnit.DAYS; import static java.util.Collections.singleton; -import static java.util.Collections.singletonList; /** * @author bjorncs @@ -42,8 +41,7 @@ class CryptoUtils { singleton( new PeerPolicy( "localhost-policy", - singletonList( - RequiredPeerCredential.of(Field.CN, "localhost"))))); + List.of(RequiredPeerCredential.of(Field.CN, "localhost"))))); static TlsContext createTestTlsContext() { return DefaultTlsContext.of( diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java index b610c57cd99..60e85f3f9e4 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/MetricsManager.java @@ -13,7 +13,6 @@ import ai.vespa.metricsproxy.service.VespaServices; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -107,7 +106,7 @@ public class MetricsManager { * NOTE: Use {@link #getMetrics(List, Instant)} instead, unless further processing of the metrics is necessary. */ public List<MetricsPacket.Builder> getMetricsAsBuilders(List<VespaService> services, Instant startTime, ConsumerId consumerId) { - if (services.isEmpty()) return Collections.emptyList(); + if (services.isEmpty()) return List.of(); log.log(FINE, () -> "Updating services prior to fetching metrics, number of services= " + services.size()); vespaServices.updateServices(services); @@ -164,7 +163,7 @@ public class MetricsManager { * @return Health metrics for all matching services. */ public List<MetricsPacket> getHealthMetrics(List<VespaService> services) { - if (services.isEmpty()) return Collections.emptyList(); + if (services.isEmpty()) return List.of(); vespaServices.updateServices(services); // TODO: Add global dimensions to health metrics? @@ -190,7 +189,7 @@ public class MetricsManager { public void purgeExtraMetrics() { extraDimensions = new HashMap<>(); - externalMetrics.setExtraMetrics(Collections.emptyList()); + externalMetrics.setExtraMetrics(List.of()); } /** diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java index 9fe5983d5b9..4dabc7a66d8 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/core/VespaMetrics.java @@ -17,7 +17,6 @@ import ai.vespa.metricsproxy.service.VespaService; import java.time.Instant; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -140,7 +139,7 @@ public class VespaMetrics { if ( ! configuredDimensions.isEmpty()) { Map<DimensionId, String> dims = new HashMap<>(dimensions); configuredDimensions.forEach(d -> dims.put(d.key(), d.value())); - dimensions = Collections.unmodifiableMap(dims); + dimensions = Map.copyOf(dims); } return dimensions; } @@ -222,10 +221,10 @@ public class VespaMetrics { } private List<ConfiguredMetric> getMetricDefinitions(ConsumerId consumer) { - if (metricsConsumers == null) return Collections.emptyList(); + if (metricsConsumers == null) return List.of(); List<ConfiguredMetric> definitions = metricsConsumers.getMetricDefinitions(consumer); - return definitions == null ? Collections.emptyList() : definitions; + return definitions == null ? List.of() : definitions; } private static void setMetaInfo(MetricsPacket.Builder builder, Instant timestamp) { diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java index c32e90ecc9f..3d2bf7aaecf 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/GenericJsonUtil.java @@ -18,8 +18,7 @@ import static ai.vespa.metricsproxy.metric.ExternalMetrics.VESPA_NODE_SERVICE_ID import static ai.vespa.metricsproxy.metric.model.DimensionId.toDimensionId; import static ai.vespa.metricsproxy.metric.model.MetricId.toMetricId; import static ai.vespa.metricsproxy.metric.model.json.JacksonUtil.objectMapper; -import static java.util.Collections.emptyList; -import static java.util.Collections.singletonList; + import static java.util.logging.Level.WARNING; import static java.util.stream.Collectors.toList; @@ -90,7 +89,7 @@ public class GenericJsonUtil { return toMetricsPackets(jsonModel); } catch (IOException e) { log.log(WARNING, "Could not create metrics packet from string:\n" + jsonString, e); - return emptyList(); + return List.of(); } } @@ -106,7 +105,7 @@ public class GenericJsonUtil { if (node == null) return packets; if (node.metrics == null || node.metrics.isEmpty()) { - return singletonList(new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID) + return List.of(new MetricsPacket.Builder(VESPA_NODE_SERVICE_ID) .statusCode(StatusCode.UP.ordinal()) .timestamp(node.timestamp)); } @@ -124,7 +123,7 @@ public class GenericJsonUtil { private static List<MetricsPacket.Builder> toServicePackets(GenericService service) { List<MetricsPacket.Builder> packets = new ArrayList<>(); if (service.metrics == null || service.metrics.isEmpty()) - return singletonList(newServicePacket(service)); + return List.of(newServicePacket(service)); for (var genericMetrics : service.metrics) { var packet = newServicePacket(service); diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java index 82049da5115..649a4978ed9 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/json/YamasJsonUtil.java @@ -21,7 +21,6 @@ import java.util.stream.Collectors; import static ai.vespa.metricsproxy.http.ValuesFetcher.defaultMetricsConsumerId; import static ai.vespa.metricsproxy.metric.model.json.JacksonUtil.objectMapper; -import static java.util.Collections.emptyList; import static java.util.logging.Level.WARNING; /** @@ -65,7 +64,7 @@ public class YamasJsonUtil { return packets; } catch (IOException e) { log.log(WARNING, "Could not create metrics packet from string:\n" + jsonString, e); - return emptyList(); + return List.of(); } } diff --git a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java index 973e1adb96d..d7436ccf404 100644 --- a/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java +++ b/metrics-proxy/src/main/java/ai/vespa/metricsproxy/metric/model/prometheus/PrometheusUtil.java @@ -13,9 +13,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import static java.util.Collections.emptyList; -import static java.util.Collections.singletonList; - /** * @author yj-jtakagi * @author gjoranv @@ -62,7 +59,7 @@ public class PrometheusUtil { var statusMetricName = serviceName + "_status"; // MetricsPacket status 0 means OK, but it's the opposite in Prometheus. var statusMetricValue = (firstPacket.statusCode == 0) ? 1 : 0; - var sampleList = singletonList(new Sample(statusMetricName, emptyList(), emptyList(), + var sampleList = List.of(new Sample(statusMetricName, List.of(), List.of(), statusMetricValue, firstPacket.timestamp * 1000)); metricFamilySamples.add(new MetricFamilySamples(statusMetricName, Collector.Type.UNKNOWN, "status of service", sampleList)); } diff --git a/metrics/src/test/java/ai/vespa/metrics/MetricSetTest.java b/metrics/src/test/java/ai/vespa/metrics/MetricSetTest.java index db6f5457b5b..962d3c1f1d6 100644 --- a/metrics/src/test/java/ai/vespa/metrics/MetricSetTest.java +++ b/metrics/src/test/java/ai/vespa/metrics/MetricSetTest.java @@ -10,7 +10,6 @@ import java.util.EnumSet; import java.util.List; import java.util.Map; -import static java.util.Collections.emptyList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -23,7 +22,7 @@ public class MetricSetTest { void metrics_from_children_are_added() { MetricSet child1 = new MetricSet("child1", List.of(new Metric("child1_metric"))); MetricSet child2 = new MetricSet("child2", List.of(new Metric("child2_metric"))); - MetricSet parent = new MetricSet("parent", emptyList(), List.of(child1, child2)); + MetricSet parent = new MetricSet("parent", List.of(), List.of(child1, child2)); Map<String, Metric> parentMetrics = parent.getMetrics(); assertEquals(2, parentMetrics.size()); @@ -34,7 +33,7 @@ public class MetricSetTest { @Test void adding_the_same_child_set_twice_has_no_effect() { MetricSet child = new MetricSet("child", List.of(new Metric("child_metric"))); - MetricSet parent = new MetricSet("parent", emptyList(), List.of(child, child)); + MetricSet parent = new MetricSet("parent", List.of(), List.of(child, child)); Map<String, Metric> parentMetrics = parent.getMetrics(); assertEquals(1, parentMetrics.size()); diff --git a/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java b/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java index 0e2a27952ef..e396020ad7a 100644 --- a/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java +++ b/model-evaluation/src/main/java/ai/vespa/models/evaluation/RankProfilesConfigImporter.java @@ -27,7 +27,6 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -104,7 +103,7 @@ public class RankProfilesConfigImporter { if (externalReference.isPresent()) { RankingExpression expression = largeExpressions.get(property.value()); ExpressionFunction function = new ExpressionFunction(externalReference.get().functionName(), - Collections.emptyList(), + List.of(), expression); if (externalReference.get().isFree()) // make available in model under configured name @@ -115,7 +114,7 @@ public class RankProfilesConfigImporter { else if (reference.isPresent()) { RankingExpression expression = new RankingExpression(reference.get().functionName(), property.value()); ExpressionFunction function = new ExpressionFunction(reference.get().functionName(), - Collections.emptyList(), + List.of(), expression); if (reference.get().isFree()) // make available in model under configured name diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java index e985b6d2956..dbd17d96d4f 100644 --- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java +++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Argument.java @@ -8,7 +8,6 @@ import com.yahoo.tensor.evaluation.VariableTensor; import com.yahoo.tensor.functions.Rename; import com.yahoo.tensor.functions.TensorFunction; -import java.util.Collections; import java.util.List; public class Argument extends IntermediateOperation { @@ -16,7 +15,7 @@ public class Argument extends IntermediateOperation { private OrderedTensorType standardNamingType; // using standard naming convention: d0, d1, ... public Argument(String modelName, String nodeName, OrderedTensorType type) { - super(modelName, nodeName, Collections.emptyList()); + super(modelName, nodeName, List.of()); this.type = type.rename(vespaName() + "_"); standardNamingType = OrderedTensorType.standardType(type); } diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java index 91c46d1232e..1d430611c49 100644 --- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java +++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Constant.java @@ -7,14 +7,13 @@ import com.yahoo.searchlib.rankingexpression.Reference; import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.tensor.functions.TensorFunction; -import java.util.Collections; import java.util.List; import java.util.Optional; public class Constant extends IntermediateOperation { public Constant(String modelName, String nodeName, OrderedTensorType type) { - super(modelName, nodeName, Collections.emptyList()); + super(modelName, nodeName, List.of()); this.type = type.rename(vespaName() + "_"); } diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java index 52de27891cf..d9f4a4b7f4c 100644 --- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java +++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/IntermediateOperation.java @@ -53,7 +53,7 @@ public abstract class IntermediateOperation { private final List<String> importWarnings = new ArrayList<>(); private Value constantValue = null; - private List<IntermediateOperation> controlInputs = Collections.emptyList(); + private List<IntermediateOperation> controlInputs = List.of(); protected Function<OrderedTensorType, Value> constantValueFunction = null; @@ -259,7 +259,7 @@ public abstract class IntermediateOperation { if (result == DoubleValue.NaN) { if (constantValue != null) { result = constantValue; - } else if (inputs.size() == 0) { + } else if (inputs.isEmpty()) { if (getConstantValue().isEmpty()) { throw new IllegalArgumentException("Error in evaluating constant for " + name); } @@ -278,7 +278,7 @@ public abstract class IntermediateOperation { /** Insert an operation between an input and this one */ public void insert(IntermediateOperation operationToInsert, int inputNumber) { - if ( operationToInsert.inputs.size() > 0 ) { + if (!operationToInsert.inputs.isEmpty()) { throw new IllegalArgumentException("Operation to insert to '" + name + "' has " + "existing inputs which is not supported."); } @@ -336,7 +336,7 @@ public abstract class IntermediateOperation { public abstract IntermediateOperation withInputs(List<IntermediateOperation> inputs); String asString(Optional<OrderedTensorType> type) { - return type.map(t -> t.toString()).orElse("(unknown)"); + return type.map(OrderedTensorType::toString).orElse("(unknown)"); } /** @@ -373,7 +373,7 @@ public abstract class IntermediateOperation { public String toFullString() { return "\t" + type + ":\t" + operationName() + "(" + - inputs().stream().map(input -> input.toFullString()).collect(Collectors.joining(", ")) + + inputs().stream().map(IntermediateOperation::toFullString).collect(Collectors.joining(", ")) + ")"; } diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java index ba056d362ac..fa115d8af97 100644 --- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java +++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/NoOp.java @@ -5,13 +5,12 @@ import ai.vespa.rankingexpression.importer.OrderedTensorType; import com.yahoo.searchlib.rankingexpression.Reference; import com.yahoo.tensor.functions.TensorFunction; -import java.util.Collections; import java.util.List; public class NoOp extends IntermediateOperation { public NoOp(String modelName, String nodeName, List<IntermediateOperation> inputs) { - super(modelName, nodeName, Collections.emptyList()); // don't propagate inputs + super(modelName, nodeName, List.of()); // don't propagate inputs } @Override diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java index dff548cf319..2e48d65fce2 100644 --- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java +++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/OnnxConstant.java @@ -9,7 +9,6 @@ import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.functions.TensorFunction; -import java.util.Collections; import java.util.List; import java.util.Optional; @@ -31,7 +30,7 @@ public class OnnxConstant extends IntermediateOperation { if (value instanceof TensorValue) { type = OrderedTensorType.fromSpec(value.type().toString()).rename(vespaName() + "_"); } else { - type = OrderedTensorType.fromDimensionList(TensorType.Value.DOUBLE, Collections.emptyList()); + type = OrderedTensorType.fromDimensionList(TensorType.Value.DOUBLE, List.of()); } return type; } diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Rename.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Rename.java index 5a7bbc95889..068c06acd8c 100644 --- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Rename.java +++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Rename.java @@ -7,7 +7,6 @@ import com.yahoo.searchlib.rankingexpression.Reference; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.functions.TensorFunction; -import java.util.Collections; import java.util.List; /** @@ -20,7 +19,7 @@ public class Rename extends IntermediateOperation { private String from, to; public Rename(String modelName, String from, String to, IntermediateOperation input) { - super(modelName, "rename", input != null ? List.of(input) : Collections.emptyList()); + super(modelName, "rename", input != null ? List.of(input) : List.of()); this.from = from; this.to = to; } diff --git a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Softmax.java b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Softmax.java index c4d728e9661..6d0a6c3b04b 100644 --- a/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Softmax.java +++ b/model-integration/src/main/java/ai/vespa/rankingexpression/importer/operations/Softmax.java @@ -10,7 +10,6 @@ import com.yahoo.tensor.functions.ScalarFunctions; import com.yahoo.tensor.functions.TensorFunction; import java.util.ArrayList; -import java.util.Collections; import java.util.List; /** @@ -77,7 +76,7 @@ public class Softmax extends IntermediateOperation { private class SoftmaxPartialOperation extends IntermediateOperation { private SoftmaxPartialOperation(String modelName, String nodeName, List<IntermediateOperation> inputs) { - super(modelName, nodeName + "_partial" , inputs != null ? inputs : Collections.emptyList()); + super(modelName, nodeName + "_partial" , inputs != null ? inputs : List.of()); } @Override diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDb.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDb.java index d511570881b..d2edaaf3737 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDb.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDb.java @@ -157,7 +157,7 @@ public class CuratorDb { * @return the nodes in their persisted state */ public List<Node> writeTo(List<Node> nodes, Agent agent, Optional<String> reason) { - if (nodes.isEmpty()) return Collections.emptyList(); + if (nodes.isEmpty()) return List.of(); List<Node> writtenNodes = new ArrayList<>(nodes.size()); @@ -191,7 +191,7 @@ public class CuratorDb { } public Node writeTo(Node.State toState, Node node, Agent agent, Optional<String> reason) { - return writeTo(toState, Collections.singletonList(node), agent, reason).get(0); + return writeTo(toState, List.of(node), agent, reason).get(0); } /** diff --git a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/ApplicationReferenceList.java b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/ApplicationReferenceList.java index bcbd0d2f3b8..b91271c1adf 100644 --- a/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/ApplicationReferenceList.java +++ b/orchestrator-restapi/src/main/java/com/yahoo/vespa/orchestrator/restapi/wire/ApplicationReferenceList.java @@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Collections; import java.util.List; /** @@ -17,5 +16,5 @@ import java.util.List; @JsonInclude(JsonInclude.Include.NON_NULL) public class ApplicationReferenceList { @JsonProperty("applications") - public List<UrlReference> applicationList = Collections.emptyList(); + public List<UrlReference> applicationList = List.of(); } diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java index 7dccaad1b1c..db5beafac81 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/model/ClusterApiImplTest.java @@ -28,7 +28,6 @@ import java.time.Duration; import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Optional; @@ -73,7 +72,7 @@ public class ClusterApiImplTest { modelUtils.createServiceInstance("service-5", hostName5, ServiceStatus.UP) ) ); - modelUtils.createApplicationInstance(Collections.singletonList(serviceCluster)); + modelUtils.createApplicationInstance(List.of(serviceCluster)); modelUtils.createNode(hostName1, HostStatus.NO_REMARKS); modelUtils.createNode(hostName2, HostStatus.NO_REMARKS); @@ -278,7 +277,7 @@ public class ClusterApiImplTest { service6 ) ); - modelUtils.createApplicationInstance(Collections.singletonList(serviceCluster)); + modelUtils.createApplicationInstance(List.of(serviceCluster)); modelUtils.createNode(hostName1, HostStatus.NO_REMARKS); modelUtils.createNode(hostName2, HostStatus.NO_REMARKS); diff --git a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java index 6a2783949d8..53192b1d40e 100644 --- a/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java +++ b/orchestrator/src/test/java/com/yahoo/vespa/orchestrator/resources/HostRequestHandlerTest.java @@ -53,7 +53,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.time.Clock; import java.time.Instant; -import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -278,7 +278,7 @@ class HostRequestHandlerTest { ServiceCluster serviceCluster = new ServiceCluster( new ClusterId("clusterId"), new ServiceType("serviceType"), - Collections.singleton(serviceInstance)); + Set.of(serviceInstance)); serviceInstance.setServiceCluster(serviceCluster); Host host = new Host( @@ -287,7 +287,7 @@ class HostRequestHandlerTest { new ApplicationInstanceReference( new TenantId("tenantId"), new ApplicationInstanceId("applicationId")), - Collections.singletonList(serviceInstance)); + List.of(serviceInstance)); when(orchestrator.getHost(hostName)).thenReturn(host); HttpResponse httpResponse = executeRequest(testDriver, Method.GET, "/orchestrator/v1/hosts/hostname", null); @@ -314,13 +314,14 @@ class HostRequestHandlerTest { assertEquals(409, httpResponse.getStatus()); ByteArrayOutputStream out = new ByteArrayOutputStream(); httpResponse.render(out); - JsonTestHelper.assertJsonEquals("{\n" + - " \"hostname\" : \"hostname\",\n" + - " \"reason\" : {\n" + - " \"constraint\" : \"deadline\",\n" + - " \"message\" : \"resume failed: Timeout Message\"\n" + - " }\n" + - "}", + JsonTestHelper.assertJsonEquals(""" + { + "hostname" : "hostname", + "reason" : { + "constraint" : "deadline", + "message" : "resume failed: Timeout Message" + } + }""", out.toString()); } diff --git a/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java b/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java index 38b8d668a18..35dab62925f 100644 --- a/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java +++ b/predicate-search-core/src/test/java/com/yahoo/document/predicate/FeatureConjunctionTest.java @@ -3,8 +3,7 @@ package com.yahoo.document.predicate; import org.junit.jupiter.api.Test; -import java.util.Arrays; -import java.util.Collections; +import java.util.List; import static com.yahoo.document.predicate.Predicates.feature; import static com.yahoo.document.predicate.Predicates.not; @@ -17,7 +16,7 @@ public class FeatureConjunctionTest { @Test void require_that_featureconjunction_with_valid_operands_can_be_constructed() { - new FeatureConjunction(Arrays.asList( + new FeatureConjunction(List.of( not(feature("a").inSet("1")), feature("b").inSet("1"))); } @@ -25,7 +24,7 @@ public class FeatureConjunctionTest { @Test void require_that_constructor_throws_exception_if_all_operands_are_not_featuresets() { assertThrows(IllegalArgumentException.class, () -> { - new FeatureConjunction(Arrays.asList( + new FeatureConjunction(List.of( not(feature("a").inSet("1")), feature("b").inRange(1, 2))); }); @@ -34,28 +33,28 @@ public class FeatureConjunctionTest { @Test void require_that_constructor_throws_exception_if_single_operand() { assertThrows(IllegalArgumentException.class, () -> { - new FeatureConjunction(Arrays.asList(feature("a").inSet("1"))); + new FeatureConjunction(List.of(feature("a").inSet("1"))); }); } @Test void require_that_constructor_throws_exception_if_no_operands() { assertThrows(IllegalArgumentException.class, () -> { - new FeatureConjunction(Collections.emptyList()); + new FeatureConjunction(List.of()); }); } @Test void require_that_contructor_throws_exception_if_featuresets_contain_multiple_values() { assertThrows(IllegalArgumentException.class, () -> { - new FeatureConjunction(Arrays.asList(feature("a").inSet("1"), feature("b").inSet("2", "3"))); + new FeatureConjunction(List.of(feature("a").inSet("1"), feature("b").inSet("2", "3"))); }); } @Test void require_that_constructor_throws_exception_if_featureset_keys_are_not_unique() { assertThrows(IllegalArgumentException.class, () -> { - new FeatureConjunction(Arrays.asList( + new FeatureConjunction(List.of( not(feature("a").inSet("1")), feature("a").inSet("2"))); }); diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java index 093e65b2e4d..840eacd9dd9 100755..100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/ExpressionFunction.java @@ -15,7 +15,6 @@ import static com.yahoo.searchlib.rankingexpression.Reference.wrapInRankingExpre import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; -import java.util.Collections; import java.util.Deque; import java.util.HashMap; import java.util.List; @@ -50,7 +49,7 @@ public class ExpressionFunction { * @param body the ranking expression that defines this function */ public ExpressionFunction(String name, RankingExpression body) { - this(name, Collections.emptyList(), body); + this(name, List.of(), body); } /** diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java index 1186541b9c0..c7231ecd800 100755..100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/EmbracedNode.java @@ -7,7 +7,6 @@ import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.TypeContext; -import java.util.Collections; import java.util.Deque; import java.util.List; import java.util.Objects; @@ -36,7 +35,7 @@ public final class EmbracedNode extends CompositeNode { @Override public List<ExpressionNode> children() { - return Collections.singletonList(value); + return List.of(value); } @Override diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java index e7db8848be5..e93edb71ac6 100755..100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionNode.java @@ -11,7 +11,6 @@ import com.yahoo.tensor.evaluation.TypeContext; import com.yahoo.tensor.functions.Join; import java.util.ArrayList; -import java.util.Collections; import java.util.Deque; import java.util.List; import java.util.Objects; @@ -34,7 +33,7 @@ public final class FunctionNode extends CompositeNode { public FunctionNode(Function function, ExpressionNode argument) { if (function.arity() != 1) throw new IllegalArgumentException(function + " is not unary"); this.function = function; - this.arguments = new Arguments(Collections.singletonList(argument)); + this.arguments = new Arguments(List.of(argument)); } /** Creates a binary function node */ diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java index bef19a656f8..49311b1553b 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/GeneratorLambdaFunctionNode.java @@ -8,7 +8,6 @@ import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.TypeContext; -import java.util.Collections; import java.util.Deque; import java.util.List; import java.util.Objects; @@ -39,7 +38,7 @@ public class GeneratorLambdaFunctionNode extends CompositeNode { @Override public List<ExpressionNode> children() { - return Collections.singletonList(generator); + return List.of(generator); } @Override diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java index 0f1331515cc..b84bb655140 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/LambdaFunctionNode.java @@ -9,7 +9,6 @@ import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.TypeContext; import com.yahoo.tensor.functions.Generate; -import java.util.Collections; import java.util.Deque; import java.util.HashSet; import java.util.List; @@ -50,7 +49,7 @@ public class LambdaFunctionNode extends CompositeNode { @Override public List<ExpressionNode> children() { - return Collections.singletonList(functionExpression); + return List.of(functionExpression); } @Override diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java index ba8fb10a1cd..dcf1f857832 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/NotNode.java @@ -7,7 +7,6 @@ import com.yahoo.searchlib.rankingexpression.evaluation.Value; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.TypeContext; -import java.util.Collections; import java.util.Deque; import java.util.List; import java.util.Objects; @@ -31,7 +30,7 @@ public class NotNode extends BooleanNode { @Override public List<ExpressionNode> children() { - return Collections.singletonList(value); + return List.of(value); } @Override diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java index b3f2f265900..202dbebc311 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java @@ -19,7 +19,6 @@ import com.yahoo.tensor.functions.TensorFunction; import com.yahoo.tensor.functions.ToStringContext; import java.util.ArrayList; -import java.util.Collections; import java.util.Deque; import java.util.LinkedHashMap; import java.util.List; @@ -238,7 +237,7 @@ public class TensorFunctionNode extends CompositeNode { .map(ExpressionTensorFunction::new) .collect(Collectors.toList()); else - return Collections.emptyList(); + return List.of(); } @Override diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java index 81ad09dd880..0a0f48df823 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/UnpackBitsNode.java @@ -11,7 +11,6 @@ import com.yahoo.tensor.TensorAddress; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.TypeContext; -import java.util.Collections; import java.util.Deque; import java.util.List; import java.util.Objects; @@ -53,7 +52,7 @@ public class UnpackBitsNode extends CompositeNode { @Override public List<ExpressionNode> children() { - return Collections.singletonList(input); + return List.of(input); } private static record Meta(TensorType outputType, TensorType outputDenseType, String unpackDimension) {} diff --git a/searchlib/src/main/javacc/RankingExpressionParser.jj b/searchlib/src/main/javacc/RankingExpressionParser.jj index 97aa42f79c9..51f433bf67d 100755..100644 --- a/searchlib/src/main/javacc/RankingExpressionParser.jj +++ b/searchlib/src/main/javacc/RankingExpressionParser.jj @@ -24,7 +24,6 @@ import com.yahoo.searchlib.rankingexpression.evaluation.StringValue; import com.yahoo.searchlib.rankingexpression.evaluation.TensorValue; import com.yahoo.tensor.*; import com.yahoo.tensor.functions.*; -import java.util.Collections; import java.util.LinkedHashMap; import java.util.Arrays; import java.util.ArrayList; @@ -893,7 +892,7 @@ List<String> bracedIdentifierList() : String element; } { - ( element = identifier() { return Collections.singletonList(element); } ) + ( element = identifier() { return List.of(element); } ) | ( <LBRACE> list = identifierList() <RBRACE> { return list; } ) } diff --git a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java index 66b8a07ac95..a0e6fd32ddc 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/aggregation/GroupingTestCase.java @@ -1,14 +1,12 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.searchlib.aggregation; -import com.yahoo.searchlib.expression.FloatResultNode; import com.yahoo.searchlib.expression.NullResultNode; import com.yahoo.searchlib.expression.StringBucketResultNode; import com.yahoo.vespa.objects.BufferSerializer; import org.junit.Test; -import java.util.Arrays; -import java.util.Collections; +import java.util.List; import static org.junit.Assert.*; @@ -30,7 +28,7 @@ public class GroupingTestCase { assertEquals(9, grouping.getId()); Grouping other = new Grouping(6); - assertFalse(grouping.equals(other)); + assertNotEquals(grouping, other); other.setId(9); assertEquals(grouping, other); @@ -46,7 +44,7 @@ public class GroupingTestCase { assertTrue(grouping.getAll()); Grouping other = new Grouping(); - assertFalse(grouping.equals(other)); + assertNotEquals(grouping, other); other.setAll(true); assertEquals(grouping, other); @@ -62,7 +60,7 @@ public class GroupingTestCase { assertEquals(69, grouping.getTopN()); Grouping other = new Grouping(); - assertFalse(grouping.equals(other)); + assertNotEquals(grouping, other); other.setTopN(69); assertEquals(grouping, other); @@ -78,7 +76,7 @@ public class GroupingTestCase { assertEquals(69, grouping.getFirstLevel()); Grouping other = new Grouping(); - assertFalse(grouping.equals(other)); + assertNotEquals(grouping, other); other.setFirstLevel(69); assertEquals(grouping, other); @@ -94,7 +92,7 @@ public class GroupingTestCase { assertEquals(69, grouping.getLastLevel()); Grouping other = new Grouping(); - assertFalse(grouping.equals(other)); + assertNotEquals(grouping, other); other.setLastLevel(69); assertEquals(grouping, other); @@ -117,7 +115,7 @@ public class GroupingTestCase { assertEquals(root, grouping.getRoot()); Grouping other = new Grouping(); - assertFalse(grouping.equals(other)); + assertNotEquals(grouping, other); other.setRoot(root); assertEquals(grouping, other); @@ -128,7 +126,7 @@ public class GroupingTestCase { @Test public void requireThatLevelAccessorsWork() { Grouping grouping = new Grouping(); - assertEquals(Collections.emptyList(), grouping.getLevels()); + assertEquals(List.of(), grouping.getLevels()); try { grouping.addLevel(null); fail(); @@ -137,10 +135,10 @@ public class GroupingTestCase { } GroupingLevel level = new GroupingLevel(); grouping.addLevel(level); - assertEquals(Arrays.asList(level), grouping.getLevels()); + assertEquals(List.of(level), grouping.getLevels()); Grouping other = new Grouping(); - assertFalse(grouping.equals(other)); + assertNotEquals(grouping, other); other.addLevel(level); assertEquals(grouping, other); @@ -155,8 +153,8 @@ public class GroupingTestCase { @Test public void requireThatEqualsIsImplemented() { - assertFalse(new Grouping().equals(new Object())); - assertTrue(new Grouping().equals(new Grouping())); + assertNotEquals(new Grouping(), new Object()); + assertEquals(new Grouping(), new Grouping()); } @Test diff --git a/security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java b/security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java index c4c01ca130c..0901ea5931f 100644 --- a/security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java +++ b/security-utils/src/main/java/com/yahoo/security/KeyStoreBuilder.java @@ -15,8 +15,6 @@ import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; -import static java.util.Collections.singletonList; - /** * @author bjorncs */ @@ -53,7 +51,7 @@ public class KeyStoreBuilder { } public KeyStoreBuilder withKeyEntry(String alias, PrivateKey privateKey, char[] password, X509Certificate certificate) { - return withKeyEntry(alias, privateKey, password, singletonList(certificate)); + return withKeyEntry(alias, privateKey, password, List.of(certificate)); } public KeyStoreBuilder withKeyEntry(String alias, PrivateKey privateKey, X509Certificate certificate) { diff --git a/security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java b/security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java index 78a00246d38..d1c9ae582b7 100644 --- a/security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java +++ b/security-utils/src/main/java/com/yahoo/security/Pkcs10Csr.java @@ -15,8 +15,6 @@ import java.util.List; import java.util.Objects; import java.util.Optional; -import static java.util.Collections.emptyList; - /** * @author bjorncs */ @@ -40,7 +38,7 @@ public class Pkcs10Csr { return getExtensions() .map(extensions -> GeneralNames.fromExtensions(extensions, Extension.subjectAlternativeName)) .map(SubjectAlternativeName::fromGeneralNames) - .orElse(emptyList()); + .orElse(List.of()); } /** @@ -57,7 +55,7 @@ public class Pkcs10Csr { .map(extensions -> Arrays.stream(extensions.getExtensionOIDs()) .map(ASN1ObjectIdentifier::getId) .toList()) - .orElse(emptyList()); + .orElse(List.of()); } diff --git a/security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java b/security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java index cedad3afc9b..8fecbb72a43 100644 --- a/security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java +++ b/security-utils/src/main/java/com/yahoo/security/SslContextBuilder.java @@ -18,8 +18,6 @@ import java.security.PrivateKey; import java.security.cert.X509Certificate; import java.util.List; -import static java.util.Collections.singletonList; - /** * A builder for {@link SSLContext}. * @@ -48,7 +46,7 @@ public class SslContextBuilder { } public SslContextBuilder withTrustStore(X509Certificate caCertificate) { - return withTrustStore(singletonList(caCertificate)); + return withTrustStore(List.of(caCertificate)); } public SslContextBuilder withTrustStore(List<X509Certificate> caCertificates) { @@ -66,7 +64,7 @@ public class SslContextBuilder { } public SslContextBuilder withKeyStore(PrivateKey privateKey, X509Certificate certificate) { - return withKeyStore(privateKey, singletonList(certificate)); + return withKeyStore(privateKey, List.of(certificate)); } public SslContextBuilder withKeyStore(PrivateKey privateKey, List<X509Certificate> certificates) { diff --git a/security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java b/security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java index 171a8e890d0..f615ff2e832 100644 --- a/security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java +++ b/security-utils/src/main/java/com/yahoo/security/X509CertificateUtils.java @@ -34,7 +34,6 @@ import java.security.cert.X509Certificate; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.Random; @@ -150,7 +149,7 @@ public class X509CertificateUtils { public static List<SubjectAlternativeName> getSubjectAlternativeNames(X509Certificate certificate) { try { byte[] extensionValue = certificate.getExtensionValue(SUBJECT_ALTERNATIVE_NAMES.getOId()); - if (extensionValue == null) return Collections.emptyList(); + if (extensionValue == null) return List.of(); ASN1Encodable asn1Encodable = ASN1Primitive.fromByteArray(extensionValue); if (asn1Encodable instanceof ASN1OctetString) { asn1Encodable = ASN1Primitive.fromByteArray(((ASN1OctetString) asn1Encodable).getOctets()); diff --git a/security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java b/security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java index e80d3840bce..afd5fa315a6 100644 --- a/security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java +++ b/security-utils/src/main/java/com/yahoo/security/X509CertificateWithKey.java @@ -3,7 +3,6 @@ package com.yahoo.security; import java.security.PrivateKey; import java.security.cert.X509Certificate; -import java.util.Collections; import java.util.List; /** @@ -18,7 +17,7 @@ public class X509CertificateWithKey { private final PrivateKey privateKey; public X509CertificateWithKey(X509Certificate certificate, PrivateKey privateKey) { - this(Collections.singletonList(certificate), privateKey); + this(List.of(certificate), privateKey); } public X509CertificateWithKey(List<X509Certificate> certificate, PrivateKey privateKey) { diff --git a/security-utils/src/test/java/com/yahoo/security/tls/AuthorizedPeersTest.java b/security-utils/src/test/java/com/yahoo/security/tls/AuthorizedPeersTest.java index e6f3450332d..ee54a80f732 100644 --- a/security-utils/src/test/java/com/yahoo/security/tls/AuthorizedPeersTest.java +++ b/security-utils/src/test/java/com/yahoo/security/tls/AuthorizedPeersTest.java @@ -3,11 +3,10 @@ package com.yahoo.security.tls; import org.junit.jupiter.api.Test; -import java.util.HashSet; +import java.util.List; +import java.util.Set; import static com.yahoo.security.tls.RequiredPeerCredential.Field.CN; -import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; import static org.junit.jupiter.api.Assertions.assertThrows; /** @@ -18,9 +17,9 @@ public class AuthorizedPeersTest { @Test void throws_exception_on_peer_policies_with_duplicate_names() { assertThrows(IllegalArgumentException.class, () -> { - PeerPolicy peerPolicy1 = new PeerPolicy("duplicate-name", singletonList(RequiredPeerCredential.of(CN, "mycfgserver"))); - PeerPolicy peerPolicy2 = new PeerPolicy("duplicate-name", singletonList(RequiredPeerCredential.of(CN, "myclient"))); - new AuthorizedPeers(new HashSet<>(asList(peerPolicy1, peerPolicy2))); + PeerPolicy peerPolicy1 = new PeerPolicy("duplicate-name", List.of(RequiredPeerCredential.of(CN, "mycfgserver"))); + PeerPolicy peerPolicy2 = new PeerPolicy("duplicate-name", List.of(RequiredPeerCredential.of(CN, "myclient"))); + new AuthorizedPeers(Set.of(peerPolicy1, peerPolicy2)); }); } diff --git a/security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java b/security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java index ec7d5b8ca05..267e770050d 100644 --- a/security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java +++ b/security-utils/src/test/java/com/yahoo/security/tls/DefaultTlsContextTest.java @@ -18,7 +18,6 @@ import static com.yahoo.security.X509CertificateBuilder.generateRandomSerialNumb import static java.time.Instant.EPOCH; import static java.time.temporal.ChronoUnit.DAYS; import static java.util.Collections.singleton; -import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; /** @@ -38,7 +37,7 @@ public class DefaultTlsContextTest { singleton( new PeerPolicy( "dummy-policy", - singletonList(RequiredPeerCredential.of(RequiredPeerCredential.Field.CN, "dummy"))))); + List.of(RequiredPeerCredential.of(RequiredPeerCredential.Field.CN, "dummy"))))); DefaultTlsContext tlsContext = DefaultTlsContext.of( diff --git a/security-utils/src/test/java/com/yahoo/security/tls/PeerAuthorizerTest.java b/security-utils/src/test/java/com/yahoo/security/tls/PeerAuthorizerTest.java index 112cfa75102..91ce19574fe 100644 --- a/security-utils/src/test/java/com/yahoo/security/tls/PeerAuthorizerTest.java +++ b/security-utils/src/test/java/com/yahoo/security/tls/PeerAuthorizerTest.java @@ -23,9 +23,6 @@ import static com.yahoo.security.SignatureAlgorithm.SHA256_WITH_ECDSA; import static com.yahoo.security.tls.RequiredPeerCredential.Field.CN; import static com.yahoo.security.tls.RequiredPeerCredential.Field.SAN_DNS; import static com.yahoo.security.tls.RequiredPeerCredential.Field.SAN_URI; -import static java.util.Arrays.asList; -import static java.util.Collections.emptyList; -import static java.util.Collections.singletonList; import static java.util.stream.Collectors.toSet; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -45,13 +42,13 @@ public class PeerAuthorizerTest { RequiredPeerCredential sanRequirement = createRequiredCredential(SAN_DNS, "*.matching.san"); PeerAuthorizer authorizer = createPeerAuthorizer(createPolicy(POLICY_1, cnRequirement, sanRequirement)); - ConnectionAuthContext result = authorizer.authorizePeer(createCertificate("foo.matching.cn", asList("foo.matching.san", "foo.invalid.san"), emptyList())); + ConnectionAuthContext result = authorizer.authorizePeer(createCertificate("foo.matching.cn", List.of("foo.matching.san", "foo.invalid.san"), List.of())); assertAuthorized(result); assertThat(result.matchedPolicies()).containsOnly(POLICY_1); - assertUnauthorized(authorizer.authorizePeer(createCertificate("foo.invalid.cn", singletonList("foo.matching.san"), emptyList()))); - assertUnauthorized(authorizer.authorizePeer(createCertificate("foo.invalid.cn", asList("foo.matching.san", "foo.invalid.san"), emptyList()))); - assertUnauthorized(authorizer.authorizePeer(createCertificate("foo.matching.cn", singletonList("foo.invalid.san"), emptyList()))); + assertUnauthorized(authorizer.authorizePeer(createCertificate("foo.invalid.cn", List.of("foo.matching.san"), List.of()))); + assertUnauthorized(authorizer.authorizePeer(createCertificate("foo.invalid.cn", List.of("foo.matching.san", "foo.invalid.san"), List.of()))); + assertUnauthorized(authorizer.authorizePeer(createCertificate("foo.matching.cn", List.of("foo.invalid.san"), List.of()))); } @Test @@ -64,7 +61,7 @@ public class PeerAuthorizerTest { createPolicy(POLICY_2, cnRequirement, sanRequirement)); ConnectionAuthContext result = peerAuthorizer - .authorizePeer(createCertificate("foo.matching.cn", singletonList("foo.matching.san"), emptyList())); + .authorizePeer(createCertificate("foo.matching.cn", List.of("foo.matching.san"), List.of())); assertAuthorized(result); assertThat(result.matchedPolicies()).containsOnly(POLICY_1, POLICY_2); } @@ -75,7 +72,7 @@ public class PeerAuthorizerTest { createPolicy(POLICY_1, createRequiredCredential(CN, "*.matching.cn")), createPolicy(POLICY_2, createRequiredCredential(SAN_DNS, "*.matching.san"))); - ConnectionAuthContext result = peerAuthorizer.authorizePeer(createCertificate("foo.invalid.cn", singletonList("foo.matching.san"), emptyList())); + ConnectionAuthContext result = peerAuthorizer.authorizePeer(createCertificate("foo.invalid.cn", List.of("foo.matching.san"), List.of())); assertAuthorized(result); assertThat(result.matchedPolicies()).containsOnly(POLICY_2); } @@ -89,9 +86,9 @@ public class PeerAuthorizerTest { PeerAuthorizer peerAuthorizer = createPeerAuthorizer( createPolicy(POLICY_1, cnSuffixRequirement, cnPrefixRequirement, sanPrefixRequirement, sanSuffixRequirement)); - assertAuthorized(peerAuthorizer.authorizePeer(createCertificate("matching.prefix.matching.suffix.cn", singletonList("matching.prefix.matching.suffix.san"), emptyList()))); - assertUnauthorized(peerAuthorizer.authorizePeer(createCertificate("matching.prefix.matching.suffix.cn", singletonList("matching.prefix.invalid.suffix.san"), emptyList()))); - assertUnauthorized(peerAuthorizer.authorizePeer(createCertificate("invalid.prefix.matching.suffix.cn", singletonList("matching.prefix.matching.suffix.san"), emptyList()))); + assertAuthorized(peerAuthorizer.authorizePeer(createCertificate("matching.prefix.matching.suffix.cn", List.of("matching.prefix.matching.suffix.san"), List.of()))); + assertUnauthorized(peerAuthorizer.authorizePeer(createCertificate("matching.prefix.matching.suffix.cn", List.of("matching.prefix.invalid.suffix.san"), List.of()))); + assertUnauthorized(peerAuthorizer.authorizePeer(createCertificate("invalid.prefix.matching.suffix.cn", List.of("matching.prefix.matching.suffix.san"), List.of()))); } @Test @@ -100,11 +97,11 @@ public class PeerAuthorizerTest { RequiredPeerCredential sanUriRequirement = createRequiredCredential(SAN_URI, "myscheme://my/*/uri"); PeerAuthorizer authorizer = createPeerAuthorizer(createPolicy(POLICY_1, cnRequirement, sanUriRequirement)); - ConnectionAuthContext result = authorizer.authorizePeer(createCertificate("foo.matching.cn", singletonList("foo.irrelevant.san"), singletonList("myscheme://my/matching/uri"))); + ConnectionAuthContext result = authorizer.authorizePeer(createCertificate("foo.matching.cn", List.of("foo.irrelevant.san"), List.of("myscheme://my/matching/uri"))); assertAuthorized(result); assertThat(result.matchedPolicies()).containsOnly(POLICY_1); - assertUnauthorized(authorizer.authorizePeer(createCertificate("foo.matching.cn", emptyList(), singletonList("myscheme://my/nonmatching/url")))); + assertUnauthorized(authorizer.authorizePeer(createCertificate("foo.matching.cn", List.of(), List.of("myscheme://my/nonmatching/url")))); } @Test @@ -145,7 +142,7 @@ public class PeerAuthorizerTest { } private static PeerPolicy createPolicy(String name, RequiredPeerCredential... requiredCredentials) { - return new PeerPolicy(name, asList(requiredCredentials)); + return new PeerPolicy(name, List.of(requiredCredentials)); } private static PeerPolicy createPolicy(String name, List<Capability> caps, List<RequiredPeerCredential> creds) { diff --git a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsJsonSerializerTest.java b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsJsonSerializerTest.java index 1871bb43569..cde1a346fc9 100644 --- a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsJsonSerializerTest.java +++ b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsJsonSerializerTest.java @@ -15,8 +15,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; -import java.util.Collections; import java.util.LinkedHashSet; +import java.util.List; import java.util.Optional; import static com.yahoo.security.tls.RequiredPeerCredential.Field.CN; @@ -50,7 +50,7 @@ public class TransportSecurityOptionsJsonSerializerTest { RequiredPeerCredential.of(SAN_URI, "myscheme://resource/path/"))), new PeerPolicy("node", Optional.empty(), CapabilitySet.of(Capability.SLOBROK__API), - Collections.singletonList(RequiredPeerCredential.of(CN, "hostname"))))))) + List.of(RequiredPeerCredential.of(CN, "hostname"))))))) .build(); ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -68,7 +68,7 @@ public class TransportSecurityOptionsJsonSerializerTest { .withCertificates(Paths.get("certs.pem"), Paths.get("myhost.key")) .withCaCertificates(Paths.get("my_cas.pem")) .withAcceptedCiphers(Arrays.asList("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_AES_256_GCM_SHA384")) - .withAcceptedProtocols(Collections.singletonList("TLSv1.2")) + .withAcceptedProtocols(List.of("TLSv1.2")) .withHostnameValidationDisabled(true) .build(); File outputFile = File.createTempFile("junit", null, tempDirectory); diff --git a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java index 08e573fed7e..188a6a1568a 100644 --- a/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java +++ b/security-utils/src/test/java/com/yahoo/security/tls/TransportSecurityOptionsTest.java @@ -4,12 +4,10 @@ package com.yahoo.security.tls; import org.junit.jupiter.api.Test; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Arrays; -import java.util.Collections; +import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -22,8 +20,8 @@ public class TransportSecurityOptionsTest { private static final TransportSecurityOptions OPTIONS = new TransportSecurityOptions.Builder() .withCertificates(Paths.get("certs.pem"), Paths.get("myhost.key")) .withCaCertificates(Paths.get("my_cas.pem")) - .withAcceptedCiphers(Arrays.asList("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_AES_256_GCM_SHA384")) - .withAcceptedProtocols(Collections.singletonList("TLSv1.2")) + .withAcceptedCiphers(List.of("TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", "TLS_AES_256_GCM_SHA384")) + .withAcceptedProtocols(List.of("TLSv1.2")) .withHostnameValidationDisabled(true) .build(); @@ -35,7 +33,7 @@ public class TransportSecurityOptionsTest { @Test void can_read_options_from_json() throws IOException { - String tlsJson = new String(Files.readAllBytes(TEST_CONFIG_FILE), StandardCharsets.UTF_8); + String tlsJson = Files.readString(TEST_CONFIG_FILE); TransportSecurityOptions actualOptions = TransportSecurityOptions.fromJson(tlsJson); assertEquals(OPTIONS, actualOptions); } diff --git a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java index 1c2c57e9a77..bd05b1ab509 100644 --- a/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java +++ b/service-monitor/src/main/java/com/yahoo/vespa/service/duper/InfraApplication.java @@ -22,7 +22,6 @@ import com.yahoo.vespa.service.model.ApplicationInstanceGenerator; import com.yahoo.vespa.service.model.ModelGenerator; import com.yahoo.vespa.service.monitor.InfraApplicationApi; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -107,12 +106,12 @@ public abstract class InfraApplication implements InfraApplicationApi { // service name == service type for the first service of each type on each host serviceType.s(), serviceType.s(), - Collections.singletonList(portInfo), + List.of(portInfo), properties, configIdFor(hostname).s(), hostname.value()); - return new HostInfo(hostname.value(), Collections.singletonList(serviceInfo)); + return new HostInfo(hostname.value(), List.of(serviceInfo)); } public ConfigId configIdFor(DomainName hostname) { diff --git a/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java b/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java index 415bed7419d..279bffcd49e 100644 --- a/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java +++ b/vespa-application-maven-plugin/src/main/java/com/yahoo/container/plugin/mojo/ApplicationMojo.java @@ -21,7 +21,6 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; -import java.util.Collections; import java.util.List; /** @@ -173,7 +172,7 @@ public class ApplicationMojo extends AbstractMojo { } private static <T> List<T> emptyListIfNull(List<T> modules) { - return modules == null ? Collections.emptyList(): modules; + return modules == null ? List.of(): modules; } } diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java index 08d289e216b..2a1113be26a 100644 --- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java +++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzPrincipal.java @@ -6,8 +6,6 @@ import java.util.List; import java.util.Objects; import java.util.Optional; -import static java.util.Collections.emptyList; - /** * @author bjorncs */ @@ -18,11 +16,11 @@ public class AthenzPrincipal implements Principal { private final List<AthenzRole> roles; public AthenzPrincipal(AthenzIdentity athenzIdentity) { - this(athenzIdentity, null, emptyList()); + this(athenzIdentity, null, List.of()); } public AthenzPrincipal(AthenzIdentity athenzIdentity, NToken nToken) { - this(athenzIdentity, nToken, emptyList()); + this(athenzIdentity, nToken, List.of()); } public AthenzPrincipal(AthenzIdentity identity, List<AthenzRole> roles) { diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java index c4c8fac87b4..f054abf2bd1 100644 --- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java +++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zms/DefaultZmsClient.java @@ -43,7 +43,6 @@ import javax.net.ssl.SSLContext; import java.net.URI; import java.security.PublicKey; import java.time.Instant; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -88,7 +87,7 @@ public class DefaultZmsClient extends ClientBase implements ZmsClient { HttpUriRequest request = RequestBuilder.put() .setUri(uri) .addHeader(createCookieHeader(oAuthCredentials)) - .setEntity(toJsonStringEntity(new TenancyRequestEntity(tenantDomain, providerService, Collections.emptyList()))) + .setEntity(toJsonStringEntity(new TenancyRequestEntity(tenantDomain, providerService, List.of()))) .build(); execute(request, response -> readEntity(response, Void.class)); } diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java index ed3a52abb87..2c8908a89a6 100644 --- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java +++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identity/SiaIdentityProvider.java @@ -17,15 +17,11 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.cert.Certificate; + import java.security.cert.X509Certificate; import java.util.List; -import java.util.Spliterator; -import java.util.Spliterators; + import java.util.stream.Stream; -import java.util.stream.StreamSupport; /** * A {@link ServiceIdentityProvider} that provides the credentials stored on file system. diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java index 40a23ab5904..63c966004e5 100644 --- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java +++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java @@ -123,9 +123,9 @@ class AthenzCredentialsService { private Optional<AthenzCredentials> tryReadCredentialsFromDisk() { Optional<PrivateKey> privateKey = SiaUtils.readPrivateKeyFile(VESPA_SIA_DIRECTORY, tenantIdentity); - if (!privateKey.isPresent()) return Optional.empty(); + if (privateKey.isEmpty()) return Optional.empty(); Optional<X509Certificate> certificate = SiaUtils.readCertificateFile(VESPA_SIA_DIRECTORY, tenantIdentity); - if (!certificate.isPresent()) return Optional.empty(); + if (certificate.isEmpty()) return Optional.empty(); if (isExpired(certificate.get())) { return Optional.empty(); } diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/LegacyAthenzIdentityProviderImpl.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/LegacyAthenzIdentityProviderImpl.java index 5569eef192c..34324ef18e6 100644 --- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/LegacyAthenzIdentityProviderImpl.java +++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/LegacyAthenzIdentityProviderImpl.java @@ -38,7 +38,6 @@ import java.security.cert.X509Certificate; import java.time.Clock; import java.time.Duration; import java.time.Instant; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -277,7 +276,7 @@ public final class LegacyAthenzIdentityProviderImpl extends AbstractComponent im @Override public List<X509Certificate> getIdentityCertificate() { - return Collections.singletonList(credentials.getCertificate()); + return List.of(credentials.getCertificate()); } @Override diff --git a/vespa-feed-client-api/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java b/vespa-feed-client-api/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java index 7101b8452ed..6fd17154aa8 100644 --- a/vespa-feed-client-api/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java +++ b/vespa-feed-client-api/src/main/java/ai/vespa/feed/client/FeedClientBuilder.java @@ -9,7 +9,6 @@ import java.security.PrivateKey; import java.security.cert.X509Certificate; import java.time.Duration; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.function.Supplier; @@ -27,7 +26,7 @@ public interface FeedClientBuilder { * Creates a builder for a single feed container endpoint. * This is for feeding against a container cluster with a load balancer in front of it. **/ - static FeedClientBuilder create(URI endpoint) { return create(Collections.singletonList(endpoint)); } + static FeedClientBuilder create(URI endpoint) { return create(List.of(endpoint)); } /** * Creates a builder which <em>distributes</em> the feed across the given feed container endpoints. diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/FeedClientBuilderImpl.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/FeedClientBuilderImpl.java index 0268f1a4394..c271ac356e9 100644 --- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/FeedClientBuilderImpl.java +++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/FeedClientBuilderImpl.java @@ -15,7 +15,6 @@ import java.security.cert.X509Certificate; import java.time.Duration; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -195,7 +194,7 @@ public class FeedClientBuilderImpl implements FeedClientBuilder { /** Sets client SSL certificate/key */ @Override public FeedClientBuilderImpl setCertificate(X509Certificate certificate, PrivateKey privateKey) { - return setCertificate(Collections.singletonList(certificate), privateKey); + return setCertificate(List.of(certificate), privateKey); } @Override diff --git a/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/JettyCluster.java b/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/JettyCluster.java index 5454249d52e..df010a167f6 100644 --- a/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/JettyCluster.java +++ b/vespa-feed-client/src/main/java/ai/vespa/feed/client/impl/JettyCluster.java @@ -41,7 +41,6 @@ import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.URI; import java.time.Duration; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -194,7 +193,7 @@ class JettyCluster implements Cluster { proxySslCtxFactory.setSslContext(b.constructProxySslContext()); try { proxySslCtxFactory.start(); } catch (Exception e) { throw new IOException(e); } httpClient.getProxyConfiguration().addProxy( - new HttpProxy(address, proxySslCtxFactory, new Origin.Protocol(Collections.singletonList("h2"), false))); + new HttpProxy(address, proxySslCtxFactory, new Origin.Protocol(List.of("h2"), false))); URI proxyUri = URI.create(endpointUri(b.proxy)); httpClient.getAuthenticationStore().addAuthenticationResult(new Authentication.Result() { @Override public URI getURI() { return proxyUri; } @@ -205,7 +204,7 @@ class JettyCluster implements Cluster { } else { // Assume insecure proxy uses HTTP/1.1 httpClient.getProxyConfiguration().addProxy( - new HttpProxy(address, false, new Origin.Protocol(Collections.singletonList("http/1.1"), false))); + new HttpProxy(address, false, new Origin.Protocol(List.of("http/1.1"), false))); // Bug in Jetty cause authentication result to be ignored for HTTP/1.1 CONNECT requests httpClient.getRequestListeners().add(new Request.Listener() { @Override diff --git a/vespa-feed-client/src/test/java/ai/vespa/feed/client/impl/HttpFeedClientTest.java b/vespa-feed-client/src/test/java/ai/vespa/feed/client/impl/HttpFeedClientTest.java index c79bb7b4606..28bde16f457 100644 --- a/vespa-feed-client/src/test/java/ai/vespa/feed/client/impl/HttpFeedClientTest.java +++ b/vespa-feed-client/src/test/java/ai/vespa/feed/client/impl/HttpFeedClientTest.java @@ -13,7 +13,7 @@ import org.junit.jupiter.api.Test; import java.net.URI; import java.time.Duration; -import java.util.Collections; +import java.util.List; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -42,7 +42,7 @@ class HttpFeedClientTest { @Override public void await() { throw new UnsupportedOperationException(); } @Override public CompletableFuture<HttpResponse> enqueue(DocumentId documentId, HttpRequest request) { return dispatch.get().apply(documentId, request); } } - FeedClient client = new HttpFeedClient(new FeedClientBuilderImpl(Collections.singletonList(URI.create("https://dummy:123"))).setDryrun(true), + FeedClient client = new HttpFeedClient(new FeedClientBuilderImpl(List.of(URI.create("https://dummy:123"))).setDryrun(true), new DryrunCluster(), new MockRequestStrategy()); @@ -214,7 +214,7 @@ class HttpFeedClientTest { void testHandshake() { // dummy:123 does not exist, and results in a host-not-found exception. FeedException exception = assertThrows(FeedException.class, - () -> new HttpFeedClient(new FeedClientBuilderImpl(Collections.singletonList(URI.create("https://dummy:123"))))); + () -> new HttpFeedClient(new FeedClientBuilderImpl(List.of(URI.create("https://dummy:123"))))); String message = exception.getMessage(); assertTrue(message.startsWith("failed handshake with server after "), message); assertTrue(message.contains("java.net.UnknownHostException"), message); @@ -237,19 +237,19 @@ class HttpFeedClientTest { // Old server, and speed-test. assertEquals("server does not support speed test; upgrade to a newer version", assertThrows(FeedException.class, - () -> new HttpFeedClient(new FeedClientBuilderImpl(Collections.singletonList(URI.create("https://dummy:123"))).setSpeedTest(true), + () -> new HttpFeedClient(new FeedClientBuilderImpl(List.of(URI.create("https://dummy:123"))).setSpeedTest(true), cluster, null)) .getMessage()); // Old server. - new HttpFeedClient(new FeedClientBuilderImpl(Collections.singletonList(URI.create("https://dummy:123"))), + new HttpFeedClient(new FeedClientBuilderImpl(List.of(URI.create("https://dummy:123"))), cluster, null); // New server. response.set(okResponse); - new HttpFeedClient(new FeedClientBuilderImpl(Collections.singletonList(URI.create("https://dummy:123"))), + new HttpFeedClient(new FeedClientBuilderImpl(List.of(URI.create("https://dummy:123"))), cluster, null); } diff --git a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java index 4636f96a4bb..f6e50ff1547 100644 --- a/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java +++ b/vespaclient-container-plugin/src/test/java/com/yahoo/vespa/http/server/VersionsTestCase.java @@ -7,7 +7,6 @@ import org.junit.Test; import java.io.ByteArrayOutputStream; import java.util.Arrays; -import java.util.Collections; import java.util.List; import static org.junit.Assert.assertEquals; @@ -20,17 +19,17 @@ import static org.junit.Assert.assertTrue; */ public class VersionsTestCase { - private static final List<String> EMPTY = Collections.emptyList(); + private static final List<String> EMPTY = List.of(); private static final List<String> ONE_TWO = Arrays.asList("1", "2"); private static final List<String> ONE_THREE = Arrays.asList("1", "3"); private static final List<String> TWO_THREE = Arrays.asList("3", "2"); private static final List<String> ONE_NULL_THREE = Arrays.asList("1", null, "3"); - private static final List<String> ONE_COMMA_THREE = Collections.singletonList("1, 3"); + private static final List<String> ONE_COMMA_THREE = List.of("1, 3"); private static final List<String> ONE_EMPTY_THREE = Arrays.asList("1", "", "3"); - private static final List<String> TOO_LARGE_NUMBER = Collections.singletonList("1000000000"); + private static final List<String> TOO_LARGE_NUMBER = List.of("1000000000"); private static final List<String> THREE_TOO_LARGE_NUMBER = Arrays.asList("3", "1000000000"); private static final List<String> THREE_COMMA_TOO_LARGE_NUMBER = Arrays.asList("3,1000000000"); - private static final List<String> GARBAGE = Collections.singletonList("garbage"); + private static final List<String> GARBAGE = List.of("garbage"); @Test public void testEmpty() { diff --git a/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java b/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java index 0628f4e0f29..ddaf057a0b9 100644 --- a/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java +++ b/vespaclient-java/src/test/java/com/yahoo/vespaget/DocumentRetrieverTest.java @@ -214,7 +214,7 @@ public class DocumentRetrieverTest { .setCluster(cluster) .build(); - ClusterList clusterList = new ClusterList(Collections.singletonList(new ClusterDef(cluster))); + ClusterList clusterList = new ClusterList(List.of(new ClusterDef(cluster))); DocumentRetriever documentRetriever = createDocumentRetriever(params, clusterList); documentRetriever.retrieveDocuments(); @@ -230,7 +230,7 @@ public class DocumentRetrieverTest { .setCluster("invalidclustername") .build(); - ClusterList clusterList = new ClusterList(Collections.singletonList(new ClusterDef("storage"))); + ClusterList clusterList = new ClusterList(List.of(new ClusterDef("storage"))); DocumentRetriever documentRetriever = createDocumentRetriever(params, clusterList); documentRetriever.retrieveDocuments(); diff --git a/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java b/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java index 143d5518eff..c4164d04aa2 100644 --- a/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java +++ b/vespaclient-java/src/test/java/com/yahoo/vespastat/BucketStatsPrinterTest.java @@ -10,7 +10,6 @@ import org.junit.jupiter.api.Test; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -28,7 +27,7 @@ public class BucketStatsPrinterTest { public void mockBucketStatsRetriever() throws BucketStatsException { retriever = mock(BucketStatsRetriever.class); when(retriever.getBucketIdForType(any(), any())).thenReturn(new BucketId(0x42)); - when(retriever.retrieveBucketList(any(), any())).thenReturn(Collections.emptyList()); + when(retriever.retrieveBucketList(any(), any())).thenReturn(List.of()); when(retriever.retrieveBucketStats(any(), any(), any(), any())).thenReturn(""); } @@ -79,7 +78,7 @@ public class BucketStatsPrinterTest { void testShouldPrintBucketStats() throws BucketStatsException { String dummyBucketStats = "dummystats"; GetBucketListReply.BucketInfo bucketInfo = new GetBucketListReply.BucketInfo(new BucketId(0), "dummy"); - when(retriever.retrieveBucketList(any(), any())).thenReturn(Collections.singletonList(bucketInfo)); + when(retriever.retrieveBucketList(any(), any())).thenReturn(List.of(bucketInfo)); when(retriever.retrieveBucketStats(any(), any(), any(), any())).thenReturn(dummyBucketStats); String output = retreiveAndPrintBucketStats(ClientParameters.SelectionType.USER, "1234", true); diff --git a/vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java b/vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java index 8ace7598e27..26c0bec34b1 100644 --- a/vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java +++ b/vespajlib/src/main/java/com/yahoo/collections/ListenableArrayList.java @@ -56,7 +56,7 @@ public class ListenableArrayList<ITEM> extends ArrayList<ITEM> { } public List<Runnable> listeners() { - if (listeners == null) return Collections.emptyList(); + if (listeners == null) return List.of(); return Collections.unmodifiableList(listeners); } diff --git a/vespajlib/src/main/java/com/yahoo/concurrent/InThreadExecutorService.java b/vespajlib/src/main/java/com/yahoo/concurrent/InThreadExecutorService.java index 96541e555b2..63653b051c0 100644 --- a/vespajlib/src/main/java/com/yahoo/concurrent/InThreadExecutorService.java +++ b/vespajlib/src/main/java/com/yahoo/concurrent/InThreadExecutorService.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.concurrent; -import java.util.Collections; import java.util.List; import java.util.concurrent.AbstractExecutorService; import java.util.concurrent.ExecutorService; @@ -24,7 +23,7 @@ public class InThreadExecutorService extends AbstractExecutorService { @Override public List<Runnable> shutdownNow() { shutdown(); - return Collections.emptyList(); + return List.of(); } @Override diff --git a/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java b/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java index 3a02d752aa5..e67c1ebb3b6 100644 --- a/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java +++ b/vespajlib/src/main/java/com/yahoo/data/access/simple/Value.java @@ -41,8 +41,8 @@ public class Value implements Inspector { public void traverse(ObjectTraverser ot) {} public Inspector entry(int idx) { return invalid; } public Inspector field(java.lang.String name) { return invalid; } - public Iterable<Inspector> entries() { return Collections.emptyList(); } - public Iterable<Map.Entry<java.lang.String,Inspector>> fields() { return Collections.emptyList(); } + public Iterable<Inspector> entries() { return List.of(); } + public Iterable<Map.Entry<java.lang.String,Inspector>> fields() { return List.of(); } public StringBuilder writeJson(StringBuilder target) { return JsonRender.render(this, target, true); } diff --git a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java index d27c7cf0168..f5ec63ab4e9 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java @@ -24,7 +24,6 @@ import com.yahoo.tensor.impl.Label; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -186,8 +185,8 @@ public interface Tensor { } default Tensor rename(String fromDimension, String toDimension) { - return new Rename<>(new ConstantTensor<>(this), Collections.singletonList(fromDimension), - Collections.singletonList(toDimension)).evaluate(); + return new Rename<>(new ConstantTensor<>(this), List.of(fromDimension), + List.of(toDimension)).evaluate(); } default Tensor concat(double argument, String dimension) { @@ -270,26 +269,26 @@ public interface Tensor { default Tensor bit(Tensor argument) { return join(argument, (a,b) -> ((int)b < 8 && (int)b >= 0 && ((int)a & (1 << (int)b)) != 0) ? 1.0 : 0.0); } default Tensor hamming(Tensor argument) { return join(argument, Hamming::hamming); } - default Tensor avg() { return avg(Collections.emptyList()); } - default Tensor avg(String dimension) { return avg(Collections.singletonList(dimension)); } + default Tensor avg() { return avg(List.of()); } + default Tensor avg(String dimension) { return avg(List.of(dimension)); } default Tensor avg(List<String> dimensions) { return reduce(Reduce.Aggregator.avg, dimensions); } - default Tensor count() { return count(Collections.emptyList()); } - default Tensor count(String dimension) { return count(Collections.singletonList(dimension)); } + default Tensor count() { return count(List.of()); } + default Tensor count(String dimension) { return count(List.of(dimension)); } default Tensor count(List<String> dimensions) { return reduce(Reduce.Aggregator.count, dimensions); } - default Tensor max() { return max(Collections.emptyList()); } - default Tensor max(String dimension) { return max(Collections.singletonList(dimension)); } + default Tensor max() { return max(List.of()); } + default Tensor max(String dimension) { return max(List.of(dimension)); } default Tensor max(List<String> dimensions) { return reduce(Reduce.Aggregator.max, dimensions); } - default Tensor median() { return median(Collections.emptyList()); } - default Tensor median(String dimension) { return median(Collections.singletonList(dimension)); } + default Tensor median() { return median(List.of()); } + default Tensor median(String dimension) { return median(List.of(dimension)); } default Tensor median(List<String> dimensions) { return reduce(Reduce.Aggregator.median, dimensions); } - default Tensor min() { return min(Collections.emptyList()); } - default Tensor min(String dimension) { return min(Collections.singletonList(dimension)); } + default Tensor min() { return min(List.of()); } + default Tensor min(String dimension) { return min(List.of(dimension)); } default Tensor min(List<String> dimensions) { return reduce(Reduce.Aggregator.min, dimensions); } - default Tensor prod() { return prod(Collections.emptyList()); } - default Tensor prod(String dimension) { return prod(Collections.singletonList(dimension)); } + default Tensor prod() { return prod(List.of()); } + default Tensor prod(String dimension) { return prod(List.of(dimension)); } default Tensor prod(List<String> dimensions) { return reduce(Reduce.Aggregator.prod, dimensions); } - default Tensor sum() { return sum(Collections.emptyList()); } - default Tensor sum(String dimension) { return sum(Collections.singletonList(dimension)); } + default Tensor sum() { return sum(List.of()); } + default Tensor sum(String dimension) { return sum(List.of(dimension)); } default Tensor sum(List<String> dimensions) { return reduce(Reduce.Aggregator.sum, dimensions); } // ----------------- non-math query methods (that is, computations not returning a tensor) diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java index b6bd252f135..fc82be4b33c 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorTypeParser.java @@ -3,7 +3,6 @@ package com.yahoo.tensor; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.regex.Matcher; @@ -50,7 +49,7 @@ public class TensorTypeParser { dimensionsSpec = specBody.substring(parenthesisIndex + 1); } - if (dimensionsSpec.isEmpty()) return new TensorType.Builder(valueType, Collections.emptyList()).build(); + if (dimensionsSpec.isEmpty()) return new TensorType.Builder(valueType, List.of()).build(); List<TensorType.Dimension> dimensions = new ArrayList<>(); for (String element : dimensionsSpec.split(",")) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java index 0cef1482292..58b17758cfe 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/evaluation/VariableTensor.java @@ -7,7 +7,6 @@ import com.yahoo.tensor.functions.PrimitiveTensorFunction; import com.yahoo.tensor.functions.TensorFunction; import com.yahoo.tensor.functions.ToStringContext; -import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -34,7 +33,7 @@ public class VariableTensor<NAMETYPE extends Name> extends PrimitiveTensorFuncti } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.emptyList(); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { return this; } diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java index 61207840ded..5655bb020a4 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/CellCast.java @@ -8,7 +8,6 @@ import com.yahoo.tensor.evaluation.EvaluationContext; import com.yahoo.tensor.evaluation.Name; import com.yahoo.tensor.evaluation.TypeContext; -import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -32,7 +31,7 @@ public class CellCast<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAM } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.singletonList(argument); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(argument); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java index c81cde70c75..0ecd4b5f947 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/ConstantTensor.java @@ -7,7 +7,6 @@ import com.yahoo.tensor.evaluation.EvaluationContext; import com.yahoo.tensor.evaluation.Name; import com.yahoo.tensor.evaluation.TypeContext; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -29,7 +28,7 @@ public class ConstantTensor<NAMETYPE extends Name> extends PrimitiveTensorFuncti } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.emptyList(); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java index 382ac94be7d..354e03e6699 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Diag.java @@ -4,7 +4,6 @@ package com.yahoo.tensor.functions; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.Name; -import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.function.Function; @@ -27,7 +26,7 @@ public class Diag<NAMETYPE extends Name> extends CompositeTensorFunction<NAMETYP } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.emptyList(); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Expand.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Expand.java index 3042991e2c0..f5a33dde064 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Expand.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Expand.java @@ -4,7 +4,6 @@ package com.yahoo.tensor.functions; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.Name; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -25,7 +24,7 @@ public class Expand<NAMETYPE extends Name> extends CompositeTensorFunction<NAMET } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.singletonList(argument); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(argument); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java index 51bd4152479..a5afeb6d2a4 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/L1Normalize.java @@ -3,7 +3,6 @@ package com.yahoo.tensor.functions; import com.yahoo.tensor.evaluation.Name; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -21,7 +20,7 @@ public class L1Normalize<NAMETYPE extends Name> extends CompositeTensorFunction< } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.singletonList(argument); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(argument); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java index 4b6ffbca63c..47e341732ca 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/L2Normalize.java @@ -3,7 +3,6 @@ package com.yahoo.tensor.functions; import com.yahoo.tensor.evaluation.Name; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -21,7 +20,7 @@ public class L2Normalize<NAMETYPE extends Name> extends CompositeTensorFunction< } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.singletonList(argument); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(argument); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java index 404be1d6fac..94e75588ba3 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Map.java @@ -9,7 +9,6 @@ import com.yahoo.tensor.evaluation.EvaluationContext; import com.yahoo.tensor.evaluation.Name; import com.yahoo.tensor.evaluation.TypeContext; -import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Objects; @@ -40,7 +39,7 @@ public class Map<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMETYPE public DoubleUnaryOperator mapper() { return mapper; } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.singletonList(argument); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(argument); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/MapSubspaces.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/MapSubspaces.java index aa9602339e9..93a101909a2 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/MapSubspaces.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/MapSubspaces.java @@ -9,7 +9,6 @@ import com.yahoo.tensor.evaluation.EvaluationContext; import com.yahoo.tensor.evaluation.Name; import com.yahoo.tensor.evaluation.TypeContext; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -64,7 +63,7 @@ public class MapSubspaces<NAMETYPE extends Name> extends PrimitiveTensorFunction public TensorFunction<NAMETYPE> argument() { return argument; } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.singletonList(argument); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(argument); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java index 5d51d8cd5c6..811e861de9c 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Random.java @@ -4,7 +4,6 @@ package com.yahoo.tensor.functions; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.Name; -import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -24,7 +23,7 @@ public class Random<NAMETYPE extends Name> extends CompositeTensorFunction<NAMET } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.emptyList(); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java index 8520aef537d..9960fbd58ea 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Range.java @@ -4,7 +4,6 @@ package com.yahoo.tensor.functions; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.Name; -import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.function.Function; @@ -28,7 +27,7 @@ public class Range<NAMETYPE extends Name> extends CompositeTensorFunction<NAMETY } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.emptyList(); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java index c2eff01c801..150bf82f0e8 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Softmax.java @@ -4,7 +4,6 @@ package com.yahoo.tensor.functions; import com.yahoo.tensor.TensorType; import com.yahoo.tensor.evaluation.Name; -import java.util.Collections; import java.util.List; import java.util.Objects; @@ -26,7 +25,7 @@ public class Softmax<NAMETYPE extends Name> extends CompositeTensorFunction<NAME } @Override - public List<TensorFunction<NAMETYPE>> arguments() { return Collections.singletonList(argument); } + public List<TensorFunction<NAMETYPE>> arguments() { return List.of(argument); } @Override public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { diff --git a/vespajlib/src/main/java/com/yahoo/yolean/trace/TraceNode.java b/vespajlib/src/main/java/com/yahoo/yolean/trace/TraceNode.java index 39a78897bfb..90b9383eb0c 100644 --- a/vespajlib/src/main/java/com/yahoo/yolean/trace/TraceNode.java +++ b/vespajlib/src/main/java/com/yahoo/yolean/trace/TraceNode.java @@ -3,7 +3,6 @@ package com.yahoo.yolean.trace; import com.yahoo.yolean.concurrent.ThreadRobustList; -import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -73,7 +72,7 @@ public class TraceNode { */ public <PAYLOADTYPE> Iterable<PAYLOADTYPE> descendants(final Class<PAYLOADTYPE> payloadType) { if (children == null) { - return Collections.emptyList(); + return List.of(); } return new Iterable<PAYLOADTYPE>() { @@ -118,7 +117,7 @@ public class TraceNode { */ public Iterable<TraceNode> children() { if (children == null) { - return Collections.emptyList(); + return List.of(); } return children; } diff --git a/vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java b/vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java index 8450c7986ef..4acd9ef3214 100644 --- a/vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java +++ b/vespajlib/src/test/java/com/yahoo/collections/LazySetTest.java @@ -198,15 +198,15 @@ public class LazySetTest { assertFalse(set.remove("foo")); Mockito.verify(delegate).remove("foo"); - Collection<String> containsAllArg = Collections.singletonList("foo"); + Collection<String> containsAllArg = Set.of("foo"); assertFalse(set.containsAll(containsAllArg)); Mockito.verify(delegate).containsAll(containsAllArg); - Collection<String> retainAllArg = Collections.singletonList("foo"); + Collection<String> retainAllArg = Set.of("foo"); assertFalse(set.retainAll(retainAllArg)); Mockito.verify(delegate).retainAll(retainAllArg); - Collection<String> removeAllArg = Collections.singletonList("foo"); + Collection<String> removeAllArg = Set.of("foo"); assertFalse(set.removeAll(removeAllArg)); Mockito.verify(delegate).removeAll(removeAllArg); diff --git a/vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java b/vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java index b1061fbc9ef..968746319d3 100644 --- a/vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/io/reader/NamedReaderTestCase.java @@ -6,7 +6,6 @@ import java.io.Reader; import java.io.StringReader; import java.lang.reflect.Method; import java.nio.CharBuffer; -import java.util.Collections; import java.util.List; import com.yahoo.protect.ClassValidator; @@ -30,7 +29,7 @@ public class NamedReaderTestCase { assertEquals("test1",r.getName()); assertEquals("test1",r.toString()); assertEquals(stringReader,r.getReader()); - NamedReader.closeAll(Collections.singletonList(r)); + NamedReader.closeAll(List.of(r)); NamedReader.closeAll(null); // noop, nor exception } diff --git a/vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java index 528ca57d256..b5d36326774 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/IndexedTensorTestCase.java @@ -3,9 +3,9 @@ package com.yahoo.tensor; import org.junit.Test; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import static org.junit.Assert.assertEquals; @@ -139,7 +139,7 @@ public class IndexedTensorTestCase { Tensor.Builder builder = Tensor.Builder.of(type); builder.cell(47.0, 98); Tensor tensor = builder.build(); - assertEquals(47.0, tensor.sum(Collections.singletonList("x")).asDouble(), 0.000001); + assertEquals(47.0, tensor.sum(List.of("x")).asDouble(), 0.000001); } private void assertBuildingVWXYZ(TensorType type) { diff --git a/vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java b/vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java index 378e2397a89..6b0dbac8f2a 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/MatrixDotProductBenchmark.java @@ -9,7 +9,6 @@ import com.yahoo.tensor.functions.Join; import com.yahoo.tensor.functions.Reduce; import com.yahoo.tensor.functions.TensorFunction; -import java.util.Collections; import java.util.List; import java.util.Random; @@ -69,7 +68,7 @@ public class MatrixDotProductBenchmark { .value(random.nextDouble()); } } - return Collections.singletonList(builder.build()); + return List.of(builder.build()); } private static void addDimension(TensorType.Builder builder, String name, TensorType.Dimension.Type type, int size) { diff --git a/vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java b/vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java index 69fb71b9b0e..7a51ea300f4 100644 --- a/vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/tensor/TensorTestCase.java @@ -11,7 +11,6 @@ import com.yahoo.tensor.functions.TensorFunction; import org.junit.Test; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Set; import java.util.function.DoubleBinaryOperator; @@ -214,7 +213,7 @@ public class TensorTestCase { Tensor unitK = Tensor.Builder.of(new TensorType.Builder().mapped("k").build()).cell().label("k", 0).value(1).build(); Tensor vectorInJSpace = vector(Type.mapped).multiply(unitJ); Tensor matrixInKSpace = matrix(Type.mapped, 2).get(0).multiply(unitK); - assertEquals("Generic computation implementation", 42, (int)dotProduct(vectorInJSpace, Collections.singletonList(matrixInKSpace))); + assertEquals("Generic computation implementation", 42, (int)dotProduct(vectorInJSpace, List.of(matrixInKSpace))); } @Test @@ -458,7 +457,7 @@ public class TensorTestCase { .value((i+1)*(j+1)); } } - return Collections.singletonList(builder.build()); + return List.of(builder.build()); } private TensorType vectorType(TensorType.Builder builder, String name, TensorType.Dimension.Type type, int size) { diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java index 6a3184fa3e1..ed114c7c340 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/transaction/CuratorOperations.java @@ -5,7 +5,6 @@ import com.yahoo.path.Path; import com.yahoo.vespa.curator.Curator; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Optional; @@ -62,7 +61,7 @@ public class CuratorOperations { * This does not fail, but returns an empty list if the path does not exist. */ public static List<CuratorOperation> deleteAll(String path, Curator curator) { - if ( ! curator.exists(Path.fromString(path))) return Collections.emptyList(); + if ( ! curator.exists(Path.fromString(path))) return List.of(); List<CuratorOperation> operations = new ArrayList<>(); deleteRecursively(Path.fromString(path), operations, curator); |