@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 sceneUnitConfig = entry.getMessage();
if (!sceneUnitConfig.hasPlacementConfig()) {
throw new NotAvailableException("sceneConfig.placementConfig");
}
if (!sceneUnitConfig.getPlacementConfig().hasLocationId()) {
throw new NotAvailableException("sceneConfig.locationId");
}
if (sceneUnitConfig.getPlacementConfig().getLocationId().isEmpty()) {
throw new NotAvailableException("Field sceneConfig.locationId is empty");
}
Scope newScope = ScopeGenerator.generateSceneScope(sceneUnitConfig, locationRegistry.getMessage(sceneUnitConfig.getPlacementConfig().getLocationId()));
if (!ScopeGenerator.generateStringRep(sceneUnitConfig.getScope()).equals(ScopeGenerator.generateStringRep(newScope))) {
throw new EntryModification(entry.setMessage(sceneUnitConfig.toBuilder().setScope(newScope)), this);
}
}
}