1 package org.sapia.gumby; 2 3 import java.io.InputStream ; 4 import java.net.URL ; 5 import java.util.ArrayList ; 6 import java.util.HashMap ; 7 import java.util.List ; 8 import java.util.Map ; 9 10 28 public class Settings { 29 30 public static final String SCOPE = "settings"; 31 32 private Settings _parent; 33 private List _imports = new ArrayList (); 34 private Map _vars = new HashMap (); 35 private Class _resourceBase; 36 37 public Settings() { 38 _imports.add("javax.swing"); 39 } 40 41 public Settings(Settings parent) { 42 _parent = parent; 43 } 44 45 49 public Map getBindings() { 50 return _vars; 51 } 52 53 57 public void addImport(String pckg) { 58 _imports.add(pckg); 59 } 60 61 68 public void setResourceBase(Class base) { 69 _resourceBase = base; 70 } 71 72 85 public InputStream resolveResource(String resName) { 86 InputStream resource = null; 87 if(_resourceBase != null) 88 resource = _resourceBase.getResourceAsStream(resName); 89 else if(_parent != null) 90 resource = _parent.resolveResource(resName); 91 if(resource == null) 92 return Thread.currentThread().getContextClassLoader() 93 .getResourceAsStream(resName); 94 95 return resource; 96 } 97 98 103 public URL resolveURL(String resName) { 104 URL resource = null; 105 if(_resourceBase != null) 106 resource = _resourceBase.getResource(resName); 107 else if(_parent != null) 108 resource = _parent.resolveURL(resName); 109 if(resource == null) 110 return Thread.currentThread().getContextClassLoader() 111 .getResource(resName); 112 113 return resource; 114 } 115 116 122 public Class resolveClass(String shortName) { 123 for(int i = 0; i < _imports.size(); i++) { 124 try { 125 return Class.forName(((String ) _imports.get(i) + "." + shortName)); 126 } catch(ClassNotFoundException e) { 127 } 129 } 130 try { 131 return Class.forName(shortName); 132 } catch(ClassNotFoundException e) { 133 } 135 if(_parent != null) 136 return _parent.resolveClass(shortName); 137 else 138 return null; 139 140 } 141 } 142 | Popular Tags |