code: @Override
      public void run() {
  
          try {
              Thread.sleep(WATCHER_INTERVAL);
          } catch (InterruptedException e) {
              LOG.error(Messages.get().container(Messages.ERR_UPLOAD_INTERRUPT_WATCH_DOG_1, m_listener.toString()), e);
          }
          if (m_listener != null) {
              if (((m_listener.getBytesRead() > 0) && (m_listener.getPercent() >= 100)) || m_listener.isCanceled()) {
                  LOG.debug(Messages.get().container(Messages.LOG_UPLOAD_FINISHED_WATCHER_1, m_listener.toString()));
                  m_listener = null;
              } else {
                  if (isFrozen()) {
                      m_listener.cancelUpload(new CmsUploadException(
                          Messages.get().getBundle().key(
                              Messages.ERR_UPLOAD_FROZEN_1,
                              new Integer(CmsUploadBean.DEFAULT_UPLOAD_TIMEOUT / 1000))));
                  } else {
                      run();
                  }
              }
          }
      }
docs: The watching process.<p>
  
  @see java.lang.Thread#run()