/**
   * Create a new i nstance of AuthenticationController. This is a singleton class. Access the only
   * existing instance by using {@link #getInstance()}.
   */
  private AuthenticationController() {
    logger = LogController.getInstance().getLogger(AuthenticationController.class.getName());
    config = JsonConfig.create(AuthenticationControllerSettings.class);
    CopyOnWriteArrayList<AuthenticationInfo> list = cleanup(config.getList());
    if (list == null) {
      list = new CopyOnWriteArrayList<AuthenticationInfo>();
    }
    this.list = list;
    ShutdownController.getInstance()
        .addShutdownEvent(
            new ShutdownEvent() {
              @Override
              public void onShutdown(final ShutdownRequest shutdownRequest) {
                config.setList(AuthenticationController.this.list);
              }

              @Override
              public long getMaxDuration() {
                return 0;
              }

              @Override
              public String toString() {
                return "ShutdownEvent: Save AuthController";
              }
            });
  }