@Override public void update(Observable<UnitRegistryData> source, UnitRegistryData data) throws Exception { UNIT_REMOTE_REGISTRY_LOCK.writeLock().lock(); UNIT_DIFF.diff(Registries.getUnitRegistry().getUnitConfigs()); try { for (String unitId : UNIT_DIFF.getRemovedMessageMap().keySet()) { if (unitRemoteRegistry.contains(unitId)) { removeUnitRemote(unitRemoteRegistry.get(unitId)); } } } finally { UNIT_REMOTE_REGISTRY_LOCK.writeLock().unlock(); } } };
private void startUpdateObserver(final UnitRegistryData unitRegistryData) { registryDiff.diff(unitRegistryData.getUnitGroupUnitConfigList()); IdentifiableMessageMap<String, UnitConfig, UnitConfig.Builder> identifiableNewMessageMap = registryDiff.getNewMessageMap(); IdentifiableMessageMap<String, UnitConfig, UnitConfig.Builder> identifiableUpdatedMessageMap = registryDiff.getUpdatedMessageMap(); IdentifiableMessageMap<String, UnitConfig, UnitConfig.Builder> identifiableRemovedMessageMap = registryDiff.getRemovedMessageMap(); try { if (!identifiableNewMessageMap.isEmpty()) { final List<UnitConfig> unitConfigs = new ArrayList<>(identifiableNewMessageMap.getMessages()); NEW_UNIT_CONFIG_OBSERVABLE.notifyObservers(unitConfigs); } if (!identifiableUpdatedMessageMap.isEmpty()) { final List<UnitConfig> unitConfigs = new ArrayList<>(identifiableUpdatedMessageMap.getMessages()); UPDATED_UNIT_CONFIG_OBSERVABLE.notifyObservers(unitConfigs); } if (!identifiableRemovedMessageMap.isEmpty()) { final List<UnitConfig> unitConfigs = new ArrayList<>(identifiableRemovedMessageMap.getMessages()); REMOVED_UNIT_CONFIG_OBSERVABLE.notifyObservers(unitConfigs); } } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(ex, LOGGER, LogLevel.ERROR); } } }
hostedUnitDiff.diff(getHostedUnits()); MultiException.ExceptionStack removeExceptionStack = null; hostedUnitDiff.getRemovedMessageMap().getMessages().forEach((removedUnitConfig) -> {