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