Github user ajantha-bhat commented on a diff in the pull request: https://github.com/apache/carbondata/pull/2899#discussion_r241322296 --- Diff: store/CSDK/src/CarbonWriter.cpp --- @@ -58,6 +58,35 @@ void CarbonWriter::outputPath(char *path) { carbonWriterBuilderObject = jniEnv->CallObjectMethodA(carbonWriterBuilderObject, methodID, args); } +void CarbonWriter::sortBy(int argc, char **argv) { + if (argc < 0) { + throw std::runtime_error("argc parameter can't be negative."); + } + if (argv == NULL) { + throw std::runtime_error("argv parameter can't be NULL."); + } + checkBuilder(); + jclass carbonReaderBuilderClass = jniEnv->GetObjectClass(carbonWriterBuilderObject); + jmethodID methodID = jniEnv->GetMethodID(carbonReaderBuilderClass, "sortBy", + "([Ljava/lang/String;)Lorg/apache/carbondata/sdk/file/CarbonWriterBuilder;"); + if (methodID == NULL) { + throw std::runtime_error("Can't find the method in java: sortBy"); + } + jclass objectArrayClass = jniEnv->FindClass("Ljava/lang/String;"); + if (objectArrayClass == NULL) { + throw std::runtime_error("Can't find the class in java: java/lang/String"); + } + jobjectArray array = jniEnv->NewObjectArray(argc, objectArrayClass, NULL); + for (int i = 0; i < argc; ++i) { + jstring value = jniEnv->NewStringUTF(argv[i]); + jniEnv->SetObjectArrayElement(array, i, value); + } + + jvalue args[1]; + args[0].l = array; + carbonWriterBuilderObject = jniEnv->CallObjectMethodA(carbonWriterBuilderObject, methodID, args); --- End diff -- can this be modified to (void) jniEnv->CallObjectMethodA(carbonWriterBuilderObject, methodID, args); no need to collect return value from java API as it return type of cpp method is void. check same for all the new void API added
---