@@ -46,43 +46,19 @@ public int decodeInt(JsonIterator iter) throws IOException {
4646 assertEquals (100 , myObject .field1 );
4747 }
4848
49- public static class TestObject3 {
50- public int field1 ;
51- }
52-
53- public void test_customize_using_extension () throws IOException {
54- JsonIterator .registerExtension (new EmptyExtension () {
55- @ Override
56- public Decoder createDecoder (Binding field ) {
57- if (field .clazz == TestObject3 .class && field .name .equals ("field1" )) {
58- return new Decoder .IntDecoder () {
59-
60- @ Override
61- public int decodeInt (JsonIterator iter ) throws IOException {
62- return Integer .valueOf (iter .readString ());
63- }
64- };
65- }
66- return null ;
67- }
68- });
69- JsonIterator iter = JsonIterator .parse ("{'field1': '100'}" .replace ('\'' , '"' ));
70- TestObject3 myObject = iter .read (TestObject3 .class );
71- assertEquals (100 , myObject .field1 );
72- }
73-
7449 public static class TestObject4 {
7550 public int field1 ;
7651 }
7752
7853 public void test_rename_field () throws IOException {
7954 JsonIterator .registerExtension (new EmptyExtension () {
8055 @ Override
81- public String [] getBindFrom (Binding field ) {
56+ public boolean updateBinding (Binding field ) {
8257 if (field .clazz == TestObject4 .class && field .name .equals ("field1" )) {
83- return new String []{"field_1" , "Field1" };
58+ field .fromNames = new String []{"field_1" , "Field1" };
59+ return true ;
8460 }
85- return null ;
61+ return false ;
8662 }
8763 });
8864 JsonIterator iter = JsonIterator .parse ("{'field_1': 100}{'Field1': 101}" .replace ('\'' , '"' ));
@@ -115,11 +91,12 @@ public CustomizedConstructor getConstructor(Class clazz) {
11591 }
11692
11793 @ Override
118- public String [] getBindFrom (Binding field ) {
94+ public boolean updateBinding (Binding field ) {
11995 if (field .clazz == TestObject5 .class && "param1" .equals (field .name )) {
120- return new String []{"param2" };
96+ field .fromNames = new String []{"param2" };
97+ return true ;
12198 }
122- return null ;
99+ return false ;
123100 }
124101 });
125102 JsonIterator iter = JsonIterator .parse ("{'param2': 1000}" .replace ('\'' , '"' ));
@@ -138,15 +115,42 @@ public void setField(String field) {
138115 public void test_rename_setter () throws IOException {
139116 JsonIterator .registerExtension (new EmptyExtension () {
140117 @ Override
141- public String [] getBindFrom (Binding field ) {
118+ public boolean updateBinding (Binding field ) {
142119 if (field .clazz == TestObject6 .class && field .name .equals ("field" )) {
143- return new String []{"field_1" , "Field1" };
120+ field .fromNames = new String []{"field_1" , "Field1" };
121+ return true ;
144122 }
145- return null ;
123+ return false ;
146124 }
147125 });
148126 JsonIterator iter = JsonIterator .parse ("{'field_1': 'hello'}" .replace ('\'' , '"' ));
149127 TestObject6 obj = iter .read (TestObject6 .class );
150128 assertEquals ("hello" , obj .field );
151129 }
130+
131+ public static class TestObject7 {
132+ public int field1 ;
133+ }
134+
135+ public void test_customize_field_decoding_using_extension () throws IOException {
136+ JsonIterator .registerExtension (new EmptyExtension () {
137+ @ Override
138+ public boolean updateBinding (Binding field ) {
139+ if (field .clazz == TestObject7 .class && field .name .equals ("field1" )) {
140+ field .decoder = new Decoder .IntDecoder () {
141+
142+ @ Override
143+ public int decodeInt (JsonIterator iter ) throws IOException {
144+ return Integer .valueOf (iter .readString ());
145+ }
146+ };
147+ return true ;
148+ }
149+ return false ;
150+ }
151+ });
152+ JsonIterator iter = JsonIterator .parse ("{'field1': '100'}" .replace ('\'' , '"' ));
153+ TestObject7 myObject = iter .read (TestObject7 .class );
154+ assertEquals (100 , myObject .field1 );
155+ }
152156}
0 commit comments