1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.seasar.cubby.converter.impl;
18
19 import org.seasar.cubby.action.MessageInfo;
20 import org.seasar.cubby.converter.ConversionException;
21 import org.seasar.cubby.converter.ConversionHelper;
22
23
24
25
26
27
28 public class EnumConverter extends AbstractConverter {
29
30
31
32
33 public Class<?> getObjectType() {
34 return Enum.class;
35 }
36
37
38
39
40 @SuppressWarnings("unchecked")
41 public Object convertToObject(final Object value,
42 final Class<?> objectType, final ConversionHelper helper)
43 throws ConversionException {
44 if (value == null) {
45 return null;
46 }
47 final String name = value.toString();
48 try {
49 return Enum.valueOf((Class<? extends Enum>) objectType, name);
50 } catch (final IllegalArgumentException e) {
51 final MessageInfo messageInfo = new MessageInfo();
52 messageInfo.setKey("valid.enum");
53 throw new ConversionException(messageInfo, e);
54 }
55 }
56
57
58
59
60 public String convertToString(final Object value,
61 final ConversionHelper helper) {
62 if (value == null) {
63 return null;
64 }
65 return Enum.class.cast(value).name();
66 }
67
68 }