KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jfun > yan > xml > nuts > ListNut


1 package jfun.yan.xml.nuts;
2
3
4
5 import java.util.ArrayList JavaDoc;
6
7 import java.util.List JavaDoc;
8
9
10 import jfun.util.Misc;
11 import jfun.util.StringUtils;
12 import jfun.yan.Component;
13 import jfun.yan.Components;
14 import jfun.yan.SimpleComponent;
15 import jfun.yan.util.Utils;
16 /**
17  * Nut class for <list> tag.
18  * <p>
19  * @author Ben Yu
20  * Nov 9, 2005 11:42:15 PM
21  */

22 public class ListNut extends CollectionNut {
23   public void setType(Class JavaDoc type){
24     if(List JavaDoc.class.isAssignableFrom(type)){
25       super.setType(type);
26     }
27     else{
28       raise(Misc.getTypeName(type) +
29           " is not a sub-type of java.util.List");
30     }
31   }
32   private List JavaDoc createList(int sz){
33     try{
34       return Utils.createList(getType(), sz);
35     }
36     catch(Exception JavaDoc e){
37       throw raise(e);
38     }
39   }
40   public Component eval(){
41     final Component[] elements = getMandatoryElements();
42     final Class JavaDoc ltype = getType(ArrayList JavaDoc.class);
43     final Component step1 = new SimpleComponent(ltype){
44       public Object JavaDoc create(){
45         return createList(elements.length);
46       }
47       public String JavaDoc toString(){
48         return "list"+StringUtils.listArray("[",",","]",elements);
49       }
50     };
51     return Components.storeList(step1, elements);
52     /*
53     return Components.array(components, Object.class).map(new Map(){
54       public Object map(Object a){
55         final Object[] arr = (Object[])a;
56         final List result = createList(arr.length);
57         result.addAll(Arrays.asList(arr));
58         return result;
59       }
60     }).cast(listtype);*/

61   }
62
63 }
64
Popular Tags