@json-eval-rs/react-native 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +455 -0
- package/android/CMakeLists.txt +78 -0
- package/android/build.gradle +90 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/cpp/json-eval-rn.cpp +875 -0
- package/android/src/main/java/com/jsonevalrs/JsonEvalRsModule.kt +532 -0
- package/android/src/main/java/com/jsonevalrs/JsonEvalRsPackage.kt +16 -0
- package/android/src/main/jniLibs/arm64-v8a/libjson_eval_rs.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libjson_eval_rs.so +0 -0
- package/android/src/main/jniLibs/x86/libjson_eval_rs.so +0 -0
- package/android/src/main/jniLibs/x86_64/libjson_eval_rs.so +0 -0
- package/cpp/json-eval-bridge.cpp +1366 -0
- package/cpp/json-eval-bridge.h +583 -0
- package/ios/JsonEvalRs.h +5 -0
- package/ios/JsonEvalRs.mm +852 -0
- package/ios/JsonEvalRs.xcframework/Info.plist +44 -0
- package/ios/JsonEvalRs.xcframework/ios-arm64/libjson_eval_rs.a +0 -0
- package/ios/JsonEvalRs.xcframework/ios-arm64_x86_64-simulator/libjson_eval_rs.a +0 -0
- package/json-eval-rs.podspec +33 -0
- package/lib/commonjs/index.js +786 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/index.js +778 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/index.d.ts +565 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +140 -0
- package/src/index.tsx +999 -0
|
@@ -0,0 +1,875 @@
|
|
|
1
|
+
#include <jni.h>
|
|
2
|
+
#include <string>
|
|
3
|
+
#include <functional>
|
|
4
|
+
#include "json-eval-bridge.h"
|
|
5
|
+
|
|
6
|
+
using namespace jsoneval;
|
|
7
|
+
|
|
8
|
+
// Cached JNI references for performance (initialized in JNI_OnLoad)
|
|
9
|
+
static jclass gPromiseClass = nullptr;
|
|
10
|
+
static jmethodID gResolveMethodID = nullptr;
|
|
11
|
+
static jmethodID gRejectMethodID = nullptr;
|
|
12
|
+
static jclass gIntegerClass = nullptr;
|
|
13
|
+
static jmethodID gIntegerValueOfMethodID = nullptr;
|
|
14
|
+
|
|
15
|
+
// Helper functions (C++ linkage - internal use only)
|
|
16
|
+
// Helper to convert jstring to std::string
|
|
17
|
+
// Note: GetStringUTFChars provides a pinned pointer (minimal copy), but we must
|
|
18
|
+
// copy to std::string to pass to the C++ bridge layer due to lifetime management
|
|
19
|
+
static std::string jstringToString(JNIEnv* env, jstring jStr) {
|
|
20
|
+
if (jStr == nullptr) return "";
|
|
21
|
+
// GetStringUTFChars returns a pointer to UTF-8 chars (may pin Java string in memory)
|
|
22
|
+
const char* chars = env->GetStringUTFChars(jStr, nullptr);
|
|
23
|
+
if (chars == nullptr) return "";
|
|
24
|
+
// Copy to std::string for safe lifetime management
|
|
25
|
+
std::string str(chars);
|
|
26
|
+
env->ReleaseStringUTFChars(jStr, chars);
|
|
27
|
+
return str;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Helper to create jstring from std::string
|
|
31
|
+
// Note: NewStringUTF copies C string to create Java String object (unavoidable)
|
|
32
|
+
static jstring stringToJstring(JNIEnv* env, const std::string& str) {
|
|
33
|
+
return env->NewStringUTF(str.c_str());
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
extern "C" {
|
|
37
|
+
|
|
38
|
+
// Initialize cached JNI method IDs for performance
|
|
39
|
+
// Called once when library is loaded
|
|
40
|
+
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
|
|
41
|
+
JNIEnv* env;
|
|
42
|
+
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
|
|
43
|
+
return JNI_ERR;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Cache Promise class and methods
|
|
47
|
+
jclass promiseClass = env->FindClass("com/facebook/react/bridge/Promise");
|
|
48
|
+
if (promiseClass == nullptr) return JNI_ERR;
|
|
49
|
+
gPromiseClass = reinterpret_cast<jclass>(env->NewGlobalRef(promiseClass));
|
|
50
|
+
gResolveMethodID = env->GetMethodID(gPromiseClass, "resolve", "(Ljava/lang/Object;)V");
|
|
51
|
+
gRejectMethodID = env->GetMethodID(gPromiseClass, "reject", "(Ljava/lang/String;Ljava/lang/String;)V");
|
|
52
|
+
env->DeleteLocalRef(promiseClass);
|
|
53
|
+
|
|
54
|
+
// Cache Integer class for cacheLenAsync optimization
|
|
55
|
+
jclass integerClass = env->FindClass("java/lang/Integer");
|
|
56
|
+
if (integerClass == nullptr) return JNI_ERR;
|
|
57
|
+
gIntegerClass = reinterpret_cast<jclass>(env->NewGlobalRef(integerClass));
|
|
58
|
+
gIntegerValueOfMethodID = env->GetStaticMethodID(gIntegerClass, "valueOf", "(I)Ljava/lang/Integer;");
|
|
59
|
+
env->DeleteLocalRef(integerClass);
|
|
60
|
+
|
|
61
|
+
return JNI_VERSION_1_6;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Optimized promise helpers using cached method IDs (30-50% faster)
|
|
65
|
+
void resolvePromise(JNIEnv* env, jobject promise, const std::string& result) {
|
|
66
|
+
jstring jresult = stringToJstring(env, result);
|
|
67
|
+
env->CallVoidMethod(promise, gResolveMethodID, jresult);
|
|
68
|
+
env->DeleteLocalRef(jresult);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
void rejectPromise(JNIEnv* env, jobject promise, const std::string& code, const std::string& message) {
|
|
72
|
+
jstring jcode = stringToJstring(env, code);
|
|
73
|
+
jstring jmsg = stringToJstring(env, message);
|
|
74
|
+
env->CallVoidMethod(promise, gRejectMethodID, jcode, jmsg);
|
|
75
|
+
env->DeleteLocalRef(jcode);
|
|
76
|
+
env->DeleteLocalRef(jmsg);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
} // extern "C"
|
|
80
|
+
|
|
81
|
+
// Generic async helper to reduce code duplication
|
|
82
|
+
// Encapsulates the JavaVM/thread attachment boilerplate pattern
|
|
83
|
+
// Note: Template functions must have C++ linkage, not C linkage
|
|
84
|
+
template<typename Func>
|
|
85
|
+
void runAsyncWithPromise(
|
|
86
|
+
JNIEnv* env,
|
|
87
|
+
jobject promise,
|
|
88
|
+
const char* errorCode,
|
|
89
|
+
Func&& bridgeCall
|
|
90
|
+
) {
|
|
91
|
+
JavaVM* jvm;
|
|
92
|
+
env->GetJavaVM(&jvm);
|
|
93
|
+
jobject globalPromise = env->NewGlobalRef(promise);
|
|
94
|
+
|
|
95
|
+
bridgeCall([jvm, globalPromise, errorCode](const std::string& result, const std::string& error) {
|
|
96
|
+
JNIEnv* env = nullptr;
|
|
97
|
+
jvm->AttachCurrentThread(&env, nullptr);
|
|
98
|
+
|
|
99
|
+
if (error.empty()) {
|
|
100
|
+
resolvePromise(env, globalPromise, result);
|
|
101
|
+
} else {
|
|
102
|
+
rejectPromise(env, globalPromise, errorCode, error);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
env->DeleteGlobalRef(globalPromise);
|
|
106
|
+
jvm->DetachCurrentThread();
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
extern "C" {
|
|
111
|
+
|
|
112
|
+
JNIEXPORT jstring JNICALL
|
|
113
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeCreate(
|
|
114
|
+
JNIEnv* env,
|
|
115
|
+
jobject /* this */,
|
|
116
|
+
jstring schema,
|
|
117
|
+
jstring context,
|
|
118
|
+
jstring data
|
|
119
|
+
) {
|
|
120
|
+
try {
|
|
121
|
+
std::string schemaStr = jstringToString(env, schema);
|
|
122
|
+
std::string contextStr = jstringToString(env, context);
|
|
123
|
+
std::string dataStr = jstringToString(env, data);
|
|
124
|
+
|
|
125
|
+
std::string handle = JsonEvalBridge::create(schemaStr, contextStr, dataStr);
|
|
126
|
+
return stringToJstring(env, handle);
|
|
127
|
+
} catch (const std::exception& e) {
|
|
128
|
+
jclass exClass = env->FindClass("java/lang/RuntimeException");
|
|
129
|
+
env->ThrowNew(exClass, e.what());
|
|
130
|
+
return nullptr;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
JNIEXPORT jstring JNICALL
|
|
135
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeCreateFromMsgpack(
|
|
136
|
+
JNIEnv* env,
|
|
137
|
+
jobject /* this */,
|
|
138
|
+
jbyteArray schemaMsgpack,
|
|
139
|
+
jstring context,
|
|
140
|
+
jstring data
|
|
141
|
+
) {
|
|
142
|
+
try {
|
|
143
|
+
std::string contextStr = jstringToString(env, context);
|
|
144
|
+
std::string dataStr = jstringToString(env, data);
|
|
145
|
+
|
|
146
|
+
// Convert jbyteArray to std::vector<uint8_t>
|
|
147
|
+
jsize len = env->GetArrayLength(schemaMsgpack);
|
|
148
|
+
std::vector<uint8_t> msgpackBytes(len);
|
|
149
|
+
env->GetByteArrayRegion(schemaMsgpack, 0, len, reinterpret_cast<jbyte*>(msgpackBytes.data()));
|
|
150
|
+
|
|
151
|
+
std::string handle = JsonEvalBridge::createFromMsgpack(msgpackBytes, contextStr, dataStr);
|
|
152
|
+
return stringToJstring(env, handle);
|
|
153
|
+
} catch (const std::exception& e) {
|
|
154
|
+
jclass exClass = env->FindClass("java/lang/RuntimeException");
|
|
155
|
+
env->ThrowNew(exClass, e.what());
|
|
156
|
+
return nullptr;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
JNIEXPORT jstring JNICALL
|
|
161
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeCreateFromCache(
|
|
162
|
+
JNIEnv* env,
|
|
163
|
+
jobject /* this */,
|
|
164
|
+
jstring cacheKey,
|
|
165
|
+
jstring context,
|
|
166
|
+
jstring data
|
|
167
|
+
) {
|
|
168
|
+
try {
|
|
169
|
+
std::string cacheKeyStr = jstringToString(env, cacheKey);
|
|
170
|
+
std::string contextStr = jstringToString(env, context);
|
|
171
|
+
std::string dataStr = jstringToString(env, data);
|
|
172
|
+
|
|
173
|
+
std::string handle = JsonEvalBridge::createFromCache(cacheKeyStr, contextStr, dataStr);
|
|
174
|
+
return stringToJstring(env, handle);
|
|
175
|
+
} catch (const std::exception& e) {
|
|
176
|
+
jclass exClass = env->FindClass("java/lang/RuntimeException");
|
|
177
|
+
env->ThrowNew(exClass, e.what());
|
|
178
|
+
return nullptr;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
JNIEXPORT void JNICALL
|
|
183
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeEvaluateAsync(
|
|
184
|
+
JNIEnv* env,
|
|
185
|
+
jobject /* this */,
|
|
186
|
+
jstring handle,
|
|
187
|
+
jstring data,
|
|
188
|
+
jstring context,
|
|
189
|
+
jobject promise
|
|
190
|
+
) {
|
|
191
|
+
std::string handleStr = jstringToString(env, handle);
|
|
192
|
+
std::string dataStr = jstringToString(env, data);
|
|
193
|
+
std::string contextStr = jstringToString(env, context);
|
|
194
|
+
|
|
195
|
+
runAsyncWithPromise(env, promise, "EVALUATE_ERROR", [handleStr, dataStr, contextStr](auto callback) {
|
|
196
|
+
JsonEvalBridge::evaluateAsync(handleStr, dataStr, contextStr, callback);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
JNIEXPORT jdouble JNICALL
|
|
201
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeCompileLogic(
|
|
202
|
+
JNIEnv* env,
|
|
203
|
+
jobject /* this */,
|
|
204
|
+
jstring handle,
|
|
205
|
+
jstring logicStr
|
|
206
|
+
) {
|
|
207
|
+
try {
|
|
208
|
+
std::string handleStr = jstringToString(env, handle);
|
|
209
|
+
std::string logicStrCpp = jstringToString(env, logicStr);
|
|
210
|
+
uint64_t logicId = JsonEvalBridge::compileLogic(handleStr, logicStrCpp);
|
|
211
|
+
return static_cast<jdouble>(logicId);
|
|
212
|
+
} catch (const std::exception& e) {
|
|
213
|
+
jclass exClass = env->FindClass("java/lang/RuntimeException");
|
|
214
|
+
env->ThrowNew(exClass, e.what());
|
|
215
|
+
return 0.0;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
JNIEXPORT void JNICALL
|
|
220
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeRunLogicAsync(
|
|
221
|
+
JNIEnv* env,
|
|
222
|
+
jobject /* this */,
|
|
223
|
+
jstring handle,
|
|
224
|
+
jdouble logicId,
|
|
225
|
+
jstring data,
|
|
226
|
+
jstring context,
|
|
227
|
+
jobject promise
|
|
228
|
+
) {
|
|
229
|
+
std::string handleStr = jstringToString(env, handle);
|
|
230
|
+
std::string dataStr = jstringToString(env, data);
|
|
231
|
+
std::string contextStr = jstringToString(env, context);
|
|
232
|
+
uint64_t logicIdValue = static_cast<uint64_t>(logicId);
|
|
233
|
+
|
|
234
|
+
runAsyncWithPromise(env, promise, "RUN_LOGIC_ERROR", [handleStr, logicIdValue, dataStr, contextStr](auto callback) {
|
|
235
|
+
JsonEvalBridge::runLogicAsync(handleStr, logicIdValue, dataStr, contextStr, callback);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
JNIEXPORT void JNICALL
|
|
240
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeValidateAsync(
|
|
241
|
+
JNIEnv* env,
|
|
242
|
+
jobject /* this */,
|
|
243
|
+
jstring handle,
|
|
244
|
+
jstring data,
|
|
245
|
+
jstring context,
|
|
246
|
+
jobject promise
|
|
247
|
+
) {
|
|
248
|
+
std::string handleStr = jstringToString(env, handle);
|
|
249
|
+
std::string dataStr = jstringToString(env, data);
|
|
250
|
+
std::string contextStr = jstringToString(env, context);
|
|
251
|
+
|
|
252
|
+
runAsyncWithPromise(env, promise, "VALIDATE_ERROR", [handleStr, dataStr, contextStr](auto callback) {
|
|
253
|
+
JsonEvalBridge::validateAsync(handleStr, dataStr, contextStr, callback);
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
JNIEXPORT void JNICALL
|
|
258
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeEvaluateDependentsAsync(
|
|
259
|
+
JNIEnv* env,
|
|
260
|
+
jobject /* this */,
|
|
261
|
+
jstring handle,
|
|
262
|
+
jstring changedPath,
|
|
263
|
+
jstring data,
|
|
264
|
+
jstring context,
|
|
265
|
+
jboolean reEvaluate,
|
|
266
|
+
jobject promise
|
|
267
|
+
) {
|
|
268
|
+
std::string handleStr = jstringToString(env, handle);
|
|
269
|
+
std::string pathStr = jstringToString(env, changedPath);
|
|
270
|
+
std::string dataStr = jstringToString(env, data);
|
|
271
|
+
std::string contextStr = jstringToString(env, context);
|
|
272
|
+
bool reEval = static_cast<bool>(reEvaluate);
|
|
273
|
+
|
|
274
|
+
runAsyncWithPromise(env, promise, "EVALUATE_DEPENDENTS_ERROR", [handleStr, pathStr, dataStr, contextStr, reEval](auto callback) {
|
|
275
|
+
JsonEvalBridge::evaluateDependentsAsync(handleStr, pathStr, dataStr, contextStr, reEval, callback);
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
JNIEXPORT void JNICALL
|
|
280
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetEvaluatedSchemaAsync(
|
|
281
|
+
JNIEnv* env,
|
|
282
|
+
jobject /* this */,
|
|
283
|
+
jstring handle,
|
|
284
|
+
jboolean skipLayout,
|
|
285
|
+
jobject promise
|
|
286
|
+
) {
|
|
287
|
+
std::string handleStr = jstringToString(env, handle);
|
|
288
|
+
bool skipLayoutBool = (skipLayout == JNI_TRUE);
|
|
289
|
+
|
|
290
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_ERROR", [handleStr, skipLayoutBool](auto callback) {
|
|
291
|
+
JsonEvalBridge::getEvaluatedSchemaAsync(handleStr, skipLayoutBool, callback);
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
JNIEXPORT void JNICALL
|
|
296
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetSchemaValueAsync(
|
|
297
|
+
JNIEnv* env,
|
|
298
|
+
jobject /* this */,
|
|
299
|
+
jstring handle,
|
|
300
|
+
jobject promise
|
|
301
|
+
) {
|
|
302
|
+
std::string handleStr = jstringToString(env, handle);
|
|
303
|
+
|
|
304
|
+
runAsyncWithPromise(env, promise, "GET_VALUE_ERROR", [handleStr](auto callback) {
|
|
305
|
+
JsonEvalBridge::getSchemaValueAsync(handleStr, callback);
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
JNIEXPORT void JNICALL
|
|
310
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetEvaluatedSchemaWithoutParamsAsync(
|
|
311
|
+
JNIEnv* env,
|
|
312
|
+
jobject /* this */,
|
|
313
|
+
jstring handle,
|
|
314
|
+
jboolean skipLayout,
|
|
315
|
+
jobject promise
|
|
316
|
+
) {
|
|
317
|
+
std::string handleStr = jstringToString(env, handle);
|
|
318
|
+
bool skipLayoutBool = (skipLayout == JNI_TRUE);
|
|
319
|
+
|
|
320
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_WITHOUT_PARAMS_ERROR", [handleStr, skipLayoutBool](auto callback) {
|
|
321
|
+
JsonEvalBridge::getEvaluatedSchemaWithoutParamsAsync(handleStr, skipLayoutBool, callback);
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
JNIEXPORT void JNICALL
|
|
326
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetEvaluatedSchemaByPathAsync(
|
|
327
|
+
JNIEnv* env,
|
|
328
|
+
jobject /* this */,
|
|
329
|
+
jstring handle,
|
|
330
|
+
jstring path,
|
|
331
|
+
jboolean skipLayout,
|
|
332
|
+
jobject promise
|
|
333
|
+
) {
|
|
334
|
+
std::string handleStr = jstringToString(env, handle);
|
|
335
|
+
std::string pathStr = jstringToString(env, path);
|
|
336
|
+
bool skipLayoutBool = (skipLayout == JNI_TRUE);
|
|
337
|
+
|
|
338
|
+
runAsyncWithPromise(env, promise, "GET_EVALUATED_SCHEMA_BY_PATH_ERROR", [handleStr, pathStr, skipLayoutBool](auto callback) {
|
|
339
|
+
JsonEvalBridge::getEvaluatedSchemaByPathAsync(handleStr, pathStr, skipLayoutBool, callback);
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
JNIEXPORT void JNICALL
|
|
344
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetEvaluatedSchemaByPathsAsync(
|
|
345
|
+
JNIEnv* env,
|
|
346
|
+
jobject /* this */,
|
|
347
|
+
jstring handle,
|
|
348
|
+
jstring pathsJson,
|
|
349
|
+
jboolean skipLayout,
|
|
350
|
+
jobject promise
|
|
351
|
+
) {
|
|
352
|
+
std::string handleStr = jstringToString(env, handle);
|
|
353
|
+
std::string pathsJsonStr = jstringToString(env, pathsJson);
|
|
354
|
+
bool skipLayoutBool = (skipLayout == JNI_TRUE);
|
|
355
|
+
|
|
356
|
+
runAsyncWithPromise(env, promise, "GET_EVALUATED_SCHEMA_BY_PATHS_ERROR", [handleStr, pathsJsonStr, skipLayoutBool](auto callback) {
|
|
357
|
+
JsonEvalBridge::getEvaluatedSchemaByPathsAsync(handleStr, pathsJsonStr, skipLayoutBool, callback);
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
JNIEXPORT void JNICALL
|
|
362
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetSchemaByPathAsync(
|
|
363
|
+
JNIEnv* env,
|
|
364
|
+
jobject /* this */,
|
|
365
|
+
jstring handle,
|
|
366
|
+
jstring path,
|
|
367
|
+
jobject promise
|
|
368
|
+
) {
|
|
369
|
+
std::string handleStr = jstringToString(env, handle);
|
|
370
|
+
std::string pathStr = jstringToString(env, path);
|
|
371
|
+
|
|
372
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_BY_PATH_ERROR", [handleStr, pathStr](auto callback) {
|
|
373
|
+
JsonEvalBridge::getSchemaByPathAsync(handleStr, pathStr, callback);
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
JNIEXPORT void JNICALL
|
|
378
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetSchemaByPathsAsync(
|
|
379
|
+
JNIEnv* env,
|
|
380
|
+
jobject /* this */,
|
|
381
|
+
jstring handle,
|
|
382
|
+
jstring pathsJson,
|
|
383
|
+
jobject promise
|
|
384
|
+
) {
|
|
385
|
+
std::string handleStr = jstringToString(env, handle);
|
|
386
|
+
std::string pathsJsonStr = jstringToString(env, pathsJson);
|
|
387
|
+
|
|
388
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_BY_PATHS_ERROR", [handleStr, pathsJsonStr](auto callback) {
|
|
389
|
+
JsonEvalBridge::getSchemaByPathsAsync(handleStr, pathsJsonStr, callback);
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
JNIEXPORT void JNICALL
|
|
394
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeReloadSchemaAsync(
|
|
395
|
+
JNIEnv* env,
|
|
396
|
+
jobject /* this */,
|
|
397
|
+
jstring handle,
|
|
398
|
+
jstring schema,
|
|
399
|
+
jstring context,
|
|
400
|
+
jstring data,
|
|
401
|
+
jobject promise
|
|
402
|
+
) {
|
|
403
|
+
std::string handleStr = jstringToString(env, handle);
|
|
404
|
+
std::string schemaStr = jstringToString(env, schema);
|
|
405
|
+
std::string contextStr = jstringToString(env, context);
|
|
406
|
+
std::string dataStr = jstringToString(env, data);
|
|
407
|
+
|
|
408
|
+
runAsyncWithPromise(env, promise, "RELOAD_ERROR", [handleStr, schemaStr, contextStr, dataStr](auto callback) {
|
|
409
|
+
JsonEvalBridge::reloadSchemaAsync(handleStr, schemaStr, contextStr, dataStr, callback);
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
JNIEXPORT void JNICALL
|
|
414
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeReloadSchemaMsgpackAsync(
|
|
415
|
+
JNIEnv* env,
|
|
416
|
+
jobject /* this */,
|
|
417
|
+
jstring handle,
|
|
418
|
+
jbyteArray schemaMsgpack,
|
|
419
|
+
jstring context,
|
|
420
|
+
jstring data,
|
|
421
|
+
jobject promise
|
|
422
|
+
) {
|
|
423
|
+
std::string handleStr = jstringToString(env, handle);
|
|
424
|
+
std::string contextStr = jstringToString(env, context);
|
|
425
|
+
std::string dataStr = jstringToString(env, data);
|
|
426
|
+
|
|
427
|
+
// Convert jbyteArray to std::vector<uint8_t>
|
|
428
|
+
jsize len = env->GetArrayLength(schemaMsgpack);
|
|
429
|
+
std::vector<uint8_t> msgpackBytes(len);
|
|
430
|
+
env->GetByteArrayRegion(schemaMsgpack, 0, len, reinterpret_cast<jbyte*>(msgpackBytes.data()));
|
|
431
|
+
|
|
432
|
+
runAsyncWithPromise(env, promise, "RELOAD_MSGPACK_ERROR", [handleStr, msgpackBytes, contextStr, dataStr](auto callback) {
|
|
433
|
+
JsonEvalBridge::reloadSchemaMsgpackAsync(handleStr, msgpackBytes, contextStr, dataStr, callback);
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
JNIEXPORT void JNICALL
|
|
438
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeReloadSchemaFromCacheAsync(
|
|
439
|
+
JNIEnv* env,
|
|
440
|
+
jobject /* this */,
|
|
441
|
+
jstring handle,
|
|
442
|
+
jstring cacheKey,
|
|
443
|
+
jstring context,
|
|
444
|
+
jstring data,
|
|
445
|
+
jobject promise
|
|
446
|
+
) {
|
|
447
|
+
std::string handleStr = jstringToString(env, handle);
|
|
448
|
+
std::string cacheKeyStr = jstringToString(env, cacheKey);
|
|
449
|
+
std::string contextStr = jstringToString(env, context);
|
|
450
|
+
std::string dataStr = jstringToString(env, data);
|
|
451
|
+
|
|
452
|
+
runAsyncWithPromise(env, promise, "RELOAD_CACHE_ERROR", [handleStr, cacheKeyStr, contextStr, dataStr](auto callback) {
|
|
453
|
+
JsonEvalBridge::reloadSchemaFromCacheAsync(handleStr, cacheKeyStr, contextStr, dataStr, callback);
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
JNIEXPORT void JNICALL
|
|
458
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeCacheStatsAsync(
|
|
459
|
+
JNIEnv* env,
|
|
460
|
+
jobject /* this */,
|
|
461
|
+
jstring handle,
|
|
462
|
+
jobject promise
|
|
463
|
+
) {
|
|
464
|
+
std::string handleStr = jstringToString(env, handle);
|
|
465
|
+
|
|
466
|
+
runAsyncWithPromise(env, promise, "CACHE_STATS_ERROR", [handleStr](auto callback) {
|
|
467
|
+
JsonEvalBridge::cacheStatsAsync(handleStr, callback);
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
JNIEXPORT void JNICALL
|
|
472
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeClearCacheAsync(
|
|
473
|
+
JNIEnv* env,
|
|
474
|
+
jobject /* this */,
|
|
475
|
+
jstring handle,
|
|
476
|
+
jobject promise
|
|
477
|
+
) {
|
|
478
|
+
std::string handleStr = jstringToString(env, handle);
|
|
479
|
+
|
|
480
|
+
runAsyncWithPromise(env, promise, "CLEAR_CACHE_ERROR", [handleStr](auto callback) {
|
|
481
|
+
JsonEvalBridge::clearCacheAsync(handleStr, callback);
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
JNIEXPORT void JNICALL
|
|
486
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeCacheLenAsync(
|
|
487
|
+
JNIEnv* env,
|
|
488
|
+
jobject /* this */,
|
|
489
|
+
jstring handle,
|
|
490
|
+
jobject promise
|
|
491
|
+
) {
|
|
492
|
+
std::string handleStr = jstringToString(env, handle);
|
|
493
|
+
|
|
494
|
+
JavaVM* jvm;
|
|
495
|
+
env->GetJavaVM(&jvm);
|
|
496
|
+
jobject globalPromise = env->NewGlobalRef(promise);
|
|
497
|
+
|
|
498
|
+
JsonEvalBridge::cacheLenAsync(handleStr,
|
|
499
|
+
[jvm, globalPromise](const std::string& result, const std::string& error) {
|
|
500
|
+
JNIEnv* env = nullptr;
|
|
501
|
+
jvm->AttachCurrentThread(&env, nullptr);
|
|
502
|
+
|
|
503
|
+
if (error.empty()) {
|
|
504
|
+
// Optimized: Direct parse and box using cached method IDs
|
|
505
|
+
jint intValue = std::stoi(result);
|
|
506
|
+
jobject integerObj = env->CallStaticObjectMethod(gIntegerClass, gIntegerValueOfMethodID, intValue);
|
|
507
|
+
env->CallVoidMethod(globalPromise, gResolveMethodID, integerObj);
|
|
508
|
+
env->DeleteLocalRef(integerObj);
|
|
509
|
+
} else {
|
|
510
|
+
rejectPromise(env, globalPromise, "CACHE_LEN_ERROR", error);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
env->DeleteGlobalRef(globalPromise);
|
|
514
|
+
jvm->DetachCurrentThread();
|
|
515
|
+
}
|
|
516
|
+
);
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
JNIEXPORT void JNICALL
|
|
520
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeValidatePathsAsync(
|
|
521
|
+
JNIEnv* env,
|
|
522
|
+
jobject /* this */,
|
|
523
|
+
jstring handle,
|
|
524
|
+
jstring data,
|
|
525
|
+
jstring context,
|
|
526
|
+
jstring pathsJson,
|
|
527
|
+
jobject promise
|
|
528
|
+
) {
|
|
529
|
+
std::string handleStr = jstringToString(env, handle);
|
|
530
|
+
std::string dataStr = jstringToString(env, data);
|
|
531
|
+
std::string contextStr = jstringToString(env, context);
|
|
532
|
+
std::string pathsStr = jstringToString(env, pathsJson);
|
|
533
|
+
|
|
534
|
+
runAsyncWithPromise(env, promise, "VALIDATE_PATHS_ERROR", [handleStr, dataStr, contextStr, pathsStr](auto callback) {
|
|
535
|
+
JsonEvalBridge::validatePathsAsync(handleStr, dataStr, contextStr, pathsStr, callback);
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
JNIEXPORT void JNICALL
|
|
540
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeEnableCacheAsync(
|
|
541
|
+
JNIEnv* env,
|
|
542
|
+
jobject /* this */,
|
|
543
|
+
jstring handle,
|
|
544
|
+
jobject promise
|
|
545
|
+
) {
|
|
546
|
+
std::string handleStr = jstringToString(env, handle);
|
|
547
|
+
|
|
548
|
+
runAsyncWithPromise(env, promise, "ENABLE_CACHE_ERROR", [handleStr](auto callback) {
|
|
549
|
+
JsonEvalBridge::enableCacheAsync(handleStr, callback);
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
JNIEXPORT void JNICALL
|
|
554
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeDisableCacheAsync(
|
|
555
|
+
JNIEnv* env,
|
|
556
|
+
jobject /* this */,
|
|
557
|
+
jstring handle,
|
|
558
|
+
jobject promise
|
|
559
|
+
) {
|
|
560
|
+
std::string handleStr = jstringToString(env, handle);
|
|
561
|
+
|
|
562
|
+
runAsyncWithPromise(env, promise, "DISABLE_CACHE_ERROR", [handleStr](auto callback) {
|
|
563
|
+
JsonEvalBridge::disableCacheAsync(handleStr, callback);
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
JNIEXPORT jboolean JNICALL
|
|
568
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeIsCacheEnabled(
|
|
569
|
+
JNIEnv* env,
|
|
570
|
+
jobject /* this */,
|
|
571
|
+
jstring handle
|
|
572
|
+
) {
|
|
573
|
+
std::string handleStr = jstringToString(env, handle);
|
|
574
|
+
bool enabled = JsonEvalBridge::isCacheEnabled(handleStr);
|
|
575
|
+
return enabled ? JNI_TRUE : JNI_FALSE;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
JNIEXPORT void JNICALL
|
|
579
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeDispose(
|
|
580
|
+
JNIEnv* env,
|
|
581
|
+
jobject /* this */,
|
|
582
|
+
jstring handle
|
|
583
|
+
) {
|
|
584
|
+
std::string handleStr = jstringToString(env, handle);
|
|
585
|
+
JsonEvalBridge::dispose(handleStr);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
JNIEXPORT jstring JNICALL
|
|
589
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeVersion(
|
|
590
|
+
JNIEnv* env,
|
|
591
|
+
jobject /* this */
|
|
592
|
+
) {
|
|
593
|
+
std::string version = JsonEvalBridge::version();
|
|
594
|
+
return stringToJstring(env, version);
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
JNIEXPORT void JNICALL
|
|
598
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeResolveLayoutAsync(
|
|
599
|
+
JNIEnv* env,
|
|
600
|
+
jobject /* this */,
|
|
601
|
+
jstring handle,
|
|
602
|
+
jboolean evaluate,
|
|
603
|
+
jobject promise
|
|
604
|
+
) {
|
|
605
|
+
std::string handleStr = jstringToString(env, handle);
|
|
606
|
+
bool evaluateBool = (evaluate == JNI_TRUE);
|
|
607
|
+
|
|
608
|
+
runAsyncWithPromise(env, promise, "RESOLVE_LAYOUT_ERROR", [handleStr, evaluateBool](auto callback) {
|
|
609
|
+
JsonEvalBridge::resolveLayoutAsync(handleStr, evaluateBool, callback);
|
|
610
|
+
});
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
JNIEXPORT void JNICALL
|
|
614
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeCompileAndRunLogicAsync(
|
|
615
|
+
JNIEnv* env,
|
|
616
|
+
jobject /* this */,
|
|
617
|
+
jstring handle,
|
|
618
|
+
jstring logicStr,
|
|
619
|
+
jstring data,
|
|
620
|
+
jstring context,
|
|
621
|
+
jobject promise
|
|
622
|
+
) {
|
|
623
|
+
std::string handleStr = jstringToString(env, handle);
|
|
624
|
+
std::string logicStrCpp = jstringToString(env, logicStr);
|
|
625
|
+
std::string dataStr = jstringToString(env, data);
|
|
626
|
+
std::string contextStr = jstringToString(env, context);
|
|
627
|
+
|
|
628
|
+
runAsyncWithPromise(env, promise, "COMPILE_AND_RUN_LOGIC_ERROR", [handleStr, logicStrCpp, dataStr, contextStr](auto callback) {
|
|
629
|
+
JsonEvalBridge::compileAndRunLogicAsync(handleStr, logicStrCpp, dataStr, contextStr, callback);
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
// ============================================================================
|
|
634
|
+
// Subform Methods
|
|
635
|
+
// ============================================================================
|
|
636
|
+
|
|
637
|
+
JNIEXPORT void JNICALL
|
|
638
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeEvaluateSubformAsync(
|
|
639
|
+
JNIEnv* env,
|
|
640
|
+
jobject /* this */,
|
|
641
|
+
jstring handle,
|
|
642
|
+
jstring subformPath,
|
|
643
|
+
jstring data,
|
|
644
|
+
jstring context,
|
|
645
|
+
jobject promise
|
|
646
|
+
) {
|
|
647
|
+
std::string handleStr = jstringToString(env, handle);
|
|
648
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
649
|
+
std::string dataStr = jstringToString(env, data);
|
|
650
|
+
std::string contextStr = jstringToString(env, context);
|
|
651
|
+
|
|
652
|
+
runAsyncWithPromise(env, promise, "EVALUATE_SUBFORM_ERROR", [handleStr, subformPathStr, dataStr, contextStr](auto callback) {
|
|
653
|
+
JsonEvalBridge::evaluateSubformAsync(handleStr, subformPathStr, dataStr, contextStr, callback);
|
|
654
|
+
});
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
JNIEXPORT void JNICALL
|
|
658
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeValidateSubformAsync(
|
|
659
|
+
JNIEnv* env,
|
|
660
|
+
jobject /* this */,
|
|
661
|
+
jstring handle,
|
|
662
|
+
jstring subformPath,
|
|
663
|
+
jstring data,
|
|
664
|
+
jstring context,
|
|
665
|
+
jobject promise
|
|
666
|
+
) {
|
|
667
|
+
std::string handleStr = jstringToString(env, handle);
|
|
668
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
669
|
+
std::string dataStr = jstringToString(env, data);
|
|
670
|
+
std::string contextStr = jstringToString(env, context);
|
|
671
|
+
|
|
672
|
+
runAsyncWithPromise(env, promise, "VALIDATE_SUBFORM_ERROR", [handleStr, subformPathStr, dataStr, contextStr](auto callback) {
|
|
673
|
+
JsonEvalBridge::validateSubformAsync(handleStr, subformPathStr, dataStr, contextStr, callback);
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
JNIEXPORT void JNICALL
|
|
678
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeEvaluateDependentsSubformAsync(
|
|
679
|
+
JNIEnv* env,
|
|
680
|
+
jobject /* this */,
|
|
681
|
+
jstring handle,
|
|
682
|
+
jstring subformPath,
|
|
683
|
+
jstring changedPath,
|
|
684
|
+
jstring data,
|
|
685
|
+
jstring context,
|
|
686
|
+
jobject promise
|
|
687
|
+
) {
|
|
688
|
+
std::string handleStr = jstringToString(env, handle);
|
|
689
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
690
|
+
std::string changedPathStr = jstringToString(env, changedPath);
|
|
691
|
+
std::string dataStr = jstringToString(env, data);
|
|
692
|
+
std::string contextStr = jstringToString(env, context);
|
|
693
|
+
|
|
694
|
+
runAsyncWithPromise(env, promise, "EVALUATE_DEPENDENTS_SUBFORM_ERROR", [handleStr, subformPathStr, changedPathStr, dataStr, contextStr](auto callback) {
|
|
695
|
+
JsonEvalBridge::evaluateDependentsSubformAsync(handleStr, subformPathStr, changedPathStr, dataStr, contextStr, callback);
|
|
696
|
+
});
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
JNIEXPORT void JNICALL
|
|
700
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeResolveLayoutSubformAsync(
|
|
701
|
+
JNIEnv* env,
|
|
702
|
+
jobject /* this */,
|
|
703
|
+
jstring handle,
|
|
704
|
+
jstring subformPath,
|
|
705
|
+
jboolean evaluate,
|
|
706
|
+
jobject promise
|
|
707
|
+
) {
|
|
708
|
+
std::string handleStr = jstringToString(env, handle);
|
|
709
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
710
|
+
bool evaluateBool = (evaluate == JNI_TRUE);
|
|
711
|
+
|
|
712
|
+
runAsyncWithPromise(env, promise, "RESOLVE_LAYOUT_SUBFORM_ERROR", [handleStr, subformPathStr, evaluateBool](auto callback) {
|
|
713
|
+
JsonEvalBridge::resolveLayoutSubformAsync(handleStr, subformPathStr, evaluateBool, callback);
|
|
714
|
+
});
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
JNIEXPORT void JNICALL
|
|
718
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetEvaluatedSchemaSubformAsync(
|
|
719
|
+
JNIEnv* env,
|
|
720
|
+
jobject /* this */,
|
|
721
|
+
jstring handle,
|
|
722
|
+
jstring subformPath,
|
|
723
|
+
jboolean resolveLayout,
|
|
724
|
+
jobject promise
|
|
725
|
+
) {
|
|
726
|
+
std::string handleStr = jstringToString(env, handle);
|
|
727
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
728
|
+
bool resolveLayoutBool = (resolveLayout == JNI_TRUE);
|
|
729
|
+
|
|
730
|
+
runAsyncWithPromise(env, promise, "GET_EVALUATED_SCHEMA_SUBFORM_ERROR", [handleStr, subformPathStr, resolveLayoutBool](auto callback) {
|
|
731
|
+
JsonEvalBridge::getEvaluatedSchemaSubformAsync(handleStr, subformPathStr, resolveLayoutBool, callback);
|
|
732
|
+
});
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
JNIEXPORT void JNICALL
|
|
736
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetSchemaValueSubformAsync(
|
|
737
|
+
JNIEnv* env,
|
|
738
|
+
jobject /* this */,
|
|
739
|
+
jstring handle,
|
|
740
|
+
jstring subformPath,
|
|
741
|
+
jobject promise
|
|
742
|
+
) {
|
|
743
|
+
std::string handleStr = jstringToString(env, handle);
|
|
744
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
745
|
+
|
|
746
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_VALUE_SUBFORM_ERROR", [handleStr, subformPathStr](auto callback) {
|
|
747
|
+
JsonEvalBridge::getSchemaValueSubformAsync(handleStr, subformPathStr, callback);
|
|
748
|
+
});
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
JNIEXPORT void JNICALL
|
|
752
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetEvaluatedSchemaWithoutParamsSubformAsync(
|
|
753
|
+
JNIEnv* env,
|
|
754
|
+
jobject /* this */,
|
|
755
|
+
jstring handle,
|
|
756
|
+
jstring subformPath,
|
|
757
|
+
jboolean resolveLayout,
|
|
758
|
+
jobject promise
|
|
759
|
+
) {
|
|
760
|
+
std::string handleStr = jstringToString(env, handle);
|
|
761
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
762
|
+
bool resolveLayoutBool = (resolveLayout == JNI_TRUE);
|
|
763
|
+
|
|
764
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_WITHOUT_PARAMS_SUBFORM_ERROR", [handleStr, subformPathStr, resolveLayoutBool](auto callback) {
|
|
765
|
+
JsonEvalBridge::getEvaluatedSchemaWithoutParamsSubformAsync(handleStr, subformPathStr, resolveLayoutBool, callback);
|
|
766
|
+
});
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
JNIEXPORT void JNICALL
|
|
770
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetEvaluatedSchemaByPathSubformAsync(
|
|
771
|
+
JNIEnv* env,
|
|
772
|
+
jobject /* this */,
|
|
773
|
+
jstring handle,
|
|
774
|
+
jstring subformPath,
|
|
775
|
+
jstring schemaPath,
|
|
776
|
+
jboolean skipLayout,
|
|
777
|
+
jobject promise
|
|
778
|
+
) {
|
|
779
|
+
std::string handleStr = jstringToString(env, handle);
|
|
780
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
781
|
+
std::string schemaPathStr = jstringToString(env, schemaPath);
|
|
782
|
+
bool skipLayoutBool = (skipLayout == JNI_TRUE);
|
|
783
|
+
|
|
784
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_BY_PATH_SUBFORM_ERROR", [handleStr, subformPathStr, schemaPathStr, skipLayoutBool](auto callback) {
|
|
785
|
+
JsonEvalBridge::getEvaluatedSchemaByPathSubformAsync(handleStr, subformPathStr, schemaPathStr, skipLayoutBool, callback);
|
|
786
|
+
});
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
JNIEXPORT void JNICALL
|
|
790
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetEvaluatedSchemaByPathsSubformAsync(
|
|
791
|
+
JNIEnv* env,
|
|
792
|
+
jobject /* this */,
|
|
793
|
+
jstring handle,
|
|
794
|
+
jstring subformPath,
|
|
795
|
+
jstring schemaPathsJson,
|
|
796
|
+
jboolean skipLayout,
|
|
797
|
+
jobject promise
|
|
798
|
+
) {
|
|
799
|
+
std::string handleStr = jstringToString(env, handle);
|
|
800
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
801
|
+
std::string schemaPathsJsonStr = jstringToString(env, schemaPathsJson);
|
|
802
|
+
bool skipLayoutBool = (skipLayout == JNI_TRUE);
|
|
803
|
+
|
|
804
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_BY_PATHS_SUBFORM_ERROR", [handleStr, subformPathStr, schemaPathsJsonStr, skipLayoutBool](auto callback) {
|
|
805
|
+
JsonEvalBridge::getEvaluatedSchemaByPathsSubformAsync(handleStr, subformPathStr, schemaPathsJsonStr, skipLayoutBool, callback);
|
|
806
|
+
});
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
JNIEXPORT void JNICALL
|
|
810
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetSubformPathsAsync(
|
|
811
|
+
JNIEnv* env,
|
|
812
|
+
jobject /* this */,
|
|
813
|
+
jstring handle,
|
|
814
|
+
jobject promise
|
|
815
|
+
) {
|
|
816
|
+
std::string handleStr = jstringToString(env, handle);
|
|
817
|
+
|
|
818
|
+
runAsyncWithPromise(env, promise, "GET_SUBFORM_PATHS_ERROR", [handleStr](auto callback) {
|
|
819
|
+
JsonEvalBridge::getSubformPathsAsync(handleStr, callback);
|
|
820
|
+
});
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
JNIEXPORT void JNICALL
|
|
824
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetSchemaByPathSubformAsync(
|
|
825
|
+
JNIEnv* env,
|
|
826
|
+
jobject /* this */,
|
|
827
|
+
jstring handle,
|
|
828
|
+
jstring subformPath,
|
|
829
|
+
jstring schemaPath,
|
|
830
|
+
jobject promise
|
|
831
|
+
) {
|
|
832
|
+
std::string handleStr = jstringToString(env, handle);
|
|
833
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
834
|
+
std::string schemaPathStr = jstringToString(env, schemaPath);
|
|
835
|
+
|
|
836
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_BY_PATH_SUBFORM_ERROR", [handleStr, subformPathStr, schemaPathStr](auto callback) {
|
|
837
|
+
JsonEvalBridge::getSchemaByPathSubformAsync(handleStr, subformPathStr, schemaPathStr, callback);
|
|
838
|
+
});
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
JNIEXPORT void JNICALL
|
|
842
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeGetSchemaByPathsSubformAsync(
|
|
843
|
+
JNIEnv* env,
|
|
844
|
+
jobject /* this */,
|
|
845
|
+
jstring handle,
|
|
846
|
+
jstring subformPath,
|
|
847
|
+
jstring schemaPathsJson,
|
|
848
|
+
jobject promise
|
|
849
|
+
) {
|
|
850
|
+
std::string handleStr = jstringToString(env, handle);
|
|
851
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
852
|
+
std::string schemaPathsJsonStr = jstringToString(env, schemaPathsJson);
|
|
853
|
+
|
|
854
|
+
runAsyncWithPromise(env, promise, "GET_SCHEMA_BY_PATHS_SUBFORM_ERROR", [handleStr, subformPathStr, schemaPathsJsonStr](auto callback) {
|
|
855
|
+
JsonEvalBridge::getSchemaByPathsSubformAsync(handleStr, subformPathStr, schemaPathsJsonStr, callback);
|
|
856
|
+
});
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
JNIEXPORT void JNICALL
|
|
860
|
+
Java_com_jsonevalrs_JsonEvalRsModule_nativeHasSubformAsync(
|
|
861
|
+
JNIEnv* env,
|
|
862
|
+
jobject /* this */,
|
|
863
|
+
jstring handle,
|
|
864
|
+
jstring subformPath,
|
|
865
|
+
jobject promise
|
|
866
|
+
) {
|
|
867
|
+
std::string handleStr = jstringToString(env, handle);
|
|
868
|
+
std::string subformPathStr = jstringToString(env, subformPath);
|
|
869
|
+
|
|
870
|
+
runAsyncWithPromise(env, promise, "HAS_SUBFORM_ERROR", [handleStr, subformPathStr](auto callback) {
|
|
871
|
+
JsonEvalBridge::hasSubformAsync(handleStr, subformPathStr, callback);
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
} // extern "C"
|