code: @Override
  	public void run() {
  		// Flag to avoid checking the very first time, when the request handler
  		// has just started.
  		boolean firstRun = true;
  
  		while (continuePolling) {
  			try {
  				// Must check before sleeping, otherwise stopPolling does not
  				// work.
  				if (!firstRun) {
  					if (propertiesSource.configChanged()) {
  						Properties props = propertiesSource.getConfigProperties();
  						if (overriddenProperties != null) {
  							props.putAll(overriddenProperties);
  						}
  						listener.configChanged(props);
  					} else if (bundlesHandler != null && bundlesHandler.bundlesNeedToBeRebuild()) {
  						listener.rebuildDirtyBundles();
  					}
  				}
  				sleep(waitMillis);
  				firstRun = false;
  
  			} catch (InterruptedException e) {
  				// Nothing to do
  			} catch (InterruptBundlingProcessException e) {
  				if (LOGGER.isInfoEnabled()) {
  					LOGGER.info("Bundling processed stopped");
  				}
  			}
  		}
  		
  		this.bundlesHandler = null;
  		this.listener = null;
  	}
docs: /*
  (non-Javadoc)
  
  @see java.lang.Thread#run()