You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2004/07/11 19:19:54 UTC

cvs commit: cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel AggregateField.java

vgritsenko    2004/07/11 10:19:54

  Modified:    src/blocks/forms/java/org/apache/cocoon/forms/formmodel
                        AggregateField.java
  Log:
  Attempt to fix aggregate field after Field refactorings (states, etc).
  Demo seems to be working now.
  
  Revision  Changes    Path
  1.12      +20 -14    cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/AggregateField.java
  
  Index: AggregateField.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/forms/java/org/apache/cocoon/forms/formmodel/AggregateField.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- AggregateField.java	29 Jun 2004 13:06:04 -0000	1.11
  +++ AggregateField.java	11 Jul 2004 17:19:54 -0000	1.12
  @@ -1,12 +1,12 @@
   /*
    * Copyright 1999-2004 The Apache Software Foundation.
  - * 
  + *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
    * You may obtain a copy of the License at
  - * 
  + *
    *      http://www.apache.org/licenses/LICENSE-2.0
  - * 
  + *
    * Unless required by applicable law or agreed to in writing, software
    * distributed under the License is distributed on an "AS IS" BASIS,
    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  @@ -73,11 +73,12 @@
       }
   
       public void addChild(Widget widget) {
  -    	if (!(widget instanceof Field)) 
  +    	if (!(widget instanceof Field)) {
               throw new IllegalArgumentException("AggregateField can only contain fields.");
  +        }
           addField((Field)widget);
  -    }   
  -    
  +    }
  +
       protected void addField(Field field) {
           field.setParent(this);
           fields.add(field);
  @@ -103,7 +104,6 @@
               }
           } else {
               // Check if there are multiple splitted values. Read them and aggregate them.
  -            boolean needsParse = false;
               for (Iterator i = fields.iterator(); i.hasNext();) {
                   Field field = (Field)i.next();
                   field.readFromRequest(formContext);
  @@ -111,7 +111,7 @@
                       this.valueState = VALUE_UNPARSED;
                   }
               }
  -            if (needsParse) {
  +            if (this.valueState == VALUE_UNPARSED) {
                   combineFields();
               }
           }
  @@ -187,7 +187,7 @@
       }
   
       public boolean validate() {
  -        if ((enteredValue != null) != fieldsHaveValues()) {
  +        if (enteredValue != null && !fieldsHaveValues()) {
               XMLizable failMessage = getAggregateFieldDefinition().getSplitFailMessage();
               if (failMessage != null) {
                   validationError = new ValidationError(failMessage);
  @@ -196,17 +196,23 @@
                                                                         new String[] { getAggregateFieldDefinition().getSplitRegexp() },
                                                                         Constants.I18N_CATALOGUE));
               }
  +            valueState = VALUE_DISPLAY_VALIDATION;
               return false;
           }
   
  -        // validate my child fields
  +        // Validate ALL my child fields
  +        boolean valid = true;
           for (Iterator i = fields.iterator(); i.hasNext();) {
               Field field = (Field)i.next();
               if (!field.validate()) {
                   validationError = field.getValidationError();
  -                return false;
  +                valid = false;
               }
           }
  +        if (!valid) {
  +            valueState = VALUE_DISPLAY_VALIDATION;
  +            return false;
  +        }
   
           return super.validate();
       }
  @@ -216,10 +222,10 @@
       /**
        * @return "aggregatefield"
        */
  -    public String getXMLElementName() {        
  +    public String getXMLElementName() {
           return AGGREGATEFIELD_EL;
       }
  -      
  +
       public Widget getChild(String id) {
           return (Widget)fieldsById.get(id);
       }