ivelin      2002/06/12 19:35:04

  Modified:    src/java/org/apache/cocoon/components/xmlform Form.java
  Log:
  Features from latest JXPath version,
  reduce code.
  
  Revision  Changes    Path
  1.3       +11 -59    
xml-cocoon2/src/java/org/apache/cocoon/components/xmlform/Form.java
  
  Index: Form.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/components/xmlform/Form.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Form.java 2 Jun 2002 03:33:35 -0000       1.2
  +++ Form.java 13 Jun 2002 02:35:04 -0000      1.3
  @@ -76,6 +76,7 @@
   
   import org.apache.commons.jxpath.JXPathContext;
   import org.apache.commons.jxpath.Pointer;
  +import org.apache.commons.jxpath.JXPathException;
   //import org.apache.commons.jxpath.ri.model.dom.DOMAttributePointer;
   
   import org.apache.cocoon.Constants;
  @@ -190,8 +191,7 @@
     {
       if ( model_ == null)
         throw new IllegalStateException( "Form model not set" );
  -    Pointer pointer = jxcontext_.locateValue( xpath ); 
  -    setValue( pointer, value );
  +    jxcontext_.setValue(xpath, value);
     }
   
     
  @@ -228,10 +228,13 @@
     // when the instance property is array
       if ( property != null && property.getClass().isArray() )
       {
  +      Class componentType = property.getClass ().getComponentType ();
  +      property = java.lang.reflect.Array.newInstance ( componentType, values.length 
);
         java.lang.System.arraycopy(
           values, 0, 
           property, 0, 
           values.length );
  +      pointer.setValue( property );
       }
       else if (property instanceof Collection)
       {
  @@ -243,62 +246,11 @@
       // (and the only) from the values array
       else 
       {
  -      this.setValue( pointer, values[0] );
  +      pointer.setValue( values[0] );
       }
     }
   
     
  -  protected void setValue( Pointer pointer, Object value)
  -  {
  -    
  -//    // Dmitri Plotnikov's patch
  -//        pointer.setValue(value);
  -    
  -    Object property = pointer.getValue();
  -    if ( property != null ) 
  -    {
  -
  -      
  -      // handle DOM elements
  -      if (property instanceof Element)
  -      {
  -        String textPath = pointer.asPath() + "/text()";
  -        setValue( textPath, value );
  -      }
  -      else if (property instanceof Text)
  -      {
  -        Text  node = (Text) property;
  -        node.setNodeValue ( value.toString() );
  -      }
  -      /*
  -      else if (pointer instanceof DOMAttributePointer)
  -      {
  -        Attr  node = (Attr) ( ( (DOMAttributePointer)pointer).getBaseValue() );
  -        node.setNodeValue ( value.toString() );
  -      }     
  -       */
  -      else
  -      {
  -        Object newValue = convertType( value, property.getClass () );
  -        pointer.setValue( newValue );
  -      }
  -    }
  -    // set null value
  -    else pointer.setValue( value );
  -  }
  -  
  -  
  -    /**
  -     * Attempts to convert the request parameter
  -     * String value to the actual model property type
  -     */
  -    public Object convertType(Object value, Class requiredType)
  -    {
  -        value = Types.convert(value, requiredType);
  -        return value;
  -    }
  -  
  -  
     /**
      * Encapsulates access to the model
      *
  @@ -447,7 +399,7 @@
               {
               setValue( path, values );
               }
  -            catch (IllegalArgumentException ex)
  +            catch (JXPathException  ex)
               {
                 Violation v = new Violation();
                 v.setPath( path );
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to