Skip to content

Commit a45e8f4

Browse files
committed
FIX: Codec for Locale doesn't use shared instance.
1 parent 371efce commit a45e8f4

File tree

2 files changed

+41
-9
lines changed

2 files changed

+41
-9
lines changed

src/main/java/kiss/model/Model.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.Collections;
2828
import java.util.HashMap;
2929
import java.util.List;
30+
import java.util.Locale;
3031
import java.util.Map;
3132
import java.util.Map.Entry;
3233

@@ -114,7 +115,6 @@ protected Model(Class type) {
114115
case 1195259493: // java.lang.String
115116
case -1555282570: // java.lang.StringBuilder
116117
case 1196660485: // java.lang.StringBuffer
117-
case -1165211622: // java.util.Locale
118118
case 2130072984: // java.io.File
119119
case 2050244018: // java.net.URL
120120
case 2050244015: // java.net.URI
@@ -161,6 +161,10 @@ protected Model(Class type) {
161161
};
162162
break;
163163

164+
case -1165211622: // java.util.Locale
165+
codec = Locale::forLanguageTag;
166+
break;
167+
164168
case 1464606545: // java.nio.file.Path
165169
codec = I::locate;
166170
break;
@@ -227,8 +231,7 @@ protected Model(Class type) {
227231
for (Entry<String, Method[]> entry : candidates.entrySet()) {
228232
Method[] methods = entry.getValue();
229233

230-
if (methods[0] != null && methods[1] != null && ((methods[0].getModifiers() | methods[1]
231-
.getModifiers()) & FINAL) == 0) {
234+
if (methods[0] != null && methods[1] != null && ((methods[0].getModifiers() | methods[1].getModifiers()) & FINAL) == 0) {
232235
// create model for the property
233236
try {
234237
Model model = load(methods[0].getGenericReturnType(), type);
@@ -239,8 +242,7 @@ protected Model(Class type) {
239242

240243
// this property is valid
241244
Property property = new Property(model, entry.getKey(), methods);
242-
property.accessors = new MethodHandle[] {look.unreflect(methods[0]),
243-
look.unreflect(methods[1])};
245+
property.accessors = new MethodHandle[] {look.unreflect(methods[0]), look.unreflect(methods[1])};
244246

245247
// register it
246248
properties.add(property);
@@ -261,8 +263,9 @@ protected Model(Class type) {
261263

262264
if (WritableValue.class.isAssignableFrom(fieldModel.type)) {
263265
// property
264-
Property property = new Property(load(fieldModel.type.getMethod("getValue")
265-
.getGenericReturnType(), field.getGenericType()), field.getName());
266+
Property property = new Property(
267+
load(fieldModel.type.getMethod("getValue").getGenericReturnType(), field.getGenericType()),
268+
field.getName());
266269
property.accessors = new MethodHandle[] {look.unreflectGetter(field), null};
267270
property.type = 2;
268271

@@ -273,8 +276,7 @@ protected Model(Class type) {
273276
field.setAccessible(true);
274277

275278
Property property = new Property(fieldModel, field.getName(), field);
276-
property.accessors = new MethodHandle[] {look.unreflectGetter(field),
277-
look.unreflectSetter(field)};
279+
property.accessors = new MethodHandle[] {look.unreflectGetter(field), look.unreflectSetter(field)};
278280
property.type = 1;
279281

280282
// register it
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright (C) 2015 Nameless Production Committee
3+
*
4+
* Licensed under the MIT License (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://opensource.org/licenses/mit-license.php
9+
*/
10+
package kiss.codec;
11+
12+
import java.util.Locale;
13+
14+
import org.junit.Test;
15+
16+
import kiss.Codec;
17+
import kiss.model.Model;
18+
19+
/**
20+
* @version 2015/10/20 11:18:24
21+
*/
22+
public class LocaleTest {
23+
24+
@Test
25+
public void codec() throws Exception {
26+
Codec<Locale> codec = Model.load(Locale.class).getCodec();
27+
Locale locale = codec.decode("en");
28+
assert locale == Locale.ENGLISH;
29+
}
30+
}

0 commit comments

Comments
 (0)