Uploaded image for project: 'WildFly Core'
  1. WildFly Core
  2. WFCORE-2249

ObjectTypeValidator only validates fields the user provides


    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 3.0.0.Alpha25
    • None
    • Management
    • None

      This in ObjectTypeValidator is wrong:

          public void validateParameter(final String parameterName, final ModelNode value) throws OperationFailedException {
              super.validateParameter(parameterName, value);
              if (value.isDefined()) {
                  for (String key : value.keys()) {
                      if (allowedValues.containsKey(key)) {
                          allowedValues.get(key).getValidator().validateParameter(key, value.get(key));
                      } else {
                          throw ROOT_LOGGER.invalidKeyForObjectType(key, parameterName);

      1) It only iterates over the keys in 'value' so if value is missing any required fields that isn't detected.
      2) It's not really appropriate to reject keys that are not part of the definition. The management code is meant to be forgiving in such cases.

      For now I think I'll just focus on #1. It's debatable whether being forgiving is really ideal in general, and since this particular bit of unforgivingness has been around since at least 2012 I think I'll leave it alone.

            bstansbe@redhat.com Brian Stansberry
            bstansbe@redhat.com Brian Stansberry
            0 Vote for this issue
            1 Start watching this issue