1 package jfun.yan.xml.nuts; 2 3 import java.util.HashSet ; 4 5 import java.util.Set ; 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 20 public class SetNut extends CollectionNut { 21 public void setType(Class type){ 22 if(Set .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 createSet(int sz){ 32 try{ 33 return Utils.createSet(getType(), sz); 34 } 35 catch(Exception e){ 36 throw raise(e); 37 } 38 } 39 public Component eval(){ 40 final Component[] elements = getMandatoryElements(); 41 final Class ltype = getType(HashSet .class); 42 final Component step1 = new SimpleComponent(ltype){ 43 public Object create(){ 44 return createSet(elements.length); 45 } 46 public String toString(){ 47 return "set"+StringUtils.listArray("[",",","]",elements); 48 } 49 }; 50 return Components.storeSet(step1, elements); 51 } 52 53 } 54 | Popular Tags |