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

📄 annotationxworkconvertertest.java

📁 在Struts2中的jar包xwork的源代码.版本为2.0.7
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 2002-2006 by OpenSymphony * All rights reserved. */package com.opensymphony.xwork2.util;import com.opensymphony.xwork2.*;import com.opensymphony.xwork2.test.ModelDrivenAnnotationAction2;import com.opensymphony.xwork2.test.AnnotationUser;import com.opensymphony.xwork2.config.ConfigurationManager;import ognl.OgnlException;import ognl.OgnlRuntime;import java.math.BigDecimal;import java.math.BigInteger;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.*;/** * @author $Author: rainerh $ * @author Rainer Hermanns * @version $Revision: 1250 $ */public class AnnotationXWorkConverterTest extends XWorkTestCase {    ActionContext ac;    Map context;    XWorkConverter converter;//    public void testConversionToSetKeepsOriginalSetAndReplacesContents() {//        ValueStack stack = ValueStackFactory.getFactory().createValueStack();////        Map stackContext = stack.getContext();//        stackContext.put(InstantiatingNullHandler.CREATE_NULL_OBJECTS, Boolean.TRUE);//        stackContext.put(XWorkMethodAccessor.DENY_METHOD_EXECUTION, Boolean.TRUE);//        stackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);////        String[] param = new String[] {"abc", "def", "ghi"};//        List paramList = Arrays.asList(param);////        List originalList = new ArrayList();//        originalList.add("jkl");//        originalList.add("mno");////        AnnotationUser user = new AnnotationUser();//        user.setList(originalList);//        stack.push(user);////        stack.setValue("list", param);////        List userList = user.getList();//        assertEquals(3,userList.size());//        assertEquals(paramList,userList);//        assertSame(originalList,userList);//    }    public void testArrayToNumberConversion() {        String[] value = new String[]{"12345"};        assertEquals(new Integer(12345), converter.convertValue(context, null, null, null, value, Integer.class));        assertEquals(new Long(12345), converter.convertValue(context, null, null, null, value, Long.class));        value[0] = "123.45";        assertEquals(new Float(123.45), converter.convertValue(context, null, null, null, value, Float.class));        assertEquals(new Double(123.45), converter.convertValue(context, null, null, null, value, Double.class));        value[0] = "1234567890123456789012345678901234567890";        assertEquals(new BigInteger(value[0]), converter.convertValue(context, null, null, null, value, BigInteger.class));        value[0] = "1234567890123456789.012345678901234567890";        assertEquals(new BigDecimal(value[0]), converter.convertValue(context, null, null, null, value, BigDecimal.class));    }    public void testDateConversion() throws ParseException {        java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());        assertEquals(sqlDate, converter.convertValue(context, null, null, null, sqlDate, Date.class));        SimpleDateFormat format = new SimpleDateFormat("mm/dd/yyyy hh:mm:ss");        Date date = format.parse("01/10/2001 00:00:00");        String dateStr = (String) converter.convertValue(context, null, null, null, date, String.class);        Date date2 = (Date) converter.convertValue(context, null, null, null, dateStr, Date.class);        assertEquals(date, date2);    }    public void testFieldErrorMessageAddedForComplexProperty() {        SimpleAnnotationAction action = new SimpleAnnotationAction();        action.setBean(new AnnotatedTestBean());        ValueStack stack = ValueStackFactory.getFactory().createValueStack();        stack.push(action);        Map ognlStackContext = stack.getContext();        ognlStackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);        ognlStackContext.put(XWorkConverter.CONVERSION_PROPERTY_FULLNAME, "bean.birth");        String[] value = new String[]{"invalid date"};        assertEquals("Conversion should have failed.", OgnlRuntime.NoConversionPossible, converter.convertValue(ognlStackContext, action.getBean(), null, "birth", value, Date.class));        stack.pop();        Map conversionErrors = (Map) stack.getContext().get(ActionContext.CONVERSION_ERRORS);        assertNotNull(conversionErrors);        assertTrue(conversionErrors.size() == 1);        assertEquals(value, conversionErrors.get("bean.birth"));    }    public void testFieldErrorMessageAddedWhenConversionFails() {        SimpleAnnotationAction action = new SimpleAnnotationAction();        action.setDate(null);        ValueStack stack = ValueStackFactory.getFactory().createValueStack();        stack.push(action);        Map ognlStackContext = stack.getContext();        ognlStackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);        String[] value = new String[]{"invalid date"};        assertEquals("Conversion should have failed.", OgnlRuntime.NoConversionPossible, converter.convertValue(ognlStackContext, action, null, "date", value, Date.class));        stack.pop();        Map conversionErrors = (Map) ognlStackContext.get(ActionContext.CONVERSION_ERRORS);        assertNotNull(conversionErrors);        assertEquals(1, conversionErrors.size());        assertNotNull(conversionErrors.get("date"));        assertEquals(value, conversionErrors.get("date"));    }    public void testFieldErrorMessageAddedWhenConversionFailsOnModelDriven() {        ModelDrivenAnnotationAction action = new ModelDrivenAnnotationAction();        ValueStack stack = ValueStackFactory.getFactory().createValueStack();        stack.push(action);        stack.push(action.getModel());        Map ognlStackContext = stack.getContext();        ognlStackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);        String[] value = new String[]{"invalid date"};        assertEquals("Conversion should have failed.", OgnlRuntime.NoConversionPossible, converter.convertValue(ognlStackContext, action, null, "birth", value, Date.class));        stack.pop();        stack.pop();        Map conversionErrors = (Map) ognlStackContext.get(ActionContext.CONVERSION_ERRORS);        assertNotNull(conversionErrors);        assertEquals(1, conversionErrors.size());        assertNotNull(conversionErrors.get("birth"));        assertEquals(value, conversionErrors.get("birth"));    }    public void testFindConversionErrorMessage() {        ModelDrivenAnnotationAction action = new ModelDrivenAnnotationAction();        ValueStack stack = ValueStackFactory.getFactory().createValueStack();        stack.push(action);        stack.push(action.getModel());        String message = XWorkConverter.getConversionErrorMessage("birth", stack);        assertNotNull(message);        assertEquals("Invalid date for birth.", message);        message = XWorkConverter.getConversionErrorMessage("foo", stack);        assertNotNull(message);        assertEquals("Invalid field value for field \"foo\".", message);    }    public void testFindConversionMappingForInterface() {        ModelDrivenAnnotationAction2 action = new ModelDrivenAnnotationAction2();        ValueStack stack = ValueStackFactory.getFactory().createValueStack();        stack.push(action);        stack.push(action.getModel());        Map ognlStackContext = stack.getContext();        ognlStackContext.put(XWorkConverter.REPORT_CONVERSION_ERRORS, Boolean.TRUE);        String value = "asdf:123";        Object o = converter.convertValue(ognlStackContext, action.getModel(), null, "barObj", value, Bar.class);        assertNotNull(o);        assertTrue("class is: " + o.getClass(), o instanceof Bar);        Bar b = (Bar) o;        assertEquals(value, b.getTitle() + ":" + b.getSomethingElse());    }    public void testLocalizedDateConversion() throws Exception {        Date date = new Date(System.currentTimeMillis());        Locale locale = Locale.GERMANY;        DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);        String dateString = df.format(date);        context.put(ActionContext.LOCALE, locale);        assertEquals(dateString, converter.convertValue(context, null, null, null, date, String.class));    }    public void testStringArrayToCollection() {        List list = new ArrayList();        list.add("foo");        list.add("bar");        list.add("baz");        assertEquals(list, converter.convertValue(context, null, null, null, new String[]{                "foo", "bar", "baz"        }, Collection.class));    }    public void testStringArrayToList() {        List list = new ArrayList();        list.add("foo");        list.add("bar");        list.add("baz");        assertEquals(list, converter.convertValue(context, null, null, null, new String[]{                "foo", "bar", "baz"        }, List.class));    }    public void testStringArrayToPrimitiveWrappers() {        Long[] longs = (Long[]) converter.convertValue(context, null, null, null, new String[]{                "123", "456"        }, Long[].class);        assertNotNull(longs);        assertTrue(Arrays.equals(new Long[]{new Long(123), new Long(456)}, longs));        Integer[] ints = (Integer[]) converter.convertValue(context, null, null, null, new String[]{                "123", "456"        }, Integer[].class);        assertNotNull(ints);        assertTrue(Arrays.equals(new Integer[]{                new Integer(123), new Integer(456)        }, ints));        Double[] doubles = (Double[]) converter.convertValue(context, null, null, null, new String[]{                "123", "456"        }, Double[].class);        assertNotNull(doubles);        assertTrue(Arrays.equals(new Double[]{new Double(123), new Double(456)}, doubles));        Float[] floats = (Float[]) converter.convertValue(context, null, null, null, new String[]{                "123", "456"        }, Float[].class);

⌨️ 快捷键说明

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