Configuration implements LogConfigListener { @Override public synchronized void configChanged() { if (logConfigSupplier == null) { throw new IllegalStateException("LogConfigSupplier must not be null"); } LogConfig logConfig = logConfigSupplier.getLogConfig(); loggingProvider.configure(logConfig, logLevelUpdateOccurs, logLevelUpdateScope); } private  Configuration(final LogLevelUpdateOccurs logLevelUpdateOccurs,
      final LogLevelUpdateScope logLevelUpdateScope, final LoggingProvider loggingProvider); static Configuration create(); @VisibleForTesting static Configuration create(final LoggingProvider loggingProvider); @VisibleForTesting static Configuration create(final LogLevelUpdateOccurs logLevelUpdateOccurs,
      final LogLevelUpdateScope logLevelUpdateScope); @VisibleForTesting static Configuration create(final LogLevelUpdateOccurs logLevelUpdateOccurs,
      final LogLevelUpdateScope logLevelUpdateScope, final LoggingProvider loggingProvider); synchronized void initialize(final LogConfigSupplier logConfigSupplier); @Override synchronized void configChanged(); synchronized void shutdown(); @VisibleForTesting
  static final int DEFAULT_LOGWRITER_LEVEL; static final String STARTUP_CONFIGURATION; static final String CLI_CONFIG; static final String LOG_LEVEL_UPDATE_OCCURS_PROPERTY; }
@Test public void configChangedWithoutLogConfigSupplierThrowsIllegalStateException() { assertThatThrownBy(() -> configuration.configChanged()) .isInstanceOf(IllegalStateException.class); }