e.printStackTrace();
if(log.isErrorEnabled()) { log.error("Exception", e); }
  public void setValue(Property prop, Object newValue) {    // treat empty string as null, delete previous experiment values    if (newValue instanceof String && ((String)newValue).length() == 0) {      bindings.put(prop.getName(), null);      prop.setExperimentValues(null);      // notify table model listeners      fireTableCellUpdated(getRowForProperty(prop), 1);      return;    }    Class cls = prop.getPropertyClass();    // strips off first level of braces    String[] values =      (String[]) PropertyHelper.convertStringToArray(newValue.toString());    if (cls == null) {      newValue = values;    } else if (!cls.isArray()) {      // if the class is a single value, then the experiment values      // are an array of that class      newValue = Array.newInstance(cls, values.length);      for (int i = 0; i < values.length; i++) {        try {          Array.set(newValue, i,                    PropertyHelper.validateValue(prop, values[i]));        } catch (InvalidPropertyValueException e) {          e.printStackTrace();        }      }    } else {      // if the class is an array, then the experiment values      // are an array of arrays      Object[] tmpValue = new Object[values.length];      for (int i = 0; i < values.length; i++) {        String[] expValues =          (String[]) PropertyHelper.convertStringToArray(values[i]);        try {          tmpValue[i] = PropertyHelper.validateValue(prop, expValues);        } catch (InvalidPropertyValueException e) {          e.printStackTrace();        }      }      newValue = tmpValue;    }    bindings.put(prop.getName(), newValue);    // set new values as experiment values in property    prop.setExperimentValues(Arrays.asList((Object [])newValue));    // notify table model listeners    fireTableCellUpdated(getRowForProperty(prop), 1);  }