Ejemplo n.º 1
0
    /** check for new listeners that are dynamically configured */
    @Override
    public void propertyChanged(Config config, String key, String oldValue, String newValue) {
      if ("listener".equals(key)) {
        if (oldValue == null) oldValue = "";

        String[] nv = config.asStringArray(newValue);
        String[] ov = config.asStringArray(oldValue);
        String[] newListeners = Misc.getAddedElements(ov, nv);
        Class<?>[] argTypes = {
          Config.class, JPF.class
        }; // Many listeners have 2 parameter constructors
        Object[] args = {config, JPF.this};

        if (newListeners != null) {
          for (String clsName : newListeners) {
            try {
              JPFListener newListener =
                  config.getInstance("listener", clsName, JPFListener.class, argTypes, args);
              addListener(newListener);
              logger.info("config changed, added listener " + clsName);

            } catch (JPFConfigException cfx) {
              logger.warning("listener change failed: " + cfx.getMessage());
            }
          }
        }
      }
    }