99
1010package  org.elasticsearch.gradle.internal.toolchain 
1111
12+ import  spock.util.environment.RestoreSystemProperties 
1213
1314import  org.gradle.api.services.BuildServiceParameters 
1415import  org.gradle.jvm.toolchain.JavaLanguageVersion 
16+ import  org.gradle.jvm.toolchain.JavaToolchainDownload 
17+ 
1518import static  org.gradle.jvm.toolchain.JvmVendorSpec.ORACLE 
16- import static  org.gradle.platform.Architecture.* 
19+ import static  org.gradle.platform.Architecture.AARCH64 
20+ import static  org.gradle.platform.Architecture.X86_64 
1721import static  org.gradle.platform.OperatingSystem.* 
1822
1923class  OracleOpenJdkToolchainResolverSpec  extends  AbstractToolchainResolverSpec  {
2024
25+ 
2126    OracleOpenJdkToolchainResolver  resolverImplementation () {
2227        var toolChain =  new  OracleOpenJdkToolchainResolver () {
2328            @Override 
2429            BuildServiceParameters.None  getParameters () {
2530                return  null 
2631            }
2732        }
28-         toolChain. builds =  [
29-             new  OracleOpenJdkToolchainResolver.ReleasedJdkBuild (JavaLanguageVersion . of(20 ), " 20"  , " 36"  , " bdc68b4b9cbc4ebcb30745c85038d91d"  ),
30-             new  OracleOpenJdkToolchainResolver.EarlyAccessJdkBuild (JavaLanguageVersion . of(21 ), " 21"  , " 6"  )
31-         ]
33+         toolChain. builds =  toolChain. builds. findAll { it instanceof  OracleOpenJdkToolchainResolver.EarlyAccessJdkBuild  } +  [
34+             new  OracleOpenJdkToolchainResolver.ReleasedJdkBuild (
35+                 JavaLanguageVersion . of(20 ),
36+                 " 20"  ,
37+                 " 36"  ,
38+                 " bdc68b4b9cbc4ebcb30745c85038d91d" 
39+             )]
3240        toolChain
3341    }
3442
@@ -44,23 +52,67 @@ class OracleOpenJdkToolchainResolverSpec extends AbstractToolchainResolverSpec {
4452         [20 , anyVendor(), LINUX , AARCH64 , " https://download.oracle.com/java/GA/jdk20/bdc68b4b9cbc4ebcb30745c85038d91d/36/GPL/openjdk-20_linux-aarch64_bin.tar.gz"  ],
4553         [20 , anyVendor(), WINDOWS , X86_64 , " https://download.oracle.com/java/GA/jdk20/bdc68b4b9cbc4ebcb30745c85038d91d/36/GPL/openjdk-20_windows-x64_bin.zip"  ],
4654         //  https://download.java.net/java/early_access/jdk23/23/GPL/openjdk-23-ea+23_macos-aarch64_bin.tar.gz
47-          [21 , ORACLE , MAC_OS , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_macos-x64_bin.tar.gz"  ],
48-          [21 , ORACLE , MAC_OS , AARCH64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_macos-aarch64_bin.tar.gz"  ],
49-          [21 , ORACLE , LINUX , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_linux-x64_bin.tar.gz"  ],
50-          [21 , ORACLE , LINUX , AARCH64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_linux-aarch64_bin.tar.gz"  ],
51-          [21 , ORACLE , WINDOWS , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_windows-x64_bin.zip"  ],
52-          [21 , anyVendor(), MAC_OS , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_macos-x64_bin.tar.gz"  ],
53-          [21 , anyVendor(), MAC_OS , AARCH64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_macos-aarch64_bin.tar.gz"  ],
54-          [21 , anyVendor(), LINUX , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_linux-x64_bin.tar.gz"  ],
55-          [21 , anyVendor(), LINUX , AARCH64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_linux-aarch64_bin.tar.gz"  ],
56-          [21 , anyVendor(), WINDOWS , X86_64 , " https://download.java.net/java/early_access/jdk21/21/GPL/openjdk-21-ea+6_windows-x64_bin.zip"  ]
57-         ]
55+          [24 , ORACLE , MAC_OS , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_macos-x64_bin.tar.gz"  ],
56+          [24 , ORACLE , MAC_OS , AARCH64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_macos-aarch64_bin.tar.gz"  ],
57+          [24 , ORACLE , LINUX , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_linux-x64_bin.tar.gz"  ],
58+          [24 , ORACLE , LINUX , AARCH64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_linux-aarch64_bin.tar.gz"  ],
59+          [24 , ORACLE , WINDOWS , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_windows-x64_bin.zip"  ],
60+          [24 , anyVendor(), MAC_OS , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_macos-x64_bin.tar.gz"  ],
61+          [24 , anyVendor(), MAC_OS , AARCH64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_macos-aarch64_bin.tar.gz"  ],
62+          [24 , anyVendor(), LINUX , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_linux-x64_bin.tar.gz"  ],
63+          [24 , anyVendor(), LINUX , AARCH64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_linux-aarch64_bin.tar.gz"  ],
64+          [24 , anyVendor(), WINDOWS , X86_64 , " https://download.java.net/java/early_access/jdk24/29/GPL/openjdk-24-ea+29_windows-x64_bin.zip"  ]]
65+     }
66+ 
67+     @RestoreSystemProperties 
68+     def  " can provide build number for ea versions"  () {
69+         given :
70+         System . setProperty(' runtime.java.build'  , " 42"  )
71+         System . setProperty(' runtime.java.25.build'  , " 13"  )
72+         def  resolver =  resolverImplementation()
73+ 
74+         when :
75+         Optional<JavaToolchainDownload >  download =  resolver. resolve(
76+             request(
77+                 JavaLanguageVersion . of(version),
78+                 vendor,
79+                 platform(os, arch)
80+             )
81+         )
82+ 
83+         then :
84+         download. get(). uri ==  URI . create(expectedUrl)
85+ 
86+         where :
87+         version | vendor      | os      | arch    | expectedUrl
88+         24       | ORACLE       | MAC_OS   | X86_64   | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_macos-x64_bin.tar.gz" 
89+         24       | ORACLE       | MAC_OS   | AARCH64  | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_macos-aarch64_bin.tar.gz" 
90+         24       | ORACLE       | LINUX    | X86_64   | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_linux-x64_bin.tar.gz" 
91+         24       | ORACLE       | LINUX    | AARCH64  | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_linux-aarch64_bin.tar.gz" 
92+         24       | ORACLE       | WINDOWS  | X86_64   | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_windows-x64_bin.zip" 
93+         24       | anyVendor() | MAC_OS   | X86_64   | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_macos-x64_bin.tar.gz" 
94+         24       | anyVendor() | MAC_OS   | AARCH64  | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_macos-aarch64_bin.tar.gz" 
95+         24       | anyVendor() | LINUX    | X86_64   | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_linux-x64_bin.tar.gz" 
96+         24       | anyVendor() | LINUX    | AARCH64  | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_linux-aarch64_bin.tar.gz" 
97+         24       | anyVendor() | WINDOWS  | X86_64   | urlPrefix(24 ) +  " 42/GPL/openjdk-24-ea+42_windows-x64_bin.zip" 
98+         25       | ORACLE       | MAC_OS   | X86_64   | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_macos-x64_bin.tar.gz" 
99+         25       | ORACLE       | MAC_OS   | AARCH64  | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_macos-aarch64_bin.tar.gz" 
100+         25       | ORACLE       | LINUX    | X86_64   | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_linux-x64_bin.tar.gz" 
101+         25       | ORACLE       | LINUX    | AARCH64  | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_linux-aarch64_bin.tar.gz" 
102+         25       | ORACLE       | WINDOWS  | X86_64   | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_windows-x64_bin.zip" 
103+         25       | anyVendor() | MAC_OS   | X86_64   | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_macos-x64_bin.tar.gz" 
104+         25       | anyVendor() | MAC_OS   | AARCH64  | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_macos-aarch64_bin.tar.gz" 
105+         25       | anyVendor() | LINUX    | X86_64   | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_linux-x64_bin.tar.gz" 
106+         25       | anyVendor() | LINUX    | AARCH64  | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_linux-aarch64_bin.tar.gz" 
107+         25       | anyVendor() | WINDOWS  | X86_64   | urlPrefix(25 ) +  " 13/GPL/openjdk-25-ea+13_windows-x64_bin.zip" 
108+     }
109+ 
110+     private  static  String  urlPrefix (int  i ) {
111+         return  " https://download.java.net/java/early_access/jdk"   +  i +  " /" 
58112    }
59113
60114    def  unsupportedRequests () {
61-         [
62-                 [20 , ORACLE , WINDOWS , AARCH64 ]
63-         ]
115+         [[20 , ORACLE , WINDOWS , AARCH64 ]]
64116    }
65117
66118}
0 commit comments