Form Bytes getMaxSize never returns null and does not find maximum
------------------------------------------------------------------

                 Key: WICKET-3153
                 URL: https://issues.apache.org/jira/browse/WICKET-3153
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.5-M2.1
         Environment: Independent of environment 
            Reporter: Richard Emberson
            Priority: Minor


In org/apache/wicket/markup/html/form/Form the method getMaxSize
always returns a Bytes instance.


  public Bytes getMaxSize() {
    Bytes maxSize = this.maxSize;
    if (maxSize == null) {
      maxSize = visitChildren(Form.class, new IVisitor<Form<?>, Bytes>() {
        public void component(Form<?> component, IVisit<Bytes> visit) {
          Bytes maxSize = component.getMaxSize();
          if (maxSize != null) {
            visit.stop(maxSize);
          }
        }
      });
    }
    if (maxSize == null) {
      return
 getApplication().getApplicationSettings().getDefaultMaximumUploadSize();
    }
    return maxSize;
  }

Because during the visit traversal, the VERY FIRST Form visited returns
a non-null getMaxSize value. Even it its this.maxSize is null, it
will then return getDefaultMaximumUploadSize.

I suspect what is needed is a isMaxSizeSet method.
The inner visit method would then be:


    if (component.isMaxSizeSet()) {
      Bytes maxSize = component.getMaxSize();
      visit.stop(maxSize);
    }

With this, then it is only the Form creating and calling the Visitor
that returns the getDefaultMaximumUploadSize value, and only if
none of its sub Forms have an explicit value.

Also, should the Visitor actually look for the maximum size value
of the children and return it rather than returning the first
value (which may not be the maximum)???


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to