@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.Builder unitConfig = entry.getMessage().toBuilder();
if (!unitConfig.hasType()) {
throw new NotAvailableException("unitConfig.type");
}
boolean modification = false;
UnitTemplate unitTemplate = getUnitTemplateByType(unitConfig.getType());
for (ServiceDescription serviceDescription : unitTemplate.getServiceDescriptionList()) {
if (!unitConfigContainsServiceDescription(unitConfig, serviceDescription)) {
unitConfig.addServiceConfig(ServiceConfig.newBuilder().setServiceDescription(serviceDescription).setBindingConfig(BindingConfig.getDefaultInstance()));
modification = true;
}
}
for (int i = 0; i < unitConfig.getServiceConfigCount(); i++) {
if (!serviceDescriptionListContainsDescription(unitTemplate.getServiceDescriptionList(), unitConfig.getServiceConfig(i).getServiceDescription())) {
unitConfig.removeServiceConfig(i);
i--;
modification = true;
}
}
if (modification) {
throw new EntryModification(entry.setMessage(unitConfig), this);
}
}