1515public class CoerceToBooleanTest
1616 extends ModuleTestBase
1717{
18- static class BooleanPOJO {
18+ static class BooleanPrimitivePOJO {
1919 public boolean value ;
2020
2121 public void setValue (boolean v ) { value = v ; }
2222 }
2323
24+ static class BooleanWrapperPOJO {
25+ public Boolean value ;
26+
27+ public void setValue (Boolean v ) { value = v ; }
28+ }
29+
30+ static class AtomicBooleanWrapper {
31+ public AtomicBoolean value ;
32+
33+ public void setValue (AtomicBoolean v ) { value = v ; }
34+ }
35+
2436 private final ObjectMapper DEFAULT_MAPPER = newPropertiesMapper ();
2537
2638 private final ObjectMapper MAPPER_STRING_TO_BOOLEAN_FAIL ; {
@@ -45,9 +57,9 @@ static class BooleanPOJO {
4557 public void testEmptyStringFailForBooleanPrimitive () throws IOException
4658 {
4759 final ObjectReader reader = MAPPER_EMPTY_TO_BOOLEAN_FAIL
48- .readerFor (BooleanPOJO .class );
60+ .readerFor (BooleanPrimitivePOJO .class );
4961 try {
50- reader .readValue ("<BooleanPOJO>< value></value></BooleanPOJO> " );
62+ reader .readValue ("value: \n " );
5163 fail ("Expected failure for boolean + empty String" );
5264 } catch (JsonMappingException e ) {
5365 verifyException (e , "Cannot coerce empty String" );
@@ -77,32 +89,33 @@ public void testStringToBooleanOkDespiteCoercionConfig() throws Exception {
7789
7890 public void _verifyStringToBooleanOk (ObjectMapper mapper ) throws Exception
7991 {
80- // first successful coercions, basic types:
81- _verifyCoerceSuccess (mapper , _xmlWrapped ("boolean" , "true" ), Boolean .TYPE , Boolean .TRUE );
82- _verifyCoerceSuccess (mapper , _xmlWrapped ("boolean" , "false" ), Boolean .TYPE , Boolean .FALSE );
83-
84- _verifyCoerceSuccess (mapper , _xmlWrapped ("Boolean" , "true" ), Boolean .class , Boolean .TRUE );
85- _verifyCoerceSuccess (mapper , _xmlWrapped ("Boolean" , "false" ), Boolean .class , Boolean .FALSE );
86-
87- // and then allowed variants:
88- _verifyCoerceSuccess (mapper , _xmlWrapped ("boolean" , "True" ), Boolean .TYPE , Boolean .TRUE );
89- _verifyCoerceSuccess (mapper , _xmlWrapped ("Boolean" , "True" ), Boolean .class , Boolean .TRUE );
90- _verifyCoerceSuccess (mapper , _xmlWrapped ("boolean" , "TRUE" ), Boolean .TYPE , Boolean .TRUE );
91- _verifyCoerceSuccess (mapper , _xmlWrapped ("Boolean" , "TRUE" ), Boolean .class , Boolean .TRUE );
92- _verifyCoerceSuccess (mapper , _xmlWrapped ("boolean" , "False" ), Boolean .TYPE , Boolean .FALSE );
93- _verifyCoerceSuccess (mapper , _xmlWrapped ("Boolean" , "False" ), Boolean .class , Boolean .FALSE );
94- _verifyCoerceSuccess (mapper , _xmlWrapped ("boolean" , "FALSE" ), Boolean .TYPE , Boolean .FALSE );
95- _verifyCoerceSuccess (mapper , _xmlWrapped ("Boolean" , "FALSE" ), Boolean .class , Boolean .FALSE );
92+ // first successful coercions, basic types, some variants
93+
94+ assertEquals (true ,
95+ _verifyCoerceSuccess (mapper , "value: true" , BooleanPrimitivePOJO .class ).value );
96+ assertEquals (false ,
97+ _verifyCoerceSuccess (mapper , "value: false" , BooleanPrimitivePOJO .class ).value );
98+ assertEquals (true ,
99+ _verifyCoerceSuccess (mapper , "value: True" , BooleanPrimitivePOJO .class ).value );
100+ assertEquals (false ,
101+ _verifyCoerceSuccess (mapper , "value: False" , BooleanPrimitivePOJO .class ).value );
102+
103+ assertEquals (Boolean .TRUE ,
104+ _verifyCoerceSuccess (mapper , "value: true" , BooleanWrapperPOJO .class ).value );
105+ assertEquals (Boolean .FALSE ,
106+ _verifyCoerceSuccess (mapper , "value: false" , BooleanWrapperPOJO .class ).value );
107+ assertEquals (Boolean .TRUE ,
108+ _verifyCoerceSuccess (mapper , "value: True" , BooleanWrapperPOJO .class ).value );
109+ assertEquals (Boolean .FALSE ,
110+ _verifyCoerceSuccess (mapper , "value: False" , BooleanWrapperPOJO .class ).value );
96111
97112 // and then Special boolean derivatives:
98- // Alas, AtomicBoolean.equals() does not work so...
99- final ObjectReader r = mapper .readerFor (AtomicBoolean .class );
100113
101- AtomicBoolean ab = r . readValue ( _xmlWrapped ( "AtomicBoolean" , "true" ) );
102- assertTrue (ab .get ());
114+ AtomicBooleanWrapper abw = _verifyCoerceSuccess ( mapper , "value: true" , AtomicBooleanWrapper . class );
115+ assertTrue (abw . value .get ());
103116
104- ab = r . readValue ( _xmlWrapped ( "AtomicBoolean" , "false" ) );
105- assertFalse (ab .get ());
117+ abw = _verifyCoerceSuccess ( mapper , "value: false" , AtomicBooleanWrapper . class );
118+ assertFalse (abw . value .get ());
106119 }
107120
108121 /*
@@ -111,16 +124,10 @@ public void _verifyStringToBooleanOk(ObjectMapper mapper) throws Exception
111124 /**********************************************************
112125 */
113126
114- private String _xmlWrapped (String element , String value ) {
115- return String .format ("<%s>%s</%s>" , element , value , element );
116- }
117-
118- private void _verifyCoerceSuccess (ObjectMapper mapper ,
119- String input , Class <?> type , Object exp ) throws IOException
127+ private <T > T _verifyCoerceSuccess (ObjectMapper mapper ,
128+ String input , Class <T > type ) throws IOException
120129 {
121- Object result = mapper .readerFor (type )
130+ return mapper .readerFor (type )
122131 .readValue (input );
123- assertEquals (exp .getClass (), result .getClass ());
124- assertEquals (exp , result );
125132 }
126133}
0 commit comments