}
@Override
public LoadBalancer apply(LB lb) {
try {
Builder builder = LoadBalancer.builder().id(lb.id).region(region).status(lb.status).name(lb.getName())
.protocol(lb.getProtocol()).port(lb.getPort()).nodeCount(lb.nodeCount).nodes(lb.getNodes())
.timeout(lb.getTimeout()).algorithm(lb.getAlgorithm()).halfClosed(lb.isHalfClosed())
.sessionPersistenceType(lb.getSessionPersistenceType()).connectionLogging(lb.isConnectionLogging())
.connectionThrottle(lb.getConnectionThrottle()).healthMonitor(lb.getHealthMonitor());
if (lb.cluster.size() == 1)
builder.clusterName(Iterables.get(lb.cluster.values(), 0));
if (lb.created.size() == 1)
builder.created(Iterables.get(lb.created.values(), 0));
if (lb.updated.size() == 1)
builder.updated(Iterables.get(lb.updated.values(), 0));
if (lb.contentCaching.size() == 1)
builder.contentCaching(Iterables.get(lb.contentCaching.values(), 0));
if (lb.sslTermination != null)
builder.sslTermination(lb.sslTermination);
if (lb.sourceAddresses != null)
builder.sourceAddresses(lb.sourceAddresses);
if (lb.accessList == null)
builder.accessRules(ImmutableSet.<AccessRuleWithId> of());
else
builder.accessRules(lb.accessList);
if (lb.virtualIps == null)
builder.virtualIPs(ImmutableSet.<VirtualIPWithId> of());
else
builder.virtualIPs(lb.virtualIps);
if (lb.metadata == null)
builder.metadata(new Metadata());
else
builder.metadata(ParseMetadata.transformCLBMetadataToMetadata(lb.metadata));
int indexOfLB = endpoint.toString().lastIndexOf(LOAD_BALANCERS);
String path = endpoint.toString().substring(0, indexOfLB + LOAD_BALANCERS.length());
builder.uri(URI.create(path + "/" + lb.id));
return builder.build();
}
catch (NullPointerException e) {
logger.warn(e, "nullpointer found parsing %s", lb);
throw e;
}