{
//if this service changes its cluster, we should update the cluster -> service map saying that
//this service is no longer hosted in the old cluster.
if (oldServicePropertiesItem != null)
{
ServiceProperties oldServiceProperties = oldServicePropertiesItem.getProperty();
if (oldServiceProperties != null && oldServiceProperties.getClusterName() != null &&
!oldServiceProperties.getClusterName().equals(discoveryProperties.getClusterName()))
{
Set<String> serviceNames =
_servicesPerCluster.get(oldServiceProperties.getClusterName());
if (serviceNames != null)
{
serviceNames.remove(oldServiceProperties.getServiceName());
}
}
}
refreshServiceStrategies(discoveryProperties);
refreshTransportClientsPerService(discoveryProperties);
// refresh state for which services are on which clusters
Set<String> serviceNames =
_servicesPerCluster.get(discoveryProperties.getClusterName());
if (serviceNames == null)
{
serviceNames =
Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>());
_servicesPerCluster.put(discoveryProperties.getClusterName(), serviceNames);
}
serviceNames.add(discoveryProperties.getServiceName());
}
else if (oldServicePropertiesItem != null)
{
// if we've replaced a service properties with null, update the cluster ->
// service state that the service is no longer on its cluster.
ServiceProperties oldServiceProperties = oldServicePropertiesItem.getProperty();
if (oldServiceProperties != null)
{
Set<String> serviceNames =
_servicesPerCluster.get(oldServiceProperties.getClusterName());
if (serviceNames != null)
{
serviceNames.remove(oldServiceProperties.getServiceName());
}
}
}
if (discoveryProperties == null)