dflorey     2004/12/30 04:55:57

  Modified:    projector/src/java/org/apache/slide/projector/constraints
                        ArrayFactory.java AnyFactory.java MapFactory.java
  Added:       projector/src/java/org/apache/slide/projector/constraints
                        DynamicMapConstraints.java
                        DynamicArrayConstraints.java
                        DynamicListConstraints.java
  Log:
  Migration to contract package required introduction of dynamic lists, arrays 
and maps
  
  Revision  Changes    Path
  1.3       +2 -2      
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/ArrayFactory.java
  
  Index: ArrayFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/ArrayFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ArrayFactory.java 28 Nov 2004 13:54:05 -0000      1.2
  +++ ArrayFactory.java 30 Dec 2004 12:55:57 -0000      1.3
  @@ -41,8 +41,8 @@
        Iterator childrenIterator = element.getChildren().iterator();;
           if ( childrenIterator.hasNext() ) {
               Constraints allowedArrayValue = 
ConstraintsManager.getInstance().loadConstraints((Element)childrenIterator.next());
  -            return new ArrayConstraints(allowedArrayValue);
  +            return new DynamicArrayConstraints(allowedArrayValue);
           }
  -        return new ArrayConstraints();
  +        return new DynamicArrayConstraints();
       }
   }
  
  
  
  1.3       +2 -0      
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/AnyFactory.java
  
  Index: AnyFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/AnyFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AnyFactory.java   28 Nov 2004 13:54:05 -0000      1.2
  +++ AnyFactory.java   30 Dec 2004 12:55:57 -0000      1.3
  @@ -6,6 +6,7 @@
   import org.apache.commons.contract.constraints.Constraints;
   import org.apache.commons.xmlio.out.XMLStringWriter;
   import org.apache.commons.xmlio.out.XMLWriter;
  +import org.apache.slide.projector.Projector;
   import org.apache.slide.projector.value.Any;
   import org.apache.slide.projector.value.URI;
   import org.apache.slide.projector.value.URIValue;
  @@ -30,6 +31,7 @@
           String processor = element.getAttributeValue("processor");
           String result = element.getAttributeValue("result");
           String store = element.getAttributeValue("store");
  +        if ( store == null ) store = Projector.NO_STORE;
           String key = element.getAttributeValue("key");
           String domain = element.getAttributeValue("domain");
           URI processorUri = ( processor == null ? null : new 
URIValue(processor) );
  
  
  
  1.3       +1 -1      
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/MapFactory.java
  
  Index: MapFactory.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/MapFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MapFactory.java   28 Nov 2004 13:54:05 -0000      1.2
  +++ MapFactory.java   30 Dec 2004 12:55:57 -0000      1.3
  @@ -45,7 +45,7 @@
       }
   
       public Constraints loadDescriptor(Element element) {
  -             MapConstraints valueDescriptor = new MapConstraints();
  +             MapConstraints valueDescriptor = new DynamicMapConstraints();
                for ( Iterator i = element.getChildren().iterator(); 
i.hasNext(); ) {
                        Element entry = (Element)i.next();
                        String key = entry.getAttributeValue("key");
  
  
  
  1.1                  
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/DynamicMapConstraints.java
  
  Index: DynamicMapConstraints.java
  ===================================================================
  package org.apache.slide.projector.constraints;
  
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.Map;
  
  import org.apache.commons.contract.Context;
  import org.apache.commons.contract.constraints.CastException;
  import org.apache.commons.contract.constraints.Constraints;
  import org.apache.commons.contract.constraints.MapConstraints;
  import org.apache.commons.contract.descriptor.ParameterDescriptor;
  import org.apache.commons.i18n.LocalizedError;
  import org.apache.slide.projector.value.Any;
  
  public class DynamicMapConstraints extends MapConstraints {
      protected Map castedMap(Map map, Context context) throws CastException {
        Map castedMap = new HashMap(map);
        for ( Iterator i = entryConstraints.iterator(); i.hasNext(); ) {
              ParameterDescriptor parameterDescriptor = 
(ParameterDescriptor)i.next();
              Constraints entryDescriptor = 
parameterDescriptor.getConstraints();
              String key = parameterDescriptor.getName();
              if ( key.equals(ALL) ) {
                for ( Iterator j = castedMap.entrySet().iterator(); 
j.hasNext(); ) {
                        Map.Entry entry = (Map.Entry)j.next();
                        Object value = entry.getValue();
                      if ( value instanceof Any ) {
                          try {
                              value = ((Any)value).load(context);
                          } catch (Exception e) {
                              throw new CastException(new 
LocalizedError("evaluatingAnyFailed"), e);
                          }
                      }
                        castedMap.put(entry.getKey(), 
entryDescriptor.cast(value, context));
                }
              } else {
                if ( !castedMap.containsKey(key) ) {
                        if ( !parameterDescriptor.isRequired() ) {
                                castedMap.put(key, 
parameterDescriptor.getDefaultValue());
                        }
                } else {
                        Object object = castedMap.get(key);
                        if ( object == null && 
parameterDescriptor.getDefaultValue() == null || 
object.equals(parameterDescriptor.getDefaultValue())) {
                            castedMap.put(key, object);
                        } else {
                            if ( object instanceof Any ) {
                                try {
                                    object = ((Any)object).load(context);
                                } catch (Exception e) {
                                    throw new CastException(new 
LocalizedError("evaluatingAnyFailed"), e);
                                }
                            }
                            castedMap.put(key, entryDescriptor.cast(object, 
context));
                        }
                }
              }
          }
          return castedMap;
      }
  }
  
  
  1.1                  
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/DynamicArrayConstraints.java
  
  Index: DynamicArrayConstraints.java
  ===================================================================
  package org.apache.slide.projector.constraints;
  
  import java.util.Iterator;
  import java.util.List;
  
  import org.apache.commons.contract.Context;
  import org.apache.commons.contract.constraints.ArrayConstraints;
  import org.apache.commons.contract.constraints.CastException;
  import org.apache.commons.contract.constraints.Constraints;
  import org.apache.commons.i18n.LocalizedError;
  import org.apache.slide.projector.value.Any;
  
  public class DynamicArrayConstraints extends ArrayConstraints {
      /**
       * 
       */
      public DynamicArrayConstraints() {
          super();
      }
  
      /**
       * @param entryValueDescriptor
       */
      public DynamicArrayConstraints(Constraints entryValueDescriptor) {
          super(entryValueDescriptor);
      }
      
      public Object cast(Object value, Context context) throws CastException {
        Object[] array = null;
        if ( value instanceof String[] ) {
                array = new Object[((String[])value).length];
                for ( int i = 0; i < array.length; i++ ) {
                        array[i] = entryValueDescriptor.cast(((String 
[])value)[i], context);
                }
        } else if ( value instanceof List ) {
                array = new Object[((List)value).size()];
                int counter = 0;
                for ( Iterator i = ((List)value).iterator(); i.hasNext(); ) {
                        Object entry = i.next();
                        if ( entry instanceof Any ) {
                            try {
                          entry = ((Any)entry).load(context);
                      } catch (Exception e) {
                          throw new CastException(new 
LocalizedError("evaluatingAnyFailed"), e);
                      }
                  }
                  array[counter] = entryValueDescriptor.cast(entry, context);
                        counter++;
                }
          } else if ( value instanceof Object[] ) {
              array = new Object[((Object[])value).length];
                for ( int i = 0; i < array.length; i++ ) {
                        Object entry = ((Object[])value)[i];
                  if ( entry instanceof Any ) {
                      try {
                          entry = ((Any)entry).load(context);
                      } catch (Exception e) {
                          throw new CastException(new 
LocalizedError("evaluatingAnyFailed"), e);
                      }
                  }
                                array[i] = entryValueDescriptor.cast(entry, 
context);
                }
        } else {
                throw new CastException(new LocalizedError("uncastableArray", 
new Object[] { value }));
        }
                return array;
      }
  }
  
  
  1.1                  
jakarta-slide/projector/src/java/org/apache/slide/projector/constraints/DynamicListConstraints.java
  
  Index: DynamicListConstraints.java
  ===================================================================
  package org.apache.slide.projector.constraints;
  
  import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.List;
  
  import org.apache.commons.contract.Context;
  import org.apache.commons.contract.constraints.CastException;
  import org.apache.commons.contract.constraints.ListConstraints;
  import org.apache.commons.i18n.LocalizedError;
  import org.apache.slide.projector.value.Any;
  
  public class DynamicListConstraints extends ListConstraints {
      public Object cast(Object value, Context context) throws CastException {
        List list = new ArrayList();
        if ( value instanceof String[] ) {
                for ( int i = 0; i < ((String[])value).length; i++ ) {
                        list.add(entryValueDescriptor.cast(((String 
[])value)[i], context));
                }
        } else if ( value instanceof List ) {
                for ( Iterator i = ((List)value).iterator(); i.hasNext(); ) {
                        Object entry = i.next();
                  if ( entry instanceof Any ) {
                      try {
                          entry = ((Any)entry).load(context);
                      } catch (Exception e) {
                          throw new CastException(new 
LocalizedError("evaluatingAnyFailed"), e);
                      }
                  }
                        list.add(entryValueDescriptor.cast(entry, context));
                }
          } else if ( value instanceof Object[] ) {
                for ( int i = 0; i < ((Object [])value).length; i++ ) {
                        Object entry = ((Object [])value)[i];
                  if ( entry instanceof Any ) {
                      try {
                          entry = ((Any)entry).load(context);
                      } catch (Exception e) {
                          throw new CastException(new 
LocalizedError("evaluatingAnyFailed"), e);
                      }
                  }
                  list.add(entryValueDescriptor.cast(entry, context));
                }
        } else {
                throw new CastException(new LocalizedError("uncastableList", 
new Object[] { value }));
        }
                return list;
      }
  }
  
  

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

Reply via email to