1 package org.appfuse.webapp.taglib; 2 3 import java.lang.reflect.AccessibleObject ; 4 import java.lang.reflect.Field ; 5 import java.util.ArrayList ; 6 import java.util.List ; 7 8 import javax.servlet.jsp.tagext.TagData ; 9 import javax.servlet.jsp.tagext.TagExtraInfo ; 10 import javax.servlet.jsp.tagext.VariableInfo ; 11 12 import org.apache.commons.logging.Log; 13 import org.apache.commons.logging.LogFactory; 14 import org.appfuse.Constants; 15 16 17 24 public class ConstantsTei extends TagExtraInfo { 25 private final Log log = LogFactory.getLog(ConstantsTei.class); 26 27 30 public VariableInfo [] getVariableInfo(TagData data) { 31 List vars = new ArrayList (); 33 34 try { 35 String clazz = data.getAttributeString("className"); 36 37 if (clazz == null) { 38 clazz = Constants.class.getName(); 39 } 40 41 Class c = Class.forName(clazz); 42 43 if (data.getAttributeString("var") == null) { 45 Field [] fields = c.getDeclaredFields(); 46 47 AccessibleObject.setAccessible(fields, true); 48 49 for (int i = 0; i < fields.length; i++) { 50 String type = fields[i].getType().getName(); 51 vars.add(new VariableInfo (fields[i].getName(), 52 ((fields[i].getType().isArray()) ? type.substring(2, type.length()-1) + "[]" : type), 53 true, VariableInfo.AT_END)); 54 } 55 } else { 56 String var = data.getAttributeString("var"); 57 String type = c.getField(var).getType().getName(); 58 vars.add(new VariableInfo (c.getField(var).getName(), 59 ((c.getField(var).getType().isArray()) ? type.substring(2, type.length()-1) + "[]" : type), 60 true, VariableInfo.AT_END)); 61 } 62 } catch (Exception cnf) { 63 log.error(cnf.getMessage()); 64 cnf.printStackTrace(); 65 } 66 67 return (VariableInfo []) vars.toArray(new VariableInfo [] { }); 68 } 69 } 70 | Popular Tags |