blob: 329b94b36a828272484d64bf7ac32fc5bbec1232 [file] [log] [blame]
/*
* Copyright 2020 The Bazel Authors. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.google.devtools.build.android.desugar.testing.junit;
import com.google.common.base.Splitter;
import java.util.List;
/**
* Enumeration of the currently known Java ClassFile versions.
*
* <p>The minor version is stored in the 16 most significant bits, and the major version in the 16
* least significant bits. These are the values that can be found in
* https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-4.html#jvms-4.1-200-B.2
*/
public final class JdkVersion {
private static final Splitter SPLITTER_DOT = Splitter.on('.');
private static final String JAVA_RUNTIME_VERSION_TEXT =
System.getProperty("java.runtime.version");
public static final int V1_1 = 3 << 16 | 45;
public static final int V1_2 = 0 << 16 | 46;
public static final int V1_3 = 0 << 16 | 47;
public static final int V1_4 = 0 << 16 | 48;
public static final int V1_5 = 0 << 16 | 49;
public static final int V1_6 = 0 << 16 | 50;
public static final int V1_7 = 0 << 16 | 51;
public static final int V1_8 = 0 << 16 | 52;
public static final int V9 = 0 << 16 | 53;
public static final int V10 = 0 << 16 | 54;
public static final int V11 = 0 << 16 | 55;
public static final int V12 = 0 << 16 | 56;
public static final int V13 = 0 << 16 | 57;
public static final int V14 = 0 << 16 | 58;
public static int getJavaRuntimeVersion() {
if (JAVA_RUNTIME_VERSION_TEXT.startsWith("1.1.")) {
return JdkVersion.V1_1;
}
List<String> versionSegments = SPLITTER_DOT.splitToList(JAVA_RUNTIME_VERSION_TEXT);
if (JAVA_RUNTIME_VERSION_TEXT.startsWith("1.")) {
return JdkVersion.V1_2 - 2 + Integer.parseInt(versionSegments.get(1));
}
return JdkVersion.V9 - 9 + Integer.parseInt(versionSegments.get(0));
}
private JdkVersion() {}
}