You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by df...@apache.org on 2004/08/04 13:35:35 UTC

cvs commit: jakarta-slide/projector/src/java/org/apache/slide/projector/descriptor MapValueDescriptor.java ArrayValueDescriptor.java

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: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org