1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 package org.apache.hc.core5.util;
29
30 import java.lang.reflect.Method;
31
32 import org.apache.hc.core5.annotation.Internal;
33
34 @Internal
35 public final class ReflectionUtils {
36
37 public static void callSetter(final Object object, final String setterName, final Class<?> type, final Object value) {
38 try {
39 final Class<?> clazz = object.getClass();
40 final Method method = clazz.getMethod("set" + setterName, type);
41 method.setAccessible(true);
42 method.invoke(object, value);
43 } catch (final Exception ignore) {
44 }
45 }
46
47 public static <T> T callGetter(final Object object, final String getterName, final Class<T> resultType) {
48 try {
49 final Class<?> clazz = object.getClass();
50 final Method method = clazz.getMethod("get" + getterName);
51 method.setAccessible(true);
52 return resultType.cast(method.invoke(object));
53 } catch (final Exception ignore) {
54 return null;
55 }
56 }
57
58 public static int determineJRELevel() {
59 final String s = System.getProperty("java.version");
60 final String[] parts = s.split("\\.");
61 if (parts.length > 0) {
62 try {
63 final int majorVersion = Integer.parseInt(parts[0]);
64 if (majorVersion > 1) {
65 return majorVersion;
66 } else if (majorVersion == 1 && parts.length > 1) {
67 return Integer.parseInt(parts[1]);
68 }
69 } catch (final NumberFormatException ignore) {
70 }
71 }
72 return 7;
73 }
74
75 }