Changeset 40

Show
Ignore:
Timestamp:
08/03/05 13:13:16 (3 years ago)
Author:
schst
Message:

Math extension is now able to add any number of values, fixed exception in reader

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/net/schst/XJConf/XmlReader.java

    r39 r40  
    323323            return; 
    324324        } 
    325         DefinedTag tag = (DefinedTag)this.tagStack.peek(); 
     325        Tag tag = (Tag)this.tagStack.peek(); 
    326326        tag.addData(buf, offset, len); 
    327327    } 
  • trunk/src/net/schst/XJConf/ext/Math.java

    r39 r40  
    11package net.schst.XJConf.ext; 
     2 
     3import java.util.ArrayList; 
    24 
    35import net.schst.XJConf.Extension; 
     
    911/** 
    1012 * Basic example to show, how extensions may return values 
     13 *  
     14 * Supported tags are: 
     15 * - add 
    1116 *  
    1217 * @author Stephan Schmidt 
     
    2732            throws XJConfException { 
    2833         
    29         // add two values 
     34        // add several values 
    3035        if (tag.getName().equals("add")) { 
    31             Integer result = new Integer(Integer.parseInt(tag.getAttribute("value1")) + Integer.parseInt(tag.getAttribute("value2"))); 
     36            double result = 0; 
     37             
     38            ArrayList children = tag.getChildren(); 
     39            Tag child; 
     40            for (int i = 0; i < children.size(); i++) { 
     41                child  = (Tag)children.get(i); 
     42                result = result + Double.parseDouble(child.getConvertedValue(this.getClass().getClassLoader()).toString());  
     43            } 
    3244            GenericTag resultTag = new GenericTag(tag.getName()); 
    33             resultTag.setValue(result);            
     45            resultTag.setValue(new Double(result));            
    3446            return resultTag; 
    3547        } 
    36  
    3748        return null; 
    3849    } 
  • trunk/xml/defines-extension.xml

    r39 r40  
    11<defines> 
    22    <tag name="map" type="java.util.HashMap"/> 
    3     <tag name="number" type="java.lang.Integer" keyAttribute="name"/> 
     3    <tag name="number" type="java.lang.Double" keyAttribute="name"/> 
     4    <tag name="int" type="java.lang.Integer" key="__none"/> 
     5    <tag name="double" type="java.lang.Double" key="__none"/> 
    46 
    57    <tag name="array" type="java.util.ArrayList"/> 
  • trunk/xml/test-extension.xml

    r39 r40  
    33    xmlns:math="http://www.schst.net/XJConf/Math"> 
    44    <map> 
    5         <number name="foo"><math:add value1="10" value2="13"/></number> 
    6         <number name="bar"><math:add value1="35" value2="17"/></number> 
     5        <number name="foo"> 
     6            <math:add> 
     7                <int>13</int><int>34</int> 
     8            </math:add> 
     9        </number> 
     10        <number name="bar"> 
     11            <math:add> 
     12                <int>104</int><double>34.5</double> 
     13            </math:add> 
     14        </number> 
    715    </map> 
    816    <array> 
    9         <math:add value1="10" value2="13"/> 
    10         <math:add value1="20" value2="13"/> 
     17        <math:add> 
     18            <int>104</int><double>34.5</double> 
     19        </math:add> 
     20        <math:add> 
     21            <int>123</int><double>34.5321</double><double>-4</double> 
     22        </math:add> 
    1123    </array> 
    1224</xj:configuration>