@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 unitDeviceConfig = entry.getMessage();
if (!unitDeviceConfig.hasPlacementConfig()) {
throw new NotAvailableException("deviceconfig.placementconfig");
}
if (!unitDeviceConfig.getPlacementConfig().hasLocationId() || unitDeviceConfig.getPlacementConfig().getLocationId().isEmpty()) {
throw new NotAvailableException("deviceconfig.placementconfig.locationid");
}
UnitConfig unitLocationConfig = locationRegistry.get(unitDeviceConfig.getPlacementConfig().getLocationId()).getMessage();
ScopeType.Scope newScope = ScopeGenerator.generateDeviceScope(unitDeviceConfig, unitLocationConfig);
if (!ScopeGenerator.generateStringRep(unitDeviceConfig.getScope()).equals(ScopeGenerator.generateStringRep(newScope))) {
entry.setMessage(unitDeviceConfig.toBuilder().setScope(newScope));
throw new EntryModification(entry, this);
}
}
}