Source:
<code>public void updated(Dictionary<String, ?> config) throws ConfigurationException { <START> setProperlyConfigured(false); <END> if (config != null) { String refreshIntervalString = (String) config.get("refresh"); if (StringUtils.isNotBlank(refreshIntervalString)) { refreshInterval = Long.parseLong(refreshIntervalString); } housecode = parseMandatoryValue(KEY_HOUSECODE, config); doTimeUpdate = Boolean.parseBoolean((String) config.get(KEY_UPDATE_TIME)); if (doTimeUpdate) { timeUpdatecronExpression = (String) config.get(KEY_UPDATE_CRON); if (StringUtils.isEmpty(timeUpdatecronExpression)) { setProperlyConfigured(false); logger.debug("Time update was configured but no cron expression"); throw new ConfigurationException(KEY_UPDATE_CRON, "Time update was configured but no cron expression"); } updateTimeJobKey = scheduleJob(UpdateFHTTimeJob.class, timeUpdatecronExpression); } else { unscheduleJob(updateTimeJobKey); } requestReports = Boolean.parseBoolean((String) config.get(KEY_REPORTS)); if (requestReports) { reportsCronExpression = (String) config.get(KEY_REPORTS_CRON); if (StringUtils.isEmpty(reportsCronExpression)) { setProperlyConfigured(false); throw new ConfigurationException(KEY_REPORTS_CRON, "Reports are requested, bu no cron expression is supplied"); } requestReportJobKey = scheduleJob(RequestReportsJob.class, reportsCronExpression); } else { unscheduleJob(requestReportJobKey); } culHandlerLifecycle.config(config); setProperlyConfigured(true); } }</code><technical_language>I looked if true for AbstractBindings, for AbstractActiveBindings side effects setProperlyConfigured(false) setProperlyConfigured(true). A pattern be: java if (config != null) { boolean properlyConfigured = false; try { // parse throw needed... properlyConfigured = true; } finally { setProperlyConfigured(properlyConfigured); } }</technical_language>

Target:
public void updated(Dictionary<String, ?> config) throws ConfigurationException { boolean properlyConfigured = false; if (config != null) { String refreshIntervalString = (String) config.get("refresh"); if (StringUtils.isNotBlank(refreshIntervalString)) { refreshInterval = Long.parseLong(refreshIntervalString); } housecode = parseMandatoryValue(KEY_HOUSECODE, config); doTimeUpdate = Boolean.parseBoolean((String) config.get(KEY_UPDATE_TIME)); if (doTimeUpdate) { timeUpdatecronExpression = (String) config.get(KEY_UPDATE_CRON); if (StringUtils.isEmpty(timeUpdatecronExpression)) { setProperlyConfigured(false); logger.debug("Time update was configured but no cron expression"); throw new ConfigurationException(KEY_UPDATE_CRON, "Time update was configured but no cron expression"); } updateTimeJobKey = scheduleJob(UpdateFHTTimeJob.class, timeUpdatecronExpression); } else { unscheduleJob(updateTimeJobKey); } requestReports = Boolean.parseBoolean((String) config.get(KEY_REPORTS)); if (requestReports) { reportsCronExpression = (String) config.get(KEY_REPORTS_CRON); if (StringUtils.isEmpty(reportsCronExpression)) { setProperlyConfigured(false); throw new ConfigurationException(KEY_REPORTS_CRON, "Reports are requested, bu no cron expression is supplied"); } requestReportJobKey = scheduleJob(RequestReportsJob.class, reportsCronExpression); } else { unscheduleJob(requestReportJobKey); } culHandlerLifecycle.config(config); properlyConfigured = true; } setProperlyConfigured(properlyConfigured); }