/* Called by the JVM when APR_JAVA is loaded */ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *env; apr_version_t apv; int apvn; UNREFERENCED(reserved); if ((*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_4)) { return JNI_ERR; } tcn_global_vm = vm; /* Before doing anything else check if we have a valid * APR version. We need version 1.2.1 as minimum. */ apr_version(&apv); apvn = apv.major * 1000 + apv.minor * 100 + apv.patch; if (apvn < 1201) { tcn_Throw(env, "Unupported APR version (%s)", apr_version_string()); return JNI_ERR; } /* Initialize global java.lang.String class */ TCN_LOAD_CLASS(env, jString_class, "java/lang/String", JNI_ERR); TCN_LOAD_CLASS(env, jFinfo_class, TCN_FINFO_CLASS, JNI_ERR); TCN_LOAD_CLASS(env, jAinfo_class, TCN_AINFO_CLASS, JNI_ERR); TCN_GET_METHOD(env, jString_class, jString_init, "<init>", "([B)V", JNI_ERR); TCN_GET_METHOD(env, jString_class, jString_getBytes, "getBytes", "()[B", JNI_ERR); if(tcn_load_finfo_class(env, jFinfo_class) != APR_SUCCESS) return JNI_ERR; if(tcn_load_ainfo_class(env, jAinfo_class) != APR_SUCCESS) return JNI_ERR; #ifdef WIN32 { char *ppid = getenv(TCN_PARENT_IDE); if (ppid) tcn_parent_pid = atoi(ppid); } #else tcn_parent_pid = getppid(); #endif return JNI_VERSION_1_4; }
// ----------------------------------------------------------------------- // Conctructor & Destructor // ----------------------------------------------------------------------- ConsoleUI::ConsoleUI(int argc, char * argv[], const char * cpszTitle, const char * cpszCopyright) : iv_bQuiet(false), iv_cpszHelp(NULL), iv_szProcessName(""), iv_currentArg(99999) { // Catch any APR errors here in case caller does not expect this constructor to fail try { apr_status_t rv = apr_initialize(); if (rv != APR_SUCCESS) { char errBuf[256]; apr_strerror(rv, errBuf, sizeof(errBuf)); UIMA_EXC_THROW_NEW(AprFailureException, UIMA_ERR_APR_FAILURE, ErrorMessage(UIMA_MSG_ID_EXC_APR_ERROR,errBuf), ErrorMessage(UIMA_MSG_ID_EXCON_APR_FUNCTION,"apr_initialize"), ErrorInfo::unrecoverable); } rv = apr_pool_create(&consPool, NULL); if (rv != APR_SUCCESS) { UIMA_EXC_THROW_NEW(ExcOutOfMemory, UIMA_ERR_ENGINE_OUT_OF_MEMORY, UIMA_MSG_ID_EXC_OUT_OF_MEMORY, ErrorMessage(UIMA_MSG_ID_EXCON_CREATING_POOL_FOR_CLASS,"uima::util::ConsoleUI"), ErrorInfo::unrecoverable); } iv_cpszUsage[0] = iv_cpszUsage[1] = ""; iv_argc = argc; iv_argv = (const char**) argv; // Get program name from first arg if ( cpszTitle != NULL ) { util::Filename progname(argv[0]); iv_szProcessName = (char *)apr_palloc(consPool, 1+strlen(progname.getName())); progname.extractBaseName(iv_szProcessName); cout << endl << iv_szProcessName << " - " << cpszTitle; if ( cpszCopyright != NULL ) cout << " " << cpszCopyright; cout << " [APR version " << apr_version_string() << "]" << endl; } // Log and rethrow and APR failures } catch (Exception & rclException) { cerr << rclException; UIMA_EXC_RETHROW(rclException, ErrorMessage(UIMA_MSG_ID_EXCON_CONSTRUCTING_CLASS,"uima::util::ConsoleUI")); } }
/* Called by the JVM when APR_JAVA is loaded */ JNIEXPORT jint JNICALL JNI_OnLoad_netty_tcnative(JavaVM *vm, void *reserved) { JNIEnv *env; apr_version_t apv; int apvn; UNREFERENCED(reserved); if ((*vm)->GetEnv(vm, (void **)&env, TCN_JNI_VERSION)) { return JNI_ERR; } tcn_global_vm = vm; /* Before doing anything else check if we have a valid * APR version. */ apr_version(&apv); apvn = apv.major * 1000 + apv.minor * 100 + apv.patch; if (apvn < 1201) { tcn_Throw(env, "Unupported APR version (%s)", apr_version_string()); return JNI_ERR; } /* Initialize global java.lang.String class */ TCN_LOAD_CLASS(env, jString_class, "java/lang/String", JNI_ERR); TCN_GET_METHOD(env, jString_class, jString_init, "<init>", "([B)V", JNI_ERR); TCN_GET_METHOD(env, jString_class, jString_getBytes, "getBytes", "()[B", JNI_ERR); TCN_LOAD_CLASS(env, byteArrayClass, "[B", JNI_ERR); TCN_LOAD_CLASS(env, keyMaterialClass, "io/netty/tcnative/jni/CertificateRequestedCallback$KeyMaterial", JNI_ERR); TCN_GET_FIELD(env, keyMaterialClass, keyMaterialCertificateChainFieldId, "certificateChain", "J", JNI_ERR); TCN_GET_FIELD(env, keyMaterialClass, keyMaterialPrivateKeyFieldId, "privateKey", "J", JNI_ERR); return TCN_JNI_VERSION; }
TCN_IMPLEMENT_CALL(jstring, Library, aprVersionString)(TCN_STDARGS) { UNREFERENCED(o); return AJP_TO_JSTRING(apr_version_string()); }
static void test_strings(CuTest *tc) { CuAssertStrEquals(tc, APR_VERSION_STRING, apr_version_string()); }