package com.netflix.discovery.shared.resolver.aws;
import com.netflix.discovery.shared.resolver.DefaultEndpoint;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author David Liu
*/
public class AwsEndpoint extends DefaultEndpoint {
protected final String zone;
protected final String region;
public AwsEndpoint(String serviceURI, String region, String zone) {
super(serviceURI);
this.region = region;
this.zone = zone;
}
public AwsEndpoint(String hostName, int port, boolean isSecure, String relativeUri, String region, String zone) {
super(hostName, port, isSecure, relativeUri);
this.region=region;
this.zone=zone;
}
public String getRegion(){
return region;
}
public String getZone(){
return zone;
}
public static List<AwsEndpoint> createForServerList(
List<String> hostNames, int port, boolean isSecure, String relativeUri, String region,String zone) {
if (hostNames.isEmpty()) {
return Collections.emptyList();
}
List<AwsEndpoint> awsEndpoints = new ArrayList<>(hostNames.size());
for (String hostName : hostNames) {
awsEndpoints.add(new AwsEndpoint(hostName, port, isSecure, relativeUri, region, zone));
}
return awsEndpoints;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof AwsEndpoint)) return false;
if (!super.equals(o)) return false;
AwsEndpoint that = (AwsEndpoint) o;
if (region != null ? !region.equals(that.region) : that.region != null) return false;
if (zone != null ? !zone.equals(that.zone) : that.zone != null) return false;
return true;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (zone != null ? zone.hashCode() : 0);
result = 31 * result + (region != null ? region.hashCode() : 0);
return result;
}
@Override
public String toString(){
return"AwsEndpoint{ serviceUrl='"+serviceUrl+'\''
+", region='"+region+'\''
+", zone='"+zone+'\''+'}';
}
}