Uploaded image for project: 'Application Server 7'
  1. Application Server 7
  2. AS7-5487

OperationValidator treats undefined property as existing

    XMLWordPrintable

Details

    Description

      While adding alternatives to an attribute, I found a bug in the operation validation.

      I have two attributes connector & discovery-group-name that are alternatives of each other (and allow null).
      If I create a XML config with only a connector, the operation validation fails because it complains the undefined discovery-group-name is present at the same time than the defined connector:

      java.lang.IllegalArgumentException: JBAS014823: Alternative parameter 'connector' for required parameter 'discovery-group-name' was used. Please use one or the other. {"connector" => {"in-vm" => undefined},"entries" => ["java:/JmsXA"],"auto-group" => true,"block-on-acknowledge" => false,"block-on-durable-send" => false,"block-on-non-durable-send" => false,"cache-large-message-client" => false,"call-timeout" => 123L,"client-failure-check-period" => 12345L,"client-id" => "myClientID","confirmation-window-size" => -1,"connection-ttl" => "56789","consumer-max-rate" => 789,"consumer-window-size" => 456,"discovery-group-name" => undefined,"discovery-initial-wait-timeout" => undefined,"dups-ok-batch-size" => 256,"failover-on-initial-connection" => true,"failover-on-server-shutdown" => true,"group-id" => "myGroup","ha" => true,"connection-load-balancing-policy-class-name" => "not.a.real.Class","max-retry-interval" => "10000","min-large-message-size" => 2048,"password" => "alicepassword","pre-acknowledge" => true,"producer-max-rate" => 1024,"producer-window-size" => -1,"reconnect-attempts" => 2,"retry-interval" => 500L,"retry-interval-multiplier" => "2.5","scheduled-thread-pool-max-size" => 24,"thread-pool-max-size" => 48,"transaction-batch-size" => 512,"use-auto-recovery" => undefined,"use-global-pools" => true,"use-jndi" => undefined,"user" => "alice","jndi-params" => undefined,"use-local-tx" => undefined,"setup-attempts" => undefined,"setup-interval" => undefined,"transaction" => "xa","min-pool-size" => 42,"max-pool-size" => 242,"operation" => "add","address" => [("subsystem" => "messaging"),("hornetq-server" => "default"),("pooled-connection-factory" => "hornetq-ra")]}
      	at org.jboss.as.controller.operations.validation.OperationValidator.checkAllRequiredPropertiesArePresent(OperationValidator.java:201)
      	at org.jboss.as.controller.operations.validation.OperationValidator.validateOperation(OperationValidator.java:129)
      	at org.jboss.as.controller.operations.validation.OperationValidator.validateOperations(OperationValidator.java:95)
      

      In OperationValidator.checkAllRequiredPropertiesArePresent, the code check if the attribute key exists but not if the attribute is defined.

      Attachments

        Issue Links

          Activity

            People

              jmesnil1@redhat.com Jeff Mesnil
              jmesnil1@redhat.com Jeff Mesnil
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: