| /* |
| * 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::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::inflaterClass; |
| jclass JniConstants::inputStreamClass; |
| jclass JniConstants::integerClass; |
| jclass JniConstants::localeDataClass; |
| jclass JniConstants::longClass; |
| jclass JniConstants::methodClass; |
| jclass JniConstants::mutableIntClass; |
| jclass JniConstants::mutableLongClass; |
| 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::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"); |
| 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"); |
| 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"); |
| 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"); |
| structUtsnameClass = findClass(env, "libcore/io/StructUtsname"); |
| } |