MCPcopy Create free account
hub / github.com/apache/mesos / FindMesosClass

Function FindMesosClass

src/java/jni/convert.cpp:58–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56jweak mesosClassLoader = nullptr;
57
58jclass FindMesosClass(JNIEnv* env, const char* className)
59{
60 if (env->ExceptionCheck()) {
61 fprintf(stderr, "ERROR: exception pending on entry to "
62 "FindMesosClass()\n");
63 return nullptr;
64 }
65
66 if (mesosClassLoader == nullptr) {
67 return env->FindClass(className);
68 }
69
70 // JNI FindClass uses class names with slashes, but
71 // ClassLoader.loadClass uses the dotted "binary name"
72 // format. Convert formats.
73 string convName = className;
74 for (uint32_t i = 0; i < convName.size(); i++) {
75 if (convName[i] == '/')
76 convName[i] = '.';
77 }
78
79 jclass javaLangClassLoader = env->FindClass("java/lang/ClassLoader");
80 assert(javaLangClassLoader != nullptr);
81 jmethodID loadClass =
82 env->GetMethodID(javaLangClassLoader,
83 "loadClass",
84 "(Ljava/lang/String;)Ljava/lang/Class;");
85 assert(loadClass != nullptr);
86
87 // Create an object for the class name string; alloc could fail.
88 jstring strClassName = env->NewStringUTF(convName.c_str());
89 if (env->ExceptionCheck()) {
90 fprintf(stderr, "ERROR: unable to convert '%s' to string\n",
91 convName.c_str());
92 return nullptr;
93 }
94
95 // Try to find the named class.
96 jclass cls = (jclass) env->CallObjectMethod(mesosClassLoader,
97 loadClass,
98 strClassName);
99
100 if (env->ExceptionCheck()) {
101 env->ExceptionDescribe();
102 fprintf(stderr, "ERROR: unable to load class '%s' from %p\n",
103 className, mesosClassLoader);
104 return nullptr;
105 }
106
107 return cls;
108}
109
110} // namespace {
111

Callers 2

JNI_OnLoadFunction · 0.85
convertFunction · 0.85

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected