@Override
public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification {
UnitConfig unitGroupUnitConfig = entry.getMessage();
if (!unitGroupUnitConfig.hasPlacementConfig()) {
throw new NotAvailableException("unitGroupConfig.placementconfig");
}
if (!unitGroupUnitConfig.getPlacementConfig().hasLocationId() || unitGroupUnitConfig.getPlacementConfig().getLocationId().isEmpty()) {
throw new NotAvailableException("unitGroupConfig.placementconfig.locationid");
}
UnitConfig locationConfig = locationRegistry.getMessage(unitGroupUnitConfig.getPlacementConfig().getLocationId());
ScopeType.Scope newScope = ScopeGenerator.generateUnitGroupScope(unitGroupUnitConfig, locationConfig);
if (!ScopeGenerator.generateStringRep(unitGroupUnitConfig.getScope()).equals(ScopeGenerator.generateStringRep(newScope))) {
entry.setMessage(unitGroupUnitConfig.toBuilder().setScope(newScope));
throw new EntryModification(entry, this);
}
}
}