Skip to content

Commit

Permalink
Add Java 22 test src
Browse files Browse the repository at this point in the history
  • Loading branch information
gjwatts committed Feb 2, 2024
1 parent 7c69aa8 commit 62db28b
Show file tree
Hide file tree
Showing 12 changed files with 256 additions and 3 deletions.
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
5 changes: 5 additions & 0 deletions io.openliberty.java.internal_fat_22/.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_22/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_22: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 22):

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

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

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

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

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

```
./gradlew io.openliberty.java.internal_fat_22:build -P"org.gradle.java.installations.fromEnv=JDK22"
```
where **JDK22** is a system environment variable that reflects the location of your Java 22 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_22/'
<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.
56 changes: 56 additions & 0 deletions io.openliberty.java.internal_fat_22/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*******************************************************************************
* 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(22)
}
}

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'
}

ext {
appUrl = 'http://localhost:9080/io.openliberty.java.internal_fat_22/'
}
5 changes: 5 additions & 0 deletions io.openliberty.java.internal_fat_22/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_22/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 22 JDK
JAVA_HOME=/jdk/temurin/jdk22
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,80 @@
/*******************************************************************************
* 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 22 testing");
ArrayList<String> favoriteShows = new ArrayList<String>(Arrays.asList("Outpost","Grimm","Community","Scrubs","Castle","Star Trek"));
int count = countElements(favoriteShows);

if (count != favoriteShows.size()) {
log("Failed testing");
throw new Exception("Number of elements counted in ArrayList (" + count + ") is not equal to the size (" + favoriteShows.size() + ")!");
}

log("Goodbye testing");
}

/**
* Demonstrate unnamed variables : JEP 456 -> https://openjdk.org/jeps/456
*
* @param shows
* @return
*/
public int countElements(ArrayList<String> list) {
int total = 0;
for (var _ : list) { // Use _ for unnamed variable
total++;
}
return total;
}


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_22/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>
3 changes: 2 additions & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*******************************************************************************
* Copyright (c) 2021, 2023 IBM Corporation and others.
* Copyright (c) 2021, 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
Expand All @@ -17,3 +17,4 @@ include 'io.openliberty.java.internal_fat_18'
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'

0 comments on commit 62db28b

Please sign in to comment.