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 extern "C" {
27
28
logMessage(JNIEnv * env,jobject thisObject,jstring message)29 static void logMessage(JNIEnv *env, jobject thisObject, jstring message)
30 {
31 jclass klass;
32 klass = env->GetObjectClass(thisObject);
33 env->CallVoidMethod(thisObject,
34 env->GetMethodID(klass, "log", "(Ljava/lang/String;)V"),
35 message);
36 }
37
38 JNIEXPORT void JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_VoidMethod(JNIEnv * env,jobject thisObject,jstring message)39 Java_nsk_share_jpda_NativeMethodsTestThread_VoidMethod(JNIEnv *env,
40 jobject thisObject, jstring message)
41 {
42 logMessage(env, thisObject, message);
43 }
44
45 JNIEXPORT jboolean JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_BooleanMethod(JNIEnv * env,jobject thisObject,jstring message)46 Java_nsk_share_jpda_NativeMethodsTestThread_BooleanMethod(JNIEnv *env,
47 jobject thisObject, jstring message)
48 {
49 jclass klass;
50 jfieldID valueField;
51
52 logMessage(env, thisObject, message);
53
54 klass = env->GetObjectClass(thisObject);
55
56 valueField = env->GetStaticFieldID(klass, "expectedBooleanValue", "Z");
57
58 return env->GetStaticBooleanField(klass, valueField);
59 }
60
61 JNIEXPORT jbyte JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ByteMethod(JNIEnv * env,jobject thisObject,jstring message)62 Java_nsk_share_jpda_NativeMethodsTestThread_ByteMethod(JNIEnv *env,
63 jobject thisObject, jstring message)
64 {
65 jclass klass;
66 jfieldID valueField;
67
68 logMessage(env, thisObject, message);
69
70 klass = env->GetObjectClass(thisObject);
71
72 valueField = env->GetStaticFieldID(klass, "expectedByteValue", "B");
73
74 return env->GetStaticByteField(klass, valueField);
75 }
76
77 JNIEXPORT jshort JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ShortMethod(JNIEnv * env,jobject thisObject,jstring message)78 Java_nsk_share_jpda_NativeMethodsTestThread_ShortMethod(JNIEnv *env,
79 jobject thisObject, jstring message)
80 {
81 jclass klass;
82 jfieldID valueField;
83
84 logMessage(env, thisObject, message);
85
86 klass = env->GetObjectClass(thisObject);
87
88 valueField = env->GetStaticFieldID(klass, "expectedShortValue", "S");
89
90 return env->GetStaticShortField(klass, valueField);
91 }
92
93 JNIEXPORT jchar JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_CharMethod(JNIEnv * env,jobject thisObject,jstring message)94 Java_nsk_share_jpda_NativeMethodsTestThread_CharMethod(JNIEnv *env,
95 jobject thisObject, jstring message)
96 {
97 jclass klass;
98 jfieldID valueField;
99
100 logMessage(env, thisObject, message);
101
102 klass = env->GetObjectClass(thisObject);
103
104 valueField = env->GetStaticFieldID(klass, "expectedCharValue", "C");
105
106 return env->GetStaticCharField(klass, valueField);
107 }
108
109 JNIEXPORT jint JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_IntMethod(JNIEnv * env,jobject thisObject,jstring message)110 Java_nsk_share_jpda_NativeMethodsTestThread_IntMethod(JNIEnv *env,
111 jobject thisObject, jstring message)
112 {
113 jclass klass;
114 jfieldID valueField;
115
116 logMessage(env, thisObject, message);
117
118 klass = env->GetObjectClass(thisObject);
119
120 valueField = env->GetStaticFieldID(klass, "expectedIntValue", "I");
121
122 return env->GetStaticIntField(klass, valueField);
123 }
124
125 JNIEXPORT jlong JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_LongMethod(JNIEnv * env,jobject thisObject,jstring message)126 Java_nsk_share_jpda_NativeMethodsTestThread_LongMethod(JNIEnv *env,
127 jobject thisObject, jstring message)
128 {
129 jclass klass;
130 jfieldID valueField;
131
132 logMessage(env, thisObject, message);
133
134 klass = env->GetObjectClass(thisObject);
135
136 valueField = env->GetStaticFieldID(klass, "expectedLongValue", "J");
137
138 return env->GetStaticLongField(klass, valueField);
139 }
140
141 JNIEXPORT jfloat JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_FloatMethod(JNIEnv * env,jobject thisObject,jstring message)142 Java_nsk_share_jpda_NativeMethodsTestThread_FloatMethod(JNIEnv *env,
143 jobject thisObject, jstring message)
144 {
145 jclass klass;
146 jfieldID valueField;
147
148 logMessage(env, thisObject, message);
149
150 klass = env->GetObjectClass(thisObject);
151
152 valueField = env->GetStaticFieldID(klass, "expectedFloatValue", "F");
153
154 return env->GetStaticFloatField(klass, valueField);
155 }
156
157 JNIEXPORT jdouble JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_DoubleMethod(JNIEnv * env,jobject thisObject,jstring message)158 Java_nsk_share_jpda_NativeMethodsTestThread_DoubleMethod(JNIEnv *env,
159 jobject thisObject, jstring message)
160 {
161 jclass klass;
162 jfieldID valueField;
163
164 logMessage(env, thisObject, message);
165
166 klass = env->GetObjectClass(thisObject);
167
168 valueField = env->GetStaticFieldID(klass, "expectedDoubleValue", "D");
169
170 return env->GetStaticDoubleField(klass, valueField);
171 }
172
173 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ObjectArrayMethod(JNIEnv * env,jobject thisObject,jstring message)174 Java_nsk_share_jpda_NativeMethodsTestThread_ObjectArrayMethod(JNIEnv *env,
175 jobject thisObject, jstring message)
176 {
177 jclass klass;
178 jfieldID valueField;
179
180 logMessage(env, thisObject, message);
181
182 klass = env->GetObjectClass(thisObject);
183
184 valueField = env->GetStaticFieldID(klass, "expectedObjectArrayValue",
185 "[Ljava/lang/Object;");
186
187 return env->GetStaticObjectField(klass, valueField);
188 }
189
190 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_StringMethod(JNIEnv * env,jobject thisObject,jstring message)191 Java_nsk_share_jpda_NativeMethodsTestThread_StringMethod(JNIEnv *env,
192 jobject thisObject, jstring message)
193 {
194 jclass klass;
195 jfieldID valueField;
196
197 logMessage(env, thisObject, message);
198
199 klass = env->GetObjectClass(thisObject);
200
201 valueField = env->GetStaticFieldID(klass, "expectedStringValue",
202 "Ljava/lang/String;");
203
204 return env->GetStaticObjectField(klass, valueField);
205 }
206
207 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ThreadMethod(JNIEnv * env,jobject thisObject,jstring message)208 Java_nsk_share_jpda_NativeMethodsTestThread_ThreadMethod(JNIEnv *env,
209 jobject thisObject, jstring message)
210 {
211 jclass klass;
212 jfieldID valueField;
213
214 logMessage(env, thisObject, message);
215
216 klass = env->GetObjectClass(thisObject);
217
218 valueField = env->GetStaticFieldID(klass, "expectedThreadValue",
219 "Ljava/lang/Thread;");
220
221 return env->GetStaticObjectField(klass, valueField);
222 }
223
224 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ThreadGroupMethod(JNIEnv * env,jobject thisObject,jstring message)225 Java_nsk_share_jpda_NativeMethodsTestThread_ThreadGroupMethod(JNIEnv *env,
226 jobject thisObject, jstring message)
227 {
228 jclass klass;
229 jfieldID valueField;
230
231 logMessage(env, thisObject, message);
232
233 klass = env->GetObjectClass(thisObject);
234
235 valueField = env->GetStaticFieldID(klass, "expectedThreadGroupValue",
236 "Ljava/lang/ThreadGroup;");
237
238 return env->GetStaticObjectField(klass, valueField);
239 }
240
241 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ClassObjectMethod(JNIEnv * env,jobject thisObject,jstring message)242 Java_nsk_share_jpda_NativeMethodsTestThread_ClassObjectMethod(JNIEnv *env,
243 jobject thisObject, jstring message)
244 {
245 jclass klass;
246 jfieldID valueField;
247
248 logMessage(env, thisObject, message);
249
250 klass = env->GetObjectClass(thisObject);
251
252 valueField = env->GetStaticFieldID(klass, "expectedClassObjectValue",
253 "Ljava/lang/Class;");
254
255 return env->GetStaticObjectField(klass, valueField);
256 }
257
258 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ClassLoaderMethod(JNIEnv * env,jobject thisObject,jstring message)259 Java_nsk_share_jpda_NativeMethodsTestThread_ClassLoaderMethod(JNIEnv *env,
260 jobject thisObject, jstring message)
261 {
262 jclass klass;
263 jfieldID valueField;
264
265 logMessage(env, thisObject, message);
266
267 klass = env->GetObjectClass(thisObject);
268
269 valueField = env->GetStaticFieldID(klass, "expectedClassLoaderValue",
270 "Ljava/lang/ClassLoader;");
271
272 return env->GetStaticObjectField(klass, valueField);
273 }
274
275 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ObjectMethod(JNIEnv * env,jobject thisObject,jstring message)276 Java_nsk_share_jpda_NativeMethodsTestThread_ObjectMethod(JNIEnv *env,
277 jobject thisObject, jstring message)
278 {
279 jclass klass;
280 jfieldID valueField;
281
282 logMessage(env, thisObject, message);
283
284 klass = env->GetObjectClass(thisObject);
285
286 valueField = env->GetStaticFieldID(klass, "expectedObjectValue",
287 "Ljava/lang/Object;");
288
289 return env->GetStaticObjectField(klass, valueField);
290 }
291
292 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_BooleanWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)293 Java_nsk_share_jpda_NativeMethodsTestThread_BooleanWrapperMethod(JNIEnv *env,
294 jobject thisObject, jstring message)
295 {
296 jclass klass;
297 jfieldID valueField;
298
299 logMessage(env, thisObject, message);
300
301 klass = env->GetObjectClass(thisObject);
302
303 valueField = env->GetStaticFieldID(klass, "expectedBooleanWrapperValue",
304 "Ljava/lang/Boolean;");
305
306 return env->GetStaticObjectField(klass, valueField);
307 }
308
309 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ByteWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)310 Java_nsk_share_jpda_NativeMethodsTestThread_ByteWrapperMethod(JNIEnv *env,
311 jobject thisObject, jstring message)
312 {
313 jclass klass;
314 jfieldID valueField;
315
316 logMessage(env, thisObject, message);
317
318 klass = env->GetObjectClass(thisObject);
319
320 valueField = env->GetStaticFieldID(klass, "expectedByteWrapperValue",
321 "Ljava/lang/Byte;");
322
323 return env->GetStaticObjectField(klass, valueField);
324 }
325
326 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_ShortWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)327 Java_nsk_share_jpda_NativeMethodsTestThread_ShortWrapperMethod(JNIEnv *env,
328 jobject thisObject, jstring message)
329 {
330 jclass klass;
331 jfieldID valueField;
332
333 logMessage(env, thisObject, message);
334
335 klass = env->GetObjectClass(thisObject);
336
337 valueField = env->GetStaticFieldID(klass, "expectedShortWrapperValue",
338 "Ljava/lang/Short;");
339
340 return env->GetStaticObjectField(klass, valueField);
341 }
342
343 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_CharWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)344 Java_nsk_share_jpda_NativeMethodsTestThread_CharWrapperMethod(JNIEnv *env,
345 jobject thisObject, jstring message)
346 {
347 jclass klass;
348 jfieldID valueField;
349
350 logMessage(env, thisObject, message);
351
352 klass = env->GetObjectClass(thisObject);
353
354 valueField = env->GetStaticFieldID(klass, "expectedCharWrapperValue",
355 "Ljava/lang/Character;");
356
357 return env->GetStaticObjectField(klass, valueField);
358 }
359
360 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_IntWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)361 Java_nsk_share_jpda_NativeMethodsTestThread_IntWrapperMethod(JNIEnv *env,
362 jobject thisObject, jstring message)
363 {
364 jclass klass;
365 jfieldID valueField;
366
367 logMessage(env, thisObject, message);
368
369 klass = env->GetObjectClass(thisObject);
370
371 valueField = env->GetStaticFieldID(klass, "expectedIntWrapperValue",
372 "Ljava/lang/Integer;");
373
374 return env->GetStaticObjectField(klass, valueField);
375 }
376
377 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_LongWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)378 Java_nsk_share_jpda_NativeMethodsTestThread_LongWrapperMethod(JNIEnv *env,
379 jobject thisObject, jstring message)
380 {
381 jclass klass;
382 jfieldID valueField;
383
384 logMessage(env, thisObject, message);
385
386 klass = env->GetObjectClass(thisObject);
387
388 valueField = env->GetStaticFieldID(klass, "expectedLongWrapperValue",
389 "Ljava/lang/Long;");
390
391 return env->GetStaticObjectField(klass, valueField);
392 }
393
394 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_FloatWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)395 Java_nsk_share_jpda_NativeMethodsTestThread_FloatWrapperMethod(JNIEnv *env,
396 jobject thisObject, jstring message)
397 {
398 jclass klass;
399 jfieldID valueField;
400
401 logMessage(env, thisObject, message);
402
403 klass = env->GetObjectClass(thisObject);
404
405 valueField = env->GetStaticFieldID(klass, "expectedFloatWrapperValue",
406 "Ljava/lang/Float;");
407
408 return env->GetStaticObjectField(klass, valueField);
409 }
410
411 JNIEXPORT jobject JNICALL
Java_nsk_share_jpda_NativeMethodsTestThread_DoubleWrapperMethod(JNIEnv * env,jobject thisObject,jstring message)412 Java_nsk_share_jpda_NativeMethodsTestThread_DoubleWrapperMethod(JNIEnv *env,
413 jobject thisObject, jstring message)
414 {
415 jclass klass;
416 jfieldID valueField;
417
418 logMessage(env, thisObject, message);
419
420 klass = env->GetObjectClass(thisObject);
421
422 valueField = env->GetStaticFieldID(klass, "expectedDoubleWrapperValue",
423 "Ljava/lang/Double;");
424
425 return env->GetStaticObjectField(klass, valueField);
426 }
427
428 }
429