⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beanificationtestcase.java

📁 apache beanutils开源项目源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                signal.setBean(BeanUtilsBean.getInstance());                signal.setConvertUtils(ConvertUtilsBean.getInstance());                signal.setPropertyUtils(PropertyUtilsBean.getInstance());            }                        public String toString() {                return "GetBeanUtilsBeanThread";            }        }                    Signal signal = new Signal();        signal.setSignal(1);                GetBeanUtilsBeanThread thread = new GetBeanUtilsBeanThread(signal);        thread.setContextClassLoader(new TestClassLoader());                thread.start();        thread.join();                assertEquals("Signal not set by test thread", 2, signal.getSignal());        assertTrue(                    "Different BeanUtilsBean instances per context classloader",                     BeanUtilsBean.getInstance() != signal.getBean());        assertTrue(                    "Different ConvertUtilsBean instances per context classloader",                     ConvertUtilsBean.getInstance() != signal.getConvertUtils());                            assertTrue(                    "Different PropertyUtilsBean instances per context classloader",                     PropertyUtilsBean.getInstance() != signal.getPropertyUtils());            }            /**      * Tests whether difference instances are loaded by different      * context classloaders.     */    public void testContextClassLoaderLocal() throws Exception {                    class CCLLTesterThread extends Thread {                        private Signal signal;            private ContextClassLoaderLocal ccll;                    CCLLTesterThread(Signal signal, ContextClassLoaderLocal ccll) {                this.signal = signal;                this.ccll = ccll;            }                        public void run() {                ccll.set(new Integer(1789));                signal.setSignal(2);                signal.setMarkerObject(ccll.get());            }                        public String toString() {                return "CCLLTesterThread";            }        }                    ContextClassLoaderLocal ccll = new ContextClassLoaderLocal();        ccll.set(new Integer(1776));        assertEquals("Start thread sets value", new Integer(1776), ccll.get());                  Signal signal = new Signal();        signal.setSignal(1);                CCLLTesterThread thread = new CCLLTesterThread(signal, ccll);        thread.setContextClassLoader(new TestClassLoader());                thread.start();        thread.join();                assertEquals("Signal not set by test thread", 2, signal.getSignal());             assertEquals("Second thread preserves value", new Integer(1776), ccll.get());         assertEquals("Second thread gets value it set", new Integer(1789), signal.getMarkerObject());     }        /** Tests whether calls are independent for different classloaders */    public void testContextClassloaderIndependence() throws Exception {            class TestIndependenceThread extends Thread {            private Signal signal;            private PrimitiveBean bean;                    TestIndependenceThread(Signal signal, PrimitiveBean bean) {                this.signal = signal;                this.bean = bean;            }                        public void run() {                try {                    signal.setSignal(3);                    ConvertUtils.register(new Converter() {                                            public Object convert(Class type, Object value) {                                                return new Integer(9);                                            }                                                }, Integer.TYPE);                    BeanUtils.setProperty(bean, "int", new Integer(1));                } catch (Exception e) {                    e.printStackTrace();                    signal.setException(e);                }            }                        public String toString() {                return "TestIndependenceThread";            }        }                PrimitiveBean bean = new PrimitiveBean();        BeanUtils.setProperty(bean, "int", new Integer(1));        assertEquals("Wrong property value (1)", 1, bean.getInt());        ConvertUtils.register(new Converter() {                                public Object convert(Class type, Object value) {                                    return new Integer(5);                                }                                    }, Integer.TYPE);        BeanUtils.setProperty(bean, "int", new Integer(1));        assertEquals("Wrong property value(2)", 5, bean.getInt());            Signal signal = new Signal();        signal.setSignal(1);        TestIndependenceThread thread = new TestIndependenceThread(signal, bean);        thread.setContextClassLoader(new TestClassLoader());                thread.start();        thread.join();                assertNull("Exception thrown by test thread:" + signal.getException(), signal.getException());        assertEquals("Signal not set by test thread", 3, signal.getSignal());        assertEquals("Wrong property value(3)", 9, bean.getInt());            }        /** Tests whether different threads can set beanutils instances correctly */    public void testBeanUtilsBeanSetInstance() throws Exception {                    class SetInstanceTesterThread extends Thread {                        private Signal signal;            private BeanUtilsBean bean;                    SetInstanceTesterThread(Signal signal, BeanUtilsBean bean) {                this.signal = signal;                this.bean = bean;            }                        public void run() {                BeanUtilsBean.setInstance(bean);                signal.setSignal(21);                signal.setBean(BeanUtilsBean.getInstance());            }                        public String toString() {                return "SetInstanceTesterThread";            }        }                Signal signal = new Signal();        signal.setSignal(1);        BeanUtilsBean beanOne = new BeanUtilsBean();        BeanUtilsBean beanTwo = new BeanUtilsBean();                SetInstanceTesterThread thread = new SetInstanceTesterThread(signal, beanTwo);        thread.setContextClassLoader(new TestClassLoader());                BeanUtilsBean.setInstance(beanOne);        assertEquals("Start thread gets right instance", beanOne, BeanUtilsBean.getInstance());                 thread.start();        thread.join();                assertEquals("Signal not set by test thread", 21, signal.getSignal());             assertEquals("Second thread preserves value", beanOne, BeanUtilsBean.getInstance());         assertEquals("Second thread gets value it set", beanTwo, signal.getBean());     }        /** Tests whether the unset method works*/    public void testContextClassLoaderUnset() throws Exception {        BeanUtilsBean beanOne = new BeanUtilsBean();        ContextClassLoaderLocal ccll = new ContextClassLoaderLocal();        ccll.set(beanOne);        assertEquals("Start thread gets right instance", beanOne, ccll.get());         ccll.unset();        assertTrue("Unset works", !beanOne.equals(ccll.get()));     }        private boolean isPre14JVM() {        // some pre 1.4 JVM have buggy WeakHashMap implementations         // this is used to test for those JVM        String version = System.getProperty("java.specification.version");        StringTokenizer tokenizer = new StringTokenizer(version,".");        if (tokenizer.nextToken().equals("1")) {            String minorVersion = tokenizer.nextToken();            if (minorVersion.equals("0")) return true;            if (minorVersion.equals("1")) return true;            if (minorVersion.equals("2")) return true;            if (minorVersion.equals("3")) return true;        }        return false;    }        // ---- Auxillary classes        class TestClassLoader extends ClassLoader {        public String toString() {            return "TestClassLoader";        }    }        class Signal {        private Exception e;        private int signal = 0;        private BeanUtilsBean bean;        private PropertyUtilsBean propertyUtils;        private ConvertUtilsBean convertUtils;        private Object marker;                public Exception getException() {            return e;        }                public void setException(Exception e) {            this.e = e;        }                public int getSignal() {            return signal;        }                public void setSignal(int signal) {            this.signal = signal;        }                public Object getMarkerObject() {            return marker;        }                public void setMarkerObject(Object marker) {            this.marker = marker;        }                public BeanUtilsBean getBean() {            return bean;        }                public void setBean(BeanUtilsBean bean) {            this.bean = bean;        }                public PropertyUtilsBean getPropertyUtils() {            return propertyUtils;        }                public void setPropertyUtils(PropertyUtilsBean propertyUtils) {            this.propertyUtils = propertyUtils;        }                public ConvertUtilsBean getConvertUtils() {            return convertUtils;        }                public void setConvertUtils(ConvertUtilsBean convertUtils) {            this.convertUtils = convertUtils;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -