dflorey     2004/08/04 04:35:35

  Modified:    projector/src/java/org/apache/slide/projector/processor/form
                        Trigger.java
               projector/src/java/org/apache/slide/projector/engine
                        ProcessorManager.java
               projector/src/java/org/apache/slide/projector/descriptor
                        MapValueDescriptor.java ArrayValueDescriptor.java
  Log:
  Separation of value cast and validation.
  
  Revision  Changes    Path
  1.3       +3 -2      
jakarta-slide/projector/src/java/org/apache/slide/projector/processor/form/Trigger.java
  
  Index: Trigger.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/processor/form/Trigger.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Trigger.java      28 Jul 2004 09:47:50 -0000      1.2
  +++ Trigger.java      4 Aug 2004 11:35:34 -0000       1.3
  @@ -18,6 +18,7 @@
   import org.apache.slide.projector.value.BooleanValue;
   import org.apache.slide.projector.value.StreamableValue;
   import org.apache.slide.projector.value.StringValue;
  +import org.apache.slide.projector.value.Value;
   
   /**
    * @version $Revision$
  @@ -38,7 +39,7 @@
       }
   
       public Result process(Map parameter, Context context) throws Exception {
  -     StringValue []involvedParameters = 
(StringValue[])((ArrayValue)parameter.get(INVOLVED_PARAMETERS)).getArray();
  +     Value []involvedParameters = 
(Value[])((ArrayValue)parameter.get(INVOLVED_PARAMETERS)).getArray();
        String targetStep = parameter.get(Process.STEP).toString();
        BooleanValue validate = (BooleanValue)parameter.get(VALIDATE);
        BooleanValue wizard = (BooleanValue)parameter.get(WIZARD);
  
  
  
  1.5       +9 -9      
jakarta-slide/projector/src/java/org/apache/slide/projector/engine/ProcessorManager.java
  
  Index: ProcessorManager.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/engine/ProcessorManager.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ProcessorManager.java     3 Aug 2004 14:30:01 -0000       1.4
  +++ ProcessorManager.java     4 Aug 2004 11:35:34 -0000       1.5
  @@ -253,22 +253,22 @@
        }
       }
       
  -    public static Value prepareValue(ParameterDescriptor parameterDescriptor, 
Object object, Context context) throws Exception {
  -     Value value;
  -     if ( object instanceof AnyValue ) {
  -             object = ((AnyValue)object).load(context);
  +    public static Value prepareValue(ParameterDescriptor parameterDescriptor, 
Object value, Context context) throws Exception {
  +     Value preparedValue;
  +     if ( value instanceof AnyValue ) {
  +              value = ((AnyValue)value).load(context);
        }
  -     if ( object == null || object instanceof NullValue ) {
  +     if ( value == null || value instanceof NullValue ) {
               if ( parameterDescriptor.isRequired() ) {
                   throw new ValidationException(new 
ErrorMessage("requiredParameterMissing", new String[] { parameterDescriptor.getName() 
}));
               } else {
  -                value = parameterDescriptor.getDefaultValue();
  +                preparedValue = parameterDescriptor.getDefaultValue();
               }
        } else {
  -             value = parameterDescriptor.getValueDescriptor().valueOf(object, 
context);
  -             parameterDescriptor.getValueDescriptor().validate(value, context);
  +             preparedValue = 
parameterDescriptor.getValueDescriptor().valueOf(value, context);
  +             parameterDescriptor.getValueDescriptor().validate(preparedValue, 
context);
        }
  -     return value;
  +     return preparedValue;
       }
   
       public ProcessorDescriptor getProcessorDescriptor(URI uri) {
  
  
  
  1.4       +12 -10    
jakarta-slide/projector/src/java/org/apache/slide/projector/descriptor/MapValueDescriptor.java
  
  Index: MapValueDescriptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/descriptor/MapValueDescriptor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MapValueDescriptor.java   3 Aug 2004 14:27:18 -0000       1.3
  +++ MapValueDescriptor.java   4 Aug 2004 11:35:34 -0000       1.4
  @@ -1,6 +1,7 @@
   package org.apache.slide.projector.descriptor;
   
   import java.util.ArrayList;
  +import java.util.HashMap;
   import java.util.Iterator;
   import java.util.List;
   import java.util.Map;
  @@ -60,31 +61,32 @@
       }
   
       private MapValue castedMap(Map map, Context context) throws ValueCastException {
  -        for ( Iterator i = entryDescriptors.iterator(); i.hasNext(); ) {
  +     Map castedMap = new HashMap(map);
  +     for ( Iterator i = entryDescriptors.iterator(); i.hasNext(); ) {
               ParameterDescriptor parameterDescriptor = (ParameterDescriptor)i.next();
               ValueDescriptor entryDescriptor = 
parameterDescriptor.getValueDescriptor();
               String key = parameterDescriptor.getName();
               if ( key.equals(ALL) ) {
  -             for ( Iterator j = map.entrySet().iterator(); j.hasNext(); ) {
  +             for ( Iterator j = castedMap.entrySet().iterator(); j.hasNext(); ) {
                        Map.Entry entry = (Map.Entry)j.next();
                        Object value = entry.getValue();
                                if ( value instanceof AnyValue ) {
                                        try {
  -                             map.put(entry.getKey(), 
entryDescriptor.valueOf(((AnyValue)value).load(context), context));
  +                             castedMap.put(entry.getKey(), 
entryDescriptor.valueOf(((AnyValue)value).load(context), context));
                                        } catch (Exception e) {
                                        throw new ValueCastException(new 
ErrorMessage("uncastableArrayValue", new Object[] { value }));
                                        }
                                } else {
  -                     map.put(entry.getKey(), entryDescriptor.valueOf(value, 
context));
  +                     castedMap.put(entry.getKey(), entryDescriptor.valueOf(value, 
context));
                                }
                }
               } else {
  -             if ( !map.containsKey(key) ) {
  +             if ( !castedMap.containsKey(key) ) {
                        if ( !parameterDescriptor.isRequired() ) {
  -                             map.put(key, parameterDescriptor.getDefaultValue());
  +                             castedMap.put(key, 
parameterDescriptor.getDefaultValue());
                        }
                } else {
  -                     Object object = map.get(key);
  +                     Object object = castedMap.get(key);
                                if ( object instanceof AnyValue ) {
                                try {
                                                        object = 
((AnyValue)object).load(context);
  @@ -93,14 +95,14 @@
                                                }
                                } 
                        if ( object.equals(parameterDescriptor.getDefaultValue())) {
  -                             map.put(key, object);
  +                             castedMap.put(key, object);
                        } else {
  -                             map.put(key, entryDescriptor.valueOf(object, context));
  +                             castedMap.put(key, entryDescriptor.valueOf(object, 
context));
                        }
                }
               }
           }
  -        return new MapValue(map);
  +        return new MapValue(castedMap);
       }
       
       public void validate(Value value, Context context) throws ValidationException {
  
  
  
  1.4       +5 -4      
jakarta-slide/projector/src/java/org/apache/slide/projector/descriptor/ArrayValueDescriptor.java
  
  Index: ArrayValueDescriptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/descriptor/ArrayValueDescriptor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ArrayValueDescriptor.java 3 Aug 2004 14:27:18 -0000       1.3
  +++ ArrayValueDescriptor.java 4 Aug 2004 11:35:34 -0000       1.4
  @@ -53,16 +53,17 @@
                        counter++;
                }
           } else if ( value instanceof ArrayValue ) {
  -             array = ((ArrayValue)value).getArray();
  +             array = new Value[((ArrayValue)value).getArray().length];
                for ( int i = 0; i < array.length; i++ ) {
  -                     if ( array[i] instanceof AnyValue ) {
  +                     Object entry = ((ArrayValue)value).getArray()[i];
  +                     if ( entry instanceof AnyValue ) {
                                try {
  -                                     array[i] = 
entryValueDescriptor.valueOf(((AnyValue)array[i]).load(context), context);
  +                                     array[i] = 
entryValueDescriptor.valueOf(((AnyValue)entry).load(context), context);
                                        } catch (Exception e) {
                                        throw new ValueCastException(new 
ErrorMessage("uncastableArrayValue", new Object[] { value }));
                                        }
                        } else {
  -                             array[i] = entryValueDescriptor.valueOf(array[i], 
context);
  +                             array[i] = entryValueDescriptor.valueOf(entry, 
context);
                        }
                }
        } else {
  
  
  

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

Reply via email to