/** * Expected to be called with write lock acquired. */ private ConfigurationPropertiesManagement constructConfigurationWithDefaults( final ConfigurationKey<?> key) { final KeyListBuilder builder = ConfigurationKeyContextManager.INSTANCE.context().keyListBuilder(); final List<ConfigurationKey<?>> keySet = builder.createKeyList(key); final List<ConfigurationPropertiesManagement> defaults = new ArrayList<ConfigurationPropertiesManagement>(keySet.size()); for (final ConfigurationKey<?> current : keySet) { final ConfigurationPropertiesManagement config = getCachedOrCreate(current); if (config != null) { defaults.add(config); } } if (defaults.isEmpty()) { return null; } if (defaults.size() == 1) { return defaults.get(0); } return new ConfigurationPropertiesManagementWithDefaults(defaults); }