/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "JniConstants.h" #include "ScopedLocalRef.h" #include <stdlib.h> jclass JniConstants::bidiRunClass; jclass JniConstants::bigDecimalClass; jclass JniConstants::booleanClass; jclass JniConstants::byteArrayClass; jclass JniConstants::byteClass; jclass JniConstants::calendarClass; jclass JniConstants::charsetICUClass; jclass JniConstants::constructorClass; jclass JniConstants::deflaterClass; jclass JniConstants::doubleClass; jclass JniConstants::errnoExceptionClass; jclass JniConstants::fieldClass; jclass JniConstants::fieldPositionIteratorClass; jclass JniConstants::fileDescriptorClass; jclass JniConstants::gaiExceptionClass; jclass JniConstants::inet6AddressClass; jclass JniConstants::inetAddressClass; jclass JniConstants::inetSocketAddressClass; jclass JniConstants::inetUnixAddressClass; jclass JniConstants::inflaterClass; jclass JniConstants::inputStreamClass; jclass JniConstants::integerClass; jclass JniConstants::localeDataClass; jclass JniConstants::longClass; jclass JniConstants::methodClass; jclass JniConstants::mutableIntClass; jclass JniConstants::mutableLongClass; jclass JniConstants::objectClass; jclass JniConstants::objectArrayClass; jclass JniConstants::outputStreamClass; jclass JniConstants::parsePositionClass; jclass JniConstants::patternSyntaxExceptionClass; jclass JniConstants::realToStringClass; jclass JniConstants::socketClass; jclass JniConstants::socketImplClass; jclass JniConstants::stringClass; jclass JniConstants::structAddrinfoClass; jclass JniConstants::structFlockClass; jclass JniConstants::structGroupReqClass; jclass JniConstants::structLingerClass; jclass JniConstants::structPasswdClass; jclass JniConstants::structPollfdClass; jclass JniConstants::structStatClass; jclass JniConstants::structStatFsClass; jclass JniConstants::structTimevalClass; jclass JniConstants::structUcredClass; jclass JniConstants::structUtsnameClass; static jclass findClass(JNIEnv* env, const char* name) { ScopedLocalRef<jclass> localClass(env, env->FindClass(name)); jclass result = reinterpret_cast<jclass>(env->NewGlobalRef(localClass.get())); if (result == NULL) { ALOGE("failed to find class '%s'", name); abort(); } return result; } void JniConstants::init(JNIEnv* env) { bidiRunClass = findClass(env, "java/text/Bidi$Run"); bigDecimalClass = findClass(env, "java/math/BigDecimal"); booleanClass = findClass(env, "java/lang/Boolean"); byteClass = findClass(env, "java/lang/Byte"); byteArrayClass = findClass(env, "[B"); calendarClass = findClass(env, "java/util/Calendar"); charsetICUClass = findClass(env, "java/nio/charset/CharsetICU"); constructorClass = findClass(env, "java/lang/reflect/Constructor"); deflaterClass = findClass(env, "java/util/zip/Deflater"); doubleClass = findClass(env, "java/lang/Double"); errnoExceptionClass = findClass(env, "libcore/io/ErrnoException"); fieldClass = findClass(env, "java/lang/reflect/Field"); fieldPositionIteratorClass = findClass(env, "libcore/icu/NativeDecimalFormat$FieldPositionIterator"); fileDescriptorClass = findClass(env, "java/io/FileDescriptor"); gaiExceptionClass = findClass(env, "libcore/io/GaiException"); inet6AddressClass = findClass(env, "java/net/Inet6Address"); inetAddressClass = findClass(env, "java/net/InetAddress"); inetSocketAddressClass = findClass(env, "java/net/InetSocketAddress"); inetUnixAddressClass = findClass(env, "java/net/InetUnixAddress"); inflaterClass = findClass(env, "java/util/zip/Inflater"); inputStreamClass = findClass(env, "java/io/InputStream"); integerClass = findClass(env, "java/lang/Integer"); localeDataClass = findClass(env, "libcore/icu/LocaleData"); longClass = findClass(env, "java/lang/Long"); methodClass = findClass(env, "java/lang/reflect/Method"); mutableIntClass = findClass(env, "libcore/util/MutableInt"); mutableLongClass = findClass(env, "libcore/util/MutableLong"); objectClass = findClass(env, "java/lang/Object"); objectArrayClass = findClass(env, "[Ljava/lang/Object;"); outputStreamClass = findClass(env, "java/io/OutputStream"); parsePositionClass = findClass(env, "java/text/ParsePosition"); patternSyntaxExceptionClass = findClass(env, "java/util/regex/PatternSyntaxException"); realToStringClass = findClass(env, "java/lang/RealToString"); socketClass = findClass(env, "java/net/Socket"); socketImplClass = findClass(env, "java/net/SocketImpl"); stringClass = findClass(env, "java/lang/String"); structAddrinfoClass = findClass(env, "libcore/io/StructAddrinfo"); structFlockClass = findClass(env, "libcore/io/StructFlock"); structGroupReqClass = findClass(env, "libcore/io/StructGroupReq"); structLingerClass = findClass(env, "libcore/io/StructLinger"); structPasswdClass = findClass(env, "libcore/io/StructPasswd"); structPollfdClass = findClass(env, "libcore/io/StructPollfd"); structStatClass = findClass(env, "libcore/io/StructStat"); structStatFsClass = findClass(env, "libcore/io/StructStatFs"); structTimevalClass = findClass(env, "libcore/io/StructTimeval"); structUcredClass = findClass(env, "libcore/io/StructUcred"); structUtsnameClass = findClass(env, "libcore/io/StructUtsname"); }