@@ -10,9 +10,49 @@ using namespace facebook::jni;
10
10
namespace facebook {
11
11
namespace react {
12
12
13
- void ReadableNativeMap::mapException (const std::exception& ex) {
14
- if (dynamic_cast <const folly::TypeError*>(&ex) != nullptr ) {
15
- throwNewJavaException (exceptions::gUnexpectedNativeTypeExceptionClass , ex.what ());
13
+ void ReadableNativeMap::mapException (const std::exception &ex) {
14
+ if (dynamic_cast <const folly::TypeError *>(&ex) != nullptr ) {
15
+ throwNewJavaException (
16
+ exceptions::gUnexpectedNativeTypeExceptionClass , ex.what ());
17
+ }
18
+ }
19
+
20
+ void addDynamicToJArray (
21
+ local_ref<JArrayClass<jobject>> jarray,
22
+ jint index,
23
+ const folly::dynamic &dyn) {
24
+ switch (dyn.type ()) {
25
+ case folly::dynamic::Type::NULLT: {
26
+ jarray->setElement (index, nullptr );
27
+ break ;
28
+ }
29
+ case folly::dynamic::Type::BOOL: {
30
+ (*jarray)[index] = JBoolean::valueOf (dyn.getBool ());
31
+ break ;
32
+ }
33
+ case folly::dynamic::Type::INT64: {
34
+ (*jarray)[index] = JDouble::valueOf (dyn.getInt ());
35
+ break ;
36
+ }
37
+ case folly::dynamic::Type::DOUBLE: {
38
+ (*jarray)[index] = JDouble::valueOf (dyn.getDouble ());
39
+ break ;
40
+ }
41
+ case folly::dynamic::Type::STRING: {
42
+ (*jarray)[index] = make_jstring (dyn.getString ());
43
+ break ;
44
+ }
45
+ case folly::dynamic::Type::OBJECT: {
46
+ (*jarray)[index] = ReadableNativeMap::newObjectCxxArgs (dyn);
47
+ break ;
48
+ }
49
+ case folly::dynamic::Type::ARRAY: {
50
+ (*jarray)[index] = ReadableNativeArray::newObjectCxxArgs (dyn);
51
+ break ;
52
+ }
53
+ default :
54
+ jarray->setElement (index, nullptr );
55
+ break ;
16
56
}
17
57
}
18
58
@@ -35,41 +75,7 @@ local_ref<JArrayClass<jobject>> ReadableNativeMap::importValues() {
35
75
auto jarray = JArrayClass<jobject>::newArray (size);
36
76
for (jint ii = 0 ; ii < size; ii++) {
37
77
const std::string &key = keys_.value ()[ii].getString ();
38
- const auto &element = map_.at (key);
39
- switch (element.type ()) {
40
- case folly::dynamic::Type::NULLT: {
41
- jarray->setElement (ii, nullptr );
42
- break ;
43
- }
44
- case folly::dynamic::Type::BOOL: {
45
- (*jarray)[ii] = JBoolean::valueOf (element.getBool ());
46
- break ;
47
- }
48
- case folly::dynamic::Type::INT64: {
49
- (*jarray)[ii] = JDouble::valueOf (element.getInt ());
50
- break ;
51
- }
52
- case folly::dynamic::Type::DOUBLE: {
53
- (*jarray)[ii] = JDouble::valueOf (element.getDouble ());
54
- break ;
55
- }
56
- case folly::dynamic::Type::STRING: {
57
- (*jarray)[ii] = make_jstring (element.getString ());
58
- break ;
59
- }
60
- case folly::dynamic::Type::OBJECT: {
61
- (*jarray)[ii] = ReadableNativeMap::newObjectCxxArgs (element);
62
- break ;
63
- }
64
- case folly::dynamic::Type::ARRAY: {
65
- (*jarray)[ii] = ReadableNativeArray::newObjectCxxArgs (element);
66
- break ;
67
- }
68
- default : {
69
- jarray->setElement (ii, nullptr );
70
- break ;
71
- }
72
- }
78
+ addDynamicToJArray (jarray, ii, map_.at (key));
73
79
}
74
80
return jarray;
75
81
}
@@ -84,14 +90,17 @@ local_ref<JArrayClass<jobject>> ReadableNativeMap::importTypes() {
84
90
return jarray;
85
91
}
86
92
87
- local_ref<ReadableNativeMap::jhybridobject> ReadableNativeMap::createWithContents (folly::dynamic&& map) {
93
+ local_ref<ReadableNativeMap::jhybridobject>
94
+ ReadableNativeMap::createWithContents (folly::dynamic &&map) {
88
95
if (map.isNull ()) {
89
96
return local_ref<jhybridobject>(nullptr );
90
97
}
91
98
92
99
if (!map.isObject ()) {
93
- throwNewJavaException (exceptions::gUnexpectedNativeTypeExceptionClass ,
94
- " expected Map, got a %s" , map.typeName ());
100
+ throwNewJavaException (
101
+ exceptions::gUnexpectedNativeTypeExceptionClass ,
102
+ " expected Map, got a %s" ,
103
+ map.typeName ());
95
104
}
96
105
97
106
return newObjectCxxArgs (std::move (map));
@@ -105,5 +114,5 @@ void ReadableNativeMap::registerNatives() {
105
114
});
106
115
}
107
116
108
- } // namespace react
109
- } // namespace facebook
117
+ } // namespace react
118
+ } // namespace facebook
0 commit comments