1 /*
2 * Copyright (c) 2007, 2018, Oracle and/or its affiliates. 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.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23 #include "jni.h"
24 #include <stdlib.h>
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 #ifndef JNI_ENV_PTR
31
32 #ifdef __cplusplus
33 #define JNI_ENV_ARG_2(x, y) y
34 #define JNI_ENV_ARG_3(x, y, z) y, z
35 #define JNI_ENV_ARG_4(x, y, z, a) y, z, a
36 #define JNI_ENV_PTR(x) x
37 #else
38 #define JNI_ENV_ARG_2(x,y) x, y
39 #define JNI_ENV_ARG_3(x, y, z) x, y, z
40 #define JNI_ENV_ARG_4(x, y, z, a) x, y, z, a
41 #define JNI_ENV_PTR(x) (*x)
42 #endif
43
44 #endif
45
logMessage(JNIEnv * env,jobject thisObject,jstring message)46 static void logMessage(JNIEnv *env, jobject thisObject, jstring message)
47 {
48 jclass klass;
49 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
50 JNI_ENV_PTR(env)->CallVoidMethod(
51 JNI_ENV_ARG_4(
52 env,
53 thisObject,
54 JNI_ENV_PTR(env)->GetMethodID(JNI_ENV_ARG_4(env, klass, "log", "(Ljava/lang/String;)V")),
55 message));
56 }
57
58 JNIEXPORT void JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_VoidMethod(JNIEnv * env,jobject thisObject,jstring message)59 Java_nsk_share_jpda_NativeMethodsTestThread_VoidMethod(JNIEnv *env,
60 jobject thisObject, jstring message)
61 {
62 logMessage(env, thisObject, message);
63 }
64
65 JNIEXPORT jboolean JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_BooleanMethod(JNIEnv * env,jobject thisObject,jstring message)66 Java_nsk_share_jpda_NativeMethodsTestThread_BooleanMethod(JNIEnv *env,
67 jobject thisObject, jstring message)
68 {
69 jclass klass;
70 jfieldID valueField;
71
72 logMessage(env, thisObject, message);
73
74 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
75
76 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
77 env,
78 klass,
79 "expectedBooleanValue",
80 "Z"));
81
82 return JNI_ENV_PTR(env)->GetStaticBooleanField(JNI_ENV_ARG_3(env, klass, valueField));
83 }
84
85 JNIEXPORT jbyte JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ByteMethod(JNIEnv * env,jobject thisObject,jstring message)86 Java_nsk_share_jpda_NativeMethodsTestThread_ByteMethod(JNIEnv *env,
87 jobject thisObject, jstring message)
88 {
89 jclass klass;
90 jfieldID valueField;
91
92 logMessage(env, thisObject, message);
93
94 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
95
96 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
97 env,
98 klass,
99 "expectedByteValue",
100 "B"));
101
102 return JNI_ENV_PTR(env)->GetStaticByteField(JNI_ENV_ARG_3(env, klass, valueField));
103 }
104
105 JNIEXPORT jshort JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ShortMethod(JNIEnv * env,jobject thisObject,jstring message)106 Java_nsk_share_jpda_NativeMethodsTestThread_ShortMethod(JNIEnv *env,
107 jobject thisObject, jstring message)
108 {
109 jclass klass;
110 jfieldID valueField;
111
112 logMessage(env, thisObject, message);
113
114 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
115
116 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
117 env,
118 klass,
119 "expectedShortValue",
120 "S"));
121
122 return JNI_ENV_PTR(env)->GetStaticShortField(JNI_ENV_ARG_3(env, klass, valueField));
123 }
124
125 JNIEXPORT jchar JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_CharMethod(JNIEnv * env,jobject thisObject,jstring message)126 Java_nsk_share_jpda_NativeMethodsTestThread_CharMethod(JNIEnv *env,
127 jobject thisObject, jstring message)
128 {
129 jclass klass;
130 jfieldID valueField;
131
132 logMessage(env, thisObject, message);
133
134 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
135
136 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
137 env,
138 klass,
139 "expectedCharValue",
140 "C"));
141
142 return JNI_ENV_PTR(env)->GetStaticCharField(JNI_ENV_ARG_3(env, klass, valueField));
143 }
144
145 JNIEXPORT jint JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_IntMethod(JNIEnv * env,jobject thisObject,jstring message)146 Java_nsk_share_jpda_NativeMethodsTestThread_IntMethod(JNIEnv *env,
147 jobject thisObject, jstring message)
148 {
149 jclass klass;
150 jfieldID valueField;
151
152 logMessage(env, thisObject, message);
153
154 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
155
156 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
157 env,
158 klass,
159 "expectedIntValue",
160 "I"));
161
162 return JNI_ENV_PTR(env)->GetStaticIntField(JNI_ENV_ARG_3(env, klass, valueField));
163 }
164
165 JNIEXPORT jlong JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_LongMethod(JNIEnv * env,jobject thisObject,jstring message)166 Java_nsk_share_jpda_NativeMethodsTestThread_LongMethod(JNIEnv *env,
167 jobject thisObject, jstring message)
168 {
169 jclass klass;
170 jfieldID valueField;
171
172 logMessage(env, thisObject, message);
173
174 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
175
176 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
177 env,
178 klass,
179 "expectedLongValue",
180 "J"));
181
182 return JNI_ENV_PTR(env)->GetStaticLongField(JNI_ENV_ARG_3(env, klass, valueField));
183 }
184
185 JNIEXPORT jfloat JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_FloatMethod(JNIEnv * env,jobject thisObject,jstring message)186 Java_nsk_share_jpda_NativeMethodsTestThread_FloatMethod(JNIEnv *env,
187 jobject thisObject, jstring message)
188 {
189 jclass klass;
190 jfieldID valueField;
191
192 logMessage(env, thisObject, message);
193
194 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
195
196 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
197 env,
198 klass,
199 "expectedFloatValue",
200 "F"));
201
202 return JNI_ENV_PTR(env)->GetStaticFloatField(JNI_ENV_ARG_3(env, klass, valueField));
203 }
204
205 JNIEXPORT jdouble JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_DoubleMethod(JNIEnv * env,jobject thisObject,jstring message)206 Java_nsk_share_jpda_NativeMethodsTestThread_DoubleMethod(JNIEnv *env,
207 jobject thisObject, jstring message)
208 {
209 jclass klass;
210 jfieldID valueField;
211
212 logMessage(env, thisObject, message);
213
214 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
215
216 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
217 env,
218 klass,
219 "expectedDoubleValue",
220 "D"));
221
222 return JNI_ENV_PTR(env)->GetStaticDoubleField(JNI_ENV_ARG_3(env, klass, valueField));
223 }
224
225 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ObjectArrayMethod(JNIEnv * env,jobject thisObject,jstring message)226 Java_nsk_share_jpda_NativeMethodsTestThread_ObjectArrayMethod(JNIEnv *env,
227 jobject thisObject, jstring message)
228 {
229 jclass klass;
230 jfieldID valueField;
231
232 logMessage(env, thisObject, message);
233
234 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
235
236 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
237 env,
238 klass,
239 "expectedObjectArrayValue",
240 "[Ljava/lang/Object;"));
241
242 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
243 }
244
245 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_StringMethod(JNIEnv * env,jobject thisObject,jstring message)246 Java_nsk_share_jpda_NativeMethodsTestThread_StringMethod(JNIEnv *env,
247 jobject thisObject, jstring message)
248 {
249 jclass klass;
250 jfieldID valueField;
251
252 logMessage(env, thisObject, message);
253
254 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
255
256 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
257 env,
258 klass,
259 "expectedStringValue",
260 "Ljava/lang/String;"));
261
262 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
263 }
264
265 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ThreadMethod(JNIEnv * env,jobject thisObject,jstring message)266 Java_nsk_share_jpda_NativeMethodsTestThread_ThreadMethod(JNIEnv *env,
267 jobject thisObject, jstring message)
268 {
269 jclass klass;
270 jfieldID valueField;
271
272 logMessage(env, thisObject, message);
273
274 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
275
276 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
277 env,
278 klass,
279 "expectedThreadValue",
280 "Ljava/lang/Thread;"));
281
282 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
283 }
284
285 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ThreadGroupMethod(JNIEnv * env,jobject thisObject,jstring message)286 Java_nsk_share_jpda_NativeMethodsTestThread_ThreadGroupMethod(JNIEnv *env,
287 jobject thisObject, jstring message)
288 {
289 jclass klass;
290 jfieldID valueField;
291
292 logMessage(env, thisObject, message);
293
294 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
295
296 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
297 env,
298 klass,
299 "expectedThreadGroupValue",
300 "Ljava/lang/ThreadGroup;"));
301
302 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
303 }
304
305 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ClassObjectMethod(JNIEnv * env,jobject thisObject,jstring message)306 Java_nsk_share_jpda_NativeMethodsTestThread_ClassObjectMethod(JNIEnv *env,
307 jobject thisObject, jstring message)
308 {
309 jclass klass;
310 jfieldID valueField;
311
312 logMessage(env, thisObject, message);
313
314 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
315
316 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
317 env,
318 klass,
319 "expectedClassObjectValue",
320 "Ljava/lang/Class;"));
321
322 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
323 }
324
325 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ClassLoaderMethod(JNIEnv * env,jobject thisObject,jstring message)326 Java_nsk_share_jpda_NativeMethodsTestThread_ClassLoaderMethod(JNIEnv *env,
327 jobject thisObject, jstring message)
328 {
329 jclass klass;
330 jfieldID valueField;
331
332 logMessage(env, thisObject, message);
333
334 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
335
336 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
337 env,
338 klass,
339 "expectedClassLoaderValue",
340 "Ljava/lang/ClassLoader;"));
341
342 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
343 }
344
345 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ObjectMethod(JNIEnv * env,jobject thisObject,jstring message)346 Java_nsk_share_jpda_NativeMethodsTestThread_ObjectMethod(JNIEnv *env,
347 jobject thisObject, jstring message)
348 {
349 jclass klass;
350 jfieldID valueField;
351
352 logMessage(env, thisObject, message);
353
354 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
355
356 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
357 env,
358 klass,
359 "expectedObjectValue",
360 "Ljava/lang/Object;"));
361
362 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
363 }
364
365 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_BooleanWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)366 Java_nsk_share_jpda_NativeMethodsTestThread_BooleanWrapperMethod(JNIEnv *env,
367 jobject thisObject, jstring message)
368 {
369 jclass klass;
370 jfieldID valueField;
371
372 logMessage(env, thisObject, message);
373
374 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
375
376 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
377 env,
378 klass,
379 "expectedBooleanWrapperValue",
380 "Ljava/lang/Boolean;"));
381
382 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
383 }
384
385 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ByteWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)386 Java_nsk_share_jpda_NativeMethodsTestThread_ByteWrapperMethod(JNIEnv *env,
387 jobject thisObject, jstring message)
388 {
389 jclass klass;
390 jfieldID valueField;
391
392 logMessage(env, thisObject, message);
393
394 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
395
396 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
397 env,
398 klass,
399 "expectedByteWrapperValue",
400 "Ljava/lang/Byte;"));
401
402 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
403 }
404
405 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ShortWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)406 Java_nsk_share_jpda_NativeMethodsTestThread_ShortWrapperMethod(JNIEnv *env,
407 jobject thisObject, jstring message)
408 {
409 jclass klass;
410 jfieldID valueField;
411
412 logMessage(env, thisObject, message);
413
414 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
415
416 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
417 env,
418 klass,
419 "expectedShortWrapperValue",
420 "Ljava/lang/Short;"));
421
422 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
423 }
424
425 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_CharWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)426 Java_nsk_share_jpda_NativeMethodsTestThread_CharWrapperMethod(JNIEnv *env,
427 jobject thisObject, jstring message)
428 {
429 jclass klass;
430 jfieldID valueField;
431
432 logMessage(env, thisObject, message);
433
434 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
435
436 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
437 env,
438 klass,
439 "expectedCharWrapperValue",
440 "Ljava/lang/Character;"));
441
442 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
443 }
444
445 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_IntWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)446 Java_nsk_share_jpda_NativeMethodsTestThread_IntWrapperMethod(JNIEnv *env,
447 jobject thisObject, jstring message)
448 {
449 jclass klass;
450 jfieldID valueField;
451
452 logMessage(env, thisObject, message);
453
454 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
455
456 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
457 env,
458 klass,
459 "expectedIntWrapperValue",
460 "Ljava/lang/Integer;"));
461
462 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
463 }
464
465 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_LongWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)466 Java_nsk_share_jpda_NativeMethodsTestThread_LongWrapperMethod(JNIEnv *env,
467 jobject thisObject, jstring message)
468 {
469 jclass klass;
470 jfieldID valueField;
471
472 logMessage(env, thisObject, message);
473
474 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
475
476 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
477 env,
478 klass,
479 "expectedLongWrapperValue",
480 "Ljava/lang/Long;"));
481
482 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
483 }
484
485 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_FloatWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)486 Java_nsk_share_jpda_NativeMethodsTestThread_FloatWrapperMethod(JNIEnv *env,
487 jobject thisObject, jstring message)
488 {
489 jclass klass;
490 jfieldID valueField;
491
492 logMessage(env, thisObject, message);
493
494 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
495
496 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
497 env,
498 klass,
499 "expectedFloatWrapperValue",
500 "Ljava/lang/Float;"));
501
502 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
503 }
504
505 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_DoubleWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)506 Java_nsk_share_jpda_NativeMethodsTestThread_DoubleWrapperMethod(JNIEnv *env,
507 jobject thisObject, jstring message)
508 {
509 jclass klass;
510 jfieldID valueField;
511
512 logMessage(env, thisObject, message);
513
514 klass = JNI_ENV_PTR(env)->GetObjectClass(JNI_ENV_ARG_2(env, thisObject));
515
516 valueField = JNI_ENV_PTR(env)->GetStaticFieldID(JNI_ENV_ARG_4(
517 env,
518 klass,
519 "expectedDoubleWrapperValue",
520 "Ljava/lang/Double;"));
521
522 return JNI_ENV_PTR(env)->GetStaticObjectField(JNI_ENV_ARG_3(env, klass, valueField));
523 }
524
525 #ifdef __cplusplus
526 }
527 #endif
528