Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Java 23 test source #37

Merged
merged 1 commit into from
Aug 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
build:
strategy:
matrix:
java-version: [ '17', '18', '19', '20', '21', '22' ]
java-version: [ '17', '18', '19', '20', '21', '22', '23-ea' ]

runs-on: ubuntu-latest

Expand All @@ -36,14 +36,14 @@ jobs:
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
with:
java-version: ${{ matrix.java-version }}
distribution: 'oracle'
distribution: 'temurin'

# This is the JDK gradle will use since gradle does not always support the -ea version
- name: Set up JDK 17
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1
with:
java-version: '17'
distribution: 'oracle'
distribution: 'temurin'
cache: gradle

- name: Toolchain debug
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/scripts/ClassVersionChecker.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public static void main(String[] args) throws IOException {
majorCodeMap.put("20", 64);
majorCodeMap.put("21", 65);
majorCodeMap.put("22", 66);
majorCodeMap.put("23", 67);

String filename = args[0];
int expected = majorCodeMap.get(args[1]);
Expand Down
5 changes: 5 additions & 0 deletions io.openliberty.java.internal_fat_23/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.gradle/
/bin/
/build/
/generated/
/wlp
48 changes: 48 additions & 0 deletions io.openliberty.java.internal_fat_23/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Repo for quick testing of Liberty apps
Especially useful for new Java versions


### For versions of Java that already have gradle support
To build the WAR file locally, from the root directory of the open-liberty-misc repository run:

```
./gradlew io.openliberty.java.internal_fat_23:build
```


### For versions of Java that do not have gradle support yet
Make the following updates in the following files (example given here as if you were working with pre-gradle support for Java 23):

- In **build.gradle**, set:

```
languageVersion = JavaLanguageVersion.of(23)
```

- And then set the environment variable JDK23 to your Java 23 JDK home, for example:

```
(Mac) export JDK23="/path/to/your/jdk23/home"
(Unix) JDK23="/path/to/your/jdk23/home"
(Win DOS) set JDK23="C:\path\to\your\jdk23\home"
(Win PS) $env:JDK23="C:\path\to\your\jdk23\home"
```

- To build the WAR file locally, from the root directory of the open-liberty-misc repository run:

```
./gradlew io.openliberty.java.internal_fat_23:build -P"org.gradle.java.installations.fromEnv=JDK23"
```
where **JDK23** is a system environment variable that reflects the location of your Java 23 JDK to use to compile the source (see last step).


### When moving to a new release of Java
- **build.gradle**

```
appUrl = 'http://localhost:9080/io.openliberty.java.internal_fat_23/'

<Make sure to add any new dependencies or update existing ones to the proper levels>
```

Then add new code to **TestServices.java** either directly or via another class and make sure **TestApp.java** is in the same directory.
57 changes: 57 additions & 0 deletions io.openliberty.java.internal_fat_23/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*******************************************************************************
* Copyright (c) 2024 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
// To create this WAR file (ex: ./gradlew build...) for newer versions of Java (typically early access ones) before gradle supports it
// See the README.md file

apply plugin: 'war'

description = "Basic Liberty repo"

tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}

compileJava {
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
'--enable-preview'
]
classpath = files()
options.warnings = true
options.deprecation = true
options.debug = true
options.incremental = false
}
}

java {
toolchain {
languageVersion = JavaLanguageVersion.of(23)
}
}

repositories {
mavenCentral()
}

dependencies {
compileOnly group: 'javax.ws.rs', name: 'javax.ws.rs-api', version: '2.1.1'
compileOnly group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.1'
compileOnly group: 'javax.enterprise', name: 'cdi-api', version: '2.0'
}

// This is the URL the test application will be available at
ext {
appUrl = 'http://localhost:9080/io.openliberty.java.internal_fat_23/'
}
5 changes: 5 additions & 0 deletions io.openliberty.java.internal_fat_23/run/jvm.options
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Enable Java preview features
--enable-preview

# Enable Java incubator modules
--add-modules=jdk.incubator.foreign
2 changes: 2 additions & 0 deletions io.openliberty.java.internal_fat_23/run/server.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Need to update the JAVA_HOME environment variable to point to your Java 23 JDK
JAVA_HOME=/jdk/temurin/jdk23
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*******************************************************************************
* Copyright (c) 2024 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package io.openliberty.java.internal;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/")
public class TestApp extends Application {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/* Copyright (c) 2024 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package io.openliberty.java.internal;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;

import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/")
@ApplicationScoped
public class TestService {

private StringWriter sw = new StringWriter();

@GET
public String test() {
try {
log(">>> ENTER");
doTest();
log("<<< EXIT SUCCESSFUL");
} catch (Exception e) {
e.printStackTrace(System.out);
e.printStackTrace(new PrintWriter(sw));
log("<<< EXIT FAILED");
}
String result = sw.toString();
sw = new StringWriter();
return result;
}


private void doTest() throws Exception {
log("Beginning Java 23 testing");

double f = Math.random()/Math.nextDown(1.0);
int milesRun = (int)(0 * (1.0 - f) + 101*f); // Random integer between 0 and 100
String comment = eval(milesRun);
log(comment);

if (comment == null || !comment.toLowerCase().contains("you")) {
log("Failed testing");
throw new Exception("Comment did not contain the string \"you\"!. It was: " + comment);
}

log("Goodbye testing");
}

/**
* Primitive Types in Patterns, instanceof, and switch (Preview) : JEP 455 -> https://openjdk.org/jeps/455
*
* @param miles
* @return
*/
private static String eval(int miles) {
return switch (miles) {
case 0 -> "Are you Still sleeping?";
case 1 -> "You have a long ways to go...";
case 2 -> "Have you warmed up yet?";
case int i when i >= 3 && i < 8 -> "Feeling it, aren't you?";
case int i when i >= 8 && i < 13 -> "Pacing yourself";
case 13 -> "You are halfway!";
case int i when i >= 14 && i < 20 -> "Your legs are burning";
case int i when i >= 20 && i < 26 -> "You're almost there!";
case 26 -> "You are done!";
case int i when i > 26 -> "Ultra marathon runner, you are!";
case int i -> "Huh? Don't know what to do with value: " + i; // default
};
}


public void log(String msg) {
System.out.println(msg);
sw.append(msg);
sw.append("<br/>");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/*******************************************************************************
* Copyright (c) 2024 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package io.openliberty.java.internal;
17 changes: 17 additions & 0 deletions io.openliberty.java.internal_fat_23/src/main/java/module-info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/*******************************************************************************
* Copyright (c) 2024 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
open module io.openliberty.java.internal.basic_app {

requires java.ws.rs;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<server>
<featureManager>
<feature>servlet-4.0</feature>
<feature>jaxrs-2.1</feature>
</featureManager>
</server>
1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ include 'io.openliberty.java.internal_fat_19'
include 'io.openliberty.java.internal_fat_20'
include 'io.openliberty.java.internal_fat_21'
include 'io.openliberty.java.internal_fat_22'
include 'io.openliberty.java.internal_fat_23'