📄 annotationxworkconvertertest.java
字号:
/* * 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 + -