dgraham     2003/06/11 18:04:11

  Modified:    validator/src/share/org/apache/commons/validator Field.java
  Log:
  Fixed NPE in clone().
  
  Revision  Changes    Path
  1.19      +31 -26    
jakarta-commons/validator/src/share/org/apache/commons/validator/Field.java
  
  Index: Field.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/validator/src/share/org/apache/commons/validator/Field.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Field.java        8 Jun 2003 06:03:16 -0000       1.18
  +++ Field.java        12 Jun 2003 01:04:11 -0000      1.19
  @@ -701,32 +701,37 @@
        * Creates and returns a copy of this object.
        */
       public Object clone() {
  +        Field field = null;
           try {
  -            Field field = (Field) super.clone();
  -            
  -            field.args = new Map[this.args.length];
  -            for (int i = 0; i < this.args.length; i++) {
  -                Map argMap = new HashMap(this.args[i]);
  -                Iterator iter = argMap.keySet().iterator();
  -                while (iter.hasNext()) {
  -                    String validatorName = (String) iter.next();
  -                    Arg arg = (Arg) argMap.get(validatorName);
  -                    argMap.put(validatorName, arg.clone());
  -                }
  -                field.args[i] = argMap;
  -            }
  -
  -            field.hVars = ValidatorUtils.copyFastHashMap(hVars);
  -            field.hMsgs = ValidatorUtils.copyFastHashMap(hMsgs);
  -            field.hArg0 = ValidatorUtils.copyFastHashMap(hArg0);
  -            field.hArg1 = ValidatorUtils.copyFastHashMap(hArg1);
  -            field.hArg2 = ValidatorUtils.copyFastHashMap(hArg2);
  -            field.hArg3 = ValidatorUtils.copyFastHashMap(hArg3);
  -
  -            return field;
  +            field = (Field) super.clone();
           } catch (CloneNotSupportedException e) {
               throw new InternalError(e.toString());
           }
  +
  +        field.args = new Map[this.args.length];
  +        for (int i = 0; i < this.args.length; i++) {
  +            if (this.args[i] == null) {
  +                continue;
  +            }
  +
  +            Map argMap = new HashMap(this.args[i]);
  +            Iterator iter = argMap.keySet().iterator();
  +            while (iter.hasNext()) {
  +                String validatorName = (String) iter.next();
  +                Arg arg = (Arg) argMap.get(validatorName);
  +                argMap.put(validatorName, arg.clone());
  +            }
  +            field.args[i] = argMap;
  +        }
  +
  +        field.hVars = ValidatorUtils.copyFastHashMap(hVars);
  +        field.hMsgs = ValidatorUtils.copyFastHashMap(hMsgs);
  +        field.hArg0 = ValidatorUtils.copyFastHashMap(hArg0);
  +        field.hArg1 = ValidatorUtils.copyFastHashMap(hArg1);
  +        field.hArg2 = ValidatorUtils.copyFastHashMap(hArg2);
  +        field.hArg3 = ValidatorUtils.copyFastHashMap(hArg3);
  +
  +        return field;
       }    
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to