package org.nutz; import java.io.File; import java.io.InputStream; import java.security.AccessController; import java.util.HashMap; import java.security.PrivilegedAction; import java.util.Map; import java.util.Properties; import org.nutz.aop.ClassDefiner; import org.nutz.aop.DefaultClassDefiner; import org.nutz.dao.DatabaseMeta; import org.nutz.ioc.Ioc; import org.nutz.ioc.impl.NutIoc; import org.nutz.ioc.loader.json.JsonLoader; import org.nutz.lang.Files; import org.nutz.lang.Lang; import org.nutz.lang.Streams; import org.nutz.lang.Strings; import static java.lang.String.*; public class Nutzs { private static Properties pp; private static void checkProperties() { if (null == pp) loadProperties("nutz-test.properties"); } public static void loadProperties(String fileName) { InputStream is = null; try { pp = new Properties(); File f = Files.findFile(fileName); if(f == null) throw new RuntimeException("nutz-test.properties Not FOUND!!!"); is = Streams.fileIn(f); pp.load(is); } catch (Exception e) { throw Lang.wrapThrow(e); } finally { Streams.safeClose(is); } } public static String getDriver() { checkProperties(); return Strings.trim(pp.getProperty("driver")); } public static String getUrl() { checkProperties(); return Strings.trim(pp.getProperty("url")); } public static String getPassword() { checkProperties(); return Strings.trim(pp.getProperty("password")); } public static String getUserName() { checkProperties(); return Strings.trim(pp.getProperty("username")); } private static Map<String, Ioc> nuts = new HashMap<String, Ioc>(); public static Ioc getIoc(String key) { Ioc nut = nuts.get(key); if (null == nut) { synchronized (Nutzs.class) { nut = nuts.get(key); try { if (null == nut) { nut = new NutIoc(new JsonLoader(key)); nuts.put(key, nut); } } catch (Exception e) { throw Lang.wrapThrow(e); } } } return nut; } public static void depose() { for (Ioc ioc : nuts.values()) ioc.depose(); nuts.clear(); nuts = null; } public static void notSupport(String message) { // junit.framework.Assert.fail(message); } public static void notSupport(DatabaseMeta meta) { notSupport(format("[%S] don't support this test", meta.getTypeName())); } public static ClassDefiner cd() { return AccessController.doPrivileged(new PrivilegedAction<DefaultClassDefiner>() { public DefaultClassDefiner run() { return new DefaultClassDefiner(Nutzs.class.getClassLoader()); } }); } }