@Override
  public void setValue(Object value) throws UnmodifiableConfigurationException {
    if (!isModifiable()) {
      throw new UnmodifiableConfigurationException(
          String.format("%s is not a modifiable configuration parameter",
              getName()));
    }
    if (value == null) {
      throw new IllegalArgumentException(
          String.format("Unable to set %s to null value",
              getName()));
    }
    if (!getValueType().equals(value.getClass())) {
      throw new IllegalArgumentException(
          String.format("Unable to set type %s with type %s",

              getValueType().getName(), value.getClass().getName()));
    }

    if (value instanceof String && !isString()) {
      // we need to check what the type should be and convert to it...
      setValueFromString((String) value);
    } else {
      this.value = value;
    }
    fireConfigurationParameterValueChanged(this);
  }
Constructor to allow serialization by subclass
geode-core/src/main/java/org/apache/geode/admin/internal/ConfigurationParameterImpl.java