From b30d4a4257aebfff6b004cd387bcf0f23bc2bbbe Mon Sep 17 00:00:00 2001 From: erabii Date: Tue, 18 Oct 2022 23:17:08 +0300 Subject: [PATCH] move subsets to a record + add default instance for metadata (#1112) --- ...ubernetesInformerDiscoveryClientTests.java | 2 +- .../KubernetesDiscoveryProperties.java | 18 +++------ ...netesDiscoveryPropertiesMetadataTests.java | 2 +- .../fabric8/discovery/EndpointSubsetNS.java | 38 +++---------------- .../discovery/KubernetesDiscoveryClient.java | 13 +++---- 5 files changed, 19 insertions(+), 54 deletions(-) diff --git a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java index 9e42dd48..9651dcf4 100644 --- a/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java +++ b/spring-cloud-kubernetes-client-discovery/src/test/java/org/springframework/cloud/kubernetes/client/discovery/KubernetesInformerDiscoveryClientTests.java @@ -113,7 +113,7 @@ public class KubernetesInformerDiscoveryClientTests { Lister endpointsLister = setupEndpointsLister(testEndpointWithUnsetPortName); when(kubernetesDiscoveryProperties.isAllNamespaces()).thenReturn(true); - when(kubernetesDiscoveryProperties.getMetadata()).thenReturn(new KubernetesDiscoveryProperties.Metadata()); + when(kubernetesDiscoveryProperties.getMetadata()).thenReturn(KubernetesDiscoveryProperties.Metadata.DEFAULT); KubernetesInformerDiscoveryClient discoveryClient = new KubernetesInformerDiscoveryClient("", sharedInformerFactory, serviceLister, endpointsLister, null, null, kubernetesDiscoveryProperties); diff --git a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesDiscoveryProperties.java b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesDiscoveryProperties.java index 2058c4fc..57b4b5be 100644 --- a/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesDiscoveryProperties.java +++ b/spring-cloud-kubernetes-commons/src/main/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesDiscoveryProperties.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2019 the original author or authors. + * Copyright 2013-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,6 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.ConstructorBinding; import org.springframework.boot.context.properties.bind.DefaultValue; import org.springframework.core.style.ToStringCreator; @@ -77,7 +76,7 @@ public class KubernetesDiscoveryProperties { */ private String primaryPortName; - private Metadata metadata = new Metadata(); + private Metadata metadata = Metadata.DEFAULT; private int order = DEFAULT_ORDER; @@ -188,15 +187,10 @@ public class KubernetesDiscoveryProperties { @DefaultValue("true") boolean addAnnotations, String annotationsPrefix, @DefaultValue("true") boolean addPorts, @DefaultValue("port.") String portsPrefix) { - @ConstructorBinding - public Metadata { - - } - - // needed in order to get the defaults for some fields - public Metadata() { - this(true, null, true, null, true, "port."); - } + /** + * Default instance. + */ + public static final Metadata DEFAULT = new Metadata(true, null, true, null, true, "port."); } diff --git a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesDiscoveryPropertiesMetadataTests.java b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesDiscoveryPropertiesMetadataTests.java index a55a4eda..9b9bd825 100644 --- a/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesDiscoveryPropertiesMetadataTests.java +++ b/spring-cloud-kubernetes-commons/src/test/java/org/springframework/cloud/kubernetes/commons/discovery/KubernetesDiscoveryPropertiesMetadataTests.java @@ -32,7 +32,7 @@ class KubernetesDiscoveryPropertiesMetadataTests { @Test void testDefaultConstructor() { - Metadata m = new Metadata(); + Metadata m = Metadata.DEFAULT; assertThat(m.addLabels()).isTrue(); assertThat(m.labelsPrefix()).isNull(); assertThat(m.addAnnotations()).isTrue(); diff --git a/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/EndpointSubsetNS.java b/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/EndpointSubsetNS.java index d7aef88a..87f1252c 100644 --- a/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/EndpointSubsetNS.java +++ b/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/EndpointSubsetNS.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2019 the original author or authors. + * Copyright 2012-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ package org.springframework.cloud.kubernetes.fabric8.discovery; -import java.util.ArrayList; import java.util.List; import io.fabric8.kubernetes.api.model.EndpointSubset; @@ -24,36 +23,11 @@ import io.fabric8.kubernetes.api.model.EndpointSubset; /** * @author Haytham Mohamed **/ -public class EndpointSubsetNS { - - private String namespace; - - private List endpointSubset = new ArrayList<>(); - - public String getNamespace() { - return namespace; - } - - public void setNamespace(String namespace) { - this.namespace = namespace; - } - - public List getEndpointSubset() { - return endpointSubset; - } - - public void setEndpointSubset(List endpointSubset) { - this.endpointSubset = endpointSubset; - } - - @Override - public boolean equals(Object o) { - return this.endpointSubset.equals(o); - } - - @Override - public int hashCode() { - return this.endpointSubset.hashCode(); +record EndpointSubsetNS(String namespace, List endpointSubset) { + EndpointSubsetNS { + if (endpointSubset == null) { + endpointSubset = List.of(); + } } } diff --git a/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesDiscoveryClient.java b/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesDiscoveryClient.java index 65cc91d9..6bdb3da4 100644 --- a/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesDiscoveryClient.java +++ b/spring-cloud-kubernetes-fabric8-discovery/src/main/java/org/springframework/cloud/kubernetes/fabric8/discovery/KubernetesDiscoveryClient.java @@ -129,8 +129,8 @@ public class KubernetesDiscoveryClient implements DiscoveryClient { } private List getNamespaceServiceInstances(EndpointSubsetNS es, String serviceId) { - String namespace = es.getNamespace(); - List subsets = es.getEndpointSubset(); + String namespace = es.namespace(); + List subsets = es.endpointSubset(); List instances = new ArrayList<>(); if (!subsets.isEmpty()) { final Service service = this.client.services().inNamespace(namespace).withName(serviceId).get(); @@ -249,13 +249,10 @@ public class KubernetesDiscoveryClient implements DiscoveryClient { } private EndpointSubsetNS getSubsetsFromEndpoints(Endpoints endpoints) { - EndpointSubsetNS es = new EndpointSubsetNS(); - es.setNamespace(this.client.getNamespace()); // start with the default that comes - // with the client - + // start with the default that comes with the client + EndpointSubsetNS es = new EndpointSubsetNS(this.client.getNamespace(), null); if (endpoints != null && endpoints.getSubsets() != null) { - es.setNamespace(endpoints.getMetadata().getNamespace()); - es.setEndpointSubset(endpoints.getSubsets()); + es = new EndpointSubsetNS(endpoints.getMetadata().getNamespace(), endpoints.getSubsets()); } return es;