corba/src/share/native/com/sun/corba/se/internal/io/ioser.c
changeset 5653 954780ba136f
parent 5652 89482b760ef7
parent 5519 09c167b9213e
child 5654 680984fb01fd
equal deleted inserted replaced
5652:89482b760ef7 5653:954780ba136f
     1 /*
       
     2  * Copyright 1998-2002 Sun Microsystems, Inc.  All Rights Reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.  Sun designates this
       
     8  * particular file as subject to the "Classpath" exception as provided
       
     9  * by Sun in the LICENSE file that accompanied this code.
       
    10  *
       
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14  * version 2 for more details (a copy is included in the LICENSE file that
       
    15  * accompanied this code).
       
    16  *
       
    17  * You should have received a copy of the GNU General Public License version
       
    18  * 2 along with this work; if not, write to the Free Software Foundation,
       
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20  *
       
    21  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    22  * CA 95054 USA or visit www.sun.com if you need additional information or
       
    23  * have any questions.
       
    24  */
       
    25 
       
    26 #include "jni.h"
       
    27 
       
    28 #include "com_sun_corba_se_internal_io_IIOPInputStream.h"
       
    29 #include "com_sun_corba_se_internal_io_IIOPOutputStream.h"
       
    30 #include "com_sun_corba_se_internal_io_ObjectStreamClass.h"
       
    31 #include "com_sun_corba_se_internal_io_LibraryManager.h"
       
    32 
       
    33 #define MAJOR_VERSION   1
       
    34 #define MINOR_VERSION   11  /*sun.4296963  ibm.11861*/
       
    35 
       
    36 static char *copyright[] = {
       
    37     "Licensed Materials - Property of IBM and Sun",
       
    38     "RMI-IIOP v1.0",
       
    39     "Copyright IBM Corp. 1998 1999  All Rights Reserved",
       
    40     "Copyright 1998-1999 Sun Microsystems, Inc. 901 San Antonio Road,",
       
    41     "Palo Alto, CA  94303, U.S.A.  All rights reserved."
       
    42 };
       
    43 
       
    44 /*
       
    45  * Class:     com_sun_corba_se_internal_io_LibraryManager
       
    46  * Method:    getMajorVersion
       
    47  * Signature: ()I
       
    48  */
       
    49 JNIEXPORT jint JNICALL Java_com_sun_corba_se_internal_io_LibraryManager_getMajorVersion
       
    50   (JNIEnv *env, jclass this)
       
    51 {
       
    52     return MAJOR_VERSION;
       
    53 }
       
    54 
       
    55 /*
       
    56  * Class:     com_sun_corba_se_internal_io_LibraryManager
       
    57  * Method:    getMinorVersion
       
    58  * Signature: ()I
       
    59  */
       
    60 JNIEXPORT jint JNICALL Java_com_sun_corba_se_internal_io_LibraryManager_getMinorVersion
       
    61   (JNIEnv *env, jclass this)
       
    62 {
       
    63     return MINOR_VERSION;
       
    64 }
       
    65 
       
    66 /*
       
    67  * Class:     com_sun_corba_se_internal_io_LibraryManager
       
    68  * Method:    setEnableOverride
       
    69  * Signature: (Ljava/lang/Class;Ljava/lang/Object;)Z
       
    70  */
       
    71 JNIEXPORT jboolean JNICALL Java_com_sun_corba_se_internal_io_LibraryManager_setEnableOverride
       
    72   (JNIEnv *env, jclass this, jclass targetClass, jobject instance)
       
    73 {
       
    74     jfieldID fieldID = (*env)->GetFieldID(env, targetClass,
       
    75         "enableSubclassImplementation",
       
    76         "Z");
       
    77     (*env)->SetBooleanField(env, instance, fieldID, JNI_TRUE);
       
    78 
       
    79     return (*env)->GetBooleanField(env, instance, fieldID);
       
    80 
       
    81 }
       
    82 
       
    83 /*
       
    84  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
    85  * Method:    throwExceptionType
       
    86  * Signature: (Ljava/lang/Class;Ljava/lang/String;)V
       
    87  *
       
    88  * Construct and throw the given exception using the given message.
       
    89  */
       
    90 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_throwExceptionType
       
    91   (JNIEnv *env, jobject obj, jclass c, jstring mssg)
       
    92 {
       
    93     const char* strMsg = (*env)->GetStringUTFChars(env, mssg, 0L);
       
    94     (*env)->ThrowNew(env, c, strMsg);
       
    95     (*env)->ReleaseStringUTFChars(env, mssg, strMsg);
       
    96     return;
       
    97 }
       
    98 
       
    99 /*
       
   100  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   101  * Method:    throwExceptionType
       
   102  * Signature: (Ljava/lang/Class;Ljava/lang/String;)V
       
   103  *
       
   104  * Construct and throw the given exception using the given message.
       
   105  */
       
   106 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_throwExceptionType
       
   107   (JNIEnv *env, jobject obj, jclass c, jstring mssg)
       
   108 {
       
   109     const char* strMsg = (*env)->GetStringUTFChars(env, mssg, 0L);
       
   110     (*env)->ThrowNew(env, c, strMsg);
       
   111     (*env)->ReleaseStringUTFChars(env, mssg, strMsg);
       
   112     return;
       
   113 
       
   114 }
       
   115 
       
   116 JNIEXPORT jobject JNICALL
       
   117 Java_com_sun_corba_se_internal_io_IIOPInputStream_allocateNewObject (JNIEnv * env,
       
   118                                                   jclass this,
       
   119                                                   jclass aclass,
       
   120                                                   jclass initclass)
       
   121 {
       
   122     jmethodID cid;
       
   123 
       
   124     /**
       
   125      * Get the method ID of the default constructor of
       
   126      * initclass, which is the first non-Serializable
       
   127      * superclass.
       
   128      */
       
   129     cid = (*env)->GetMethodID(env, initclass, "<init>", "()V");
       
   130 
       
   131     if (cid == NULL) {
       
   132         /* exception thrown */
       
   133         return NULL;
       
   134     }
       
   135 
       
   136     /**
       
   137      * Allocates an object of type aclass and calls the
       
   138      * initclass default constructor (found above)
       
   139      */
       
   140     return (*env)->NewObject(env, aclass, cid);
       
   141 }
       
   142 
       
   143 
       
   144 /* DEPRECATED - This is no longer used.
       
   145  *
       
   146  * Find the first class loader up the stack and use its class to call
       
   147  * FindClassFromClass to resolve the specified class
       
   148  * name.  The code is similar to that of java.lang.currentClassLoader
       
   149  */
       
   150 JNIEXPORT jclass JNICALL
       
   151 Java_com_sun_corba_se_internal_io_IIOPInputStream_loadClass (JNIEnv * env,
       
   152                                            jobject this,
       
   153                                            jclass curClass,
       
   154                                            jstring currClassName)
       
   155 {
       
   156     return 0L;
       
   157 }
       
   158 
       
   159 #include "com_sun_corba_se_internal_io_ObjectStreamClass.h"
       
   160 
       
   161 /*
       
   162  * Class:     com_sun_corba_se_internal_io_ObjectStreamClass
       
   163  * Method:    hasStaticInitializer
       
   164  * Signature: (Ljava/lang/Class;)Z
       
   165  *
       
   166  * If the method <clinit> ()V is defined true is returned.
       
   167  * Otherwise, false is returned.
       
   168  */
       
   169 JNIEXPORT jboolean JNICALL
       
   170 Java_com_sun_corba_se_internal_io_ObjectStreamClass_hasStaticInitializer(JNIEnv *env, jclass this,
       
   171                                                     jclass clazz)
       
   172 {
       
   173     jclass superclazz = NULL;
       
   174     jmethodID superclinit = NULL;
       
   175 
       
   176     jmethodID clinit = (*env)->GetStaticMethodID(env, clazz,
       
   177                                                  "<clinit>", "()V");
       
   178     if (clinit == NULL || (*env)->ExceptionOccurred(env)) {
       
   179         (*env)->ExceptionClear(env);
       
   180         return 0;
       
   181     }
       
   182 
       
   183     /* Ask the superclass the same question
       
   184      * If the answer is the same then the constructor is from a superclass.
       
   185      * If different, it's really defined on the subclass.
       
   186      */
       
   187     superclazz = (*env)->GetSuperclass(env, clazz);
       
   188     if ((*env)->ExceptionOccurred(env)) {
       
   189         return 0;
       
   190     }
       
   191 
       
   192     if (superclazz == NULL)
       
   193         return 1;
       
   194 
       
   195     superclinit = (*env)->GetStaticMethodID(env, superclazz,
       
   196                                             "<clinit>", "()V");
       
   197     if ((*env)->ExceptionOccurred(env)) {
       
   198         (*env)->ExceptionClear(env);
       
   199         superclinit = NULL;
       
   200     }
       
   201 
       
   202     return (superclinit != clinit);
       
   203 }
       
   204 
       
   205 /*
       
   206  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   207  * Method:    readObject
       
   208  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Object;)V
       
   209  */
       
   210 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_readObject
       
   211   (JNIEnv *env, jobject this, jobject obj, jclass cls, jobject ois)
       
   212 {
       
   213     jthrowable exc;
       
   214     jclass newExcCls;
       
   215     jmethodID mid = (*env)->GetMethodID(env, cls, "readObject", "(Ljava/io/ObjectInputStream;)V");
       
   216     if (mid == 0)
       
   217                 return;
       
   218     (*env)->CallNonvirtualVoidMethod(env, obj, cls, mid, ois);
       
   219 
       
   220     exc = (*env)->ExceptionOccurred(env);
       
   221     if (exc) {
       
   222         (*env)->ExceptionDescribe(env);
       
   223         (*env)->ExceptionClear(env);
       
   224 
       
   225         newExcCls = (*env)->FindClass(env, "java/io/IOException");
       
   226         if (newExcCls == 0) /* Unable to find the new exception class, give up. */
       
   227           return;
       
   228         (*env)->ThrowNew(env, newExcCls, "Serializable readObject method failed internally");
       
   229         return;
       
   230     }
       
   231 
       
   232     return;
       
   233 }
       
   234 
       
   235 /*
       
   236  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   237  * Method:    writeObject
       
   238  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/Object;)V
       
   239  */
       
   240 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_writeObject
       
   241   (JNIEnv *env, jobject this, jobject obj, jclass cls, jobject oos)
       
   242 {
       
   243     jthrowable exc;
       
   244     jclass newExcCls;
       
   245     jmethodID mid = (*env)->GetMethodID(env, cls, "writeObject", "(Ljava/io/ObjectOutputStream;)V");
       
   246     if (mid == 0)
       
   247                 return;
       
   248     (*env)->CallNonvirtualVoidMethod(env, obj, cls, mid, oos);
       
   249 
       
   250     exc = (*env)->ExceptionOccurred(env);
       
   251     if (exc) {
       
   252         (*env)->ExceptionDescribe(env);
       
   253         (*env)->ExceptionClear(env);
       
   254 
       
   255         newExcCls = (*env)->FindClass(env, "java/io/IOException");
       
   256         if (newExcCls == 0) /* Unable to find the new exception class, give up. */
       
   257           return;
       
   258         (*env)->ThrowNew(env, newExcCls, "Serializable readObject method failed internally");
       
   259         return;
       
   260     }
       
   261 
       
   262     return;
       
   263 
       
   264 }
       
   265 
       
   266 
       
   267 /*
       
   268  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   269  * Method:    getObjectField
       
   270  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
       
   271  */
       
   272 JNIEXPORT jobject JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getObjectField
       
   273   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   274 {
       
   275     const char *strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   276     const char *strFieldSig  = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   277 
       
   278     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   279 
       
   280     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   281     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   282 
       
   283     return (*env)->GetObjectField(env, obj, fieldID);
       
   284 }
       
   285 
       
   286 /*
       
   287  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   288  * Method:    getBooleanField
       
   289  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Z
       
   290  */
       
   291 JNIEXPORT jboolean JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getBooleanField
       
   292   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   293 {
       
   294     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   295     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   296 
       
   297     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   298 
       
   299     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   300     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   301 
       
   302     return (*env)->GetBooleanField(env, obj, fieldID);
       
   303 }
       
   304 
       
   305 /*
       
   306  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   307  * Method:    getByteField
       
   308  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)B
       
   309  */
       
   310 JNIEXPORT jbyte JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getByteField
       
   311   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   312 {
       
   313     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   314     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   315 
       
   316     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   317 
       
   318     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   319     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   320 
       
   321     return (*env)->GetByteField(env, obj, fieldID);
       
   322 
       
   323 }
       
   324 
       
   325 /*
       
   326  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   327  * Method:    getCharField
       
   328  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)C
       
   329  */
       
   330 JNIEXPORT jchar JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getCharField
       
   331   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   332 {
       
   333     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   334     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   335 
       
   336     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   337 
       
   338     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   339     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   340 
       
   341     return (*env)->GetCharField(env, obj, fieldID);
       
   342 }
       
   343 
       
   344 /*
       
   345  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   346  * Method:    getShortField
       
   347  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)S
       
   348  */
       
   349 JNIEXPORT jshort JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getShortField
       
   350   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   351 {
       
   352     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   353     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   354 
       
   355     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   356 
       
   357     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   358     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   359 
       
   360     return (*env)->GetShortField(env, obj, fieldID);
       
   361 }
       
   362 
       
   363 /*
       
   364  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   365  * Method:    getIntField
       
   366  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)I
       
   367  */
       
   368 JNIEXPORT jint JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getIntField
       
   369   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   370 {
       
   371     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   372     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   373 
       
   374     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   375 
       
   376     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   377     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   378 
       
   379     return (*env)->GetIntField(env, obj, fieldID);
       
   380 }
       
   381 
       
   382 /*
       
   383  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   384  * Method:    getLongField
       
   385  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)J
       
   386  */
       
   387 JNIEXPORT jlong JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getLongField
       
   388   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   389 {
       
   390     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   391     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   392 
       
   393     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   394 
       
   395     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   396     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   397 
       
   398     return (*env)->GetLongField(env, obj, fieldID);
       
   399 }
       
   400 
       
   401 /*
       
   402  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   403  * Method:    getFloatField
       
   404  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)F
       
   405  */
       
   406 JNIEXPORT jfloat JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getFloatField
       
   407   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   408 {
       
   409     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   410     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   411 
       
   412     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   413 
       
   414     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   415     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   416 
       
   417     return (*env)->GetFloatField(env, obj, fieldID);
       
   418 }
       
   419 
       
   420 /*
       
   421  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   422  * Method:    getDoubleField
       
   423  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)D
       
   424  */
       
   425 JNIEXPORT jdouble JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getDoubleField
       
   426   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig)
       
   427 {
       
   428     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   429     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   430 
       
   431     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   432 
       
   433     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   434     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   435 
       
   436     return (*env)->GetDoubleField(env, obj, fieldID);
       
   437 }
       
   438 
       
   439 
       
   440 
       
   441 /*
       
   442  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   443  * Method:    setObjectField
       
   444  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
       
   445  */
       
   446 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setObjectField
       
   447   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jobject v)
       
   448 {
       
   449     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   450     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   451 
       
   452     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   453 
       
   454     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   455     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   456 
       
   457     (*env)->SetObjectField(env, obj, fieldID, v);
       
   458 }
       
   459 
       
   460 /*
       
   461  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   462  * Method:    setBooleanField
       
   463  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;Z)V
       
   464  */
       
   465 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setBooleanField
       
   466   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jboolean v)
       
   467 {
       
   468     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   469     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   470 
       
   471     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   472 
       
   473     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   474     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   475 
       
   476     (*env)->SetBooleanField(env, obj, fieldID, v);
       
   477 }
       
   478 
       
   479 /*
       
   480  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   481  * Method:    setByteField
       
   482  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;B)V
       
   483  */
       
   484 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setByteField
       
   485   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jbyte v)
       
   486 {
       
   487     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   488     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   489 
       
   490     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   491 
       
   492     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   493     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   494 
       
   495     (*env)->SetByteField(env, obj, fieldID, v);
       
   496 }
       
   497 
       
   498 /*
       
   499  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   500  * Method:    setCharField
       
   501  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;C)V
       
   502  */
       
   503 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setCharField
       
   504   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jchar v)
       
   505 {
       
   506     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   507     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   508 
       
   509     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   510 
       
   511     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   512     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   513 
       
   514     (*env)->SetCharField(env, obj, fieldID, v);
       
   515 }
       
   516 
       
   517 /*
       
   518  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   519  * Method:    setShortField
       
   520  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;S)V
       
   521  */
       
   522 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setShortField
       
   523   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jshort v)
       
   524 {
       
   525     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   526     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   527 
       
   528     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   529 
       
   530     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   531     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   532 
       
   533     (*env)->SetShortField(env, obj, fieldID, v);
       
   534 }
       
   535 
       
   536 /*
       
   537  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   538  * Method:    setIntField
       
   539  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
       
   540  */
       
   541 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setIntField
       
   542   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jint v)
       
   543 {
       
   544     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   545     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   546 
       
   547     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   548 
       
   549     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   550     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   551 
       
   552     (*env)->SetIntField(env, obj, fieldID, v);
       
   553 }
       
   554 
       
   555 /*
       
   556  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   557  * Method:    setLongField
       
   558  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;J)V
       
   559  */
       
   560 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setLongField
       
   561   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jlong v)
       
   562 {
       
   563     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   564     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   565 
       
   566     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   567 
       
   568     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   569     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   570 
       
   571     (*env)->SetLongField(env, obj, fieldID, v);
       
   572 }
       
   573 
       
   574 /*
       
   575  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   576  * Method:    setFloatField
       
   577  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;F)V
       
   578  */
       
   579 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setFloatField
       
   580   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jfloat v)
       
   581 {
       
   582     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   583     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   584 
       
   585     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   586 
       
   587     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   588     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   589 
       
   590     (*env)->SetFloatField(env, obj, fieldID, v);
       
   591 }
       
   592 
       
   593 /*
       
   594  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   595  * Method:    setDoubleField
       
   596  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;D)V
       
   597  */
       
   598 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setDoubleField
       
   599   (JNIEnv *env, jobject this, jobject obj, jclass clazz, jstring fieldName, jstring fieldSig, jdouble v)
       
   600 {
       
   601     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   602     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   603 
       
   604     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   605 
       
   606     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   607     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   608 
       
   609     (*env)->SetDoubleField(env, obj, fieldID, v);
       
   610 }
       
   611 
       
   612 /*
       
   613  * Class:     com_sun_corba_se_internal_util_JDKClassLoader
       
   614  * Method:    specialLoadClass
       
   615  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class;
       
   616  */
       
   617 JNIEXPORT jclass JNICALL Java_com_sun_corba_se_internal_util_JDKClassLoader_specialLoadClass
       
   618   (JNIEnv *env, jclass this, jobject target, jclass cls, jstring clsName)
       
   619 {
       
   620     jthrowable exc;
       
   621         jclass streamTargetCls;
       
   622     jmethodID mid;
       
   623         jclass result;
       
   624         streamTargetCls = (*env)->FindClass(env, "java/io/ObjectInputStream");
       
   625         mid = (*env)->GetMethodID(env, streamTargetCls, "loadClass0", "(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class;");
       
   626     if (mid == 0)
       
   627                 return 0L;
       
   628     result = (jclass) (*env)->CallNonvirtualObjectMethod(env, target, streamTargetCls, mid, cls, clsName);
       
   629 
       
   630     exc = (*env)->ExceptionOccurred(env);
       
   631     if (exc) {
       
   632         return 0L;
       
   633     }
       
   634 
       
   635         return result;
       
   636 }
       
   637 
       
   638 /*
       
   639  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   640  * Method:    getObjectFieldOpt
       
   641  * Signature: (Ljava/lang/Object;J)Ljava/lang/Object;
       
   642  */
       
   643 JNIEXPORT jobject JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getObjectFieldOpt
       
   644   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   645 {
       
   646     return (*env)->GetObjectField(env, obj, (jfieldID)fieldID);
       
   647 }
       
   648 
       
   649 /*
       
   650  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   651  * Method:    getBooleanFieldOpt
       
   652  * Signature: (Ljava/lang/Object;J)Z
       
   653  */
       
   654 JNIEXPORT jboolean JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getBooleanFieldOpt
       
   655   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   656 {
       
   657     return (*env)->GetBooleanField(env, obj, (jfieldID)fieldID);
       
   658 }
       
   659 
       
   660 /*
       
   661  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   662  * Method:    getByteFieldOpt
       
   663  * Signature: (Ljava/lang/Object;J)B
       
   664  */
       
   665 JNIEXPORT jbyte JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getByteFieldOpt
       
   666   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   667 {
       
   668     return (*env)->GetByteField(env, obj, (jfieldID)fieldID);
       
   669 
       
   670 }
       
   671 
       
   672 /*
       
   673  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   674  * Method:    getCharFieldOpt
       
   675  * Signature: (Ljava/lang/Object;J)C
       
   676  */
       
   677 JNIEXPORT jchar JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getCharFieldOpt
       
   678   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   679 {
       
   680     return (*env)->GetCharField(env, obj, (jfieldID)fieldID);
       
   681 
       
   682 }
       
   683 
       
   684 /*
       
   685  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   686  * Method:    getShortFieldOpt
       
   687  * Signature: (Ljava/lang/Object;J)S
       
   688  */
       
   689 JNIEXPORT jshort JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getShortFieldOpt
       
   690   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   691 {
       
   692     return (*env)->GetShortField(env, obj, (jfieldID)fieldID);
       
   693 }
       
   694 
       
   695 /*
       
   696  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   697  * Method:    getIntFieldOpt
       
   698  * Signature: (Ljava/lang/Object;J)I
       
   699  */
       
   700 JNIEXPORT jint JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getIntFieldOpt
       
   701   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   702 {
       
   703     return (*env)->GetIntField(env, obj, (jfieldID)fieldID);
       
   704 
       
   705 }
       
   706 
       
   707 
       
   708 /*
       
   709  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   710  * Method:    getLongFieldOpt
       
   711  * Signature: (Ljava/lang/Object;J)J
       
   712  */
       
   713 JNIEXPORT jlong JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getLongFieldOpt
       
   714   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   715 {
       
   716     return (*env)->GetLongField(env, obj, (jfieldID)fieldID);
       
   717 
       
   718 }
       
   719 
       
   720 /*
       
   721  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   722  * Method:    getFloatFieldOpt
       
   723  * Signature: (Ljava/lang/Object;J)F
       
   724  */
       
   725 JNIEXPORT jfloat JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getFloatFieldOpt
       
   726   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   727 {
       
   728     return (*env)->GetFloatField(env, obj, (jfieldID)fieldID);
       
   729 
       
   730 }
       
   731 
       
   732 /*
       
   733  * Class:     com_sun_corba_se_internal_io_IIOPOutputStream
       
   734  * Method:    getDoubleFieldOpt
       
   735  * Signature: (Ljava/lang/Object;J)D
       
   736  */
       
   737 JNIEXPORT jdouble JNICALL Java_com_sun_corba_se_internal_io_IIOPOutputStream_getDoubleFieldOpt
       
   738   (JNIEnv *env, jobject this, jobject obj, jlong fieldID)
       
   739 {
       
   740     return (*env)->GetDoubleField(env, obj, (jfieldID)fieldID);
       
   741 
       
   742 }
       
   743 
       
   744 
       
   745 
       
   746 /*
       
   747  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   748  * Method:    setObjectFieldOpt
       
   749  * Signature: (Ljava/lang/Object;JLjava/lang/Object;)V
       
   750  */
       
   751 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setObjectFieldOpt
       
   752   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jobject v)
       
   753 {
       
   754     (*env)->SetObjectField(env, obj, (jfieldID)fieldID, v);
       
   755 }
       
   756 
       
   757 /*
       
   758  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   759  * Method:    setBooleanFieldOpt
       
   760  * Signature: (Ljava/lang/Object;JZ)V
       
   761  */
       
   762 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setBooleanFieldOpt
       
   763   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jboolean v)
       
   764 {
       
   765     (*env)->SetBooleanField(env, obj, (jfieldID)fieldID, v);
       
   766 }
       
   767 
       
   768 /*
       
   769  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   770  * Method:    setByteFieldOpt
       
   771  * Signature: (Ljava/lang/Object;JB)V
       
   772  */
       
   773 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setByteFieldOpt
       
   774   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jbyte v)
       
   775 {
       
   776     (*env)->SetByteField(env, obj, (jfieldID)fieldID, v);
       
   777 }
       
   778 
       
   779 /*
       
   780  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   781  * Method:    setCharFieldOpt
       
   782  * Signature: (Ljava/lang/Object;JC)V
       
   783  */
       
   784 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setCharFieldOpt
       
   785   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jchar v)
       
   786 {
       
   787     (*env)->SetCharField(env, obj, (jfieldID)fieldID, v);
       
   788 }
       
   789 
       
   790 /*
       
   791  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   792  * Method:    setShortFieldOpt
       
   793  * Signature: (Ljava/lang/Object;JS)V
       
   794  */
       
   795 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setShortFieldOpt
       
   796   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jshort v)
       
   797 {
       
   798     (*env)->SetShortField(env, obj, (jfieldID)fieldID, v);
       
   799 }
       
   800 
       
   801 /*
       
   802  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   803  * Method:    setIntFieldOpt
       
   804  * Signature: (Ljava/lang/Object;JI)V
       
   805  */
       
   806 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setIntFieldOpt
       
   807   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jint v)
       
   808 {
       
   809   (*env)->SetIntField(env, obj, (jfieldID)fieldID, v);
       
   810 }
       
   811 
       
   812 /*
       
   813  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   814  * Method:    setLongFieldOpt
       
   815  * Signature: (Ljava/lang/Object;JJ)V
       
   816  */
       
   817 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setLongFieldOpt
       
   818   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jlong v)
       
   819 {
       
   820     (*env)->SetLongField(env, obj, (jfieldID)fieldID, v);
       
   821 }
       
   822 
       
   823 /*
       
   824  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   825  * Method:    setFloatFieldOpt
       
   826  * Signature: (Ljava/lang/Object;JF)V
       
   827  */
       
   828 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setFloatFieldOpt
       
   829   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jfloat v)
       
   830 {
       
   831     (*env)->SetFloatField(env, obj, (jfieldID)fieldID, v);
       
   832 }
       
   833 
       
   834 /*
       
   835  * Class:     com_sun_corba_se_internal_io_IIOPInputStream
       
   836  * Method:    setDoubleFieldOpt
       
   837  * Signature: (Ljava/lang/Object;JD)V
       
   838  */
       
   839 JNIEXPORT void JNICALL Java_com_sun_corba_se_internal_io_IIOPInputStream_setDoubleFieldOpt
       
   840   (JNIEnv *env, jobject this, jobject obj, jlong fieldID, jdouble v)
       
   841 {
       
   842     (*env)->SetDoubleField(env, obj, (jfieldID)fieldID, v);
       
   843 }
       
   844 
       
   845 /*
       
   846  * Class:     com_sun_corba_se_internal_io_IIOPObjectStreamField
       
   847  * Method:    getFieldID
       
   848  * Signature: (Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)X
       
   849  */
       
   850 JNIEXPORT jlong JNICALL Java_com_sun_corba_se_internal_io_ObjectStreamField_getFieldIDNative
       
   851   (JNIEnv *env, jobject this, jclass clazz, jstring fieldName, jstring fieldSig)
       
   852 {
       
   853     const char* strFieldName = (*env)->GetStringUTFChars(env, fieldName, 0L);
       
   854     const char* strFieldSig = (*env)->GetStringUTFChars(env, fieldSig, 0L);
       
   855 
       
   856     jfieldID fieldID = (*env)->GetFieldID(env, clazz, strFieldName, strFieldSig);
       
   857 
       
   858     (*env)->ReleaseStringUTFChars(env, fieldName, strFieldName);
       
   859     (*env)->ReleaseStringUTFChars(env, fieldSig, strFieldSig);
       
   860 
       
   861     return (jlong)fieldID;
       
   862 }