@Test public void testPerformance() { MyListener listener = new MyListener(); BaseConfiguration baseConfig = new BaseConfiguration(); baseConfig.addConfigurationListener(listener); HierarchicalConfiguration hConfig = new HierarchicalConfiguration(); hConfig.addConfigurationListener(listener); ConcurrentMapConfiguration conf = new ConcurrentMapConfiguration(); conf.addConfigurationListener(listener); testConfigurationSet(baseConfig); testConfigurationSet(hConfig); testConfigurationSet(conf); testConfigurationAdd(baseConfig); testConfigurationAdd(hConfig); testConfigurationAdd(conf); testConfigurationGet(baseConfig); testConfigurationGet(hConfig); testConfigurationGet(conf); }
@Override public void addConfigurationListener(ConfigurationListener l) { if (!listeners.contains(l)) { listeners.add(l); } }
ConcurrentMapConfiguration extends AbstractConfiguration { @Override public void addConfigurationListener(ConfigurationListener l) { if (!listeners.contains(l)) { listeners.add(l); } } }
ConcurrentMapConfiguration extends AbstractConfiguration { @Override public void addConfigurationListener(ConfigurationListener l) { if (!listeners.contains(l)) { listeners.add(l); } } ConcurrentMapConfiguration();  ConcurrentMapConfiguration(Map<String, Object> mapToCopy);  ConcurrentMapConfiguration(Configuration config); }
ConcurrentMapConfiguration extends AbstractConfiguration { @Override public void addConfigurationListener(ConfigurationListener l) { if (!listeners.contains(l)) { listeners.add(l); } } ConcurrentMapConfiguration();  ConcurrentMapConfiguration(Map<String, Object> mapToCopy);  ConcurrentMapConfiguration(Configuration config); Object getProperty(String key); boolean isEmpty(); boolean containsKey(String key); Iterator getKeys(); void addProperty(String key, Object value); @Override void setProperty(String key, Object value); void loadProperties(Properties props); @Override void copy(Configuration c); @Override void clear(); Properties getProperties(); @Override void addConfigurationListener(ConfigurationListener l); @Override void addErrorListener(ConfigurationErrorListener l); @Override void clearConfigurationListeners(); @Override void clearErrorListeners(); @Override Collection<ConfigurationListener> getConfigurationListeners(); @Override Collection<ConfigurationErrorListener> getErrorListeners(); @Override boolean removeConfigurationListener(ConfigurationListener l); @Override boolean removeErrorListener(ConfigurationErrorListener l); }
ConcurrentMapConfiguration extends AbstractConfiguration { @Override public void addConfigurationListener(ConfigurationListener l) { if (!listeners.contains(l)) { listeners.add(l); } } ConcurrentMapConfiguration();  ConcurrentMapConfiguration(Map<String, Object> mapToCopy);  ConcurrentMapConfiguration(Configuration config); Object getProperty(String key); boolean isEmpty(); boolean containsKey(String key); Iterator getKeys(); void addProperty(String key, Object value); @Override void setProperty(String key, Object value); void loadProperties(Properties props); @Override void copy(Configuration c); @Override void clear(); Properties getProperties(); @Override void addConfigurationListener(ConfigurationListener l); @Override void addErrorListener(ConfigurationErrorListener l); @Override void clearConfigurationListeners(); @Override void clearErrorListeners(); @Override Collection<ConfigurationListener> getConfigurationListeners(); @Override Collection<ConfigurationErrorListener> getErrorListeners(); @Override boolean removeConfigurationListener(ConfigurationListener l); @Override boolean removeErrorListener(ConfigurationErrorListener l); static final String DISABLE_DELIMITER_PARSING; }