21
21
import static org .junit .Assert .assertNull ;
22
22
import static org .junit .Assert .fail ;
23
23
24
+ import com .google .firebase .firestore .DocumentReference ;
24
25
import com .google .firebase .firestore .Exclude ;
25
26
import com .google .firebase .firestore .PropertyName ;
26
27
import com .google .firebase .firestore .ThrowOnExtraProperties ;
@@ -899,7 +900,7 @@ public void setValue(String value) {
899
900
900
901
private static <T > T deserialize (String jsonString , Class <T > clazz ) {
901
902
Map <String , Object > json = fromSingleQuotedString (jsonString );
902
- return CustomClassMapper .convertToCustomClass (json , clazz );
903
+ return CustomClassMapper .convertToCustomClass (json , clazz , null );
903
904
}
904
905
905
906
private static Object serialize (Object object ) {
@@ -919,6 +920,15 @@ private static void assertExceptionContains(String partialMessage, Runnable run)
919
920
}
920
921
}
921
922
923
+ private static <T > T convertToCustomClass (
924
+ Object object , Class <T > clazz , DocumentReference docRef ) {
925
+ return CustomClassMapper .convertToCustomClass (object , clazz , docRef );
926
+ }
927
+
928
+ private static <T > T convertToCustomClass (Object object , Class <T > clazz ) {
929
+ return CustomClassMapper .convertToCustomClass (object , clazz , null );
930
+ }
931
+
922
932
@ Test
923
933
public void primitiveDeserializeString () {
924
934
StringBean bean = deserialize ("{'value': 'foo'}" , StringBean .class );
@@ -1339,8 +1349,7 @@ public void beansCanContainMaps() {
1339
1349
public void beansCanContainUpperBoundedMaps () {
1340
1350
Date date = new Date (1491847082123L );
1341
1351
Map <String , Object > source = map ("values" , map ("foo" , date ));
1342
- UpperBoundedMapBean bean =
1343
- CustomClassMapper .convertToCustomClass (source , UpperBoundedMapBean .class );
1352
+ UpperBoundedMapBean bean = convertToCustomClass (source , UpperBoundedMapBean .class );
1344
1353
Map <String , Object > expected = map ("foo" , date );
1345
1354
assertEquals (expected , bean .values );
1346
1355
}
@@ -1349,8 +1358,7 @@ public void beansCanContainUpperBoundedMaps() {
1349
1358
public void beansCanContainMultiBoundedMaps () {
1350
1359
Date date = new Date (1491847082123L );
1351
1360
Map <String , Object > source = map ("map" , map ("values" , map ("foo" , date )));
1352
- MultiBoundedMapHolderBean bean =
1353
- CustomClassMapper .convertToCustomClass (source , MultiBoundedMapHolderBean .class );
1361
+ MultiBoundedMapHolderBean bean = convertToCustomClass (source , MultiBoundedMapHolderBean .class );
1354
1362
1355
1363
Map <String , Object > expected = map ("foo" , date );
1356
1364
assertEquals (expected , bean .map .values );
@@ -1367,7 +1375,7 @@ public void beansCanContainUnboundedMaps() {
1367
1375
public void beansCanContainUnboundedTypeVariableMaps () {
1368
1376
Map <String , Object > source = map ("map" , map ("values" , map ("foo" , "bar" )));
1369
1377
UnboundedTypeVariableMapHolderBean bean =
1370
- CustomClassMapper . convertToCustomClass (source , UnboundedTypeVariableMapHolderBean .class );
1378
+ convertToCustomClass (source , UnboundedTypeVariableMapHolderBean .class );
1371
1379
1372
1380
Map <String , Object > expected = map ("foo" , "bar" );
1373
1381
assertEquals (expected , bean .map .values );
@@ -1823,63 +1831,60 @@ public void objectAcceptsAnyObject() {
1823
1831
1824
1832
@ Test
1825
1833
public void objectClassCanBePassedInAtTopLevel () {
1826
- assertEquals ("foo" , CustomClassMapper . convertToCustomClass ("foo" , Object .class ));
1827
- assertEquals (1 , CustomClassMapper . convertToCustomClass (1 , Object .class ));
1828
- assertEquals (1L , CustomClassMapper . convertToCustomClass (1L , Object .class ));
1829
- assertEquals (true , CustomClassMapper . convertToCustomClass (true , Object .class ));
1830
- assertEquals (1.1 , CustomClassMapper . convertToCustomClass (1.1 , Object .class ));
1834
+ assertEquals ("foo" , convertToCustomClass ("foo" , Object .class ));
1835
+ assertEquals (1 , convertToCustomClass (1 , Object .class ));
1836
+ assertEquals (1L , convertToCustomClass (1L , Object .class ));
1837
+ assertEquals (true , convertToCustomClass (true , Object .class ));
1838
+ assertEquals (1.1 , convertToCustomClass (1.1 , Object .class ));
1831
1839
List <String > fooList = Collections .singletonList ("foo" );
1832
- assertEquals (fooList , CustomClassMapper . convertToCustomClass (fooList , Object .class ));
1840
+ assertEquals (fooList , convertToCustomClass (fooList , Object .class ));
1833
1841
Map <String , String > fooMap = Collections .singletonMap ("foo" , "bar" );
1834
- assertEquals (fooMap , CustomClassMapper . convertToCustomClass (fooMap , Object .class ));
1842
+ assertEquals (fooMap , convertToCustomClass (fooMap , Object .class ));
1835
1843
}
1836
1844
1837
1845
@ Test
1838
1846
public void primitiveClassesCanBePassedInTopLevel () {
1839
- assertEquals ("foo" , CustomClassMapper . convertToCustomClass ("foo" , String .class ));
1840
- assertEquals ((Integer ) 1 , CustomClassMapper . convertToCustomClass (1 , Integer .class ));
1841
- assertEquals ((Long ) 1L , CustomClassMapper . convertToCustomClass (1L , Long .class ));
1842
- assertEquals (true , CustomClassMapper . convertToCustomClass (true , Boolean .class ));
1843
- assertEquals ((Double ) 1.1 , CustomClassMapper . convertToCustomClass (1.1 , Double .class ));
1847
+ assertEquals ("foo" , convertToCustomClass ("foo" , String .class ));
1848
+ assertEquals ((Integer ) 1 , convertToCustomClass (1 , Integer .class ));
1849
+ assertEquals ((Long ) 1L , convertToCustomClass (1L , Long .class ));
1850
+ assertEquals (true , convertToCustomClass (true , Boolean .class ));
1851
+ assertEquals ((Double ) 1.1 , convertToCustomClass (1.1 , Double .class ));
1844
1852
}
1845
1853
1846
1854
@ Test
1847
1855
public void passingInListTopLevelThrows () {
1848
1856
assertExceptionContains (
1849
1857
"Class java.util.List has generic type parameters, please use GenericTypeIndicator "
1850
1858
+ "instead" ,
1851
- () -> CustomClassMapper . convertToCustomClass (Collections .singletonList ("foo" ), List .class ));
1859
+ () -> convertToCustomClass (Collections .singletonList ("foo" ), List .class ));
1852
1860
}
1853
1861
1854
1862
@ Test
1855
1863
public void passingInMapTopLevelThrows () {
1856
1864
assertExceptionContains (
1857
1865
"Class java.util.Map has generic type parameters, please use GenericTypeIndicator "
1858
1866
+ "instead" ,
1859
- () ->
1860
- CustomClassMapper .convertToCustomClass (
1861
- Collections .singletonMap ("foo" , "bar" ), Map .class ));
1867
+ () -> convertToCustomClass (Collections .singletonMap ("foo" , "bar" ), Map .class ));
1862
1868
}
1863
1869
1864
1870
@ Test
1865
1871
public void passingInCharacterTopLevelThrows () {
1866
1872
assertExceptionContains (
1867
1873
"Deserializing values to Character is not supported" ,
1868
- () -> CustomClassMapper . convertToCustomClass ('1' , Character .class ));
1874
+ () -> convertToCustomClass ('1' , Character .class ));
1869
1875
}
1870
1876
1871
1877
@ Test
1872
1878
public void passingInShortTopLevelThrows () {
1873
1879
assertExceptionContains (
1874
1880
"Deserializing values to Short is not supported" ,
1875
- () -> CustomClassMapper . convertToCustomClass (1 , Short .class ));
1881
+ () -> convertToCustomClass (1 , Short .class ));
1876
1882
}
1877
1883
1878
1884
@ Test
1879
1885
public void passingInByteTopLevelThrows () {
1880
1886
assertExceptionContains (
1881
- "Deserializing values to Byte is not supported" ,
1882
- () -> CustomClassMapper .convertToCustomClass (1 , Byte .class ));
1887
+ "Deserializing values to Byte is not supported" , () -> convertToCustomClass (1 , Byte .class ));
1883
1888
}
1884
1889
1885
1890
@ Test
@@ -1916,13 +1921,13 @@ public void collectionsCantBeDeserialized() {
1916
1921
1917
1922
@ Test
1918
1923
public void allowNullEverywhere () {
1919
- assertNull (CustomClassMapper . convertToCustomClass (null , Integer .class ));
1920
- assertNull (CustomClassMapper . convertToCustomClass (null , String .class ));
1921
- assertNull (CustomClassMapper . convertToCustomClass (null , Double .class ));
1922
- assertNull (CustomClassMapper . convertToCustomClass (null , Long .class ));
1923
- assertNull (CustomClassMapper . convertToCustomClass (null , Boolean .class ));
1924
- assertNull (CustomClassMapper . convertToCustomClass (null , StringBean .class ));
1925
- assertNull (CustomClassMapper . convertToCustomClass (null , Object .class ));
1924
+ assertNull (convertToCustomClass (null , Integer .class ));
1925
+ assertNull (convertToCustomClass (null , String .class ));
1926
+ assertNull (convertToCustomClass (null , Double .class ));
1927
+ assertNull (convertToCustomClass (null , Long .class ));
1928
+ assertNull (convertToCustomClass (null , Boolean .class ));
1929
+ assertNull (convertToCustomClass (null , StringBean .class ));
1930
+ assertNull (convertToCustomClass (null , Object .class ));
1926
1931
}
1927
1932
1928
1933
@ Test
@@ -2233,7 +2238,7 @@ public void deserializationFailureIncludesPath() {
2233
2238
Object serialized = Collections .singletonMap ("value" , (short ) 1 );
2234
2239
2235
2240
try {
2236
- CustomClassMapper . convertToCustomClass (serialized , ShortBean .class );
2241
+ convertToCustomClass (serialized , ShortBean .class );
2237
2242
fail ("should have thrown" );
2238
2243
} catch (RuntimeException e ) {
2239
2244
assertEquals (
0 commit comments