package microservices.sample.discovery;
import java.io.Serializable;
import java.util.Objects;
/**
* Information about published service.
*
* @param S service class
* @author mamad
* @since 15/03/15.
*/
public class PublishedServiceInfo<S> implements Serializable {
private final String version;
private final int port;
private final String ip;
private final Class<S> serviceClass;
public PublishedServiceInfo(Class<S> serviceClass, String ip, int port, String version) {
this.serviceClass = serviceClass;
this.ip = ip;
this.port = port;
this.version = version;
}
public static <S> PublishedServiceInfo<S> of(Class<S> serviceClass, String ip, int port, String version) {
return new PublishedServiceInfo<>(serviceClass, ip, port, version);
}
public String getVersion() {
return version;
}
public int getPort() {
return port;
}
public String getIp() {
return ip;
}
public Class<S> getServiceClass() {
return serviceClass;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof PublishedServiceInfo)) {
return false;
}
PublishedServiceInfo that = (PublishedServiceInfo) o;
return Objects.equals(this.ip, that.ip) && Objects.equals(this.port, that.port);
}
@Override
public int hashCode() {
return Objects.hash(this.ip, this.port);
}
@Override
public String toString() {
return String.format("PublishedServiceInfo{version:%s, port:%d, ip:%s, serviceClass:%s}", version, port, ip, serviceClass);
}
}