blob: 9ea0f25dd59e0d43a48cfd9d024d15ad433275b8 (
plain)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
package org.objectweb.asm.test;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
import java.util.StringTokenizer;
/**
* Provides utility methods for the asm.test package.
*
* @author Eric Bruneton
*/
final class Util {
private Util() {}
static int getMajorJavaVersion() {
String javaVersion = System.getProperty("java.version");
StringTokenizer tokenizer = new StringTokenizer(javaVersion, "._");
String javaMajorVersionText = tokenizer.nextToken();
int majorVersion = Integer.parseInt(javaMajorVersionText);
if (majorVersion != 1) {
return majorVersion;
}
javaMajorVersionText = tokenizer.nextToken();
return Integer.parseInt(javaMajorVersionText);
}
static boolean previewFeatureEnabled() {
try {
Class<?> managementFactoryClass = Class.forName("java.lang.management.ManagementFactory");
Method getRuntimeMxBean = managementFactoryClass.getMethod("getRuntimeMXBean");
Object runtimeMxBean = getRuntimeMxBean.invoke(null);
Class<?> runtimeMxBeanClass = Class.forName("java.lang.management.RuntimeMXBean");
Method getInputArguments = runtimeMxBeanClass.getMethod("getInputArguments");
List<?> argumentList = (List<?>) getInputArguments.invoke(runtimeMxBean);
return argumentList.contains("--enable-preview");
} catch (ClassNotFoundException e) { // JMX may be not available
return false;
} catch (NoSuchMethodException | IllegalAccessException e) {
throw new AssertionError(e);
} catch (InvocationTargetException e) {
Throwable cause = e.getCause();
if (cause instanceof RuntimeException) {
throw (RuntimeException) cause;
}
if (cause instanceof Error) {
throw (Error) cause;
}
throw new AssertionError(cause); // NOPMD
}
}
}
|