From a8ffe38e6e5401011352cda5bc92a0a7a88ef40e Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Tue, 22 Nov 2022 19:16:47 +0100 Subject: chore: upgrade to Java 19 Use Java 19 and Jetty 12 to take advantage of Project Loom preview features to reduce CPU usage due to XtextWebDocumentAccess thread pools. --- .../ProblemWebSocketServletIntegrationTest.java | 18 ++++++------- .../AwaitTerminationExecutorServiceProvider.java | 9 +++---- .../web/tests/RestartableCachedThreadPool.java | 31 +++++++++++----------- .../web/tests/WebSocketIntegrationTestClient.java | 10 +++---- 4 files changed, 33 insertions(+), 35 deletions(-) (limited to 'subprojects/language-web/src/test/java') diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java index 652fc13b..6dfce780 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/ProblemWebSocketServletIntegrationTest.java @@ -1,17 +1,17 @@ package tools.refinery.language.web; +import org.eclipse.jetty.ee10.servlet.ServletContextHandler; +import org.eclipse.jetty.ee10.servlet.ServletHolder; +import org.eclipse.jetty.ee10.websocket.api.Session; +import org.eclipse.jetty.ee10.websocket.api.StatusCode; +import org.eclipse.jetty.ee10.websocket.api.annotations.WebSocket; +import org.eclipse.jetty.ee10.websocket.api.exceptions.UpgradeException; +import org.eclipse.jetty.ee10.websocket.client.ClientUpgradeRequest; +import org.eclipse.jetty.ee10.websocket.client.WebSocketClient; +import org.eclipse.jetty.ee10.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.websocket.api.Session; -import org.eclipse.jetty.websocket.api.StatusCode; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; -import org.eclipse.jetty.websocket.api.exceptions.UpgradeException; -import org.eclipse.jetty.websocket.client.ClientUpgradeRequest; -import org.eclipse.jetty.websocket.client.WebSocketClient; -import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.eclipse.xtext.testing.GlobalRegistries; import org.eclipse.xtext.testing.GlobalRegistries.GlobalStateMemento; import org.junit.jupiter.api.AfterEach; diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java index b70d0ed5..ebf36f13 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/AwaitTerminationExecutorServiceProvider.java @@ -1,16 +1,15 @@ package tools.refinery.language.web.tests; +import com.google.inject.Singleton; +import org.eclipse.xtext.ide.ExecutorServiceProvider; + import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; -import org.eclipse.xtext.ide.ExecutorServiceProvider; - -import com.google.inject.Singleton; - @Singleton public class AwaitTerminationExecutorServiceProvider extends ExecutorServiceProvider { - private List servicesToShutDown = new ArrayList<>(); + private final List servicesToShutDown = new ArrayList<>(); @Override protected ExecutorService createInstance(String key) { diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java index 1468273d..8e5038ae 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/RestartableCachedThreadPool.java @@ -1,45 +1,44 @@ package tools.refinery.language.web.tests; -import java.util.Collection; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.*; + +@SuppressWarnings("NullableProblems") public class RestartableCachedThreadPool implements ExecutorService { private static final Logger LOG = LoggerFactory.getLogger(RestartableCachedThreadPool.class); - + private ExecutorService delegate; public RestartableCachedThreadPool() { delegate = createExecutorService(); } - + public void waitForAllTasksToFinish() { delegate.shutdown(); waitForTermination(); delegate = createExecutorService(); } - + public void waitForTermination() { + boolean result = false; try { - delegate.awaitTermination(1, TimeUnit.SECONDS); + result = delegate.awaitTermination(1, TimeUnit.SECONDS); } catch (InterruptedException e) { LOG.warn("Interrupted while waiting for delegate executor to stop", e); } + if (!result) { + throw new IllegalStateException("Failed to shut down Xtext thread pool"); + } } - + protected ExecutorService createExecutorService() { return Executors.newCachedThreadPool(); } - + @Override public boolean awaitTermination(long arg0, TimeUnit arg1) throws InterruptedException { return delegate.awaitTermination(arg0, arg1); diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java index 74695c9a..f19c10ca 100644 --- a/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java +++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/tests/WebSocketIntegrationTestClient.java @@ -1,10 +1,10 @@ package tools.refinery.language.web.tests; -import org.eclipse.jetty.websocket.api.Session; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; -import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; +import org.eclipse.jetty.ee10.websocket.api.Session; +import org.eclipse.jetty.ee10.websocket.api.annotations.OnWebSocketClose; +import org.eclipse.jetty.ee10.websocket.api.annotations.OnWebSocketConnect; +import org.eclipse.jetty.ee10.websocket.api.annotations.OnWebSocketError; +import org.eclipse.jetty.ee10.websocket.api.annotations.OnWebSocketMessage; import java.io.IOException; import java.time.Duration; -- cgit v1.2.3-54-g00ecf