📄 xworkconvertertest.java
字号:
/* * Copyright (c) 2002-2003 by OpenSymphony * All rights reserved. */package com.opensymphony.xwork2.util;import com.opensymphony.xwork2.*;import com.opensymphony.xwork2.config.ConfigurationManager;import com.opensymphony.xwork2.test.ModelDrivenAction2;import com.opensymphony.xwork2.test.User;import ognl.OgnlException;import ognl.OgnlRuntime;import java.math.BigDecimal;import java.math.BigInteger;import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.*;/** * @author $Author: rainerh $ * @version $Revision: 1566 $ */public class XWorkConverterTest extends XWorkTestCase { 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");//// User user = new User();// 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"); SimpleDateFormat formatt = new SimpleDateFormat("hh:mm:ss"); java.sql.Time datet = new java.sql.Time(formatt.parse("10:11:12").getTime()); String dateStr = (String) converter.convertValue(context, null, null, null, date, String.class); String datetStr = (String) converter.convertValue(context, null, null, null, datet, String.class); Date date2 = (Date) converter.convertValue(context, null, null, null, dateStr, Date.class); assertEquals(date, date2); java.sql.Date date3 = (java.sql.Date) converter.convertValue(context, null, null, null, dateStr, java.sql.Date.class); assertEquals(date, date3); java.sql.Timestamp ts = (java.sql.Timestamp) converter.convertValue(context, null, null, null, dateStr, java.sql.Timestamp.class); assertEquals(date, ts); java.sql.Time time1 = (java.sql.Time) converter.convertValue(context, null, null, null, datetStr, java.sql.Time.class); assertEquals(datet, time1); } public void testFieldErrorMessageAddedForComplexProperty() { SimpleAction action = new SimpleAction(); action.setBean(new TestBean()); 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() { SimpleAction action = new SimpleAction(); 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() { ModelDrivenAction action = new ModelDrivenAction(); 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 testDateStrictConversion() throws Exception { // see XW-341 String dateStr = "13/01/2005"; // us date format is used in context Object res = converter.convertValue(context, null, null, null, dateStr, Date.class); assertEquals(res, OgnlRuntime.NoConversionPossible); dateStr = "02/30/2005"; // us date format is used in context res = converter.convertValue(context, null, null, null, dateStr, Date.class); assertEquals(res, OgnlRuntime.NoConversionPossible); // and test a date that is passable SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); dateStr = "12/31/2005"; // us date format res = converter.convertValue(context, null, null, null, dateStr, Date.class); Date date = format.parse(dateStr); assertNotSame(res, OgnlRuntime.NoConversionPossible); assertEquals(date, res); } public void testFindConversionErrorMessage() { ModelDrivenAction action = new ModelDrivenAction(); 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() { ModelDrivenAction2 action = new ModelDrivenAction2(); 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(o instanceof Bar);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -