2
* Copyright (C) 2021 Square, Inc.
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
8
* https://www.apache.org/licenses/LICENSE-2.0
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
17
// https://www.eclipse.org/jetty/documentation/current/alpn-chapter.html#alpn-versions
18
private fun alpnBootVersionForPatchVersion(patchVersion: Int): String? {
19
return when (patchVersion) {
20
in 0..24 -> "8.1.0.v20141016"
21
in 25..30 -> "8.1.2.v20141202"
22
in 31..50 -> "8.1.3.v20150130"
23
in 51..59 -> "8.1.4.v20150727"
24
in 60..64 -> "8.1.5.v20150921"
25
in 65..70 -> "8.1.6.v20151105"
26
in 71..77 -> "8.1.7.v20160121"
27
in 78..101 -> "8.1.8.v20160420"
28
in 102..111 -> "8.1.9.v20160720"
29
in 112..120 -> "8.1.10.v20161026"
30
in 121..160 -> "8.1.11.v20170118"
31
in 161..181 -> "8.1.12.v20180117"
32
in 191..242 -> "8.1.13.v20181017"
38
* Returns the alpn-boot version specific to this OpenJDK 8 JVM, or null if this is not a Java 8 VM.
39
* https://github.com/xjdr/xio/blob/master/alpn-boot.gradle
41
fun alpnBootVersion(): String? {
42
val version = System.getProperty("alpn.boot.version")
44
if (version != null) {
48
val javaVersion = System.getProperty("java.version")
49
val match = "1\\.8\\.0_(\\d+)(-.*)?".toRegex().find(javaVersion) ?: return null
51
return alpnBootVersionForPatchVersion(match.groupValues.first().toInt())