DSpaceServiceManager implements ServiceManagerSystem { @Override public void pushConfig(Map<String, Object> properties) { checkRunning(); if (properties != null && !properties.isEmpty()) { String[] changedNames = configurationService.loadConfiguration(properties); if (changedNames.length > 0) { ArrayList<String> changedSettingNames = new ArrayList<>(); Map<String, String> changedSettings = new LinkedHashMap<>(); for (String configName : changedNames) { changedSettingNames.add(configName); changedSettings.put(configName, configurationService.getProperty(configName)); } List<ConfigChangeListener> configChangeListeners = getServicesByType(ConfigChangeListener.class); for (ConfigChangeListener configChangeListener : configChangeListeners) { try { boolean notify = false; String[] notifyNames = configChangeListener.notifyForConfigNames(); if (notifyNames == null || notifyNames.length == 0) { notify = true; } else { for (String notifyName : notifyNames) { for (String changedName : changedNames) { if (notifyName != null && notifyName.equals(changedName)) { notify = true; break; } } } } if (notify) { configChangeListener.configurationChanged(changedSettingNames, changedSettings); } } catch (Exception e) { log.error( "Failure occurred while trying to notify service of config change: " + e.getMessage(), e); } } } } } DSpaceServiceManager(DSpaceConfigurationService configurationService); protected  DSpaceServiceManager(DSpaceConfigurationService configurationService,
            String... springXmlConfigFiles); boolean isRunning(); ListableBeanFactory getBeanFactory(); @Override ClassPathXmlApplicationContext getApplicationContext(); void notifyServiceManagerReady(); @Override void shutdown(); @Override void startup(); @Override void registerService(String name, Object service); @Override void registerServiceNoAutowire(String name, Object service); @SuppressWarnings("unchecked") @Override T registerServiceClass(String name, Class<T> type); @Override void unregisterService(String name); @SuppressWarnings("unchecked") @Override T getServiceByName(String name, Class<T> type); @SuppressWarnings("unchecked") @Override List<T> getServicesByType(Class<T> type); @Override List<String> getServicesNames(); @Override boolean isServiceExists(String name); @Override Map<String, Object> getServices(); @Override void pushConfig(Map<String, Object> properties); static String[] getSpringPaths(boolean testMode, String[] configPaths,
                                          DSpaceConfigurationService configurationService); static final String CONFIG_PATH; static final String CORE_RESOURCE_PATH; static final String ADDON_RESOURCE_PATH; }
@Test public void testPushConfig() { dsm.startup(); Map<String, Object> properties = new HashMap<>(); properties.put("some.test.thing", "A value"); dsm.pushConfig(properties); }