|
6 | 6 | import java.net.URI; |
7 | 7 | import java.net.URL; |
8 | 8 | import java.util.Calendar; |
| 9 | +import java.util.Currency; |
9 | 10 | import java.util.Date; |
10 | 11 | import java.util.Locale; |
11 | 12 | import java.util.UUID; |
@@ -46,6 +47,7 @@ public class StdKeyDeserializer extends KeyDeserializer |
46 | 47 | public final static int TYPE_URI = 13; |
47 | 48 | public final static int TYPE_URL = 14; |
48 | 49 | public final static int TYPE_CLASS = 15; |
| 50 | + public final static int TYPE_CURRENCY = 16; |
49 | 51 |
|
50 | 52 | final protected int _kind; |
51 | 53 | final protected Class<?> _keyClass; |
@@ -104,6 +106,9 @@ public static StdKeyDeserializer forType(Class<?> raw) |
104 | 106 | } else if (raw == Locale.class) { |
105 | 107 | FromStringDeserializer<?> deser = FromStringDeserializer.findDeserializer(Locale.class); |
106 | 108 | return new StdKeyDeserializer(TYPE_LOCALE, raw, deser); |
| 109 | + } else if (raw == Currency.class) { |
| 110 | + FromStringDeserializer<?> deser = FromStringDeserializer.findDeserializer(Currency.class); |
| 111 | + return new StdKeyDeserializer(TYPE_CURRENCY, raw, deser); |
107 | 112 | } else { |
108 | 113 | return null; |
109 | 114 | } |
@@ -183,7 +188,12 @@ protected Object _parse(String key, DeserializationContext ctxt) throws Exceptio |
183 | 188 | } catch (IOException e) { |
184 | 189 | throw ctxt.weirdKeyException(_keyClass, key, "unable to parse key as locale"); |
185 | 190 | } |
186 | | - |
| 191 | + case TYPE_CURRENCY: |
| 192 | + try { |
| 193 | + return _deser._deserialize(key, ctxt); |
| 194 | + } catch (IOException e) { |
| 195 | + throw ctxt.weirdKeyException(_keyClass, key, "unable to parse key as currency"); |
| 196 | + } |
187 | 197 | case TYPE_DATE: |
188 | 198 | return ctxt.parseDate(key); |
189 | 199 | case TYPE_CALENDAR: |
|
0 commit comments