KickJava   Java API By Example, From Geeks To Geeks.

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


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

20 public class SetNut extends CollectionNut {
21   public void setType(Class JavaDoc type){
22     if(Set JavaDoc.class.isAssignableFrom(type)){
23       super.setType(type);
24     }
25     else{
26       raise(Misc.getTypeName(type) +
27           " is not a sub-type of java.util.Set");
28     }
29   }
30
31   private Set JavaDoc createSet(int sz){
32     try{
33       return Utils.createSet(getType(), sz);
34     }
35     catch(Exception JavaDoc e){
36       throw raise(e);
37     }
38   }
39   public Component eval(){
40     final Component[] elements = getMandatoryElements();
41     final Class JavaDoc ltype = getType(HashSet JavaDoc.class);
42     final Component step1 = new SimpleComponent(ltype){
43       public Object JavaDoc create(){
44         return createSet(elements.length);
45       }
46       public String JavaDoc toString(){
47         return "set"+StringUtils.listArray("[",",","]",elements);
48       }
49     };
50     return Components.storeSet(step1, elements);
51   }
52
53 }
54
Popular Tags