package org.distributeme.consulintegration;
import com.google.gson.Gson;
import com.sun.jersey.api.client.ClientResponse;
import org.distributeme.core.ServiceDescriptor;
/**
* Created by rboehling on 3/30/17.
*/
public class ServiceDescriptorFactory {
private ServiceDescriptorFactory() {
}
public static ServiceDescriptor createFrom(ClientResponse response) {
String responseAsString = response.getEntity(String.class);
ServiceResolveReply[] serviceResolveReplies = new Gson().fromJson(responseAsString, ServiceResolveReply[].class);
if(serviceResolveReplies == null || serviceResolveReplies.length == 0) {
return null;
}
ServiceResolveReply serviceResolveReply = getLatestServiceInstance(serviceResolveReplies);
if(serviceResolveReply == null) {
return null;
}
return serviceResolveReply.createServiceDescriptor();
}
private static ServiceResolveReply getLatestServiceInstance(ServiceResolveReply[] serviceResolveReplies) {
ServiceResolveReply tmpResult = serviceResolveReplies[0];
for (ServiceResolveReply reply: serviceResolveReplies) {
if(reply.isYoungerThan(tmpResult)) {
tmpResult = reply;
}
}
return tmpResult;
}
}