-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #37 from gjwatts/add-java-23-specific-test-src
Add Java 23 test source
- Loading branch information
Showing
13 changed files
with
268 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
.gradle/ | ||
/bin/ | ||
/build/ | ||
/generated/ | ||
/wlp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/' | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
20 changes: 20 additions & 0 deletions
20
io.openliberty.java.internal_fat_23/src/main/java/io/openliberty/java/internal/TestApp.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 { | ||
} |
90 changes: 90 additions & 0 deletions
90
...nliberty.java.internal_fat_23/src/main/java/io/openliberty/java/internal/TestService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/>"); | ||
} | ||
} |
13 changes: 13 additions & 0 deletions
13
...liberty.java.internal_fat_23/src/main/java/io/openliberty/java/internal/package-info.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
17
io.openliberty.java.internal_fat_23/src/main/java/module-info.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
|
||
} |
6 changes: 6 additions & 0 deletions
6
io.openliberty.java.internal_fat_23/src/main/liberty/config/server.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters