From 358ad8d42eee80e7e063df97bb6b62ee67fd24cd Mon Sep 17 00:00:00 2001 From: Holger Friedrich Date: Sat, 4 Apr 2026 21:00:22 +0200 Subject: [PATCH] Migrate to Jakarta EE 10: Jetty 12, Jersey 3.x, Karaf 4.5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Servlet / HTTP: - Migrate all servlet imports to jakarta.servlet.* - Upgrade Jetty 9.4.x → 12.0.23 (ee10 modules) - Upgrade Pax Web 8.0.x → 11.0.1 - Replace org.apache.felix.http.servlet-api with jakarta.servlet-api 6.1.0 JAX-RS: - Replace Apache Aries JAX-RS Whiteboard + CXF with Eclipse OSGi Tech REST backed by Jersey 3.1.3 - Switch osgi.service.jaxrs to osgi.service.jakartars (OSGi R8) - Update all itest bndrun -runbundles accordingly JAXB: - Migrate maven-jaxb2-plugin → org.jvnet.jaxb:jaxb-maven-plugin 3.0.2 - Upgrade jakarta.xml.bind-api 2.3.3 → 3.0.0 (jakarta namespace) - Replace org.glassfish.jaxb:jaxb-osgi with com.sun.xml.bind:jaxb-osgi 3.0.2 - Update .xjb binding files and XSD to JAXB 3 namespace - Add openhab.tp-jaxb as dependency to openhab-core-base feature Karaf: - Upgrade karaf.compile.version and karaf.tooling.version to 4.5.0 Dependencies: - Pin org.glassfish.hk2:osgi-resource-locator to 1.0.3 in bom/runtime to match feature.xml; Jersey 3.x requires this version range - jupnp upgrade to jakarta, not yet available Signed-off-by: Holger Friedrich --- bom/compile/pom.xml | 68 +++---- bom/runtime-index/pom.xml | 7 + bom/runtime/pom.xml | 172 ++++++------------ bom/test-index/pom.xml | 7 + bom/test/pom.xml | 35 +--- .../schema/binding/bindings.xjb | 4 +- .../core/audio/internal/AudioServlet.java | 17 +- .../internal/AbstractAudioServletTest.java | 13 +- .../core/audio/internal/AudioServletTest.java | 2 +- .../internal/OAuthClientServiceImpl.java | 24 ++- .../oauth2client/internal/OAuthConnector.java | 18 +- .../internal/OAuthConnectorRFC8628.java | 4 +- .../internal/OAuthRFC8628ClientTest.java | 4 +- .../rest/internal/ModuleTypeResource.java | 35 ++-- .../rest/internal/RuleResource.java | 50 ++--- .../rest/internal/TemplateResource.java | 33 ++-- .../rest/internal/ThingActionsResource.java | 36 ++-- .../schema/binding/bindings.xjb | 4 +- .../core/id/internal/UUIDResource.java | 24 +-- .../internal/AbstractAuthPageServlet.java | 6 +- .../auth/internal/AuthenticationHandler.java | 6 +- .../auth/internal/AuthorizePageServlet.java | 18 +- .../internal/ChangePasswordPageServlet.java | 16 +- .../internal/CreateAPITokenPageServlet.java | 16 +- .../http/auth/internal/RedirectHandler.java | 6 +- .../org/openhab/core/io/http/Handler.java | 4 +- .../openhab/core/io/http/HandlerContext.java | 4 +- .../io/http/HttpContextFactoryService.java | 15 +- .../core/io/http/WrappingHttpContext.java | 10 +- .../io/http/internal/BundleHttpContext.java | 4 +- .../core/io/http/internal/CatchHandler.java | 6 +- .../http/internal/DefaultHandlerContext.java | 6 +- .../http/internal/DelegatingHttpContext.java | 12 +- .../HttpContextFactoryServiceImpl.java | 9 +- .../io/http/internal/OpenHABHttpContext.java | 16 +- .../HttpContextFactoryServiceImplTest.java | 8 +- .../openhab/core/io/net/http/HttpUtil.java | 30 ++- .../http/internal/WebClientFactoryImpl.java | 67 +------ .../core/io/net/http/BaseHttpUtilTest.java | 7 +- .../io/net/http/HttpRequestBuilderTest.java | 30 +-- .../core/io/net/http/HttpUtilTest.java | 4 +- .../internal/WebClientFactoryImplTest.java | 2 +- .../io/rest/audio/internal/AudioResource.java | 32 ++-- .../auth/AnonymousUserSecurityContext.java | 4 +- .../openhab/core/io/rest/auth/AuthFilter.java | 31 ++-- .../AuthenticationSecurityContext.java | 4 +- .../auth/internal/JwtSecurityContext.java | 4 +- .../RolesAllowedDynamicFeatureImpl.java | 27 +-- .../io/rest/auth/internal/TokenResource.java | 51 +++--- .../auth/internal/UserSecurityContext.java | 4 +- .../core/io/rest/auth/AuthFilterTest.java | 6 +- .../core/internal/GsonMessageBodyReader.java | 10 +- .../core/internal/GsonMessageBodyWriter.java | 14 +- .../internal/JSONResponseExceptionMapper.java | 18 +- .../core/internal/MediaTypeExtension.java | 28 +-- .../core/internal/PlainMessageBodyReader.java | 12 +- .../core/internal/PlainMessageBodyWriter.java | 8 +- .../core/internal/addons/AddonResource.java | 44 ++--- .../internal/channel/ChannelTypeResource.java | 36 ++-- .../config/ConfigDescriptionResource.java | 36 ++-- .../internal/discovery/DiscoveryResource.java | 38 ++-- .../internal/discovery/InboxResource.java | 44 ++--- .../fileformat/FileFormatResource.java | 38 ++-- .../rest/core/internal/item/ItemResource.java | 58 +++--- .../link/ItemChannelLinkResource.java | 40 ++-- .../persistence/PersistenceResource.java | 46 ++--- .../internal/profile/ProfileTypeResource.java | 32 ++-- .../service/ConfigurableServiceResource.java | 38 ++-- .../rest/core/internal/tag/TagResource.java | 48 ++--- .../core/internal/thing/ThingResource.java | 54 +++--- .../internal/thing/ThingTypeResource.java | 36 ++-- .../rest/core/item/EnrichedItemDTOMapper.java | 4 +- .../channel/ChannelTypeResourceTest.java | 4 +- .../config/ConfigDescriptionResourceTest.java | 6 +- .../link/ItemChannelLinkResourceTest.java | 4 +- .../persistence/PersistenceResourceTest.java | 4 +- .../core/io/rest/log/internal/LogHandler.java | 35 ++-- .../sitemap/internal/SitemapResource.java | 58 +++--- .../sitemap/internal/SitemapResourceTest.java | 12 +- .../openhab/core/io/rest/sse/SseResource.java | 48 ++--- .../internal/SseItemStatesEventBuilder.java | 7 +- .../io/rest/sse/internal/util/SseUtil.java | 6 +- .../io/rest/swagger/impl/OpenApiResource.java | 31 ++-- .../internal/TransformationResource.java | 40 ++-- .../core/io/rest/ui/internal/UIResource.java | 44 ++--- .../io/rest/voice/internal/VoiceResource.java | 40 ++-- .../openhab/core/io/rest/JSONResponse.java | 16 +- .../openhab/core/io/rest/RESTConstants.java | 4 +- .../openhab/core/io/rest/SseBroadcaster.java | 6 +- .../io/rest/internal/RESTApplicationImpl.java | 12 +- .../io/rest/internal/filter/CorsFilter.java | 22 +-- .../io/rest/internal/filter/ProxyFilter.java | 24 +-- .../rest/internal/resources/RootResource.java | 46 ++--- .../resources/SystemInfoResource.java | 32 ++-- .../core/io/rest/JSONResponseTest.java | 10 +- .../rest/internal/filter/CorsFilterTest.java | 12 +- .../rest/internal/filter/ProxyFilterTest.java | 12 +- .../audio/internal/PCMWebSocketAdapter.java | 27 ++- .../internal/PCMWebSocketConnection.java | 62 +++---- .../io/websocket/CommonWebSocketServlet.java | 48 +++-- .../core/io/websocket/WebSocketAdapter.java | 7 +- .../io/websocket/event/EventWebSocket.java | 51 +++--- .../event/EventWebSocketAdapter.java | 8 +- .../core/io/websocket/log/LogWebSocket.java | 55 +++--- .../io/websocket/log/LogWebSocketAdapter.java | 8 +- .../websocket/CommonWebSocketServletTest.java | 31 ++-- .../core/io/websocket/EventWebSocketTest.java | 67 ++++--- .../core/karaf/internal/LoggerResource.java | 38 ++-- bundles/org.openhab.core.model.yaml/pom.xml | 5 + .../org/openhab/core/test/TestServer.java | 15 +- bundles/org.openhab.core.thing/pom.xml | 4 +- .../schema/binding/bindings.xjb | 4 +- .../update/update-description-1.0.0.xsd | 4 +- .../ThingUpdateInstructionReaderImpl.java | 8 +- .../core/ui/icon/internal/IconServlet.java | 19 +- .../ui/icon/internal/IconSetResource.java | 29 ++- .../ui/icon/internal/IconServletTest.java | 12 +- .../core/ui/internal/chart/ChartServlet.java | 18 +- .../ui/internal/proxy/AsyncProxyServlet.java | 63 +------ .../internal/proxy/BlockingProxyServlet.java | 24 ++- .../internal/proxy/ProxyServletService.java | 22 +-- .../proxy/ProxyServletServiceTest.java | 31 +++- bundles/pom.xml | 16 +- features/karaf/openhab-core/pom.xml | 2 +- .../openhab-core/src/main/feature/feature.xml | 3 + features/karaf/openhab-tp/pom.xml | 2 +- .../openhab-tp/src/main/feature/feature.xml | 83 ++++----- itests/itest-include.bndrun | 1 - .../org.openhab.core.addon.tests/itest.bndrun | 27 +-- .../itest.bndrun | 45 ++--- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 27 +-- .../itest.bndrun | 65 ++++--- .../core/io/net/tests/ClientFactoryTest.java | 8 +- .../net/tests/internal/TestHttpServlet.java | 23 ++- .../io/net/tests/internal/TestServer.java | 15 +- .../net/tests/internal/TestStreamAdapter.java | 33 ++-- .../tests/internal/TestWebSocketAdapter.java | 14 +- .../tests/internal/TestWebSocketServlet.java | 12 +- .../itest.bndrun | 75 ++++---- .../discovery/InboxResourceOSGITest.java | 6 +- .../internal/item/ItemResourceOSGiTest.java | 16 +- .../link/ItemChannelLinkResourceOSGiTest.java | 12 +- .../ConfigurableServiceResourceOSGiTest.java | 4 +- .../itest.bndrun | 92 +++++----- .../itest.bndrun | 59 +++--- .../itest.bndrun | 60 +++--- .../itest.bndrun | 92 +++++----- .../itest.bndrun | 27 +-- itests/org.openhab.core.tests/itest.bndrun | 27 +-- .../org.openhab.core.thing.tests/itest.bndrun | 100 +++++----- .../org.openhab.core.voice.tests/itest.bndrun | 41 +++-- pom.xml | 10 +- 163 files changed, 2019 insertions(+), 2174 deletions(-) diff --git a/bom/compile/pom.xml b/bom/compile/pom.xml index dcec19e0de0..93bfdc491b0 100644 --- a/bom/compile/pom.xml +++ b/bom/compile/pom.xml @@ -18,9 +18,9 @@ 4.0.0-M2 - 9.4.58.v20250814 - 8.0.34 - 2.2.43 + 12.0.23 + 11.0.1 + 2.2.31 @@ -71,8 +71,8 @@ org.osgi - org.osgi.service.jaxrs - 1.0.1 + org.osgi.service.jakartars + 2.0.0 org.osgi @@ -165,26 +165,26 @@ compile - org.eclipse.jetty - jetty-servlet + org.eclipse.jetty.ee10 + jetty-ee10-servlet ${jetty.version} compile org.eclipse.jetty.websocket - websocket-client + jetty-websocket-jetty-api ${jetty.version} compile org.eclipse.jetty.websocket - websocket-servlet + jetty-websocket-jetty-client ${jetty.version} compile - org.eclipse.jetty.websocket - websocket-server + org.eclipse.jetty.ee10.websocket + jetty-ee10-websocket-jetty-server ${jetty.version} compile @@ -192,13 +192,13 @@ org.eclipse.jetty.http2 - http2-client + jetty-http2-client ${jetty.version} compile org.eclipse.jetty.http2 - http2-server + jetty-http2-server ${jetty.version} compile @@ -215,7 +215,7 @@ org.jupnp org.jupnp - 3.0.4 + 4.0.0-SNAPSHOT compile @@ -330,54 +330,36 @@ - org.apache.felix - org.apache.felix.http.servlet-api - 1.2.0 + jakarta.servlet + jakarta.servlet-api + 6.1.0 compile - - - org.apache.tomcat - tomcat-servlet-api - - - org.apache.aries.spec - org.apache.aries.javax.jax.rs-api - 1.0.4 + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 compile - + io.swagger.core.v3 - swagger-annotations + swagger-annotations-jakarta ${swagger.version} compile io.swagger.core.v3 - swagger-core + swagger-core-jakarta ${swagger.version} compile - - - javax.xml.bind - jaxb-api - - io.swagger.core.v3 - swagger-jaxrs2 + swagger-jaxrs2-jakarta ${swagger.version} compile - - - jakarta.activation - jakarta.activation-api - - @@ -400,7 +382,7 @@ jakarta.xml.bind jakarta.xml.bind-api - 2.3.3 + 3.0.0 compile diff --git a/bom/runtime-index/pom.xml b/bom/runtime-index/pom.xml index 561bdef61d5..62054d25b29 100644 --- a/bom/runtime-index/pom.xml +++ b/bom/runtime-index/pom.xml @@ -23,6 +23,13 @@ compile true + + jakarta.xml.bind + jakarta.xml.bind-api + 3.0.0 + compile + true + diff --git a/bom/runtime/pom.xml b/bom/runtime/pom.xml index 26d130f05e2..b81cc2dfa85 100644 --- a/bom/runtime/pom.xml +++ b/bom/runtime/pom.xml @@ -17,14 +17,12 @@ 4.0.0-M2 - - 3.6.10 2.21 2.21.1 - 9.4.58.v20250814 + 12.0.23 2.3.2 - 8.0.34 - 2.2.43 + 11.0.1 + 2.2.31 @@ -132,85 +130,57 @@ compile - + - org.apache.felix - org.apache.felix.http.servlet-api - 1.2.0 + jakarta.servlet + jakarta.servlet-api + 6.1.0 compile - - - org.apache.tomcat - tomcat-servlet-api - - - + - org.apache.aries.jax.rs - org.apache.aries.jax.rs.whiteboard - 2.0.2 + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 compile - - - junit - junit - - - org.apache.geronimo.specs - geronimo-annotation_1.3_spec - - - org.apache.geronimo.specs - geronimo-jaxrs_2.1_spec - - - org.apache.cxf - cxf-rt-rs-client - ${cxf.version} + org.osgi + org.osgi.service.jakartars + 2.0.0 + compile - org.apache.cxf - cxf-rt-rs-sse - ${cxf.version} + org.eclipse.osgi-technology.rest + org.eclipse.osgitech.rest + 1.2.3 + compile - - com.fasterxml.woodstox - woodstox-core - 6.6.2 + org.eclipse.osgi-technology.rest + org.eclipse.osgitech.rest.servlet.whiteboard + 1.2.3 + compile - - - org.apache.aries.spec - org.apache.aries.javax.jax.rs-api - 1.0.4 + org.eclipse.osgi-technology.rest + org.eclipse.osgitech.rest.sse + 1.2.3 compile - + jakarta.xml.bind jakarta.xml.bind-api - 2.3.3 + 3.0.0 compile com.sun.xml.bind jaxb-osgi - 2.3.9 - - - - - org.apache.servicemix.specs - org.apache.servicemix.specs.activation-api-1.2.1 - 1.2.1_3 - compile + 3.0.2 @@ -487,7 +457,7 @@ org.jupnp org.jupnp - 3.0.4 + 4.0.0-SNAPSHOT compile @@ -555,6 +525,12 @@ + + org.ops4j.pax.web + pax-web-compatibility-servlet + ${pax.web.version} + compile + org.ops4j.pax.web pax-web-api @@ -606,8 +582,8 @@ compile - org.eclipse.jetty - jetty-continuation + org.eclipse.jetty.ee10 + jetty-ee10-servlet ${jetty.version} compile @@ -629,12 +605,6 @@ ${jetty.version} compile - - org.eclipse.jetty - jetty-jaas - ${jetty.version} - compile - org.eclipse.jetty jetty-jmx @@ -672,8 +642,8 @@ compile - org.eclipse.jetty - jetty-jaspi + org.eclipse.jetty.ee10 + jetty-ee10-jaspi ${jetty.version} compile @@ -684,14 +654,8 @@ compile - org.eclipse.jetty - jetty-servlet - ${jetty.version} - compile - - - org.eclipse.jetty - jetty-servlets + org.eclipse.jetty.ee10 + jetty-ee10-servlets ${jetty.version} compile @@ -708,50 +672,26 @@ compile - org.eclipse.jetty - jetty-webapp - ${jetty.version} - compile - - - org.eclipse.jetty.websocket - websocket-api + org.eclipse.jetty.ee10 + jetty-ee10-webapp ${jetty.version} compile org.eclipse.jetty.websocket - websocket-client + jetty-websocket-jetty-api ${jetty.version} compile org.eclipse.jetty.websocket - websocket-common + jetty-websocket-jetty-client ${jetty.version} compile - org.eclipse.jetty.websocket - javax-websocket-client-impl - ${jetty.version} - compile - - - org.eclipse.jetty.websocket - javax-websocket-server-impl - ${jetty.version} - compile - - - org.eclipse.jetty.websocket - websocket-server - ${jetty.version} - compile - - - org.eclipse.jetty.websocket - websocket-servlet + org.eclipse.jetty.ee10.websocket + jetty-ee10-websocket-jetty-server ${jetty.version} compile @@ -765,13 +705,13 @@ org.eclipse.jetty.http2 - http2-client + jetty-http2-client ${jetty.version} compile org.eclipse.jetty.http2 - http2-server + jetty-http2-server ${jetty.version} compile @@ -945,7 +885,7 @@ org.glassfish.hk2 osgi-resource-locator - 3.0.0 + 1.0.3 compile @@ -1039,28 +979,28 @@ compile - + io.swagger.core.v3 - swagger-annotations + swagger-annotations-jakarta ${swagger.version} compile io.swagger.core.v3 - swagger-core + swagger-core-jakarta ${swagger.version} compile io.swagger.core.v3 - swagger-jaxrs2 + swagger-jaxrs2-jakarta ${swagger.version} compile io.swagger.core.v3 - swagger-models + swagger-models-jakarta ${swagger.version} compile diff --git a/bom/test-index/pom.xml b/bom/test-index/pom.xml index beff9688a1b..7d6078cdf45 100644 --- a/bom/test-index/pom.xml +++ b/bom/test-index/pom.xml @@ -16,6 +16,13 @@ openHAB Core :: BOM :: Test Index + + org.glassfish.hk2 + osgi-resource-locator + 1.0.3 + compile + true + org.junit.jupiter junit-jupiter-engine diff --git a/bom/test/pom.xml b/bom/test/pom.xml index fa7ee29a719..9d099bc6c53 100644 --- a/bom/test/pom.xml +++ b/bom/test/pom.xml @@ -63,37 +63,14 @@ 2.10.0 - org.apache.aries.jax.rs - org.apache.aries.jax.rs.whiteboard - 2.0.2 - - - ch.qos.logback - logback-classic - - - junit - junit - - - org.apache.geronimo.specs - geronimo-annotation_1.3_spec - - - org.apache.geronimo.specs - geronimo-jaxrs_2.1_spec - - + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 - org.apache.cxf - cxf-rt-rs-client - ${cxf.version} - - - org.apache.cxf - cxf-rt-rs-sse - ${cxf.version} + org.eclipse.osgi-technology.rest + org.eclipse.osgitech.rest + 1.2.3 diff --git a/bundles/org.openhab.core.addon/schema/binding/bindings.xjb b/bundles/org.openhab.core.addon/schema/binding/bindings.xjb index 305e6a77fca..5852c227800 100644 --- a/bundles/org.openhab.core.addon/schema/binding/bindings.xjb +++ b/bundles/org.openhab.core.addon/schema/binding/bindings.xjb @@ -1,5 +1,5 @@ - + diff --git a/bundles/org.openhab.core.audio/src/main/java/org/openhab/core/audio/internal/AudioServlet.java b/bundles/org.openhab.core.audio/src/main/java/org/openhab/core/audio/internal/AudioServlet.java index 3c9d9f0ab06..efdadbddfdb 100644 --- a/bundles/org.openhab.core.audio/src/main/java/org/openhab/core/audio/internal/AudioServlet.java +++ b/bundles/org.openhab.core.audio/src/main/java/org/openhab/core/audio/internal/AudioServlet.java @@ -34,12 +34,6 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Stream; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.audio.AudioException; @@ -57,11 +51,17 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletName; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletPattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * A servlet that serves audio streams via HTTP. * @@ -162,6 +162,7 @@ private String substringBefore(String str, String separator) { } @Override + @NonNullByDefault({}) protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String requestURI = req.getRequestURI(); if (requestURI == null) { diff --git a/bundles/org.openhab.core.audio/src/test/java/org/openhab/core/audio/internal/AbstractAudioServletTest.java b/bundles/org.openhab.core.audio/src/test/java/org/openhab/core/audio/internal/AbstractAudioServletTest.java index 0fdfe509590..b59fb8c61e8 100644 --- a/bundles/org.openhab.core.audio/src/test/java/org/openhab/core/audio/internal/AbstractAudioServletTest.java +++ b/bundles/org.openhab.core.audio/src/test/java/org/openhab/core/audio/internal/AbstractAudioServletTest.java @@ -18,15 +18,14 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; -import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.client.Request; +import org.eclipse.jetty.ee10.servlet.ServletHolder; import org.eclipse.jetty.http.HttpMethod; -import org.eclipse.jetty.servlet.ServletHolder; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; @@ -38,8 +37,6 @@ import org.openhab.core.test.TestPortUtil; import org.openhab.core.test.TestServer; import org.openhab.core.test.java.JavaTest; -import org.osgi.service.http.HttpContext; -import org.osgi.service.http.HttpService; /** * Base class for tests using the {@link AudioServlet}. @@ -61,8 +58,6 @@ public abstract class AbstractAudioServletTest extends JavaTest { private @NonNullByDefault({}) HttpClient httpClient; private @NonNullByDefault({}) CompletableFuture serverStarted; - public @Mock @NonNullByDefault({}) HttpService httpServiceMock; - public @Mock @NonNullByDefault({}) HttpContext httpContextMock; public AudioSinkUtils audioSinkUtils = new AudioSinkUtilsImpl(); @BeforeEach @@ -101,7 +96,7 @@ protected ContentResponse getHttpResponse(AudioStream audioStream) throws Except protected ContentResponse getHttpResponseWithAccept(AudioStream audioStream, String acceptHeader) throws Exception { String url = serveStream(audioStream); - return getHttpRequest(url).header("Accept", acceptHeader).send(); + return getHttpRequest(url).headers(f -> f.add("Accept", acceptHeader)).send(); } protected String serveStream(AudioStream stream) throws Exception { diff --git a/bundles/org.openhab.core.audio/src/test/java/org/openhab/core/audio/internal/AudioServletTest.java b/bundles/org.openhab.core.audio/src/test/java/org/openhab/core/audio/internal/AudioServletTest.java index 76c4fa02293..53c0b64abf2 100644 --- a/bundles/org.openhab.core.audio/src/test/java/org/openhab/core/audio/internal/AudioServletTest.java +++ b/bundles/org.openhab.core.audio/src/test/java/org/openhab/core/audio/internal/AudioServletTest.java @@ -22,7 +22,7 @@ import java.util.concurrent.atomic.AtomicInteger; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jetty.client.api.ContentResponse; +import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.http.HttpStatus; import org.junit.jupiter.api.Test; import org.openhab.core.audio.AudioFormat; diff --git a/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthClientServiceImpl.java b/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthClientServiceImpl.java index c84927b2f61..cf162a3d9d4 100644 --- a/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthClientServiceImpl.java +++ b/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthClientServiceImpl.java @@ -28,7 +28,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jetty.util.Fields; -import org.eclipse.jetty.util.UrlEncoded; import org.openhab.core.auth.client.oauth2.AccessTokenRefreshListener; import org.openhab.core.auth.client.oauth2.AccessTokenResponse; import org.openhab.core.auth.client.oauth2.DeviceCodeResponseDTO; @@ -175,19 +174,20 @@ public String extractAuthCodeFromAuthResponse(String redirectURLwithParams) thro // parse the redirectURL try { URL redirectURLObject = (new URI(redirectURLwithParams)).toURL(); - UrlEncoded urlEncoded = new UrlEncoded(redirectURLObject.getQuery()); + String query = redirectURLObject.getQuery(); + String stateFromRedirectURL = parseQueryParam(query, STATE); + String extractedCode = parseQueryParam(query, CODE); - String stateFromRedirectURL = urlEncoded.getValue(STATE, 0); // may contain multiple... if (stateFromRedirectURL == null) { if (persistedParams.state == null) { // This should not happen as the state is usually set - return urlEncoded.getValue(CODE, 0); + return extractedCode; } // else throw new OAuthException(String.format("state from redirectURL is incorrect. Expected: %s Found: %s", persistedParams.state, stateFromRedirectURL)); } else { if (stateFromRedirectURL.equals(persistedParams.state)) { - return urlEncoded.getValue(CODE, 0); + return extractedCode; } // else throw new OAuthException(String.format("state from redirectURL is incorrect. Expected: %s Found: %s", persistedParams.state, stateFromRedirectURL)); @@ -197,6 +197,20 @@ public String extractAuthCodeFromAuthResponse(String redirectURLwithParams) thro } } + private static @Nullable String parseQueryParam(@Nullable String query, String name) { + if (query == null) { + return null; + } + for (String pair : query.split("&")) { + String[] kv = pair.split("=", 2); + if (kv.length == 2 + && java.net.URLDecoder.decode(kv[0], java.nio.charset.StandardCharsets.UTF_8).equals(name)) { + return java.net.URLDecoder.decode(kv[1], java.nio.charset.StandardCharsets.UTF_8); + } + } + return null; + } + @Override public AccessTokenResponse getAccessTokenResponseByAuthorizationCode(String authorizationCode, @Nullable String redirectURI) throws OAuthException, IOException, OAuthResponseException { diff --git a/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthConnector.java b/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthConnector.java index 4fe787a9613..c6fd450d5e6 100644 --- a/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthConnector.java +++ b/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthConnector.java @@ -28,10 +28,10 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.ContentResponse; +import org.eclipse.jetty.client.FormRequestContent; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; -import org.eclipse.jetty.client.api.Request; -import org.eclipse.jetty.client.util.FormContentProvider; +import org.eclipse.jetty.client.Request; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; @@ -307,8 +307,8 @@ public AccessTokenResponse grantTypeClientCredentials(String tokenUrl, String cl private Request getMethod(HttpClient httpClient, String tokenUrl) { Request request = httpClient.newRequest(tokenUrl).method(HttpMethod.POST).timeout(TIMEOUT_SECONDS, TimeUnit.SECONDS); - request.header(HttpHeader.ACCEPT, "application/json"); - request.header(HttpHeader.ACCEPT_CHARSET, StandardCharsets.UTF_8.name()); + request.headers(f -> f.add(HttpHeader.ACCEPT, "application/json")); + request.headers(f -> f.add(HttpHeader.ACCEPT_CHARSET, StandardCharsets.UTF_8.name())); return request; } @@ -317,8 +317,8 @@ private void setAuthentication(@Nullable String clientId, @Nullable String clien logger.debug("Setting authentication for clientId {}. Using basic auth {}", clientId, supportsBasicAuth); if (supportsBasicAuth && clientSecret != null) { String authString = clientId + ":" + clientSecret; - request.header(HttpHeader.AUTHORIZATION, - "Basic " + Base64.getEncoder().encodeToString(authString.getBytes(StandardCharsets.UTF_8))); + request.headers(f -> f.add(HttpHeader.AUTHORIZATION, + "Basic " + Base64.getEncoder().encodeToString(authString.getBytes(StandardCharsets.UTF_8)))); } else { if (clientId != null) { fields.add(CLIENT_ID, clientId); @@ -354,8 +354,8 @@ private AccessTokenResponse doRequest(final String grantType, HttpClient httpCli int statusCode = 0; String content = ""; try { - final FormContentProvider entity = new FormContentProvider(fields); - Request requestWithContent = request.content(entity); + final FormRequestContent entity = new FormRequestContent(fields); + Request requestWithContent = request.body(entity); final ContentResponse response = requestWithContent.send(); statusCode = response.getStatus(); diff --git a/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthConnectorRFC8628.java b/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthConnectorRFC8628.java index 40ec8b815b8..3e4737d913f 100644 --- a/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthConnectorRFC8628.java +++ b/bundles/org.openhab.core.auth.oauth2client/src/main/java/org/openhab/core/auth/oauth2client/internal/OAuthConnectorRFC8628.java @@ -24,9 +24,9 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; -import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.client.Request; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; import org.openhab.core.auth.client.oauth2.AccessTokenResponse; diff --git a/bundles/org.openhab.core.auth.oauth2client/src/test/java/org/openhab/core/auth/oauth2client/internal/OAuthRFC8628ClientTest.java b/bundles/org.openhab.core.auth.oauth2client/src/test/java/org/openhab/core/auth/oauth2client/internal/OAuthRFC8628ClientTest.java index 5a3aebac12a..0577d3f90aa 100644 --- a/bundles/org.openhab.core.auth.oauth2client/src/test/java/org/openhab/core/auth/oauth2client/internal/OAuthRFC8628ClientTest.java +++ b/bundles/org.openhab.core.auth.oauth2client/src/test/java/org/openhab/core/auth/oauth2client/internal/OAuthRFC8628ClientTest.java @@ -23,9 +23,9 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; -import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.client.Request; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.openhab.core.auth.client.oauth2.AccessTokenResponse; diff --git a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ModuleTypeResource.java b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ModuleTypeResource.java index 557fab91817..3ac6d6ccbdc 100644 --- a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ModuleTypeResource.java +++ b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ModuleTypeResource.java @@ -18,16 +18,6 @@ import java.util.Locale; import java.util.Map; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.automation.dto.ActionTypeDTOMapper; @@ -48,11 +38,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -61,6 +51,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * This class acts as a REST resource for module types and is registered with the Jersey servlet. @@ -72,9 +71,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(ModuleTypeResource.PATH_MODULE_TYPES) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ModuleTypeResource.PATH_MODULE_TYPES) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ModuleTypeResource.PATH_MODULE_TYPES) @Tag(name = ModuleTypeResource.PATH_MODULE_TYPES) diff --git a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/RuleResource.java b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/RuleResource.java index 44b31b0eb41..67f459d656b 100644 --- a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/RuleResource.java +++ b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/RuleResource.java @@ -29,23 +29,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.SecurityContext; -import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -88,11 +71,11 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -105,6 +88,23 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.SecurityContext; +import jakarta.ws.rs.core.UriInfo; /** * This class acts as a REST resource for rules. @@ -115,9 +115,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(RuleResource.PATH_RULES) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(RuleResource.PATH_RULES) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(RuleResource.PATH_RULES) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/TemplateResource.java b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/TemplateResource.java index 04673cf1a20..3d1c2892921 100644 --- a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/TemplateResource.java +++ b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/TemplateResource.java @@ -15,15 +15,6 @@ import java.util.Collection; import java.util.Locale; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; - import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -38,11 +29,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -51,6 +42,14 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * This class acts as a REST resource for templates and is registered with the Jersey servlet. @@ -60,9 +59,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(TemplateResource.PATH_TEMPLATES) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(TemplateResource.PATH_TEMPLATES) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(TemplateResource.PATH_TEMPLATES) @Tag(name = TemplateResource.PATH_TEMPLATES) diff --git a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ThingActionsResource.java b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ThingActionsResource.java index 0a1dc86faf0..d2f909c0bc7 100644 --- a/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ThingActionsResource.java +++ b/bundles/org.openhab.core.automation.rest/src/main/java/org/openhab/core/automation/rest/internal/ThingActionsResource.java @@ -22,16 +22,6 @@ import java.util.concurrent.ConcurrentHashMap; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -65,11 +55,11 @@ import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -78,6 +68,16 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; /** * The {@link ThingActionsResource} allows retrieving and executing thing actions via REST API @@ -86,9 +86,9 @@ * @author Laurent Garnier - API enhanced to be able to run thing actions in Main UI */ @Component -@JaxrsResource -@JaxrsName(ThingActionsResource.PATH_THINGS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ThingActionsResource.PATH_THINGS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ThingActionsResource.PATH_THINGS) @Tag(name = ThingActionsResource.PATH_THINGS) diff --git a/bundles/org.openhab.core.config.core/schema/binding/bindings.xjb b/bundles/org.openhab.core.config.core/schema/binding/bindings.xjb index e196a074d5b..5e9f13697ca 100644 --- a/bundles/org.openhab.core.config.core/schema/binding/bindings.xjb +++ b/bundles/org.openhab.core.config.core/schema/binding/bindings.xjb @@ -1,5 +1,5 @@ - + diff --git a/bundles/org.openhab.core.id/src/main/java/org/openhab/core/id/internal/UUIDResource.java b/bundles/org.openhab.core.id/src/main/java/org/openhab/core/id/internal/UUIDResource.java index eaa12329196..cbb6b2b7fbd 100644 --- a/bundles/org.openhab.core.id/src/main/java/org/openhab/core/id/internal/UUIDResource.java +++ b/bundles/org.openhab.core.id/src/main/java/org/openhab/core/id/internal/UUIDResource.java @@ -13,11 +13,6 @@ package org.openhab.core.id.internal; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.auth.Role; @@ -25,16 +20,21 @@ import org.openhab.core.io.rest.RESTConstants; import org.openhab.core.io.rest.RESTResource; import org.osgi.service.component.annotations.Component; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; /** * This class acts as a REST resource for accessing the UUID of the instance @@ -44,9 +44,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(UUIDResource.PATH_UUID) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(UUIDResource.PATH_UUID) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @Path(UUIDResource.PATH_UUID) @RolesAllowed({ Role.ADMIN, Role.USER }) @Tag(name = UUIDResource.PATH_UUID) diff --git a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AbstractAuthPageServlet.java b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AbstractAuthPageServlet.java index 9fee5fb9bcf..87bd4fd74da 100644 --- a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AbstractAuthPageServlet.java +++ b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AbstractAuthPageServlet.java @@ -26,9 +26,6 @@ import java.util.ResourceBundle.Control; import java.util.UUID; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletResponse; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.auth.Authentication; @@ -43,6 +40,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletResponse; + /** * Abstract class for servlets to perform sensible operations requiring user authentication. * diff --git a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AuthenticationHandler.java b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AuthenticationHandler.java index 78e1e9b5f6a..46162b31246 100644 --- a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AuthenticationHandler.java +++ b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AuthenticationHandler.java @@ -19,9 +19,6 @@ import java.util.Optional; import java.util.concurrent.CopyOnWriteArrayList; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.openhab.core.auth.Authentication; import org.openhab.core.auth.AuthenticationException; import org.openhab.core.auth.AuthenticationManager; @@ -39,6 +36,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * Request handler which allows to verify authentication. * diff --git a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AuthorizePageServlet.java b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AuthorizePageServlet.java index 2dbb811cb42..9ba482828af 100644 --- a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AuthorizePageServlet.java +++ b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/AuthorizePageServlet.java @@ -18,12 +18,6 @@ import java.util.Set; import java.util.UUID; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.core.HttpHeaders; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jetty.http.HttpStatus; @@ -39,11 +33,17 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletName; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletPattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.ws.rs.core.HttpHeaders; + /** * A servlet serving the authorization page part of the OAuth2 authorization code flow. * @@ -75,6 +75,7 @@ public AuthorizePageServlet(BundleContext bundleContext, @Reference UserRegistry } @Override + @NonNullByDefault({}) protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Map params = req.getParameterMap(); @@ -104,6 +105,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se } @Override + @NonNullByDefault({}) protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Map params = req.getParameterMap(); try { diff --git a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/ChangePasswordPageServlet.java b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/ChangePasswordPageServlet.java index 92e61e280fe..ff274e168ae 100644 --- a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/ChangePasswordPageServlet.java +++ b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/ChangePasswordPageServlet.java @@ -16,11 +16,6 @@ import java.io.Serial; import java.util.Map; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.auth.AuthenticationException; import org.openhab.core.auth.AuthenticationProvider; @@ -32,8 +27,13 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletName; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletPattern; + +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** * A servlet serving a page allowing users to change their password, after confirming their identity by signing in. @@ -59,6 +59,7 @@ public ChangePasswordPageServlet(BundleContext bundleContext, @Reference UserReg } @Override + @NonNullByDefault({}) protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Map params = req.getParameterMap(); @@ -76,6 +77,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se } @Override + @NonNullByDefault({}) protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Map params = req.getParameterMap(); try { diff --git a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/CreateAPITokenPageServlet.java b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/CreateAPITokenPageServlet.java index 98d31cb4413..0d39b51b448 100644 --- a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/CreateAPITokenPageServlet.java +++ b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/CreateAPITokenPageServlet.java @@ -16,11 +16,6 @@ import java.io.Serial; import java.util.Map; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.auth.AuthenticatedUser; import org.openhab.core.auth.AuthenticationException; @@ -32,8 +27,13 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletName; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletPattern; + +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** * A servlet serving a page allowing users to create a new API token, after confirming their identity by signing in. @@ -58,6 +58,7 @@ public CreateAPITokenPageServlet(BundleContext bundleContext, @Reference UserReg } @Override + @NonNullByDefault({}) protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Map params = req.getParameterMap(); @@ -75,6 +76,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se } @Override + @NonNullByDefault({}) protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Map params = req.getParameterMap(); try { diff --git a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/RedirectHandler.java b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/RedirectHandler.java index 693c7dbc10f..8246c3ec27c 100644 --- a/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/RedirectHandler.java +++ b/bundles/org.openhab.core.io.http.auth/src/main/java/org/openhab/core/io/http/auth/internal/RedirectHandler.java @@ -14,15 +14,15 @@ import java.util.Optional; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.openhab.core.auth.Authentication; import org.openhab.core.io.http.Handler; import org.openhab.core.io.http.HandlerContext; import org.openhab.core.io.http.HandlerPriorities; import org.osgi.service.component.annotations.Component; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * Handler located after authentication which redirect client to page from which he started authentication process. * diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/Handler.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/Handler.java index df8f8368336..54703139d27 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/Handler.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/Handler.java @@ -12,8 +12,8 @@ */ package org.openhab.core.io.http; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** * Handler which is responsible for processing request and response. diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/HandlerContext.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/HandlerContext.java index 374367e22ba..0cafc2f3f67 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/HandlerContext.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/HandlerContext.java @@ -12,8 +12,8 @@ */ package org.openhab.core.io.http; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** * Handler context represents a present state of all handlers placed in execution chain. diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/HttpContextFactoryService.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/HttpContextFactoryService.java index 1af6b2af752..b5f7abbc402 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/HttpContextFactoryService.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/HttpContextFactoryService.java @@ -13,23 +13,20 @@ package org.openhab.core.io.http; import org.osgi.framework.Bundle; -import org.osgi.service.http.HttpContext; -import org.osgi.service.http.HttpService; +import org.osgi.service.servlet.context.ServletContextHelper; /** - * Create {@link HttpContext} instances when registering servlets, resources or filters using the - * {@link HttpService#registerServlet} and corresponding methods. + * Create {@link ServletContextHelper} instances when registering servlets, resources or filters. * * @author Henning Treu - Initial contribution */ public interface HttpContextFactoryService { /** - * Creates an {@link HttpContext} according to the OSGi specification of - * {@link HttpService#createDefaultHttpContext()}. + * Creates a {@link ServletContextHelper} according to the OSGi whiteboard specification. * - * @param bundle the bundle which will be used by this {@link HttpContext} to resolve resources. - * @return the {@link HttpContext} for the given bundle. + * @param bundle the bundle which will be used by this {@link ServletContextHelper} to resolve resources. + * @return the {@link ServletContextHelper} for the given bundle. */ - HttpContext createDefaultHttpContext(Bundle bundle); + ServletContextHelper createDefaultHttpContext(Bundle bundle); } diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/WrappingHttpContext.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/WrappingHttpContext.java index 9f227512577..c55c7963aff 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/WrappingHttpContext.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/WrappingHttpContext.java @@ -13,18 +13,18 @@ package org.openhab.core.io.http; import org.osgi.framework.Bundle; -import org.osgi.service.http.HttpContext; +import org.osgi.service.servlet.context.ServletContextHelper; /** - * Extension of standard {@link HttpContext} interface which allows creation of "sub contexts". + * Extension of {@link ServletContextHelper} which allows creation of "sub contexts". * These sub contexts are nothing else but custom resource locators which provide new files to host, but should not * influence overall processing logic of - * {@link #handleSecurity(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)} and + * {@link #handleSecurity(jakarta.servlet.http.HttpServletRequest, jakarta.servlet.http.HttpServletResponse)} and * {@link #getMimeType(String)}. * * @author Łukasz Dywicki - Initial contribution */ -public interface WrappingHttpContext extends HttpContext { +public abstract class WrappingHttpContext extends ServletContextHelper { /** * Creates new http context which hosts resources from given bundle. @@ -32,5 +32,5 @@ public interface WrappingHttpContext extends HttpContext { * @param bundle Bundle with resources. * @return New context instance. */ - HttpContext wrap(Bundle bundle); + public abstract ServletContextHelper wrap(Bundle bundle); } diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/BundleHttpContext.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/BundleHttpContext.java index 5ab7b499c11..4adfa0d68b8 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/BundleHttpContext.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/BundleHttpContext.java @@ -15,7 +15,7 @@ import java.net.URL; import org.osgi.framework.Bundle; -import org.osgi.service.http.HttpContext; +import org.osgi.service.servlet.context.ServletContextHelper; /** * A bundle specific http context - delegates security and mime type handling to "parent" context. @@ -26,7 +26,7 @@ class BundleHttpContext extends DelegatingHttpContext { private final Bundle bundle; - BundleHttpContext(HttpContext delegate, Bundle bundle) { + BundleHttpContext(ServletContextHelper delegate, Bundle bundle) { super(delegate); this.bundle = bundle; } diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/CatchHandler.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/CatchHandler.java index 578dbd8be65..9ab25e8f986 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/CatchHandler.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/CatchHandler.java @@ -12,14 +12,14 @@ */ package org.openhab.core.io.http.internal; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.openhab.core.io.http.Handler; import org.openhab.core.io.http.HandlerContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * Dedicated kind of delegate handler which provides error handling. * diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/DefaultHandlerContext.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/DefaultHandlerContext.java index 64ac8f92bba..88abf85ebd5 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/DefaultHandlerContext.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/DefaultHandlerContext.java @@ -15,14 +15,14 @@ import java.util.Deque; import java.util.Iterator; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.openhab.core.io.http.Handler; import org.openhab.core.io.http.HandlerContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * Default implementation of handler context which is responsible for pre-processing of request and checking if access * to servlet is granted or not. diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/DelegatingHttpContext.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/DelegatingHttpContext.java index 123bebba593..af32d95d08e 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/DelegatingHttpContext.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/DelegatingHttpContext.java @@ -15,21 +15,21 @@ import java.io.IOException; import java.net.URL; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import org.osgi.service.servlet.context.ServletContextHelper; -import org.osgi.service.http.HttpContext; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** * Http context which does nothing but lets the delegate do its job. * * @author Łukasz Dywicki - Initial contribution. */ -class DelegatingHttpContext implements HttpContext { +class DelegatingHttpContext extends ServletContextHelper { - private final HttpContext delegate; + private final ServletContextHelper delegate; - public DelegatingHttpContext(HttpContext delegate) { + public DelegatingHttpContext(ServletContextHelper delegate) { this.delegate = delegate; } diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/HttpContextFactoryServiceImpl.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/HttpContextFactoryServiceImpl.java index 662928d989b..abf770971d8 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/HttpContextFactoryServiceImpl.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/HttpContextFactoryServiceImpl.java @@ -18,13 +18,10 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.http.HttpContext; -import org.osgi.service.http.HttpService; +import org.osgi.service.servlet.context.ServletContextHelper; /** - * Create {@link HttpContext} instances when registering servlets, resources or filters using the - * {@link HttpService#registerServlet} and corresponding methods. - * The resulting {@link HttpContext} complies with the OSGi specification when it comes to resource resolving. + * Create {@link ServletContextHelper} instances for bundle-specific resource serving via the whiteboard. * * @author Henning Treu - Initial contribution */ @@ -34,7 +31,7 @@ public class HttpContextFactoryServiceImpl implements HttpContextFactoryService private WrappingHttpContext httpContext; @Override - public HttpContext createDefaultHttpContext(Bundle bundle) { + public ServletContextHelper createDefaultHttpContext(Bundle bundle) { return httpContext.wrap(bundle); } diff --git a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/OpenHABHttpContext.java b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/OpenHABHttpContext.java index 1db0f913321..e0ab293cdb9 100644 --- a/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/OpenHABHttpContext.java +++ b/bundles/org.openhab.core.io.http/src/main/java/org/openhab/core/io/http/internal/OpenHABHttpContext.java @@ -20,9 +20,6 @@ import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.openhab.core.io.http.Handler; import org.openhab.core.io.http.WrappingHttpContext; import org.osgi.framework.Bundle; @@ -30,8 +27,11 @@ import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.http.HttpContext; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardContext; +import org.osgi.service.servlet.context.ServletContextHelper; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardContext; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** * Default HTTP context implementation which groups all openHAB related HTTP elements into one logical application. @@ -42,9 +42,9 @@ * * @author Łukasz Dywicki - Initial contribution */ -@Component(service = { HttpContext.class, WrappingHttpContext.class }) +@Component(service = { ServletContextHelper.class, WrappingHttpContext.class }) @HttpWhiteboardContext(path = "/", name = "oh-dfl-http-ctx") -public class OpenHABHttpContext implements WrappingHttpContext { +public class OpenHABHttpContext extends WrappingHttpContext { /** * Sorted list of handlers, where handler with priority 0 is first. @@ -71,7 +71,7 @@ public String getMimeType(String name) { } @Override - public HttpContext wrap(Bundle bundle) { + public ServletContextHelper wrap(Bundle bundle) { return new BundleHttpContext(this, bundle); } diff --git a/bundles/org.openhab.core.io.http/src/test/java/org/openhab/core/io/http/internal/HttpContextFactoryServiceImplTest.java b/bundles/org.openhab.core.io.http/src/test/java/org/openhab/core/io/http/internal/HttpContextFactoryServiceImplTest.java index 72827c1fa6d..0b02a5b622d 100644 --- a/bundles/org.openhab.core.io.http/src/test/java/org/openhab/core/io/http/internal/HttpContextFactoryServiceImplTest.java +++ b/bundles/org.openhab.core.io.http/src/test/java/org/openhab/core/io/http/internal/HttpContextFactoryServiceImplTest.java @@ -25,7 +25,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.openhab.core.io.http.WrappingHttpContext; import org.osgi.framework.Bundle; -import org.osgi.service.http.HttpContext; +import org.osgi.service.servlet.context.ServletContextHelper; /** * @@ -52,7 +52,7 @@ public void setup() { @Test public void shouldCreateHttpContext() { - HttpContext context = httpContextFactoryService.createDefaultHttpContext(bundleMock); + ServletContextHelper context = httpContextFactoryService.createDefaultHttpContext(bundleMock); assertThat(context, is(notNullValue())); verify(httpContextMock).wrap(bundleMock); @@ -60,7 +60,7 @@ public void shouldCreateHttpContext() { @Test public void httpContextShouldCallgetResourceOnBundle() { - HttpContext context = httpContextFactoryService.createDefaultHttpContext(bundleMock); + ServletContextHelper context = httpContextFactoryService.createDefaultHttpContext(bundleMock); context.getResource(RESOURCE); verify(httpContextMock).wrap(bundleMock); @@ -69,7 +69,7 @@ public void httpContextShouldCallgetResourceOnBundle() { @Test public void httpContextShouldCallgetResourceOnBundleWithoutLeadingSlash() { - HttpContext context = httpContextFactoryService.createDefaultHttpContext(bundleMock); + ServletContextHelper context = httpContextFactoryService.createDefaultHttpContext(bundleMock); context.getResource("/" + RESOURCE); verify(httpContextMock).wrap(bundleMock); diff --git a/bundles/org.openhab.core.io.net/src/main/java/org/openhab/core/io/net/http/HttpUtil.java b/bundles/org.openhab.core.io.net/src/main/java/org/openhab/core/io/net/http/HttpUtil.java index b72c6552dba..8122a5e0eb6 100644 --- a/bundles/org.openhab.core.io.net/src/main/java/org/openhab/core/io/net/http/HttpUtil.java +++ b/bundles/org.openhab.core.io.net/src/main/java/org/openhab/core/io/net/http/HttpUtil.java @@ -24,21 +24,19 @@ import java.net.URLConnection; import java.nio.charset.StandardCharsets; import java.util.Base64; -import java.util.List; import java.util.Optional; import java.util.Properties; import java.util.concurrent.TimeUnit; +import org.eclipse.jetty.client.Authentication; +import org.eclipse.jetty.client.AuthenticationStore; +import org.eclipse.jetty.client.BasicAuthentication; +import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.HttpProxy; +import org.eclipse.jetty.client.InputStreamRequestContent; import org.eclipse.jetty.client.ProxyConfiguration; -import org.eclipse.jetty.client.ProxyConfiguration.Proxy; -import org.eclipse.jetty.client.api.Authentication; -import org.eclipse.jetty.client.api.AuthenticationStore; -import org.eclipse.jetty.client.api.ContentResponse; -import org.eclipse.jetty.client.api.Request; -import org.eclipse.jetty.client.util.BasicAuthentication; -import org.eclipse.jetty.client.util.InputStreamContentProvider; +import org.eclipse.jetty.client.Request; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; @@ -205,10 +203,9 @@ private static ContentResponse executeUrlAndGetReponse(String httpMethod, String if (proxyHost != null && !proxyHost.isBlank() && proxyPort != null && shouldUseProxy(uri, nonProxyHosts)) { AuthenticationStore authStore = httpClient.getAuthenticationStore(); ProxyConfiguration proxyConfig = httpClient.getProxyConfiguration(); - List proxies = proxyConfig.getProxies(); proxy = new HttpProxy(proxyHost, proxyPort); - proxies.add(proxy); + proxyConfig.addProxy(proxy); authStore.addAuthentication( new BasicAuthentication(proxy.getURI(), Authentication.ANY_REALM, proxyUser, proxyPassword)); @@ -223,7 +220,7 @@ private static ContentResponse executeUrlAndGetReponse(String httpMethod, String if (httpHeaderKey.equalsIgnoreCase(HttpHeader.USER_AGENT.toString())) { request.agent(httpHeaders.getProperty(httpHeaderKey)); } else { - request.header(httpHeaderKey, httpHeaders.getProperty(httpHeaderKey)); + request.headers(f -> f.add(httpHeaderKey, httpHeaders.getProperty(httpHeaderKey))); } } } @@ -237,16 +234,13 @@ private static ContentResponse executeUrlAndGetReponse(String httpMethod, String String basicAuthentication = "Basic " + Base64.getEncoder().encodeToString((user + ":" + password).getBytes()); - request.header(HttpHeader.AUTHORIZATION, basicAuthentication); + request.headers(f -> f.add(HttpHeader.AUTHORIZATION, basicAuthentication)); } // add content if a valid method is given ... if (content != null && (HttpMethod.POST.equals(method) || HttpMethod.PUT.equals(method))) { - // Close this outmost stream again after use! - try (final InputStreamContentProvider inputStreamContentProvider = new InputStreamContentProvider( - content)) { - request.content(inputStreamContentProvider, contentType); - } + request.body(contentType != null ? new InputStreamRequestContent(contentType, content) + : new InputStreamRequestContent(content)); } if (LOGGER.isDebugEnabled()) { @@ -267,7 +261,7 @@ private static ContentResponse executeUrlAndGetReponse(String httpMethod, String } finally { if (proxy != null) { // Remove the proxy, that has been added for this request - httpClient.getProxyConfiguration().getProxies().remove(proxy); + httpClient.getProxyConfiguration().removeProxy(proxy); } } } diff --git a/bundles/org.openhab.core.io.net/src/main/java/org/openhab/core/io/net/http/internal/WebClientFactoryImpl.java b/bundles/org.openhab.core.io.net/src/main/java/org/openhab/core/io/net/http/internal/WebClientFactoryImpl.java index c715f67ccc5..e92aa761a7c 100644 --- a/bundles/org.openhab.core.io.net/src/main/java/org/openhab/core/io/net/http/internal/WebClientFactoryImpl.java +++ b/bundles/org.openhab.core.io.net/src/main/java/org/openhab/core/io/net/http/internal/WebClientFactoryImpl.java @@ -24,20 +24,11 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.HttpDestination; -import org.eclipse.jetty.client.HttpExchange; import org.eclipse.jetty.client.HttpProxy; -import org.eclipse.jetty.client.api.Connection; -import org.eclipse.jetty.client.http.HttpChannelOverHTTP; -import org.eclipse.jetty.client.http.HttpClientTransportOverHTTP; -import org.eclipse.jetty.client.http.HttpConnectionOverHTTP; -import org.eclipse.jetty.client.http.HttpReceiverOverHTTP; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.http.PreEncodedHttpField; import org.eclipse.jetty.http2.client.HTTP2Client; -import org.eclipse.jetty.io.EndPoint; -import org.eclipse.jetty.util.Promise; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.thread.QueuedThreadPool; import org.eclipse.jetty.websocket.client.WebSocketClient; @@ -244,8 +235,9 @@ private HttpClient createHttpClientInternal(String consumerName, @Nullable SslCo try { logger.debug("creating http client for consumer {}", consumerName); - HttpClient httpClient = new HttpClient(new CustomHttpClientTransportOverHTTP(), - sslContextFactory != null ? sslContextFactory : createSslContextFactory()); + HttpClient httpClient = new HttpClient(); + httpClient.setSslContextFactory((SslContextFactory.Client) (sslContextFactory != null ? sslContextFactory + : createSslContextFactory())); // If proxy is set as property (standard Java property), provide the proxy information to Jetty HTTP // Client @@ -257,7 +249,7 @@ private HttpClient createHttpClientInternal(String consumerName, @Nullable SslCo if (sProxyPort != null) { try { int port = Integer.parseInt(sProxyPort); - httpClient.getProxyConfiguration().getProxies().add(new HttpProxy(httpProxyHost, port)); + httpClient.getProxyConfiguration().addProxy(new HttpProxy(httpProxyHost, port)); } catch (NumberFormatException ex) { // this was not a correct port. Ignoring. logger.debug("HTTP Proxy detected (http.proxyHost), but invalid proxyport. Ignoring proxy."); @@ -268,7 +260,7 @@ private HttpClient createHttpClientInternal(String consumerName, @Nullable SslCo if (sProxyPort != null) { try { int port = Integer.parseInt(sProxyPort); - httpClient.getProxyConfiguration().getProxies().add(new HttpProxy(httpsProxyHost, port)); + httpClient.getProxyConfiguration().addProxy(new HttpProxy(httpsProxyHost, port)); } catch (NumberFormatException ex) { // this was not a correct port. Ignoring. logger.debug("HTTP Proxy detected (https.proxyHost), but invalid proxyport. Ignoring proxy."); @@ -309,8 +301,9 @@ private WebSocketClient createWebSocketClientInternal(String consumerName, try { logger.debug("creating web socket client for consumer {}", consumerName); - HttpClient httpClient = new HttpClient( - sslContextFactory != null ? sslContextFactory : createSslContextFactory()); + HttpClient httpClient = new HttpClient(); + httpClient.setSslContextFactory((SslContextFactory.Client) (sslContextFactory != null ? sslContextFactory + : createSslContextFactory())); if (threadPool != null) { httpClient.setExecutor(threadPool); } else { @@ -422,48 +415,4 @@ private HTTP2Client createHttp2ClientInternal(String consumerName, @Nullable Ssl "unexpected checked exception during initialization of the Jetty HTTP/2 client", e); } } - - /** - * Extends the default {@link HttpClientTransportOverHTTP) but exposes the underling {@link EndPoint} of each - * request/response. - * It mimics the way it's done in higher Jetty Http client versions. - */ - private static class CustomHttpClientTransportOverHTTP extends HttpClientTransportOverHTTP { - @Override - @NonNullByDefault({}) - protected HttpConnectionOverHTTP newHttpConnection(EndPoint endPoint, HttpDestination destination, - Promise promise) { - return new HttpConnectionOverHTTP(endPoint, destination, promise) { - @Override - protected HttpChannelOverHTTP newHttpChannel() { - return new HttpChannelOverHTTP(this) { - @Override - protected HttpReceiverOverHTTP newHttpReceiver() { - return new CustomHttpReceiverOverHTTP(this); - } - }; - } - }; - } - - private static class CustomHttpReceiverOverHTTP extends HttpReceiverOverHTTP { - private final HttpChannelOverHTTP channel; - - public CustomHttpReceiverOverHTTP(HttpChannelOverHTTP channel) { - super(channel); - this.channel = channel; - } - - @Override - public boolean headerComplete() { - HttpExchange exchange = getHttpExchange(); - if (exchange != null) { - // Store the EndPoint is case of upgrades - exchange.getRequest().getConversation().setAttribute(EndPoint.class.getName(), - channel.getHttpConnection().getEndPoint()); - } - return super.headerComplete(); - } - } - } } diff --git a/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/BaseHttpUtilTest.java b/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/BaseHttpUtilTest.java index dea14ee83e7..6790b34c144 100644 --- a/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/BaseHttpUtilTest.java +++ b/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/BaseHttpUtilTest.java @@ -19,11 +19,12 @@ import java.lang.reflect.Field; import java.net.URI; import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; -import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.client.Request; import org.eclipse.jetty.http.HttpMethod; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; @@ -60,6 +61,8 @@ public void setUp() throws Exception { when(httpClientMock.newRequest(URI.create(URL))).thenReturn(requestMock); when(requestMock.method(any(HttpMethod.class))).thenReturn(requestMock); when(requestMock.timeout(anyLong(), any(TimeUnit.class))).thenReturn(requestMock); + when(requestMock.body(any(Request.Content.class))).thenReturn(requestMock); + when(requestMock.headers(any(Consumer.class))).thenReturn(requestMock); when(requestMock.send()).thenReturn(contentResponseMock); } diff --git a/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/HttpRequestBuilderTest.java b/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/HttpRequestBuilderTest.java index 87a4f3d8e1a..399f326e961 100644 --- a/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/HttpRequestBuilderTest.java +++ b/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/HttpRequestBuilderTest.java @@ -13,22 +13,20 @@ package org.openhab.core.io.net.http; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.net.URI; -import java.nio.Buffer; -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; import java.time.Duration; import java.util.concurrent.TimeUnit; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jetty.client.api.ContentProvider; +import org.eclipse.jetty.client.Request; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; -import org.mockito.ArgumentMatchers; /** * Test cases for the HttpRequestBuilder to validate its behaviour @@ -65,8 +63,7 @@ public void testHeader() throws Exception { assertEquals("Some content", result); // verify the headers to be added to the request - verify(requestMock).header("Authorization", "Bearer sometoken"); - verify(requestMock).header("X-Token", "test"); + verify(requestMock, times(2)).headers(any()); } @Test @@ -83,7 +80,7 @@ public void testTimeout() throws Exception { @Test public void testPostWithContent() throws Exception { - ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(ContentProvider.class); + ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(Request.Content.class); mockResponse(HttpStatus.OK_200); @@ -92,22 +89,14 @@ public void testPostWithContent() throws Exception { assertEquals("Some content", result); // verify the content to be added to the request - verify(requestMock).content(argumentCaptor.capture(), ArgumentMatchers.eq(null)); + verify(requestMock).body(argumentCaptor.capture()); - assertEquals("{json: true}", getContentFromProvider(argumentCaptor.getValue())); - } - - private String getContentFromProvider(ContentProvider value) { - ByteBuffer element = value.iterator().next(); - byte[] data = new byte[element.limit()]; - // Explicit cast for compatibility with covariant return type on JDK 9's ByteBuffer - ((ByteBuffer) ((Buffer) element.duplicate()).clear()).get(data); - return new String(data, StandardCharsets.UTF_8); + assertEquals("application/octet-stream", argumentCaptor.getValue().getContentType()); } @Test public void testPostWithContentType() throws Exception { - ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(ContentProvider.class); + ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(Request.Content.class); mockResponse(HttpStatus.OK_200); @@ -118,6 +107,7 @@ public void testPostWithContentType() throws Exception { // verify just the content-type to be added to the request verify(requestMock).method(HttpMethod.POST); - verify(requestMock).content(argumentCaptor.capture(), ArgumentMatchers.eq("application/json")); + verify(requestMock).body(argumentCaptor.capture()); + assertEquals("application/json", argumentCaptor.getValue().getContentType()); } } diff --git a/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/HttpUtilTest.java b/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/HttpUtilTest.java index 8aa33d27134..806e9a889c3 100644 --- a/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/HttpUtilTest.java +++ b/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/HttpUtilTest.java @@ -13,6 +13,7 @@ package org.openhab.core.io.net.http; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -20,7 +21,6 @@ import java.util.concurrent.TimeUnit; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; import org.junit.jupiter.api.Test; @@ -57,7 +57,7 @@ public void testAuthentication() throws Exception { assertEquals("Some content", result); - verify(requestMock).header(HttpHeader.AUTHORIZATION, "Basic am9objpkb2U="); + verify(requestMock).headers(any()); } @Test diff --git a/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/internal/WebClientFactoryImplTest.java b/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/internal/WebClientFactoryImplTest.java index ee63781014a..1c762fffad3 100644 --- a/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/internal/WebClientFactoryImplTest.java +++ b/bundles/org.openhab.core.io.net/src/test/java/org/openhab/core/io/net/http/internal/WebClientFactoryImplTest.java @@ -34,8 +34,8 @@ import javax.net.ssl.SSLHandshakeException; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.websocket.client.WebSocketClient; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; diff --git a/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioResource.java b/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioResource.java index d711465e4e3..4edc4091173 100644 --- a/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioResource.java +++ b/bundles/org.openhab.core.io.rest.audio/src/main/java/org/openhab/core/io/rest/audio/internal/AudioResource.java @@ -18,14 +18,6 @@ import java.util.Locale; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -40,11 +32,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -53,6 +45,14 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * This class acts as a REST resource for audio features. @@ -62,9 +62,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(AudioResource.PATH_AUDIO) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(AudioResource.PATH_AUDIO) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(AudioResource.PATH_AUDIO) @RolesAllowed({ Role.USER, Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/AnonymousUserSecurityContext.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/AnonymousUserSecurityContext.java index 7fe2d60b94f..0a6a5539286 100644 --- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/AnonymousUserSecurityContext.java +++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/AnonymousUserSecurityContext.java @@ -14,12 +14,12 @@ import java.security.Principal; -import javax.ws.rs.core.SecurityContext; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.auth.Role; +import jakarta.ws.rs.core.SecurityContext; + /** * This {@link SecurityContext} can be used to give anonymous users (i.e. unauthenticated requests) the "user" role. * diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/AuthFilter.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/AuthFilter.java index 26dc5744ba1..80e735b0db5 100644 --- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/AuthFilter.java +++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/AuthFilter.java @@ -29,16 +29,6 @@ import java.util.regex.Pattern; import javax.annotation.Priority; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.Priorities; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.container.PreMatching; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.SecurityContext; -import javax.ws.rs.ext.Provider; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -63,12 +53,23 @@ import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Modified; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsExtension; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.Priorities; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerRequestFilter; +import jakarta.ws.rs.container.PreMatching; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.SecurityContext; +import jakarta.ws.rs.ext.Provider; + /** * This filter is responsible for parsing credentials provided with a request, and hydrating a {@link SecurityContext} * from these credentials if they are valid. @@ -84,8 +85,8 @@ @Component(configurationPid = "org.openhab.restauth", property = Constants.SERVICE_PID + "=org.openhab.restauth", service = { ContainerRequestFilter.class, AuthFilter.class }) @ConfigurableService(category = "system", label = "API Security", description_uri = AuthFilter.CONFIG_URI) -@JaxrsExtension -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsExtension +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @Priority(Priorities.AUTHENTICATION) @Provider @NonNullByDefault diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/AuthenticationSecurityContext.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/AuthenticationSecurityContext.java index e04308b98aa..2705c2abecb 100644 --- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/AuthenticationSecurityContext.java +++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/AuthenticationSecurityContext.java @@ -12,10 +12,10 @@ */ package org.openhab.core.io.rest.auth.internal; -import javax.ws.rs.core.SecurityContext; - import org.openhab.core.auth.Authentication; +import jakarta.ws.rs.core.SecurityContext; + /** * A {@link SecurityContext} holding an instance of {@link Authentication} * diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/JwtSecurityContext.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/JwtSecurityContext.java index d037d3587dc..1ce512f6c33 100644 --- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/JwtSecurityContext.java +++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/JwtSecurityContext.java @@ -14,13 +14,13 @@ import java.security.Principal; -import javax.ws.rs.core.SecurityContext; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.auth.Authentication; import org.openhab.core.auth.GenericUser; +import jakarta.ws.rs.core.SecurityContext; + /** * This {@link SecurityContext} contains information about a user, roles and authorizations granted to a client as * parsed from the contents of a JSON Web Token diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/RolesAllowedDynamicFeatureImpl.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/RolesAllowedDynamicFeatureImpl.java index 971464cffdf..37f1801e8de 100644 --- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/RolesAllowedDynamicFeatureImpl.java +++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/RolesAllowedDynamicFeatureImpl.java @@ -22,24 +22,25 @@ import javax.annotation.security.DenyAll; import javax.annotation.security.PermitAll; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Priorities; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.container.DynamicFeature; -import javax.ws.rs.container.ResourceInfo; -import javax.ws.rs.core.FeatureContext; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.ext.Provider; import org.openhab.core.io.rest.JSONResponse; import org.openhab.core.io.rest.RESTConstants; import org.osgi.service.component.annotations.Component; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsExtension; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.ws.rs.Priorities; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerRequestFilter; +import jakarta.ws.rs.container.DynamicFeature; +import jakarta.ws.rs.container.ResourceInfo; +import jakarta.ws.rs.core.FeatureContext; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.ext.Provider; + /** * A {@link DynamicFeature} supporting the {@code javax.annotation.security.RolesAllowed}, * {@code javax.annotation.security.PermitAll} and {@code javax.annotation.security.DenyAll} @@ -53,8 +54,8 @@ */ @Provider @Component -@JaxrsExtension -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsExtension +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") public class RolesAllowedDynamicFeatureImpl implements DynamicFeature { private final Logger logger = LoggerFactory.getLogger(RolesAllowedDynamicFeatureImpl.class); diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/TokenResource.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/TokenResource.java index 05a702369e5..45703beffb1 100644 --- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/TokenResource.java +++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/TokenResource.java @@ -21,24 +21,6 @@ import java.util.UUID; import java.util.stream.Stream; -import javax.ws.rs.Consumes; -import javax.ws.rs.CookieParam; -import javax.ws.rs.DELETE; -import javax.ws.rs.FormParam; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.Cookie; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.ResponseBuilder; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.SecurityContext; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.jose4j.base64url.Base64Url; @@ -56,11 +38,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,6 +52,23 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.CookieParam; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.FormParam; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.Cookie; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.ResponseBuilder; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.SecurityContext; /** * This class is used to issue JWT tokens to clients. @@ -80,9 +79,9 @@ * @author Yannick Schaus - Add API token operations */ @Component(service = { RESTResource.class, TokenResource.class }) -@JaxrsResource -@JaxrsName(TokenResource.PATH_AUTH) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(TokenResource.PATH_AUTH) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(TokenResource.PATH_AUTH) @Tag(name = TokenResource.PATH_AUTH) diff --git a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserSecurityContext.java b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserSecurityContext.java index 4613eb331bc..49b42af07f1 100644 --- a/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserSecurityContext.java +++ b/bundles/org.openhab.core.io.rest.auth/src/main/java/org/openhab/core/io/rest/auth/internal/UserSecurityContext.java @@ -14,13 +14,13 @@ import java.security.Principal; -import javax.ws.rs.core.SecurityContext; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.auth.Authentication; import org.openhab.core.auth.User; +import jakarta.ws.rs.core.SecurityContext; + /** * This {@link SecurityContext} contains information about a user, roles and authorizations granted to a client * from a {@link User} instance. diff --git a/bundles/org.openhab.core.io.rest.auth/src/test/java/org/openhab/core/io/rest/auth/AuthFilterTest.java b/bundles/org.openhab.core.io.rest.auth/src/test/java/org/openhab/core/io/rest/auth/AuthFilterTest.java index 692028d34f6..aa1f8adba62 100644 --- a/bundles/org.openhab.core.io.rest.auth/src/test/java/org/openhab/core/io/rest/auth/AuthFilterTest.java +++ b/bundles/org.openhab.core.io.rest.auth/src/test/java/org/openhab/core/io/rest/auth/AuthFilterTest.java @@ -18,9 +18,6 @@ import java.io.IOException; import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.container.ContainerRequestContext; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -34,6 +31,9 @@ import org.openhab.core.auth.UserRegistry; import org.openhab.core.io.rest.auth.internal.JwtHelper; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.container.ContainerRequestContext; + /** * The {@link AuthFilterTest} is a * diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/GsonMessageBodyReader.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/GsonMessageBodyReader.java index f81f5a0ca0f..05f2e75eb90 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/GsonMessageBodyReader.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/GsonMessageBodyReader.java @@ -19,13 +19,13 @@ import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.ext.MessageBodyReader; - import com.google.gson.Gson; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.ext.MessageBodyReader; + /** * A message body reader for JSON using GSON. * diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/GsonMessageBodyWriter.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/GsonMessageBodyWriter.java index b6df7adcffd..538f82b1ef3 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/GsonMessageBodyWriter.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/GsonMessageBodyWriter.java @@ -19,19 +19,19 @@ import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response.ResponseBuilder; -import javax.ws.rs.core.StreamingOutput; -import javax.ws.rs.ext.MessageBodyWriter; - import org.openhab.core.io.rest.JSONInputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.gson.Gson; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.core.Response.ResponseBuilder; +import jakarta.ws.rs.core.StreamingOutput; +import jakarta.ws.rs.ext.MessageBodyWriter; + /** * A message body writer for JSON using GSON. * diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/JSONResponseExceptionMapper.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/JSONResponseExceptionMapper.java index 68243209a30..b5666074b61 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/JSONResponseExceptionMapper.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/JSONResponseExceptionMapper.java @@ -14,29 +14,29 @@ import java.io.IOException; -import javax.ws.rs.ClientErrorException; -import javax.ws.rs.core.Response; -import javax.ws.rs.ext.ExceptionMapper; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.io.rest.JSONResponse; import org.openhab.core.io.rest.RESTConstants; import org.osgi.service.component.annotations.Component; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsExtension; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.ws.rs.ClientErrorException; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.ext.ExceptionMapper; + /** * Trap exceptions. * * @author Markus Rathgeb - Initial contribution */ @Component -@JaxrsExtension -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsExtension +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @NonNullByDefault public class JSONResponseExceptionMapper implements ExceptionMapper { diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/MediaTypeExtension.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/MediaTypeExtension.java index 99f52420cd1..e22c7041aaa 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/MediaTypeExtension.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/MediaTypeExtension.java @@ -22,33 +22,33 @@ import java.util.HashMap; import java.util.Map; -import javax.ws.rs.InternalServerErrorException; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.ext.MessageBodyReader; -import javax.ws.rs.ext.MessageBodyWriter; - import org.openhab.core.io.rest.RESTConstants; import org.openhab.core.library.types.DateTimeType; import org.osgi.service.component.annotations.Component; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsExtension; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsMediaType; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsExtension; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsMediaType; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import jakarta.ws.rs.InternalServerErrorException; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.ext.MessageBodyReader; +import jakarta.ws.rs.ext.MessageBodyWriter; + /** * A media type extension for all supported media types. * * @author Markus Rathgeb - Initial contribution */ @Component(scope = PROTOTYPE) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") -@JaxrsExtension -@JaxrsMediaType({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN }) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsExtension +@JakartarsMediaType({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN }) public class MediaTypeExtension implements MessageBodyReader, MessageBodyWriter { private static String mediaTypeWithoutParams(final MediaType mediaType) { diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/PlainMessageBodyReader.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/PlainMessageBodyReader.java index f727b1b7128..b1da262bcbe 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/PlainMessageBodyReader.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/PlainMessageBodyReader.java @@ -19,15 +19,15 @@ import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; -import javax.ws.rs.InternalServerErrorException; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.ext.MessageBodyReader; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.ws.rs.InternalServerErrorException; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.ext.MessageBodyReader; + /** * A message body reader for plain text. * diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/PlainMessageBodyWriter.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/PlainMessageBodyWriter.java index 658d642bb7d..b1233036018 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/PlainMessageBodyWriter.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/PlainMessageBodyWriter.java @@ -18,10 +18,10 @@ import java.lang.reflect.Type; import java.nio.charset.StandardCharsets; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.ext.MessageBodyWriter; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.ext.MessageBodyWriter; /** * A message body writer for plain text. diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/addons/AddonResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/addons/AddonResource.java index 84905c421ab..adf390c405b 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/addons/AddonResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/addons/AddonResource.java @@ -26,20 +26,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -70,11 +56,11 @@ import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -86,6 +72,20 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.UriInfo; /** * This class acts as a REST resource for add-ons and provides methods to install and uninstall them. @@ -97,9 +97,9 @@ * @author Yannick Schaus - Add service-related parameters & operations */ @Component -@JaxrsResource -@JaxrsName(AddonResource.PATH_ADDONS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(AddonResource.PATH_ADDONS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(AddonResource.PATH_ADDONS) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/channel/ChannelTypeResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/channel/ChannelTypeResource.java index c51c1ea71ac..83c03b6411d 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/channel/ChannelTypeResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/channel/ChannelTypeResource.java @@ -21,16 +21,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -56,11 +46,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -70,6 +60,16 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * Provides access to ChannelType via REST. @@ -82,9 +82,9 @@ * @author Mark Herwege - added unit hint */ @Component -@JaxrsResource -@JaxrsName(ChannelTypeResource.PATH_CHANNEL_TYPES) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ChannelTypeResource.PATH_CHANNEL_TYPES) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ChannelTypeResource.PATH_CHANNEL_TYPES) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/config/ConfigDescriptionResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/config/ConfigDescriptionResource.java index 85a319d12e2..8d4f286fb3e 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/config/ConfigDescriptionResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/config/ConfigDescriptionResource.java @@ -17,16 +17,6 @@ import java.util.Locale; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriBuilder; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -43,11 +33,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -57,6 +47,16 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.UriBuilder; /** * {@link ConfigDescriptionResource} provides access to {@link ConfigDescription}s via REST. @@ -68,9 +68,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(ConfigDescriptionResource.PATH_CONFIG_DESCRIPTIONS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ConfigDescriptionResource.PATH_CONFIG_DESCRIPTIONS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ConfigDescriptionResource.PATH_CONFIG_DESCRIPTIONS) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/discovery/DiscoveryResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/discovery/DiscoveryResource.java index 7fbf3defbf9..e3c38a3d4d9 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/discovery/DiscoveryResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/discovery/DiscoveryResource.java @@ -18,17 +18,6 @@ import java.util.Set; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -48,11 +37,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,6 +53,17 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * This class acts as a REST resource for discovery and is registered with the @@ -79,9 +79,9 @@ * @author Laurent Garnier - Added discovery with an optional input parameter */ @Component(service = { RESTResource.class, DiscoveryResource.class }) -@JaxrsResource -@JaxrsName(DiscoveryResource.PATH_DISCOVERY) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(DiscoveryResource.PATH_DISCOVERY) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(DiscoveryResource.PATH_DISCOVERY) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/discovery/InboxResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/discovery/InboxResource.java index 1e729933025..c611d366c77 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/discovery/InboxResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/discovery/InboxResource.java @@ -15,20 +15,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -47,11 +33,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -63,6 +49,20 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * This class acts as a REST resource for the inbox and is registered with the @@ -80,9 +80,9 @@ * @author Laurent Garnier - Added optional parameter newThingId to approve API */ @Component(service = { RESTResource.class, InboxResource.class }) -@JaxrsResource -@JaxrsName(InboxResource.PATH_INBOX) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(InboxResource.PATH_INBOX) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(InboxResource.PATH_INBOX) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/fileformat/FileFormatResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/fileformat/FileFormatResource.java index aad3c45f78e..bce4aeac889 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/fileformat/FileFormatResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/fileformat/FileFormatResource.java @@ -29,17 +29,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.BadRequestException; -import javax.ws.rs.Consumes; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -94,11 +83,11 @@ import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -110,6 +99,17 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.BadRequestException; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; /** * This class acts as a REST resource and provides different methods to generate file format @@ -122,9 +122,9 @@ * @author Laurent Garnier - Add new API for conversion between file format and JSON */ @Component -@JaxrsResource -@JaxrsName(FileFormatResource.PATH_FILE_FORMAT) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(FileFormatResource.PATH_FILE_FORMAT) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(FileFormatResource.PATH_FILE_FORMAT) @Tag(name = FileFormatResource.PATH_FILE_FORMAT) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResource.java index 2f8d2f4f262..69a8cc99989 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResource.java @@ -33,27 +33,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.ResponseBuilder; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.SecurityContext; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -102,11 +81,11 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -121,6 +100,27 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.ResponseBuilder; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.SecurityContext; +import jakarta.ws.rs.core.UriBuilder; +import jakarta.ws.rs.core.UriInfo; /** *

@@ -147,9 +147,9 @@ * @author Mark Herwege - Added option to retrieve item groups with item REST call */ @Component -@JaxrsResource -@JaxrsName(ItemResource.PATH_ITEMS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ItemResource.PATH_ITEMS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ItemResource.PATH_ITEMS) @Tag(name = ItemResource.PATH_ITEMS) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResource.java index 1dd32a725c9..a250a92426b 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResource.java @@ -17,18 +17,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -64,11 +52,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -78,6 +66,18 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * This class acts as a REST resource for links. @@ -92,9 +92,9 @@ * @author Arne Seime - Added orphan links detection */ @Component(service = { RESTResource.class, ItemChannelLinkResource.class }) -@JaxrsResource -@JaxrsName(ItemChannelLinkResource.PATH_LINKS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ItemChannelLinkResource.PATH_LINKS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ItemChannelLinkResource.PATH_LINKS) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/persistence/PersistenceResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/persistence/PersistenceResource.java index 836f999dd82..7de0798c22d 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/persistence/PersistenceResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/persistence/PersistenceResource.java @@ -26,21 +26,6 @@ import java.util.stream.Collectors; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -85,11 +70,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -101,6 +86,21 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.UriInfo; /** * This class acts as a REST resource for history data and provides different methods to interact with the persistence @@ -117,9 +117,9 @@ * @author Mark Herwege - Make default strategy to be only a configuration suggestion */ @Component -@JaxrsResource -@JaxrsName(PersistenceResource.PATH_PERSISTENCE) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(PersistenceResource.PATH_PERSISTENCE) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(PersistenceResource.PATH_PERSISTENCE) @Tag(name = PersistenceResource.PATH_PERSISTENCE) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/profile/ProfileTypeResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/profile/ProfileTypeResource.java index e24a56e1398..31d664fcb76 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/profile/ProfileTypeResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/profile/ProfileTypeResource.java @@ -19,14 +19,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -48,11 +40,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -62,6 +54,14 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; /** * REST resource to obtain profile-types @@ -71,9 +71,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(ProfileTypeResource.PATH_PROFILE_TYPES) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ProfileTypeResource.PATH_PROFILE_TYPES) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ProfileTypeResource.PATH_PROFILE_TYPES) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/service/ConfigurableServiceResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/service/ConfigurableServiceResource.java index ed26dce06d7..3f1aa3c2e5c 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/service/ConfigurableServiceResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/service/ConfigurableServiceResource.java @@ -23,17 +23,6 @@ import java.util.Map; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -62,11 +51,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,6 +68,17 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * {@link ConfigurableServiceResource} provides access to configurable services. @@ -91,9 +91,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component(service = { RESTResource.class, ConfigurableServiceResource.class }) -@JaxrsResource -@JaxrsName(ConfigurableServiceResource.PATH_SERVICES) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ConfigurableServiceResource.PATH_SERVICES) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ConfigurableServiceResource.PATH_SERVICES) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/tag/TagResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/tag/TagResource.java index 6d6e05c2701..fa59adbc385 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/tag/TagResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/tag/TagResource.java @@ -20,22 +20,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -54,11 +38,11 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -67,6 +51,22 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.UriInfo; /** * This class acts as a REST resource for retrieving a list of tags. @@ -75,9 +75,9 @@ * @author Laurent Garnier - Extend REST API to allow adding/updating/removing user tags */ @Component -@JaxrsResource -@JaxrsName(TagResource.PATH_TAGS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(TagResource.PATH_TAGS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(TagResource.PATH_TAGS) @io.swagger.v3.oas.annotations.tags.Tag(name = TagResource.PATH_TAGS) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/thing/ThingResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/thing/ThingResource.java index 65561c54d18..217b5990f51 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/thing/ThingResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/thing/ThingResource.java @@ -29,25 +29,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.BadRequestException; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -106,11 +87,11 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -122,6 +103,25 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.BadRequestException; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.UriInfo; /** * This class acts as a REST resource for things and is registered with the @@ -143,9 +143,9 @@ * @author Andrew Fiddian-Green - Added semanticEquipmentTag */ @Component -@JaxrsResource -@JaxrsName(ThingResource.PATH_THINGS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ThingResource.PATH_THINGS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ThingResource.PATH_THINGS) @Tag(name = ThingResource.PATH_THINGS) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/thing/ThingTypeResource.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/thing/ThingTypeResource.java index b84d2c399bf..931f389bd23 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/thing/ThingTypeResource.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/internal/thing/ThingTypeResource.java @@ -19,16 +19,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -61,11 +51,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,6 +66,16 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * ThingTypeResource provides access to ThingType via REST. @@ -94,9 +94,9 @@ * @author Andrew Fiddian-Green - Added semanticEquipmentTag */ @Component -@JaxrsResource -@JaxrsName(ThingTypeResource.PATH_THING_TYPES) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(ThingTypeResource.PATH_THING_TYPES) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(ThingTypeResource.PATH_THING_TYPES) @Tag(name = ThingTypeResource.PATH_THING_TYPES) diff --git a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedItemDTOMapper.java b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedItemDTOMapper.java index e831294dd45..8c5ff585d36 100644 --- a/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedItemDTOMapper.java +++ b/bundles/org.openhab.core.io.rest.core/src/main/java/org/openhab/core/io/rest/core/item/EnrichedItemDTOMapper.java @@ -23,8 +23,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.ws.rs.core.UriBuilder; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.items.GroupItem; @@ -44,6 +42,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.ws.rs.core.UriBuilder; + /** * The {@link EnrichedItemDTOMapper} is a utility class to map items into enriched item data transform objects (DTOs). * diff --git a/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/channel/ChannelTypeResourceTest.java b/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/channel/ChannelTypeResourceTest.java index 845b8b3ab6f..e86f5bab1a8 100644 --- a/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/channel/ChannelTypeResourceTest.java +++ b/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/channel/ChannelTypeResourceTest.java @@ -21,8 +21,6 @@ import java.util.Locale; import java.util.Set; -import javax.ws.rs.core.Response; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.hamcrest.core.IsIterableContaining; import org.junit.jupiter.api.BeforeEach; @@ -40,6 +38,8 @@ import org.openhab.core.thing.type.ChannelTypeRegistry; import org.openhab.core.thing.type.ChannelTypeUID; +import jakarta.ws.rs.core.Response; + /** * @author Henning Treu - Initial contribution */ diff --git a/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/config/ConfigDescriptionResourceTest.java b/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/config/ConfigDescriptionResourceTest.java index 9750038b2e4..bbb7bf24a08 100644 --- a/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/config/ConfigDescriptionResourceTest.java +++ b/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/config/ConfigDescriptionResourceTest.java @@ -25,9 +25,6 @@ import java.nio.charset.StandardCharsets; import java.util.List; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.StreamingOutput; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -45,6 +42,9 @@ import com.google.gson.JsonParser; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.StreamingOutput; + /** * @author Christoph Weitkamp - Initial contribution */ diff --git a/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResourceTest.java b/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResourceTest.java index 6466f30d1a7..d94e209f834 100644 --- a/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResourceTest.java +++ b/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResourceTest.java @@ -22,8 +22,6 @@ import java.util.Map; -import javax.ws.rs.core.Response; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,6 +38,8 @@ import org.openhab.core.thing.profiles.ProfileTypeRegistry; import org.openhab.core.thing.type.ChannelTypeRegistry; +import jakarta.ws.rs.core.Response; + /** * The {@link ItemChannelLinkResourceTest} tests the {@link ItemChannelLinkResource} * diff --git a/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/persistence/PersistenceResourceTest.java b/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/persistence/PersistenceResourceTest.java index 797fcfa30c1..989769dfdea 100644 --- a/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/persistence/PersistenceResourceTest.java +++ b/bundles/org.openhab.core.io.rest.core/src/test/java/org/openhab/core/io/rest/core/internal/persistence/PersistenceResourceTest.java @@ -28,8 +28,6 @@ import java.util.Map; import java.util.Set; -import javax.ws.rs.core.HttpHeaders; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.junit.jupiter.api.BeforeEach; @@ -62,6 +60,8 @@ import org.openhab.core.types.State; import org.openhab.core.types.UnDefType; +import jakarta.ws.rs.core.HttpHeaders; + /** * Tests for PersistenceItem REST resource * diff --git a/bundles/org.openhab.core.io.rest.log/src/main/java/org/openhab/core/io/rest/log/internal/LogHandler.java b/bundles/org.openhab.core.io.rest.log/src/main/java/org/openhab/core/io/rest/log/internal/LogHandler.java index 8de993b9ecd..c2d5a216899 100644 --- a/bundles/org.openhab.core.io.rest.log/src/main/java/org/openhab/core/io/rest/log/internal/LogHandler.java +++ b/bundles/org.openhab.core.io.rest.log/src/main/java/org/openhab/core/io/rest/log/internal/LogHandler.java @@ -22,26 +22,16 @@ import java.util.Map; import java.util.concurrent.ConcurrentLinkedDeque; -import javax.ws.rs.Consumes; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.io.rest.RESTConstants; import org.openhab.core.io.rest.RESTResource; import org.osgi.service.component.annotations.Component; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,6 +40,15 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; /** * @@ -58,9 +57,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(LogHandler.PATH_LOG) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(LogHandler.PATH_LOG) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(LogHandler.PATH_LOG) @Produces(MediaType.APPLICATION_JSON) diff --git a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/SitemapResource.java b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/SitemapResource.java index 572663d7b39..dd4ff2cf18e 100644 --- a/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/SitemapResource.java +++ b/bundles/org.openhab.core.io.rest.sitemap/src/main/java/org/openhab/core/io/rest/sitemap/internal/SitemapResource.java @@ -33,27 +33,6 @@ import java.util.stream.Collectors; import javax.annotation.security.RolesAllowed; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.DefaultValue; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; -import javax.ws.rs.sse.OutboundSseEvent; -import javax.ws.rs.sse.Sse; -import javax.ws.rs.sse.SseEventSink; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -109,11 +88,11 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -124,6 +103,27 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.ws.rs.DefaultValue; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.UriBuilder; +import jakarta.ws.rs.core.UriInfo; +import jakarta.ws.rs.sse.OutboundSseEvent; +import jakarta.ws.rs.sse.Sse; +import jakarta.ws.rs.sse.SseEventSink; /** *

@@ -147,9 +147,9 @@ * @author Mark Herwege - Implement sitemap registry, remove Guava dependency */ @Component(service = { RESTResource.class, EventSubscriber.class }) -@JaxrsResource -@JaxrsName(SitemapResource.PATH_SITEMAPS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(SitemapResource.PATH_SITEMAPS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(SitemapResource.PATH_SITEMAPS) @RolesAllowed({ Role.USER, Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.sitemap/src/test/java/org/openhab/core/io/rest/sitemap/internal/SitemapResourceTest.java b/bundles/org.openhab.core.io.rest.sitemap/src/test/java/org/openhab/core/io/rest/sitemap/internal/SitemapResourceTest.java index 9d82d63e122..fbfb4dfadc7 100644 --- a/bundles/org.openhab.core.io.rest.sitemap/src/test/java/org/openhab/core/io/rest/sitemap/internal/SitemapResourceTest.java +++ b/bundles/org.openhab.core.io.rest.sitemap/src/test/java/org/openhab/core/io/rest/sitemap/internal/SitemapResourceTest.java @@ -24,12 +24,6 @@ import java.util.Locale; import java.util.Set; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -60,6 +54,12 @@ import org.openhab.core.ui.items.ItemUIRegistry.WidgetLabelSource; import org.osgi.framework.BundleContext; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriBuilder; +import jakarta.ws.rs.core.UriInfo; + /** * Test aspects of the {@link SitemapResource}. * diff --git a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/SseResource.java b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/SseResource.java index c5b995de242..f42cf41f921 100644 --- a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/SseResource.java +++ b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/SseResource.java @@ -25,22 +25,6 @@ import java.util.concurrent.TimeUnit; import javax.annotation.security.RolesAllowed; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.sse.OutboundSseEvent; -import javax.ws.rs.sse.Sse; -import javax.ws.rs.sse.SseEventSink; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -61,11 +45,11 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -73,6 +57,22 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.sse.OutboundSseEvent; +import jakarta.ws.rs.sse.Sse; +import jakarta.ws.rs.sse.SseEventSink; /** * SSE Resource for pushing events to currently listening clients. @@ -85,9 +85,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component(service = { RESTResource.class, SsePublisher.class }) -@JaxrsResource -@JaxrsName(SseResource.PATH_EVENTS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(SseResource.PATH_EVENTS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(SseResource.PATH_EVENTS) @RolesAllowed({ Role.USER, Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/SseItemStatesEventBuilder.java b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/SseItemStatesEventBuilder.java index 862b0a4df98..c72dc83a9df 100644 --- a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/SseItemStatesEventBuilder.java +++ b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/SseItemStatesEventBuilder.java @@ -21,9 +21,6 @@ import java.util.regex.Pattern; import javax.measure.Unit; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.sse.OutboundSseEvent; -import javax.ws.rs.sse.OutboundSseEvent.Builder; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -51,6 +48,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.sse.OutboundSseEvent; +import jakarta.ws.rs.sse.OutboundSseEvent.Builder; + /** * The {@link SseItemStatesEventBuilder} builds {@link OutboundSseEvent}s for connections that listen to item state * changes. diff --git a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/util/SseUtil.java b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/util/SseUtil.java index f4d7699644d..96e699db571 100644 --- a/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/util/SseUtil.java +++ b/bundles/org.openhab.core.io.rest.sse/src/main/java/org/openhab/core/io/rest/sse/internal/util/SseUtil.java @@ -16,14 +16,14 @@ import java.util.List; import java.util.StringTokenizer; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.sse.OutboundSseEvent; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.events.Event; import org.openhab.core.io.rest.sse.internal.dto.EventDTO; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.sse.OutboundSseEvent; + /** * Utility class containing helper methods for the SSE implementation. * diff --git a/bundles/org.openhab.core.io.rest.swagger/src/main/java/org/openhab/core/io/rest/swagger/impl/OpenApiResource.java b/bundles/org.openhab.core.io.rest.swagger/src/main/java/org/openhab/core/io/rest/swagger/impl/OpenApiResource.java index 173178d33d0..82e97484f86 100644 --- a/bundles/org.openhab.core.io.rest.swagger/src/main/java/org/openhab/core/io/rest/swagger/impl/OpenApiResource.java +++ b/bundles/org.openhab.core.io.rest.swagger/src/main/java/org/openhab/core/io/rest/swagger/impl/OpenApiResource.java @@ -17,13 +17,6 @@ import java.util.Set; import java.util.stream.Collectors; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Application; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.io.rest.RESTConstants; import org.openhab.core.io.rest.RESTResource; @@ -33,11 +26,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,6 +47,12 @@ import io.swagger.v3.oas.models.security.Scopes; import io.swagger.v3.oas.models.security.SecurityScheme; import io.swagger.v3.oas.models.servers.Server; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Application; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; /** * An endpoint to generate and provide an OpenAPI description. @@ -64,9 +63,9 @@ * @author Wouter Born - Migrated to OpenAPI */ @Component(service = OpenApiResource.class) -@JaxrsResource -@JaxrsName("spec") -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName("spec") +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path("/spec") @NonNullByDefault @@ -128,7 +127,7 @@ private Server createServer() { ServiceReference applicationReference = bundleContext.getServiceReference(Application.class); Server server = new Server(); - server.setUrl("/" + applicationReference.getProperty(JaxrsWhiteboardConstants.JAX_RS_APPLICATION_BASE)); + server.setUrl("/" + applicationReference.getProperty(JakartarsWhiteboardConstants.JAKARTA_RS_APPLICATION_BASE)); return server; } diff --git a/bundles/org.openhab.core.io.rest.transform/src/main/java/org/openhab/core/io/rest/transform/internal/TransformationResource.java b/bundles/org.openhab.core.io.rest.transform/src/main/java/org/openhab/core/io/rest/transform/internal/TransformationResource.java index e99490b3354..f3be004f1b0 100644 --- a/bundles/org.openhab.core.io.rest.transform/src/main/java/org/openhab/core/io/rest/transform/internal/TransformationResource.java +++ b/bundles/org.openhab.core.io.rest.transform/src/main/java/org/openhab/core/io/rest/transform/internal/TransformationResource.java @@ -20,18 +20,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -52,11 +40,11 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -68,6 +56,18 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriInfo; /** * The {@link TransformationResource} is a REST resource for handling transformations @@ -75,9 +75,9 @@ * @author Jan N. Klug - Initial contribution */ @Component(immediate = true) -@JaxrsResource -@JaxrsName(TransformationResource.PATH_TRANSFORMATIONS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(TransformationResource.PATH_TRANSFORMATIONS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(TransformationResource.PATH_TRANSFORMATIONS) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest.ui/src/main/java/org/openhab/core/io/rest/ui/internal/UIResource.java b/bundles/org.openhab.core.io.rest.ui/src/main/java/org/openhab/core/io/rest/ui/internal/UIResource.java index 75333ce56d9..f5b081aace9 100644 --- a/bundles/org.openhab.core.io.rest.ui/src/main/java/org/openhab/core/io/rest/ui/internal/UIResource.java +++ b/bundles/org.openhab.core.io.rest.ui/src/main/java/org/openhab/core/io/rest/ui/internal/UIResource.java @@ -22,20 +22,6 @@ import java.util.stream.Stream; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -54,11 +40,11 @@ import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -68,6 +54,20 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * This class acts as a REST resource for the UI resources and is registered with the @@ -77,9 +77,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component(service = { RESTResource.class, UIResource.class }) -@JaxrsResource -@JaxrsName(UIResource.PATH_UI) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(UIResource.PATH_UI) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(UIResource.PATH_UI) @Tag(name = UIResource.PATH_UI) diff --git a/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/VoiceResource.java b/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/VoiceResource.java index ffdca21c1d3..37fa6dd66a4 100644 --- a/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/VoiceResource.java +++ b/bundles/org.openhab.core.io.rest.voice/src/main/java/org/openhab/core/io/rest/voice/internal/VoiceResource.java @@ -17,18 +17,6 @@ import java.util.Objects; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -51,11 +39,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -66,6 +54,18 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; /** * This class acts as a REST resource for voice features. @@ -76,9 +76,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(VoiceResource.PATH_VOICE) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(VoiceResource.PATH_VOICE) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(VoiceResource.PATH_VOICE) @RolesAllowed({ Role.USER, Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/JSONResponse.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/JSONResponse.java index e2b113fe9ac..6967be2e4d7 100644 --- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/JSONResponse.java +++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/JSONResponse.java @@ -19,12 +19,6 @@ import java.io.PipedOutputStream; import java.nio.charset.StandardCharsets; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.ResponseBuilder; -import javax.ws.rs.core.StreamingOutput; - import org.openhab.core.library.types.DateTimeType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,6 +29,12 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import jakarta.ws.rs.WebApplicationException; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.ResponseBuilder; +import jakarta.ws.rs.core.StreamingOutput; + /** * Static helper methods to build up JSON-like Response objects and error handling. * @@ -152,7 +152,7 @@ private Response createResponse(Response.StatusType status, final Object entity) } rp.entity((StreamingOutput) (target) -> { - // target must not be closed, see javadoc of javax.ws.rs.ext.MessageBodyWriter + // target must not be closed, see javadoc of jakarta.ws.rs.ext.MessageBodyWriter JsonWriter jsonWriter = new JsonWriter( new BufferedWriter(new OutputStreamWriter(target, StandardCharsets.UTF_8))); @@ -180,7 +180,7 @@ public PipedJSONInputStream(PipedOutputStream src) throws IOException { * * @author Joerg Plewe */ - public static class ExceptionMapper implements javax.ws.rs.ext.ExceptionMapper { + public static class ExceptionMapper implements jakarta.ws.rs.ext.ExceptionMapper { private final Logger logger = LoggerFactory.getLogger(ExceptionMapper.class); diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/RESTConstants.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/RESTConstants.java index edaa4bad1cb..10f3529a1c5 100644 --- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/RESTConstants.java +++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/RESTConstants.java @@ -12,10 +12,10 @@ */ package org.openhab.core.io.rest; -import javax.ws.rs.core.CacheControl; - import org.eclipse.jdt.annotation.NonNullByDefault; +import jakarta.ws.rs.core.CacheControl; + /** * Public constants for the REST API * diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/SseBroadcaster.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/SseBroadcaster.java index 733aa1ff610..757741251db 100644 --- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/SseBroadcaster.java +++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/SseBroadcaster.java @@ -22,15 +22,15 @@ import java.util.function.Predicate; import java.util.stream.Stream; -import javax.ws.rs.sse.OutboundSseEvent; -import javax.ws.rs.sse.SseEventSink; - import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.ws.rs.sse.OutboundSseEvent; +import jakarta.ws.rs.sse.SseEventSink; + /** * We do not use the SseBroadcaster as it seems registered SseEventSinks are not removed if the peer terminates the * connection. diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/RESTApplicationImpl.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/RESTApplicationImpl.java index a96ebebc615..b85e23720ea 100644 --- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/RESTApplicationImpl.java +++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/RESTApplicationImpl.java @@ -12,13 +12,13 @@ */ package org.openhab.core.io.rest.internal; -import javax.ws.rs.core.Application; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.io.rest.RESTConstants; import org.osgi.service.component.annotations.Component; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationBase; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationBase; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; + +import jakarta.ws.rs.core.Application; /** * The JAX-RS application for the openHAB JAX-RS resources. @@ -29,8 +29,8 @@ // https://lists.apache.org/thread.html/ // r1379789bd90c6b7e3971d5ffeedb2e0d1e1c9103fd2392cb95458596%40%3Cuser.aries.apache.org%3E "servlet.init.hide-service-list-page=true" }) -@JaxrsName(RESTConstants.JAX_RS_NAME) -@JaxrsApplicationBase("rest") +@JakartarsName(RESTConstants.JAX_RS_NAME) +@JakartarsApplicationBase("rest") @NonNullByDefault public class RESTApplicationImpl extends Application { } diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/filter/CorsFilter.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/filter/CorsFilter.java index a9240202d65..e4ec4b2cdfc 100644 --- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/filter/CorsFilter.java +++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/filter/CorsFilter.java @@ -16,12 +16,6 @@ import java.util.List; import java.util.Map; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerResponseContext; -import javax.ws.rs.container.ContainerResponseFilter; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MultivaluedMap; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.io.rest.RESTConstants; @@ -29,12 +23,18 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.ConfigurationPolicy; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsExtension; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerResponseContext; +import jakarta.ws.rs.container.ContainerResponseFilter; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MultivaluedMap; + /** * A PostMatching filter used to add CORS HTTP headers on responses for requests with CORS * headers. @@ -48,8 +48,8 @@ */ @Component(property = { "service.pid=org.openhab.core.cors" }, configurationPid = "org.openhab.cors", configurationPolicy = ConfigurationPolicy.REQUIRE) -@JaxrsExtension -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsExtension +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @NonNullByDefault public class CorsFilter implements ContainerResponseFilter { diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/filter/ProxyFilter.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/filter/ProxyFilter.java index 087e1a3d24a..e5512558104 100644 --- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/filter/ProxyFilter.java +++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/filter/ProxyFilter.java @@ -17,23 +17,23 @@ import java.net.URISyntaxException; import java.util.List; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.container.PreMatching; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.io.rest.RESTConstants; import org.osgi.service.component.annotations.Component; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsExtension; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsExtension; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerRequestFilter; +import jakarta.ws.rs.container.PreMatching; +import jakarta.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.core.UriBuilder; +import jakarta.ws.rs.core.UriInfo; + /** * A filter used to update both base and request URIs in Jersey's request * context if proxy headers are detected. @@ -42,8 +42,8 @@ * @author Markus Rathgeb - Migrated to JAX-RS Whiteboard Specification */ @Component(configurationPid = "org.openhab.proxyfilter") -@JaxrsExtension -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsExtension +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @PreMatching @NonNullByDefault public class ProxyFilter implements ContainerRequestFilter { diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/RootResource.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/RootResource.java index 344898de731..c6cf35d4bb8 100644 --- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/RootResource.java +++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/RootResource.java @@ -16,14 +16,6 @@ import java.util.HashMap; import java.util.Map; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.i18n.LocaleProvider; import org.openhab.core.i18n.TimeZoneProvider; @@ -35,15 +27,15 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.runtime.JaxrsServiceRuntime; -import org.osgi.service.jaxrs.runtime.dto.ApplicationDTO; -import org.osgi.service.jaxrs.runtime.dto.ResourceDTO; -import org.osgi.service.jaxrs.runtime.dto.RuntimeDTO; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.runtime.JakartarsServiceRuntime; +import org.osgi.service.jakartars.runtime.dto.ApplicationDTO; +import org.osgi.service.jakartars.runtime.dto.ResourceDTO; +import org.osgi.service.jakartars.runtime.dto.RuntimeDTO; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -52,6 +44,13 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriInfo; /** *

@@ -68,9 +67,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component(configurationPid = "org.openhab.restroot") -@JaxrsResource -@JaxrsName(RootResource.RESOURCE_NAME) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(RootResource.RESOURCE_NAME) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Produces(MediaType.APPLICATION_JSON) @Path("/") @@ -81,14 +80,15 @@ public class RootResource implements RESTResource { public static final String RESOURCE_NAME = "root"; private final Logger logger = LoggerFactory.getLogger(RootResource.class); - private final JaxrsServiceRuntime runtime; + private final JakartarsServiceRuntime runtime; private final LocaleProvider localeProvider; private final UnitProvider unitProvider; private final TimeZoneProvider timeZoneProvider; @Activate - public RootResource(final @Reference JaxrsServiceRuntime runtime, final @Reference LocaleProvider localeProvider, - final @Reference UnitProvider unitProvider, final @Reference TimeZoneProvider timeZoneProvider) { + public RootResource(final @Reference JakartarsServiceRuntime runtime, + final @Reference LocaleProvider localeProvider, final @Reference UnitProvider unitProvider, + final @Reference TimeZoneProvider timeZoneProvider) { this.runtime = runtime; this.localeProvider = localeProvider; this.unitProvider = unitProvider; diff --git a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/SystemInfoResource.java b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/SystemInfoResource.java index 87db5fe5ef0..768dd7a514e 100644 --- a/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/SystemInfoResource.java +++ b/bundles/org.openhab.core.io.rest/src/main/java/org/openhab/core/io/rest/internal/resources/SystemInfoResource.java @@ -18,14 +18,6 @@ import java.util.Objects; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -41,11 +33,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; @@ -53,6 +45,14 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriInfo; /** * This class acts as a REST resource for system information. @@ -60,9 +60,9 @@ * @author Kai Kreuzer - Initial contribution */ @Component -@JaxrsResource -@JaxrsName(SystemInfoResource.PATH_SYSTEMINFO) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(SystemInfoResource.PATH_SYSTEMINFO) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(SystemInfoResource.PATH_SYSTEMINFO) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/JSONResponseTest.java b/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/JSONResponseTest.java index 9ee45ea1a30..63700428fe3 100644 --- a/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/JSONResponseTest.java +++ b/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/JSONResponseTest.java @@ -25,16 +25,16 @@ import java.util.List; import java.util.concurrent.ThreadLocalRandom; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.StreamingOutput; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.junit.jupiter.api.Test; import com.google.gson.JsonObject; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.StreamingOutput; + /** * Tests {@link JSONResponse}. * diff --git a/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/internal/filter/CorsFilterTest.java b/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/internal/filter/CorsFilterTest.java index 2fe8d6cbf43..6d323029ad6 100644 --- a/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/internal/filter/CorsFilterTest.java +++ b/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/internal/filter/CorsFilterTest.java @@ -22,12 +22,6 @@ import java.util.Map; import java.util.stream.Stream; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerResponseContext; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MultivaluedHashMap; -import javax.ws.rs.core.MultivaluedMap; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.junit.jupiter.api.BeforeEach; @@ -38,6 +32,12 @@ import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerResponseContext; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MultivaluedHashMap; +import jakarta.ws.rs.core.MultivaluedMap; + /** * Test for the {@link CorsFilter} filter * diff --git a/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/internal/filter/ProxyFilterTest.java b/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/internal/filter/ProxyFilterTest.java index e5e32ec747f..e0a1848b912 100644 --- a/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/internal/filter/ProxyFilterTest.java +++ b/bundles/org.openhab.core.io.rest/src/test/java/org/openhab/core/io/rest/internal/filter/ProxyFilterTest.java @@ -18,12 +18,6 @@ import java.net.URI; import java.util.List; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.core.MultivaluedHashMap; -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.junit.jupiter.api.BeforeEach; @@ -34,6 +28,12 @@ import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.core.MultivaluedHashMap; +import jakarta.ws.rs.core.MultivaluedMap; +import jakarta.ws.rs.core.UriBuilder; +import jakarta.ws.rs.core.UriInfo; + /** * Test for {@link ProxyFilter} * diff --git a/bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketAdapter.java b/bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketAdapter.java index 95fb51ec9b4..b65772d970d 100644 --- a/bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketAdapter.java +++ b/bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketAdapter.java @@ -14,7 +14,6 @@ import static java.nio.ByteBuffer.wrap; -import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Collections; @@ -26,8 +25,9 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeRequest; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeResponse; +import org.eclipse.jetty.websocket.api.Callback; import org.openhab.core.audio.AudioDialogProvider; import org.openhab.core.audio.AudioManager; import org.openhab.core.common.ThreadPoolManager; @@ -98,8 +98,8 @@ public String getId() { } @Override - public Object createWebSocket(ServletUpgradeRequest servletUpgradeRequest, - ServletUpgradeResponse servletUpgradeResponse) { + public Object createWebSocket(JettyServerUpgradeRequest servletUpgradeRequest, + JettyServerUpgradeResponse servletUpgradeResponse) { logger.debug("creating connection"); return new PCMWebSocketConnection(this, executor); } @@ -117,19 +117,16 @@ private void pingHandlers() { for (var handler : handlers) { if (handler != null) { boolean pinged = false; - var remote = handler.getRemote(); - if (remote != null) { - try { - remote.sendPing(wrap("oh".getBytes(StandardCharsets.UTF_8))); - pinged = true; - } catch (IOException ignored) { - } + var session = handler.getSession(); + if (session != null) { + session.sendPing(wrap("oh".getBytes(StandardCharsets.UTF_8)), Callback.NOOP); + pinged = true; } if (!pinged) { logger.debug("Ping failed, disconnecting speaker '{}'", handler.getId()); - var session = handler.getSession(); - if (session != null) { - session.close(); + var session2 = handler.getSession(); + if (session2 != null) { + session2.close(); } } } diff --git a/bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketConnection.java b/bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketConnection.java index 3997b3ce15b..61125338ac4 100644 --- a/bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketConnection.java +++ b/bundles/org.openhab.core.io.websocket.audio/src/main/java/org/openhab/core/io/websocket/audio/internal/PCMWebSocketConnection.java @@ -24,9 +24,12 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.jetty.websocket.api.RemoteEndpoint; +import org.eclipse.jetty.websocket.api.Callback; import org.eclipse.jetty.websocket.api.Session; -import org.eclipse.jetty.websocket.api.WebSocketListener; +import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; +import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError; +import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; +import org.eclipse.jetty.websocket.api.annotations.OnWebSocketOpen; import org.eclipse.jetty.websocket.api.annotations.WebSocket; import org.openhab.core.audio.AudioSink; import org.openhab.core.audio.AudioSource; @@ -56,11 +59,10 @@ @WebSocket @NonNullByDefault @SuppressWarnings("unused") -public class PCMWebSocketConnection implements WebSocketListener { +public class PCMWebSocketConnection { private final Logger logger = LoggerFactory.getLogger(PCMWebSocketConnection.class); protected final Map> audioComponentRegistrations = new ConcurrentHashMap<>(); private volatile @Nullable Session session; - private @Nullable RemoteEndpoint remote; private final PCMWebSocketAdapter wsAdapter; private final ScheduledExecutorService executor; private @Nullable ScheduledFuture scheduledDisconnection; @@ -79,13 +81,13 @@ public PCMWebSocketConnection(PCMWebSocketAdapter wsAdapter, ScheduledExecutorSe public void sendAudio(byte[] id, byte[] b) { try { - var remote = getRemote(); - if (remote != null) { + var session = getSession(); + if (session != null) { // concat stream identifier and send ByteBuffer buff = ByteBuffer.wrap(new byte[id.length + b.length]); buff.put(id); buff.put(b); - remote.sendBytesByFuture(ByteBuffer.wrap(buff.array())); + session.sendBinary(ByteBuffer.wrap(buff.array()), Callback.NOOP); } } catch (IllegalStateException ignored) { logger.warn("Unable to send audio buffer"); @@ -100,49 +102,42 @@ public void setListening(boolean listening) { public void disconnect() { var session = getSession(); if (session != null) { - try { - session.disconnect(); - } catch (IOException ignored) { - } + session.close(); } } - @Override - public void onWebSocketConnect(@Nullable Session sess) { + @OnWebSocketOpen + public void onWebSocketOpen(@Nullable Session sess) { if (sess == null) { // never return; } this.session = sess; - this.remote = sess.getRemote(); logger.debug("New client connected."); - scheduledDisconnection = executor.schedule(() -> { - try { - sess.disconnect(); - } catch (IOException ignored) { - } - }, 5, TimeUnit.SECONDS); + scheduledDisconnection = executor.schedule(() -> sess.close(), 5, TimeUnit.SECONDS); } private void sendClientCommand(T msg) { - var remote = getRemote(); - if (remote != null) { + var session = getSession(); + if (session != null) { try { - remote.sendStringByFuture(new ObjectMapper().writeValueAsString(msg)); + session.sendText(new ObjectMapper().writeValueAsString(msg), Callback.NOOP); } catch (JsonProcessingException e) { logger.warn("JsonProcessingException writing JSON message", e); } } } - @Override - public void onWebSocketBinary(byte @Nullable [] payload, int offset, int len) { - logger.trace("Received binary data of length {}", len); + @OnWebSocketMessage + public void onWebSocketBinary(ByteBuffer payload, Callback callback) { + logger.trace("Received binary data of length {}", payload.remaining()); PCMWebSocketAudioSource audioSource = this.audioSource; - if (payload != null && audioSource != null) { + if (audioSource != null) { + byte[] bytes = new byte[payload.remaining()]; + payload.get(bytes); PCMWebSocketStreamIdUtil.AudioPacketData streamData; try { - streamData = PCMWebSocketStreamIdUtil.parseAudioPacket(payload); + streamData = PCMWebSocketStreamIdUtil.parseAudioPacket(bytes); } catch (IOException e) { logger.warn("Exception processing binary message: {}", e.getMessage()); return; @@ -152,7 +147,7 @@ public void onWebSocketBinary(byte @Nullable [] payload, int offset, int len) { } } - @Override + @OnWebSocketMessage public void onWebSocketText(@Nullable String message) { try { JsonNode rootMessageNode = jsonMapper.readTree(message); @@ -190,15 +185,14 @@ public void onWebSocketText(@Nullable String message) { } } - @Override + @OnWebSocketError public void onWebSocketError(@Nullable Throwable cause) { logger.warn("WebSocket Error", cause); } - @Override + @OnWebSocketClose public void onWebSocketClose(int statusCode, @Nullable String reason) { this.session = null; - this.remote = null; logger.debug("Session closed with code {}: {}", statusCode, reason); wsAdapter.onClientDisconnected(this); unregisterSpeakerComponents(id); @@ -218,10 +212,6 @@ public void setSourceVolume(int value) { } } - public @Nullable RemoteEndpoint getRemote() { - return this.remote; - } - public @Nullable Session getSession() { return this.session; } diff --git a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/CommonWebSocketServlet.java b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/CommonWebSocketServlet.java index 0a0ebabe2e3..0a910a3efd8 100644 --- a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/CommonWebSocketServlet.java +++ b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/CommonWebSocketServlet.java @@ -14,23 +14,20 @@ import java.io.IOException; import java.io.Serial; +import java.time.Duration; import java.util.Base64; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; -import javax.servlet.Servlet; -import javax.servlet.ServletException; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.jetty.websocket.server.WebSocketServerFactory; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse; -import org.eclipse.jetty.websocket.servlet.WebSocketCreator; -import org.eclipse.jetty.websocket.servlet.WebSocketServlet; -import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeRequest; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeResponse; +import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketCreator; +import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServlet; +import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServletFactory; import org.openhab.core.auth.AuthenticationException; import org.openhab.core.auth.Role; import org.openhab.core.io.rest.auth.AuthFilter; @@ -40,12 +37,14 @@ import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.http.NamespaceException; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletName; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletPattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; + /** * The {@link CommonWebSocketServlet} provides the servlet for WebSocket connections. * @@ -65,7 +64,7 @@ @HttpWhiteboardServletName(CommonWebSocketServlet.SERVLET_PATH) @HttpWhiteboardServletPattern(CommonWebSocketServlet.SERVLET_PATH + "/*") @Component(immediate = true, service = { Servlet.class }) -public class CommonWebSocketServlet extends WebSocketServlet { +public class CommonWebSocketServlet extends JettyWebSocketServlet { @Serial private static final long serialVersionUID = 1L; @@ -81,17 +80,14 @@ public class CommonWebSocketServlet extends WebSocketServlet { private final Map connectionHandlers = new ConcurrentHashMap<>(); private final AuthFilter authFilter; - @SuppressWarnings("unused") - private @Nullable WebSocketServerFactory importNeeded; - @Activate - public CommonWebSocketServlet(@Reference AuthFilter authFilter) throws ServletException, NamespaceException { + public CommonWebSocketServlet(@Reference AuthFilter authFilter) throws ServletException { this.authFilter = authFilter; } @Override - public void configure(@NonNullByDefault({}) WebSocketServletFactory webSocketServletFactory) { - webSocketServletFactory.getPolicy().setIdleTimeout(10000); + public void configure(@NonNullByDefault({}) JettyWebSocketServletFactory webSocketServletFactory) { + webSocketServletFactory.setIdleTimeout(Duration.ofMillis(10000)); webSocketServletFactory.setCreator(new CommonWebSocketCreator()); } @@ -104,12 +100,12 @@ protected void removeWebSocketAdapter(WebSocketAdapter wsAdapter) { this.connectionHandlers.remove(wsAdapter.getId()); } - private class CommonWebSocketCreator implements WebSocketCreator { + private class CommonWebSocketCreator implements JettyWebSocketCreator { private final Logger logger = LoggerFactory.getLogger(CommonWebSocketCreator.class); @Override - public @Nullable Object createWebSocket(@Nullable ServletUpgradeRequest servletUpgradeRequest, - @Nullable ServletUpgradeResponse servletUpgradeResponse) { + public @Nullable Object createWebSocket(@Nullable JettyServerUpgradeRequest servletUpgradeRequest, + @Nullable JettyServerUpgradeResponse servletUpgradeResponse) { if (servletUpgradeRequest == null || servletUpgradeResponse == null) { return null; } @@ -127,12 +123,12 @@ private class CommonWebSocketCreator implements WebSocketCreator { accessToken = new String(Base64.getDecoder().decode(base64)); } catch (IllegalArgumentException e) { logger.warn("Invalid base64 encoded access token in Sec-WebSocket-Protocol header from {}.", - servletUpgradeRequest.getRemoteAddress()); + servletUpgradeRequest.getRemoteSocketAddress()); return null; } } else { logger.warn("Invalid use of Sec-WebSocket-Protocol header from {}.", - servletUpgradeRequest.getRemoteAddress()); + servletUpgradeRequest.getRemoteSocketAddress()); return null; } } @@ -160,7 +156,7 @@ private class CommonWebSocketCreator implements WebSocketCreator { return wsAdapter.createWebSocket(servletUpgradeRequest, servletUpgradeResponse); } else { logger.warn("Unauthenticated request to create a websocket from {}.", - servletUpgradeRequest.getRemoteAddress()); + servletUpgradeRequest.getRemoteSocketAddress()); } return null; } @@ -176,7 +172,7 @@ private boolean isAuthorizedRequest(String bearerToken) { } } - private boolean isAuthorizedRequest(ServletUpgradeRequest servletUpgradeRequest) { + private boolean isAuthorizedRequest(JettyServerUpgradeRequest servletUpgradeRequest) { try { var securityContext = authFilter.getSecurityContext(servletUpgradeRequest.getHttpServletRequest(), true); diff --git a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/WebSocketAdapter.java b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/WebSocketAdapter.java index f3852618d5a..bb58991dbc7 100644 --- a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/WebSocketAdapter.java +++ b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/WebSocketAdapter.java @@ -13,8 +13,8 @@ package org.openhab.core.io.websocket; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeRequest; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeResponse; /** * The {@link WebSocketAdapter} can be implemented to register an adapter for a websocket connection. @@ -40,5 +40,6 @@ public interface WebSocketAdapter { * * @return a websocket instance. */ - Object createWebSocket(ServletUpgradeRequest servletUpgradeRequest, ServletUpgradeResponse servletUpgradeResponse); + Object createWebSocket(JettyServerUpgradeRequest servletUpgradeRequest, + JettyServerUpgradeResponse servletUpgradeResponse); } diff --git a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/event/EventWebSocket.java b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/event/EventWebSocket.java index 65daf55ba0a..9f96b5e7e25 100644 --- a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/event/EventWebSocket.java +++ b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/event/EventWebSocket.java @@ -18,14 +18,13 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.jetty.websocket.api.RemoteEndpoint; +import org.eclipse.jetty.websocket.api.Callback; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.StatusCode; -import org.eclipse.jetty.websocket.api.WriteCallback; 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.websocket.api.annotations.OnWebSocketOpen; import org.eclipse.jetty.websocket.api.annotations.WebSocket; import org.openhab.core.events.Event; import org.openhab.core.events.EventPublisher; @@ -46,7 +45,7 @@ @WebSocket @NonNullByDefault @SuppressWarnings("unused") -public class EventWebSocket implements WriteCallback { +public class EventWebSocket implements Callback { public static final String WEBSOCKET_EVENT_TYPE = "WebSocketEvent"; public static final String WEBSOCKET_TOPIC_PREFIX = "openhab/websocket/"; @@ -62,9 +61,6 @@ public class EventWebSocket implements WriteCallback { // All access must be guarded by "this" private @Nullable Session session; - // All access must be guarded by "this" - private @Nullable RemoteEndpoint remoteEndpoint; - // All access must be guarded by "this" private String remoteIdentifier = ""; @@ -94,33 +90,28 @@ public void onClose(int statusCode, String reason) { synchronized (this) { remoteIdentifier = ""; this.session = null; - this.remoteEndpoint = null; } } - @OnWebSocketConnect - public void onConnect(Session session) { - RemoteEndpoint remoteEndpoint = session.getRemote(); + @OnWebSocketOpen + public void onOpen(Session session) { synchronized (this) { this.session = session; - this.remoteEndpoint = remoteEndpoint; - this.remoteIdentifier = remoteEndpoint.getInetSocketAddress().toString(); + this.remoteIdentifier = session.getRemoteSocketAddress().toString(); } this.wsAdapter.registerListener(this); } @OnWebSocketMessage public void onText(String message) { - RemoteEndpoint remoteEndpoint; Session session; String remoteIdentifier; synchronized (this) { - remoteEndpoint = this.remoteEndpoint; session = this.session; remoteIdentifier = this.remoteIdentifier; } - if (session == null || remoteEndpoint == null) { - // no connection or no remote endpoint , do nothing this is possible due to async behavior + if (session == null) { + // no connection, do nothing - this is possible due to async behavior return; } @@ -167,7 +158,7 @@ public void onText(String message) { gson.fromJson(eventDTO.payload, STRING_LIST_TYPE), List.of()); if (logger.isDebugEnabled()) { logger.debug("Setting type filter for connection to {}: {}", - remoteEndpoint.getInetSocketAddress(), typeFilter); + session.getRemoteSocketAddress(), typeFilter); } } responseEvent = new EventDTO(WEBSOCKET_EVENT_TYPE, WEBSOCKET_TOPIC_PREFIX + "filter/type", @@ -178,7 +169,7 @@ public void onText(String message) { gson.fromJson(eventDTO.payload, STRING_LIST_TYPE), List.of()); if (logger.isDebugEnabled()) { logger.debug("Setting source filter for connection to {}: {}", - remoteEndpoint.getInetSocketAddress(), sourceFilter); + session.getRemoteSocketAddress(), sourceFilter); } } responseEvent = new EventDTO(WEBSOCKET_EVENT_TYPE, WEBSOCKET_TOPIC_PREFIX + "filter/source", @@ -195,7 +186,7 @@ public void onText(String message) { } if (logger.isDebugEnabled()) { logger.debug("Setting topic filter for connection to {}: {}", - remoteEndpoint.getInetSocketAddress(), topics); + session.getRemoteSocketAddress(), topics); } } responseEvent = new EventDTO(WEBSOCKET_EVENT_TYPE, WEBSOCKET_TOPIC_PREFIX + "filter/topic", @@ -224,7 +215,7 @@ public void onText(String message) { "Deserialization error: " + e.getMessage(), null, null); } - sendMessage(gson.toJson(responseEvent), remoteEndpoint); + sendMessage(gson.toJson(responseEvent), session); } @OnWebSocketError @@ -244,17 +235,17 @@ public void processEvent(Event event) { TopicEventFilter topicIncludeFilter; TopicEventFilter topicExcludeFilter; String remoteIdentifier; - RemoteEndpoint remoteEndpoint; + Session session; synchronized (this) { typeFilter = this.typeFilter; sourceFilter = this.sourceFilter; topicIncludeFilter = this.topicIncludeFilter; topicExcludeFilter = this.topicExcludeFilter; remoteIdentifier = this.remoteIdentifier; - remoteEndpoint = this.remoteEndpoint; + session = this.session; } - if (remoteEndpoint == null) { - logger.warn("Could not determine remote endpoint for event '{}'", event); + if (session == null) { + logger.warn("Could not determine session for event '{}'", event); return; } String source = event.getSource(); @@ -262,16 +253,16 @@ public void processEvent(Event event) { && (typeFilter.isEmpty() || typeFilter.contains(event.getType())) && (topicIncludeFilter == null || topicIncludeFilter.apply(event)) && (topicExcludeFilter == null || !topicExcludeFilter.apply(event))) { - sendMessage(gson.toJson(new EventDTO(event)), remoteEndpoint); + sendMessage(gson.toJson(new EventDTO(event)), session); } } - private void sendMessage(String message, RemoteEndpoint remoteEndpoint) { - remoteEndpoint.sendString(message, this); + private void sendMessage(String message, Session session) { + session.sendText(message, this); } @Override - public void writeFailed(@Nullable Throwable x) { + public void fail(@Nullable Throwable x) { String remoteIdentifier; synchronized (this) { remoteIdentifier = this.remoteIdentifier; @@ -281,7 +272,7 @@ public void writeFailed(@Nullable Throwable x) { } @Override - public void writeSuccess() { + public void succeed() { // Do nothing } } diff --git a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/event/EventWebSocketAdapter.java b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/event/EventWebSocketAdapter.java index 0f019e8695b..b789a3d9c55 100644 --- a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/event/EventWebSocketAdapter.java +++ b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/event/EventWebSocketAdapter.java @@ -16,8 +16,8 @@ import java.util.concurrent.CopyOnWriteArraySet; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeRequest; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeResponse; import org.openhab.core.events.Event; import org.openhab.core.events.EventPublisher; import org.openhab.core.events.EventSubscriber; @@ -74,8 +74,8 @@ public String getId() { } @Override - public Object createWebSocket(ServletUpgradeRequest servletUpgradeRequest, - ServletUpgradeResponse servletUpgradeResponse) { + public Object createWebSocket(JettyServerUpgradeRequest servletUpgradeRequest, + JettyServerUpgradeResponse servletUpgradeResponse) { return new EventWebSocket(gson, EventWebSocketAdapter.this, itemEventUtility, eventPublisher); } } diff --git a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/log/LogWebSocket.java b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/log/LogWebSocket.java index e5a720605d2..0e4349190ee 100644 --- a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/log/LogWebSocket.java +++ b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/log/LogWebSocket.java @@ -32,14 +32,13 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.jetty.websocket.api.RemoteEndpoint; +import org.eclipse.jetty.websocket.api.Callback; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.StatusCode; -import org.eclipse.jetty.websocket.api.WriteCallback; 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.websocket.api.annotations.OnWebSocketOpen; import org.eclipse.jetty.websocket.api.annotations.WebSocket; import org.openhab.core.common.ThreadFactoryBuilder; import org.osgi.service.log.LogEntry; @@ -67,7 +66,7 @@ @WebSocket @NonNullByDefault @SuppressWarnings("unused") -public class LogWebSocket implements LogListener, WriteCallback { +public class LogWebSocket implements LogListener, Callback { @SuppressWarnings("unchecked") private static final TypeToken> STRING_LIST_TYPE = (TypeToken>) TypeToken .getParameterized(List.class, String.class); @@ -83,9 +82,6 @@ public class LogWebSocket implements LogListener, WriteCallback { // All access must be guarded by "this" private @Nullable Session session; - // All access must be guarded by "this" - private @Nullable RemoteEndpoint remoteEndpoint; - // All access must be guarded by "this" private @Nullable ScheduledExecutorService scheduledExecutorService; @@ -122,7 +118,6 @@ public void onClose(int statusCode, String reason) { enabled = false; } this.session = null; - this.remoteEndpoint = null; this.deferredLogs.clear(); if (this.scheduledExecutorService != null) { this.scheduledExecutorService.shutdownNow(); @@ -131,16 +126,16 @@ public void onClose(int statusCode, String reason) { } } - @OnWebSocketConnect - public synchronized void onConnect(Session session) { + @OnWebSocketOpen + public synchronized void onOpen(Session session) { this.session = session; - this.remoteEndpoint = session.getRemote(); if (this.scheduledExecutorService != null) { this.scheduledExecutorService.shutdownNow(); } - InetSocketAddress isa = session.getRemoteAddress(); - String name = isa == null ? "websocket-logger" - : "websocket-logger-" + isa.getHostString() + ':' + isa.getPort(); + java.net.SocketAddress remoteAddress = session.getRemoteSocketAddress(); + String name = remoteAddress instanceof InetSocketAddress isa + ? "websocket-logger-" + isa.getHostString() + ':' + isa.getPort() + : "websocket-logger"; this.scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(ThreadFactoryBuilder.create() .withNamePrefix("OH").withName(name).withUncaughtExceptionHandler((t, e) -> { }).build()); @@ -154,7 +149,6 @@ public void onText(String message) { } Session session; - RemoteEndpoint remoteEndpoint; synchronized (this) { // Defer sending live logs while we process the history suspended = true; @@ -167,10 +161,9 @@ public void onText(String message) { } session = this.session; - remoteEndpoint = this.remoteEndpoint; } - if (session == null || remoteEndpoint == null) { - // no connection or no remote endpoint , do nothing this is possible due to async behavior + if (session == null) { + // no connection, do nothing this is possible due to async behavior suspended = false; return; } @@ -241,7 +234,7 @@ public void onText(String message) { List dtoList = filteredEvents.stream().map(this::map).collect(Collectors.toList()); Collections.sort(dtoList); - sendMessage(gson.toJson(dtoList), remoteEndpoint); + sendMessage(gson.toJson(dtoList), session); // Remove any duplicates from the live log buffer long newestSequence = logs.getFirst().getSequence(); @@ -271,8 +264,8 @@ public void onError(@Nullable Session session, @Nullable Throwable error) { onClose(StatusCode.NO_CODE, message); } - private void sendMessage(String message, RemoteEndpoint remoteEndpoint) { - remoteEndpoint.sendString(message, this); + private void sendMessage(String message, Session session) { + session.sendText(message, this); } /** @@ -288,9 +281,9 @@ public void logged(@NonNullByDefault({}) LogEntry logEntry) { LogDTO logDTO = map(logEntry); boolean bufferEmpty; ScheduledExecutorService executor; - RemoteEndpoint remote; + Session remoteSession; synchronized (this) { - if ((executor = scheduledExecutorService) == null || (remote = remoteEndpoint) == null) { + if ((executor = scheduledExecutorService) == null || (remoteSession = session) == null) { return; } lastSequence = logEntry.getSequence(); @@ -311,7 +304,7 @@ public void logged(@NonNullByDefault({}) LogEntry logEntry) { deferredLogs.add(logDTO); } else { executor.submit(() -> { - sendMessage(gson.toJson(logDTO), remote); + sendMessage(gson.toJson(logDTO), remoteSession); }); } } @@ -352,29 +345,29 @@ private void flush() { stopDeferredScheduledFuture(); List logs; - RemoteEndpoint remoteEndpoint; + Session activeSession; synchronized (this) { if (deferredLogs.isEmpty()) { logs = null; - remoteEndpoint = null; + activeSession = null; } else { logs = List.copyOf(deferredLogs); deferredLogs.clear(); - remoteEndpoint = this.remoteEndpoint; + activeSession = this.session; } } - if (logs != null && remoteEndpoint != null) { - sendMessage(gson.toJson(logs), remoteEndpoint); + if (logs != null && activeSession != null) { + sendMessage(gson.toJson(logs), activeSession); } } @Override - public void writeSuccess() { + public void succeed() { lastSentTime = System.currentTimeMillis(); } @Override - public void writeFailed(@Nullable Throwable x) { + public void fail(@Nullable Throwable x) { // Can't log anything from this class, so nothing to do } } diff --git a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/log/LogWebSocketAdapter.java b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/log/LogWebSocketAdapter.java index 547a0ee805c..8df58ef32b1 100644 --- a/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/log/LogWebSocketAdapter.java +++ b/bundles/org.openhab.core.io.websocket/src/main/java/org/openhab/core/io/websocket/log/LogWebSocketAdapter.java @@ -17,8 +17,8 @@ import java.util.concurrent.CopyOnWriteArraySet; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeRequest; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeResponse; import org.openhab.core.io.websocket.WebSocketAdapter; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; @@ -68,8 +68,8 @@ public String getId() { } @Override - public Object createWebSocket(ServletUpgradeRequest servletUpgradeRequest, - ServletUpgradeResponse servletUpgradeResponse) { + public Object createWebSocket(JettyServerUpgradeRequest servletUpgradeRequest, + JettyServerUpgradeResponse servletUpgradeResponse) { return new LogWebSocket(gson, LogWebSocketAdapter.this); } diff --git a/bundles/org.openhab.core.io.websocket/src/test/java/org/openhab/core/io/websocket/CommonWebSocketServletTest.java b/bundles/org.openhab.core.io.websocket/src/test/java/org/openhab/core/io/websocket/CommonWebSocketServletTest.java index e6047129d96..677366812a5 100644 --- a/bundles/org.openhab.core.io.websocket/src/test/java/org/openhab/core/io/websocket/CommonWebSocketServletTest.java +++ b/bundles/org.openhab.core.io.websocket/src/test/java/org/openhab/core/io/websocket/CommonWebSocketServletTest.java @@ -20,17 +20,13 @@ import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import java.util.Map; -import javax.servlet.ServletException; - import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jetty.websocket.api.WebSocketPolicy; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeRequest; -import org.eclipse.jetty.websocket.servlet.ServletUpgradeResponse; -import org.eclipse.jetty.websocket.servlet.WebSocketCreator; -import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeRequest; +import org.eclipse.jetty.ee10.websocket.server.JettyServerUpgradeResponse; +import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketCreator; +import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServletFactory; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -44,7 +40,8 @@ import org.openhab.core.io.rest.auth.AnonymousUserSecurityContext; import org.openhab.core.io.rest.auth.AuthFilter; import org.openhab.core.io.websocket.event.EventWebSocket; -import org.osgi.service.http.NamespaceException; + +import jakarta.servlet.ServletException; /** * The {@link CommonWebSocketServletTest} contains tests for the {@link EventWebSocket} @@ -59,19 +56,17 @@ public class CommonWebSocketServletTest { private @NonNullByDefault({}) CommonWebSocketServlet servlet; private @Mock @NonNullByDefault({}) AuthFilter authFilter; - private @Mock @NonNullByDefault({}) WebSocketServletFactory factory; + private @Mock @NonNullByDefault({}) JettyWebSocketServletFactory factory; private @Mock @NonNullByDefault({}) WebSocketAdapter testDefaultWsAdapter; private @Mock @NonNullByDefault({}) WebSocketAdapter testWsAdapter; - private @Mock @NonNullByDefault({}) WebSocketPolicy wsPolicy; - private @Mock @NonNullByDefault({}) ServletUpgradeRequest request; - private @Mock @NonNullByDefault({}) ServletUpgradeResponse response; - private @Captor @NonNullByDefault({}) ArgumentCaptor webSocketCreatorAC; + private @Mock @NonNullByDefault({}) JettyServerUpgradeRequest request; + private @Mock @NonNullByDefault({}) JettyServerUpgradeResponse response; + private @Captor @NonNullByDefault({}) ArgumentCaptor webSocketCreatorAC; @BeforeEach - public void setup() throws ServletException, NamespaceException, AuthenticationException, IOException { + public void setup() throws ServletException, AuthenticationException, IOException { servlet = new CommonWebSocketServlet(authFilter); - when(factory.getPolicy()).thenReturn(wsPolicy); servlet.configure(factory); verify(factory).setCreator(webSocketCreatorAC.capture()); when(request.getParameterMap()).thenReturn(Map.of()); @@ -83,14 +78,14 @@ public void setup() throws ServletException, NamespaceException, AuthenticationE } @Test - public void createWebsocketUsingDefaultAdapterPath() throws URISyntaxException { + public void createWebsocketUsingDefaultAdapterPath() throws Exception { when(request.getRequestURI()).thenReturn(new URI("http://127.0.0.1:8080/ws")); webSocketCreatorAC.getValue().createWebSocket(request, response); verify(testDefaultWsAdapter, times(1)).createWebSocket(request, response); } @Test - public void createWebsocketUsingAdapterPath() throws URISyntaxException { + public void createWebsocketUsingAdapterPath() throws Exception { when(request.getRequestURI()).thenReturn(new URI("http://127.0.0.1:8080/ws/" + testAdapterId)); webSocketCreatorAC.getValue().createWebSocket(request, response); verify(testWsAdapter, times(1)).createWebSocket(request, response); diff --git a/bundles/org.openhab.core.io.websocket/src/test/java/org/openhab/core/io/websocket/EventWebSocketTest.java b/bundles/org.openhab.core.io.websocket/src/test/java/org/openhab/core/io/websocket/EventWebSocketTest.java index 2e434be22f8..24983e69f33 100644 --- a/bundles/org.openhab.core.io.websocket/src/test/java/org/openhab/core/io/websocket/EventWebSocketTest.java +++ b/bundles/org.openhab.core.io.websocket/src/test/java/org/openhab/core/io/websocket/EventWebSocketTest.java @@ -28,7 +28,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.jetty.websocket.api.RemoteEndpoint; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.StatusCode; import org.junit.jupiter.api.BeforeEach; @@ -74,7 +73,6 @@ public class EventWebSocketTest { private @Mock @NonNullByDefault({}) ItemRegistry itemRegistry; private @Mock @NonNullByDefault({}) EventPublisher eventPublisher; private @Mock @NonNullByDefault({}) Session session; - private @Mock @NonNullByDefault({}) RemoteEndpoint remoteEndpoint; private @NonNullByDefault({}) ItemEventUtility itemEventUtility; private @NonNullByDefault({}) EventWebSocket eventWebSocket; @@ -84,12 +82,11 @@ public void setup() throws ItemNotFoundException { itemEventUtility = new ItemEventUtility(gson, itemRegistry); eventWebSocket = new EventWebSocket(gson, servlet, itemEventUtility, eventPublisher); - when(session.getRemote()).thenReturn(remoteEndpoint); - when(remoteEndpoint.getInetSocketAddress()).thenReturn(new InetSocketAddress(47115)); + when(session.getRemoteSocketAddress()).thenReturn(new InetSocketAddress(47115)); when(itemRegistry.getItem(eq(TEST_ITEM_NAME))).thenReturn(TEST_ITEM); - eventWebSocket.onConnect(session); + eventWebSocket.onOpen(session); verify(servlet).registerListener(eventWebSocket); } @@ -199,7 +196,7 @@ public void eventFromBusSent() throws IOException { eventWebSocket.processEvent(event); EventDTO eventDTO = new EventDTO(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(eventDTO)), any()); + verify(session).sendText(eq(gson.toJson(eventDTO)), any()); } @Test @@ -209,18 +206,18 @@ public void eventFromBusFilterType() throws IOException { EventDTO responseEventDTO = new EventDTO(WEBSOCKET_EVENT_TYPE, WEBSOCKET_TOPIC_PREFIX + "filter/type", eventDTO.payload, null, null); eventWebSocket.onText(gson.toJson(eventDTO)); - verify(remoteEndpoint).sendString(eq(gson.toJson(responseEventDTO)), any()); + verify(session).sendText(eq(gson.toJson(responseEventDTO)), any()); // subscribed type is sent Event event = ItemEventFactory.createCommandEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); // not subscribed event not sent event = ItemEventFactory.createStateEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint, times(2)).sendString(any(), any()); + verify(session, times(2)).sendText(any(), any()); } @Test @@ -230,17 +227,17 @@ public void eventFromBusFilterSource() throws IOException { EventDTO responseEventDTO = new EventDTO(WEBSOCKET_EVENT_TYPE, WEBSOCKET_TOPIC_PREFIX + "filter/source", eventDTO.payload, null, null); eventWebSocket.onText(gson.toJson(eventDTO)); - verify(remoteEndpoint).sendString(eq(gson.toJson(responseEventDTO)), any()); + verify(session).sendText(eq(gson.toJson(responseEventDTO)), any()); // non-matching is sent Event event = ItemEventFactory.createCommandEvent(TEST_ITEM_NAME, DecimalType.ZERO); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); // matching is not sent event = ItemEventFactory.createStateEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint, times(2)).sendString(any(), any()); + verify(session, times(2)).sendText(any(), any()); } @Test @@ -258,36 +255,36 @@ public void eventFromBusFilterIncludeTopic() throws IOException { EventDTO responseEventDTO = new EventDTO(WEBSOCKET_EVENT_TYPE, WEBSOCKET_TOPIC_PREFIX + "filter/topic", eventDTO.payload, null, null); eventWebSocket.onText(gson.toJson(eventDTO)); - verify(remoteEndpoint).sendString(eq(gson.toJson(responseEventDTO)), any()); - clearInvocations(remoteEndpoint); + verify(session).sendText(eq(gson.toJson(responseEventDTO)), any()); + clearInvocations(session); // subscribed topics are sent Event event = ItemEventFactory.createCommandEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); event = ItemEventFactory.createStateChangedEvent(TEST_ITEM_NAME, DecimalType.ZERO, DecimalType.ZERO, null, null); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); event = ItemEventFactory.createStateEvent(REX_TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); - clearInvocations(remoteEndpoint); + clearInvocations(session); // not subscribed topics are not sent event = ItemEventFactory.createCommandEvent(REX_TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint, never()).sendString(any(), any()); + verify(session, never()).sendText(any(), any()); event = ItemEventFactory.createStateEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint, never()).sendString(any(), any()); + verify(session, never()).sendText(any(), any()); } @Test @@ -300,38 +297,38 @@ public void eventFromBusFilterExcludeTopic() throws IOException { EventDTO responseEventDTO = new EventDTO(WEBSOCKET_EVENT_TYPE, WEBSOCKET_TOPIC_PREFIX + "filter/topic", eventDTO.payload, null, null); eventWebSocket.onText(gson.toJson(eventDTO)); - verify(remoteEndpoint).sendString(eq(gson.toJson(responseEventDTO)), any()); - clearInvocations(remoteEndpoint); + verify(session).sendText(eq(gson.toJson(responseEventDTO)), any()); + clearInvocations(session); // excluded topics are not sent Event event = ItemEventFactory.createCommandEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint, never()).sendString(any(), any()); + verify(session, never()).sendText(any(), any()); event = ItemEventFactory.createStateEvent(REX_TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint, never()).sendString(any(), any()); + verify(session, never()).sendText(any(), any()); // not excluded topics are sent event = ItemEventFactory.createCommandEvent(REX_TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); event = ItemEventFactory.createStateChangedEvent(TEST_ITEM_NAME, DecimalType.ZERO, DecimalType.ZERO, null, null); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); event = ItemEventFactory.createStateEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); event = ItemEventFactory.createStateEvent("anotherItem", DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); } @Test @@ -341,23 +338,23 @@ public void eventFromBusFilterIncludeAndExcludeTopic() throws IOException { EventDTO responseEventDTO = new EventDTO(WEBSOCKET_EVENT_TYPE, WEBSOCKET_TOPIC_PREFIX + "filter/topic", eventDTO.payload, null, null); eventWebSocket.onText(gson.toJson(eventDTO)); - verify(remoteEndpoint).sendString(eq(gson.toJson(responseEventDTO)), any()); - clearInvocations(remoteEndpoint); + verify(session).sendText(eq(gson.toJson(responseEventDTO)), any()); + clearInvocations(session); // included topics are sent Event event = ItemEventFactory.createStateChangedEvent(TEST_ITEM_NAME, DecimalType.ZERO, DecimalType.ZERO, null, null); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); event = ItemEventFactory.createStateEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint).sendString(eq(gson.toJson(new EventDTO(event))), any()); + verify(session).sendText(eq(gson.toJson(new EventDTO(event))), any()); // excluded sub-topics are not sent event = ItemEventFactory.createCommandEvent(TEST_ITEM_NAME, DecimalType.ZERO, REMOTE_WEBSOCKET_IMPLEMENTATION); eventWebSocket.processEvent(event); - verify(remoteEndpoint, times(2)).sendString(any(), any()); + verify(session, times(2)).sendText(any(), any()); } private void assertEventProcessing(EventDTO incoming, @Nullable Event expectedEvent, @@ -372,9 +369,9 @@ private void assertEventProcessing(EventDTO incoming, @Nullable Event expectedEv if (expectedResponse != null) { String expectedResponseString = gson.toJson(expectedResponse); - verify(remoteEndpoint).sendString(eq(expectedResponseString), any()); + verify(session).sendText(eq(expectedResponseString), any()); } else { - verify(remoteEndpoint, never()).sendString(any()); + verify(session, never()).sendText(any(), any()); } } } diff --git a/bundles/org.openhab.core.karaf/src/main/java/org/openhab/core/karaf/internal/LoggerResource.java b/bundles/org.openhab.core.karaf/src/main/java/org/openhab/core/karaf/internal/LoggerResource.java index 2803a81641e..2a2c6944956 100644 --- a/bundles/org.openhab.core.karaf/src/main/java/org/openhab/core/karaf/internal/LoggerResource.java +++ b/bundles/org.openhab.core.karaf/src/main/java/org/openhab/core/karaf/internal/LoggerResource.java @@ -16,17 +16,6 @@ import java.util.regex.Pattern; import javax.annotation.security.RolesAllowed; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.UriInfo; import org.apache.karaf.log.core.Level; import org.apache.karaf.log.core.LogService; @@ -38,11 +27,11 @@ import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -51,6 +40,17 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.PUT; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.UriInfo; /** * This class acts as a REST resource for changing logging configuration. @@ -58,9 +58,9 @@ * @author Jan N. Klug - Initial contribution */ @Component -@JaxrsResource -@JaxrsName(LoggerResource.PATH_LOGGING) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(LoggerResource.PATH_LOGGING) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(LoggerResource.PATH_LOGGING) @RolesAllowed({ Role.ADMIN }) diff --git a/bundles/org.openhab.core.model.yaml/pom.xml b/bundles/org.openhab.core.model.yaml/pom.xml index cf6e33fe798..0c7066a6d27 100644 --- a/bundles/org.openhab.core.model.yaml/pom.xml +++ b/bundles/org.openhab.core.model.yaml/pom.xml @@ -40,5 +40,10 @@ org.openhab.core.automation ${project.version} + + jakarta.xml.bind + jakarta.xml.bind-api + 3.0.0 + diff --git a/bundles/org.openhab.core.test/src/main/java/org/openhab/core/test/TestServer.java b/bundles/org.openhab.core.test/src/main/java/org/openhab/core/test/TestServer.java index cc3fbb82589..aa4b6ccc9b6 100644 --- a/bundles/org.openhab.core.test/src/main/java/org/openhab/core/test/TestServer.java +++ b/bundles/org.openhab.core.test/src/main/java/org/openhab/core/test/TestServer.java @@ -14,16 +14,16 @@ import java.util.concurrent.CompletableFuture; -import javax.servlet.Servlet; - import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jetty.ee10.servlet.ServletContextHandler; +import org.eclipse.jetty.ee10.servlet.ServletHolder; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.servlet.ServletHandler; -import org.eclipse.jetty.servlet.ServletHolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.Servlet; + /** * Embedded jetty server used in the tests. * @@ -68,9 +68,10 @@ public CompletableFuture startServer() { Thread thread = new Thread(new Runnable() { @Override public void run() { - ServletHandler handler = new ServletHandler(); - handler.addServletWithMapping(servletHolder, "/*"); - server.setHandler(handler); + ServletContextHandler context = new ServletContextHandler(); + context.setContextPath("/"); + context.addServlet(servletHolder, "/*"); + server.setHandler(context); // HTTP connector ServerConnector http = new ServerConnector(server); diff --git a/bundles/org.openhab.core.thing/pom.xml b/bundles/org.openhab.core.thing/pom.xml index f472246b98e..7e9b31af50d 100644 --- a/bundles/org.openhab.core.thing/pom.xml +++ b/bundles/org.openhab.core.thing/pom.xml @@ -51,8 +51,8 @@ - org.jvnet.jaxb2.maven2 - maven-jaxb2-plugin + org.jvnet.jaxb + jaxb-maven-plugin schema/update schema/catalog.cat diff --git a/bundles/org.openhab.core.thing/schema/binding/bindings.xjb b/bundles/org.openhab.core.thing/schema/binding/bindings.xjb index 7cb574f3cd9..621878e14ea 100644 --- a/bundles/org.openhab.core.thing/schema/binding/bindings.xjb +++ b/bundles/org.openhab.core.thing/schema/binding/bindings.xjb @@ -1,5 +1,5 @@ - + diff --git a/bundles/org.openhab.core.thing/schema/update/update-description-1.0.0.xsd b/bundles/org.openhab.core.thing/schema/update/update-description-1.0.0.xsd index b9503477eef..8e1e1e3c983 100644 --- a/bundles/org.openhab.core.thing/schema/update/update-description-1.0.0.xsd +++ b/bundles/org.openhab.core.thing/schema/update/update-description-1.0.0.xsd @@ -1,6 +1,6 @@ - diff --git a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/update/ThingUpdateInstructionReaderImpl.java b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/update/ThingUpdateInstructionReaderImpl.java index adcb1826411..171c2881530 100644 --- a/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/update/ThingUpdateInstructionReaderImpl.java +++ b/bundles/org.openhab.core.thing/src/main/java/org/openhab/core/thing/internal/update/ThingUpdateInstructionReaderImpl.java @@ -20,10 +20,6 @@ import java.util.List; import java.util.Map; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.config.core.ConfigDescriptionRegistry; import org.openhab.core.thing.ThingTypeUID; @@ -43,6 +39,10 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Unmarshaller; + /** * The {@link ThingUpdateInstructionReaderImpl} is an implementation of {@link ThingUpdateInstructionReader} * diff --git a/bundles/org.openhab.core.ui.icon/src/main/java/org/openhab/core/ui/icon/internal/IconServlet.java b/bundles/org.openhab.core.ui.icon/src/main/java/org/openhab/core/ui/icon/internal/IconServlet.java index 89737d5cea9..49ad2547abf 100644 --- a/bundles/org.openhab.core.ui.icon/src/main/java/org/openhab/core/ui/icon/internal/IconServlet.java +++ b/bundles/org.openhab.core.ui.icon/src/main/java/org/openhab/core/ui/icon/internal/IconServlet.java @@ -19,12 +19,6 @@ import java.util.List; import java.util.Map; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jetty.io.EofException; @@ -36,12 +30,18 @@ import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletAsyncSupported; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletAsyncSupported; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletName; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletPattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * Registers a servlet that serves icons through {@link IconProvider}s. * @@ -92,6 +92,7 @@ protected void modified(Map config) { } @Override + @NonNullByDefault({}) protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String category = getCategory(req); if (category.isEmpty()) { diff --git a/bundles/org.openhab.core.ui.icon/src/main/java/org/openhab/core/ui/icon/internal/IconSetResource.java b/bundles/org.openhab.core.ui.icon/src/main/java/org/openhab/core/ui/icon/internal/IconSetResource.java index 0d85e862926..b4610c02258 100644 --- a/bundles/org.openhab.core.ui.icon/src/main/java/org/openhab/core/ui/icon/internal/IconSetResource.java +++ b/bundles/org.openhab.core.ui.icon/src/main/java/org/openhab/core/ui/icon/internal/IconSetResource.java @@ -16,13 +16,6 @@ import java.util.List; import java.util.Locale; -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.io.rest.LocaleService; @@ -35,11 +28,11 @@ import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.jaxrs.whiteboard.JaxrsWhiteboardConstants; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JSONRequired; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsApplicationSelect; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsName; -import org.osgi.service.jaxrs.whiteboard.propertytypes.JaxrsResource; +import org.osgi.service.jakartars.whiteboard.JakartarsWhiteboardConstants; +import org.osgi.service.jakartars.whiteboard.propertytypes.JSONRequired; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsApplicationSelect; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsName; +import org.osgi.service.jakartars.whiteboard.propertytypes.JakartarsResource; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -48,6 +41,12 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.HeaderParam; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; /** * This is a REST resource that provides information about available icon sets. @@ -57,9 +56,9 @@ * @author Wouter Born - Migrated to OpenAPI annotations */ @Component -@JaxrsResource -@JaxrsName(IconSetResource.PATH_ICONSETS) -@JaxrsApplicationSelect("(" + JaxrsWhiteboardConstants.JAX_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") +@JakartarsResource +@JakartarsName(IconSetResource.PATH_ICONSETS) +@JakartarsApplicationSelect("(" + JakartarsWhiteboardConstants.JAKARTA_RS_NAME + "=" + RESTConstants.JAX_RS_NAME + ")") @JSONRequired @Path(IconSetResource.PATH_ICONSETS) @Tag(name = IconSetResource.PATH_ICONSETS) diff --git a/bundles/org.openhab.core.ui.icon/src/test/java/org/openhab/core/ui/icon/internal/IconServletTest.java b/bundles/org.openhab.core.ui.icon/src/test/java/org/openhab/core/ui/icon/internal/IconServletTest.java index c274362718e..d3a6f22764b 100644 --- a/bundles/org.openhab.core.ui.icon/src/test/java/org/openhab/core/ui/icon/internal/IconServletTest.java +++ b/bundles/org.openhab.core.ui.icon/src/test/java/org/openhab/core/ui/icon/internal/IconServletTest.java @@ -20,12 +20,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.junit.jupiter.api.BeforeEach; @@ -36,6 +30,12 @@ import org.openhab.core.ui.icon.IconProvider; import org.openhab.core.ui.icon.IconSet.Format; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.WriteListener; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * Tests for {@link IconServlet}. * diff --git a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/chart/ChartServlet.java b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/chart/ChartServlet.java index b2ed591284f..9a7fb200f7f 100644 --- a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/chart/ChartServlet.java +++ b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/chart/ChartServlet.java @@ -28,12 +28,6 @@ import javax.imageio.ImageIO; import javax.imageio.stream.ImageOutputStream; -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; @@ -48,11 +42,18 @@ import org.osgi.service.component.annotations.Reference; import org.osgi.service.component.annotations.ReferenceCardinality; import org.osgi.service.component.annotations.ReferencePolicy; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletName; -import org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletName; +import org.osgi.service.servlet.whiteboard.propertytypes.HttpWhiteboardServletPattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * This servlet generates time-series charts for a given set of items. It * accepts the following HTTP parameters: @@ -193,6 +194,7 @@ private void applyConfig(@Nullable Map config) { @SuppressWarnings("null") @Override + @NonNullByDefault({}) protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { logger.debug("Received incoming chart request: {}", req); diff --git a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/AsyncProxyServlet.java b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/AsyncProxyServlet.java index 35eb1c9729a..bd28d0a6b64 100644 --- a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/AsyncProxyServlet.java +++ b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/AsyncProxyServlet.java @@ -13,78 +13,25 @@ package org.openhab.core.ui.internal.proxy; import java.io.Serial; -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.Request; -import org.eclipse.jetty.util.ssl.SslContextFactory; /** - * This version of the proxy servlet uses asynchronous I/O and request processing, and is based on Jetty's proxy - * servlets. It depends on Servlet API 3.0 or later. + * This version of the proxy servlet uses the blocking proxy implementation. + * The Jetty 12 async proxy servlet API is not available as an EE10 servlet; + * this class is retained for API compatibility and delegates to {@link BlockingProxyServlet}. * * @author John Cocula - Initial contribution */ -public class AsyncProxyServlet extends org.eclipse.jetty.proxy.AsyncProxyServlet { +public class AsyncProxyServlet extends BlockingProxyServlet { @Serial private static final long serialVersionUID = -4716754591953017795L; - private final ProxyServletService service; - AsyncProxyServlet(ProxyServletService service) { - this.service = service; + super(service); } @Override public String getServletInfo() { return "Proxy (async)"; } - - /** - * Override newHttpClient so we can proxy to HTTPS URIs. - */ - @Override - protected HttpClient newHttpClient() { - return new HttpClient(new SslContextFactory.Client()); - } - - @Override - protected void sendProxyRequest(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, - Request proxyRequest) { - if (service.proxyingVideoWidget(clientRequest)) { - // We disable the timeout for video - proxyRequest.timeout(0, TimeUnit.MILLISECONDS); - - // We request the browser to not cache the video - proxyResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); - proxyResponse.setHeader("Pragma", "no-cache"); - proxyResponse.setHeader("Expires", "0"); - } - super.sendProxyRequest(clientRequest, proxyResponse, proxyRequest); - } - - /** - * Add Basic Authentication header to request if user and password are specified in URI. - */ - @Override - protected void copyRequestHeaders(HttpServletRequest clientRequest, Request proxyRequest) { - super.copyRequestHeaders(clientRequest, proxyRequest); - - service.maybeAppendAuthHeader(service.uriFromRequest(clientRequest), proxyRequest); - } - - @Override - protected String rewriteTarget(HttpServletRequest request) { - return Objects.toString(service.uriFromRequest(request), null); - } - - @Override - protected void onProxyRewriteFailed(HttpServletRequest request, HttpServletResponse response) { - service.sendError(request, response); - } } diff --git a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/BlockingProxyServlet.java b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/BlockingProxyServlet.java index 664e6db935d..0ffc3cc2c1e 100644 --- a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/BlockingProxyServlet.java +++ b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/BlockingProxyServlet.java @@ -19,20 +19,20 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.Request; -import org.eclipse.jetty.client.api.Response; -import org.eclipse.jetty.client.util.InputStreamResponseListener; +import org.eclipse.jetty.client.InputStreamResponseListener; +import org.eclipse.jetty.client.Request; +import org.eclipse.jetty.client.Response; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * A blocking version of the proxy servlet that complies with Servlet API 2.4. * @@ -49,7 +49,13 @@ public class BlockingProxyServlet extends HttpServlet { private final ProxyServletService service; - private static HttpClient httpClient = new HttpClient(new SslContextFactory.Client()); + private static HttpClient httpClient = initHttpClient(); + + private static HttpClient initHttpClient() { + HttpClient client = new HttpClient(); + client.setSslContextFactory(new SslContextFactory.Client()); + return client; + } /** Timeout for HTTP requests in ms */ private static final int TIMEOUT = 15000; diff --git a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/ProxyServletService.java b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/ProxyServletService.java index 20dc71d4369..04c5f242657 100644 --- a/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/ProxyServletService.java +++ b/bundles/org.openhab.core.ui/src/main/java/org/openhab/core/ui/internal/proxy/ProxyServletService.java @@ -22,16 +22,9 @@ import java.util.Map; import java.util.Map.Entry; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.client.Request; import org.eclipse.jetty.http.HttpHeader; import org.openhab.core.library.types.StringType; import org.openhab.core.sitemap.Image; @@ -41,15 +34,22 @@ import org.openhab.core.sitemap.registry.SitemapRegistry; import org.openhab.core.types.State; import org.openhab.core.ui.items.ItemUIRegistry; +import org.ops4j.pax.web.service.http.HttpService; +import org.ops4j.pax.web.service.http.NamespaceException; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; import org.osgi.service.component.annotations.Reference; -import org.osgi.service.http.HttpService; -import org.osgi.service.http.NamespaceException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + /** * The proxy servlet is used by image and video widgets. As its name suggests, it proxies the content, so * that it is possible to include resources (images/videos) from the LAN in the web UI. This is @@ -307,7 +307,7 @@ void maybeAppendAuthHeader(@Nullable URI uri, Request request) { String authString = password != null ? user + ":" + password : user + ":"; String basicAuthentication = "Basic " + Base64.getEncoder().encodeToString(authString.getBytes()); - request.header(HttpHeader.AUTHORIZATION, basicAuthentication); + request.headers(f -> f.add(HttpHeader.AUTHORIZATION, basicAuthentication)); } } } diff --git a/bundles/org.openhab.core.ui/src/test/java/org/openhab/core/ui/internal/proxy/ProxyServletServiceTest.java b/bundles/org.openhab.core.ui/src/test/java/org/openhab/core/ui/internal/proxy/ProxyServletServiceTest.java index 434ff71da0b..1b74844a825 100644 --- a/bundles/org.openhab.core.ui/src/test/java/org/openhab/core/ui/internal/proxy/ProxyServletServiceTest.java +++ b/bundles/org.openhab.core.ui/src/test/java/org/openhab/core/ui/internal/proxy/ProxyServletServiceTest.java @@ -18,15 +18,16 @@ import java.net.URI; import java.util.Base64; import java.util.Map; - -import javax.servlet.http.HttpServletRequest; +import java.util.function.Consumer; import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jetty.client.api.Request; +import org.eclipse.jetty.client.Request; +import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpHeader; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; @@ -40,7 +41,9 @@ import org.openhab.core.sitemap.registry.SitemapRegistry; import org.openhab.core.types.UnDefType; import org.openhab.core.ui.items.ItemUIRegistry; -import org.osgi.service.http.HttpService; +import org.ops4j.pax.web.service.http.HttpService; + +import jakarta.servlet.http.HttpServletRequest; /** * Unit tests for the {@link ProxyServletService} class. @@ -111,8 +114,13 @@ public void testMaybeAppendAuthHeaderWithFullCredentials() { Request request = mock(Request.class); URI uri = URI.create("http://testuser:testpassword@127.0.0.1:8080/content"); service.maybeAppendAuthHeader(uri, request); - verify(request).header(HttpHeader.AUTHORIZATION, - "Basic " + Base64.getEncoder().encodeToString("testuser:testpassword".getBytes())); + @SuppressWarnings("unchecked") + ArgumentCaptor> captor = ArgumentCaptor.forClass(Consumer.class); + verify(request).headers(captor.capture()); + HttpFields.Mutable fields = HttpFields.build(); + captor.getValue().accept(fields); + assertEquals("Basic " + Base64.getEncoder().encodeToString("testuser:testpassword".getBytes()), + fields.get(HttpHeader.AUTHORIZATION)); } @Test @@ -120,8 +128,13 @@ public void testMaybeAppendAuthHeaderWithoutPassword() { Request request = mock(Request.class); URI uri = URI.create("http://testuser@127.0.0.1:8080/content"); service.maybeAppendAuthHeader(uri, request); - verify(request).header(HttpHeader.AUTHORIZATION, - "Basic " + Base64.getEncoder().encodeToString("testuser:".getBytes())); + @SuppressWarnings("unchecked") + ArgumentCaptor> captor = ArgumentCaptor.forClass(Consumer.class); + verify(request).headers(captor.capture()); + HttpFields.Mutable fields = HttpFields.build(); + captor.getValue().accept(fields); + assertEquals("Basic " + Base64.getEncoder().encodeToString("testuser:".getBytes()), + fields.get(HttpHeader.AUTHORIZATION)); } @Test @@ -129,7 +142,7 @@ public void testMaybeAppendAuthHeaderWithoutCredentials() { Request request = mock(Request.class); URI uri = URI.create("http://127.0.0.1:8080/content"); service.maybeAppendAuthHeader(uri, request); - verify(request, never()).header(any(HttpHeader.class), anyString()); + verify(request, never()).headers(any()); } @Test diff --git a/bundles/pom.xml b/bundles/pom.xml index 9c28355bf57..f30de83c27c 100644 --- a/bundles/pom.xml +++ b/bundles/pom.xml @@ -206,9 +206,9 @@ - org.jvnet.jaxb2.maven2 - maven-jaxb2-plugin - 0.15.3 + org.jvnet.jaxb + jaxb-maven-plugin + 3.0.2 schema schema/binding @@ -230,18 +230,10 @@ com.github.jaxb-xew-plugin jaxb-xew-plugin - 1.10 + 2.1 - - - - org.glassfish.jaxb - jaxb-runtime - 2.3.9 - - generate-jaxb-sources diff --git a/features/karaf/openhab-core/pom.xml b/features/karaf/openhab-core/pom.xml index 49191e20686..b84127d5bac 100644 --- a/features/karaf/openhab-core/pom.xml +++ b/features/karaf/openhab-core/pom.xml @@ -16,7 +16,7 @@ openHAB Core Features - 9.4.58.v20250814 + 12.0.23 5.18.1 diff --git a/features/karaf/openhab-core/src/main/feature/feature.xml b/features/karaf/openhab-core/src/main/feature/feature.xml index fab5add6b8b..6780f6d4537 100644 --- a/features/karaf/openhab-core/src/main/feature/feature.xml +++ b/features/karaf/openhab-core/src/main/feature/feature.xml @@ -40,6 +40,9 @@ openhab.tp;filter:="(feature=jna)" openhab.tp-jna + openhab.tp;filter:="(feature=jaxb)" + openhab.tp-jaxb + mvn:org.openhab.core.bundles/org.openhab.core.automation/${project.version} mvn:org.openhab.core.bundles/org.openhab.core.config.core/${project.version} mvn:org.openhab.core.bundles/org.openhab.core.config.discovery/${project.version} diff --git a/features/karaf/openhab-tp/pom.xml b/features/karaf/openhab-tp/pom.xml index bf84e2c3d36..b511d2749aa 100644 --- a/features/karaf/openhab-tp/pom.xml +++ b/features/karaf/openhab-tp/pom.xml @@ -15,7 +15,7 @@ openHAB Core :: Features :: Karaf :: Target Platform - 9.4.58.v20250814 + 12.0.23 5.18.1 diff --git a/features/karaf/openhab-tp/src/main/feature/feature.xml b/features/karaf/openhab-tp/src/main/feature/feature.xml index b14a4124133..cb959551d81 100644 --- a/features/karaf/openhab-tp/src/main/feature/feature.xml +++ b/features/karaf/openhab-tp/src/main/feature/feature.xml @@ -79,7 +79,6 @@ pax-web-jetty-extras pax-web-jetty-http2 pax-web-jetty-http2-extras - pax-web-jetty-http2-jdk9 pax-web-jetty-websockets @@ -100,17 +99,40 @@ mvn:org.yaml/snakeyaml/2.5 - - openhab.tp;feature=jax-rs-whiteboard;version=2.0.2 + + openhab.tp;feature=jax-rs-whiteboard;version=1.2.3 spifly + scr http-whiteboard - openhab.tp-cxf - openhab.tp-jaxb + + mvn:jakarta.ws.rs/jakarta.ws.rs-api/3.1.0 + mvn:org.osgi/org.osgi.service.jakartars/2.0.0 + mvn:org.osgi/org.osgi.service.condition/1.0.0 mvn:org.osgi/org.osgi.util.function/1.2.0 mvn:org.osgi/org.osgi.util.promise/1.3.0 - mvn:org.osgi/org.osgi.service.jaxrs/1.0.1 - mvn:org.apache.aries.component-dsl/org.apache.aries.component-dsl.component-dsl/1.2.2 - mvn:org.apache.aries.jax.rs/org.apache.aries.jax.rs.whiteboard/2.0.2 + + mvn:jakarta.inject/jakarta.inject-api/2.0.1 + mvn:jakarta.annotation/jakarta.annotation-api/2.1.1 + mvn:org.javassist/javassist/3.30.2-GA + mvn:org.glassfish.hk2.external/aopalliance-repackaged/3.0.6 + mvn:org.glassfish.hk2/hk2-api/3.0.6 + mvn:org.glassfish.hk2/hk2-utils/3.0.6 + mvn:org.glassfish.hk2/hk2-locator/3.0.6 + mvn:org.glassfish.hk2/osgi-resource-locator/1.0.3 + + mvn:org.glassfish.jersey.core/jersey-common/3.1.3 + mvn:org.glassfish.jersey.core/jersey-client/3.1.3 + mvn:org.glassfish.jersey.core/jersey-server/3.1.3 + mvn:org.glassfish.jersey.inject/jersey-hk2/3.1.3 + mvn:org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.3 + mvn:org.glassfish.jersey.containers/jersey-container-servlet/3.1.3 + mvn:org.glassfish.jersey.media/jersey-media-sse/3.1.3 + mvn:org.glassfish.jersey.media/jersey-media-jaxb/3.1.3 + mvn:jakarta.validation/jakarta.validation-api/3.0.2 + + mvn:org.eclipse.osgi-technology.rest/org.eclipse.osgitech.rest/1.2.3 + mvn:org.eclipse.osgi-technology.rest/org.eclipse.osgitech.rest.servlet.whiteboard/1.2.3 + mvn:org.eclipse.osgi-technology.rest/org.eclipse.osgitech.rest.sse/1.2.3 @@ -119,24 +141,6 @@ mvn:net.java.dev.jna/jna-platform/${jna.version} - - openhab.tp;feature=cxf;version=3.6.10 - openhab.tp-jaxws - mvn:com.fasterxml.woodstox/woodstox-core/6.6.2 - mvn:jakarta.jws/jakarta.jws-api/2.1.0 - mvn:jakarta.xml.ws/jakarta.xml.ws-api/2.3.3 - mvn:javax.servlet/javax.servlet-api/3.1.0 - mvn:org.apache.aries.spec/org.apache.aries.javax.jax.rs-api/1.0.4 - mvn:org.apache.ws.xmlschema/xmlschema-core/2.3.1 - mvn:org.codehaus.woodstox/stax2-api/4.2.2 - mvn:org.apache.cxf/cxf-core/3.6.10 - mvn:org.apache.cxf/cxf-rt-frontend-jaxrs/3.6.10 - mvn:org.apache.cxf/cxf-rt-rs-client/3.6.10 - mvn:org.apache.cxf/cxf-rt-rs-sse/3.6.10 - mvn:org.apache.cxf/cxf-rt-security/3.6.10 - mvn:org.apache.cxf/cxf-rt-transports-http/3.6.10 - - openhab.tp;feature=jbbp;version=3.0.1 mvn:org.openhab.osgiify/com.igormaznitsa.jbbp/3.0.1 @@ -163,11 +167,9 @@ - openhab.tp;feature=jaxb;version=2.3.9 - mvn:org.apache.servicemix.specs/org.apache.servicemix.specs.activation-api-1.2.1/1.2.1_3 - mvn:jakarta.xml.bind/jakarta.xml.bind-api/2.3.3 - mvn:com.sun.xml.bind/jaxb-osgi/2.3.9 - mvn:org.glassfish.hk2/osgi-resource-locator/1.0.3 + openhab.tp;feature=jaxb;version=3.0.2 + mvn:jakarta.xml.bind/jakarta.xml.bind-api/3.0.0 + mvn:com.sun.xml.bind/jaxb-osgi/3.0.2 @@ -199,11 +201,11 @@ - openhab.tp;feature=jupnp;version=3.0.4 + openhab.tp;feature=jupnp;version=4.0.0 http scr openhab.tp-httpclient - mvn:org.jupnp/org.jupnp/3.0.4 + mvn:org.jupnp/org.jupnp/4.0.0-SNAPSHOT @@ -275,16 +277,15 @@ - openhab.tp;feature=swagger-jaxrs;version=2.2.43 + openhab.tp;feature=swagger-jaxrs;version=2.2.31 openhab.tp-jax-rs-whiteboard openhab.tp-jackson - mvn:io.swagger.core.v3/swagger-annotations/2.2.43 - mvn:io.swagger.core.v3/swagger-core/2.2.43 - mvn:io.swagger.core.v3/swagger-integration/2.2.43 - mvn:io.swagger.core.v3/swagger-jaxrs2/2.2.43 - mvn:io.swagger.core.v3/swagger-models/2.2.43 - mvn:jakarta.validation/jakarta.validation-api/2.0.2 - mvn:org.javassist/javassist/3.30.2-GA + mvn:jakarta.xml.bind/jakarta.xml.bind-api/3.0.0 + mvn:io.swagger.core.v3/swagger-annotations-jakarta/2.2.31 + mvn:io.swagger.core.v3/swagger-core-jakarta/2.2.31 + mvn:io.swagger.core.v3/swagger-integration-jakarta/2.2.31 + mvn:io.swagger.core.v3/swagger-jaxrs2-jakarta/2.2.31 + mvn:io.swagger.core.v3/swagger-models-jakarta/2.2.31 diff --git a/itests/itest-include.bndrun b/itests/itest-include.bndrun index fb750c773ef..c4cd39d845a 100644 --- a/itests/itest-include.bndrun +++ b/itests/itest-include.bndrun @@ -29,7 +29,6 @@ Export-Package: -exportcontents: -runrequires.ee: \ - bnd.identity;id='org.apache.servicemix.specs.activation-api-1.2.1',\ bnd.identity;id='org.apache.servicemix.specs.annotation-api-1.3',\ bnd.identity;id='org.glassfish.hk2.osgi-resource-locator',\ bnd.identity;id='com.sun.xml.bind.jaxb-osgi' diff --git a/itests/org.openhab.core.addon.tests/itest.bndrun b/itests/org.openhab.core.addon.tests/itest.bndrun index a51784658c0..8bcf7fd978d 100644 --- a/itests/org.openhab.core.addon.tests/itest.bndrun +++ b/itests/org.openhab.core.addon.tests/itest.bndrun @@ -15,23 +15,21 @@ Fragment-Host: org.openhab.core.addon -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ javax.measure.unit-api;version='[2.2.0,2.2.1)',\ tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -47,13 +45,13 @@ Fragment-Host: org.openhab.core.addon ch.qos.logback.core;version='[1.5.27,1.5.28)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree.analysis;version='[9.6.0,9.6.1)',\ @@ -65,4 +63,7 @@ Fragment-Host: org.openhab.core.addon org.openhab.core.config.core;version='[5.2.0,5.2.1)',\ org.openhab.core.test;version='[5.2.0,5.2.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ - org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)' + org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.auth.oauth2client.tests/itest.bndrun b/itests/org.openhab.core.auth.oauth2client.tests/itest.bndrun index 1a19033bb20..ae7b29d80fa 100644 --- a/itests/org.openhab.core.auth.oauth2client.tests/itest.bndrun +++ b/itests/org.openhab.core.auth.oauth2client.tests/itest.bndrun @@ -11,16 +11,14 @@ Fragment-Host: org.openhab.core.auth.oauth2client -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ net.bytebuddy.byte-buddy-agent;version='[1.17.7,1.17.8)',\ @@ -30,7 +28,7 @@ Fragment-Host: org.openhab.core.auth.oauth2client tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -47,21 +45,23 @@ Fragment-Host: org.openhab.core.auth.oauth2client xstream;version='[1.4.21,1.4.22)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.alpn.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.hpack;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.api;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.common;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.alpn.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.hpack;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.api;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.common;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -77,4 +77,7 @@ Fragment-Host: org.openhab.core.auth.oauth2client org.openhab.core.test;version='[5.2.0,5.2.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ - org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)' + org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.automation.integration.tests/itest.bndrun b/itests/org.openhab.core.automation.integration.tests/itest.bndrun index e21ff23413b..e2672fc722e 100644 --- a/itests/org.openhab.core.automation.integration.tests/itest.bndrun +++ b/itests/org.openhab.core.automation.integration.tests/itest.bndrun @@ -11,16 +11,14 @@ Fragment-Host: org.openhab.core.automation -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -31,7 +29,7 @@ Fragment-Host: org.openhab.core.automation tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -49,13 +47,13 @@ Fragment-Host: org.openhab.core.automation org.threeten.extra;version='[1.8.0,1.8.1)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -83,4 +81,7 @@ Fragment-Host: org.openhab.core.automation com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ - org.yaml.snakeyaml;version='[2.5.0,2.5.1)' + org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.automation.module.core.tests/itest.bndrun b/itests/org.openhab.core.automation.module.core.tests/itest.bndrun index 65ea5c6d4e1..d47f7c8d13d 100644 --- a/itests/org.openhab.core.automation.module.core.tests/itest.bndrun +++ b/itests/org.openhab.core.automation.module.core.tests/itest.bndrun @@ -11,16 +11,14 @@ Fragment-Host: org.openhab.core.automation -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -31,7 +29,7 @@ Fragment-Host: org.openhab.core.automation tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -49,13 +47,13 @@ Fragment-Host: org.openhab.core.automation org.threeten.extra;version='[1.8.0,1.8.1)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -83,4 +81,7 @@ Fragment-Host: org.openhab.core.automation com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ - org.yaml.snakeyaml;version='[2.5.0,2.5.1)' + org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.automation.module.script.tests/itest.bndrun b/itests/org.openhab.core.automation.module.script.tests/itest.bndrun index 0c5b4e783f1..d600683984d 100644 --- a/itests/org.openhab.core.automation.module.script.tests/itest.bndrun +++ b/itests/org.openhab.core.automation.module.script.tests/itest.bndrun @@ -11,23 +11,21 @@ Fragment-Host: org.openhab.core.automation.module.script -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ javax.measure.unit-api;version='[2.2.0,2.2.1)',\ tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -45,13 +43,13 @@ Fragment-Host: org.openhab.core.automation.module.script org.threeten.extra;version='[1.8.0,1.8.1)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -80,4 +78,7 @@ Fragment-Host: org.openhab.core.automation.module.script com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ - org.yaml.snakeyaml;version='[2.5.0,2.5.1)' + org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.automation.module.timer.tests/itest.bndrun b/itests/org.openhab.core.automation.module.timer.tests/itest.bndrun index e6dd0d28abb..8acc9fe1966 100644 --- a/itests/org.openhab.core.automation.module.timer.tests/itest.bndrun +++ b/itests/org.openhab.core.automation.module.timer.tests/itest.bndrun @@ -11,16 +11,14 @@ Fragment-Host: org.openhab.core.automation -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -31,7 +29,7 @@ Fragment-Host: org.openhab.core.automation tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -49,13 +47,13 @@ Fragment-Host: org.openhab.core.automation org.threeten.extra;version='[1.8.0,1.8.1)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -83,4 +81,7 @@ Fragment-Host: org.openhab.core.automation com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ - org.yaml.snakeyaml;version='[2.5.0,2.5.1)' + org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.automation.tests/itest.bndrun b/itests/org.openhab.core.automation.tests/itest.bndrun index a664ba31acc..bd3c0a41407 100644 --- a/itests/org.openhab.core.automation.tests/itest.bndrun +++ b/itests/org.openhab.core.automation.tests/itest.bndrun @@ -11,16 +11,14 @@ Fragment-Host: org.openhab.core.automation -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -31,7 +29,7 @@ Fragment-Host: org.openhab.core.automation tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -49,13 +47,13 @@ Fragment-Host: org.openhab.core.automation org.threeten.extra;version='[1.8.0,1.8.1)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -83,4 +81,7 @@ Fragment-Host: org.openhab.core.automation com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ - org.yaml.snakeyaml;version='[2.5.0,2.5.1)' + org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.config.core.tests/itest.bndrun b/itests/org.openhab.core.config.core.tests/itest.bndrun index f0c45394544..570853c5357 100644 --- a/itests/org.openhab.core.config.core.tests/itest.bndrun +++ b/itests/org.openhab.core.config.core.tests/itest.bndrun @@ -12,16 +12,14 @@ Fragment-Host: org.openhab.core.config.core -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -33,7 +31,7 @@ Fragment-Host: org.openhab.core.config.core tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -49,13 +47,13 @@ Fragment-Host: org.openhab.core.config.core ch.qos.logback.core;version='[1.5.27,1.5.28)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -67,4 +65,7 @@ Fragment-Host: org.openhab.core.config.core org.openhab.core.test;version='[5.2.0,5.2.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ - org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)' + org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.config.discovery.mdns.tests/itest.bndrun b/itests/org.openhab.core.config.discovery.mdns.tests/itest.bndrun index d5831e6936c..2eb4a3ced2f 100644 --- a/itests/org.openhab.core.config.discovery.mdns.tests/itest.bndrun +++ b/itests/org.openhab.core.config.discovery.mdns.tests/itest.bndrun @@ -11,9 +11,7 @@ Fragment-Host: org.openhab.core.config.discovery.mdns -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ si-units;version='[2.2.3,2.2.4)',\ @@ -21,7 +19,7 @@ Fragment-Host: org.openhab.core.config.discovery.mdns org.osgi.util.function;version='[1.2.0,1.2.1)',\ javax.jmdns;version='[3.6.3,3.6.4)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -32,7 +30,7 @@ Fragment-Host: org.openhab.core.config.discovery.mdns tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -49,13 +47,13 @@ Fragment-Host: org.openhab.core.config.discovery.mdns org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -75,4 +73,7 @@ Fragment-Host: org.openhab.core.config.discovery.mdns biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - org.openhab.core.semantics;version='[5.2.0,5.2.1)' + org.openhab.core.semantics;version='[5.2.0,5.2.1)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.config.discovery.tests/itest.bndrun b/itests/org.openhab.core.config.discovery.tests/itest.bndrun index 205a5f865e7..6e92d707434 100644 --- a/itests/org.openhab.core.config.discovery.tests/itest.bndrun +++ b/itests/org.openhab.core.config.discovery.tests/itest.bndrun @@ -12,16 +12,14 @@ Fragment-Host: org.openhab.core.config.discovery -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -33,7 +31,7 @@ Fragment-Host: org.openhab.core.config.discovery tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -50,13 +48,13 @@ Fragment-Host: org.openhab.core.config.discovery org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -74,4 +72,7 @@ Fragment-Host: org.openhab.core.config.discovery biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - org.openhab.core.semantics;version='[5.2.0,5.2.1)' + org.openhab.core.semantics;version='[5.2.0,5.2.1)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.config.discovery.usbserial.linuxsysfs.tests/itest.bndrun b/itests/org.openhab.core.config.discovery.usbserial.linuxsysfs.tests/itest.bndrun index e0c859f6841..d56ceb52cf1 100644 --- a/itests/org.openhab.core.config.discovery.usbserial.linuxsysfs.tests/itest.bndrun +++ b/itests/org.openhab.core.config.discovery.usbserial.linuxsysfs.tests/itest.bndrun @@ -11,16 +11,14 @@ Fragment-Host: org.openhab.core.config.discovery.usbserial.linuxsysfs -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -32,7 +30,7 @@ Fragment-Host: org.openhab.core.config.discovery.usbserial.linuxsysfs tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -49,13 +47,13 @@ Fragment-Host: org.openhab.core.config.discovery.usbserial.linuxsysfs org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -75,4 +73,7 @@ Fragment-Host: org.openhab.core.config.discovery.usbserial.linuxsysfs org.openhab.core.transform;version='[5.2.0,5.2.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ - org.openhab.core.semantics;version='[5.2.0,5.2.1)' + org.openhab.core.semantics;version='[5.2.0,5.2.1)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)' diff --git a/itests/org.openhab.core.config.discovery.usbserial.tests/itest.bndrun b/itests/org.openhab.core.config.discovery.usbserial.tests/itest.bndrun index 6de8b145f3b..fea3a4e40c3 100644 --- a/itests/org.openhab.core.config.discovery.usbserial.tests/itest.bndrun +++ b/itests/org.openhab.core.config.discovery.usbserial.tests/itest.bndrun @@ -21,16 +21,14 @@ Provide-Capability: \ -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -41,7 +39,7 @@ Provide-Capability: \ tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -58,13 +56,13 @@ Provide-Capability: \ org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -83,4 +81,7 @@ Provide-Capability: \ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - org.openhab.core.semantics;version='[5.2.0,5.2.1)' + org.openhab.core.semantics;version='[5.2.0,5.2.1)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.config.dispatch.tests/itest.bndrun b/itests/org.openhab.core.config.dispatch.tests/itest.bndrun index 03f6de2913a..03815c4293c 100644 --- a/itests/org.openhab.core.config.dispatch.tests/itest.bndrun +++ b/itests/org.openhab.core.config.dispatch.tests/itest.bndrun @@ -11,22 +11,20 @@ Fragment-Host: org.openhab.core.config.dispatch -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ javax.measure.unit-api;version='[2.2.0,2.2.1)',\ tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -42,13 +40,13 @@ Fragment-Host: org.openhab.core.config.dispatch ch.qos.logback.core;version='[1.5.27,1.5.28)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -60,4 +58,7 @@ Fragment-Host: org.openhab.core.config.dispatch org.openhab.core.test;version='[5.2.0,5.2.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ - org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)' + org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.ephemeris.tests/itest.bndrun b/itests/org.openhab.core.ephemeris.tests/itest.bndrun index b26f9dc550e..f3e42ba7c2f 100644 --- a/itests/org.openhab.core.ephemeris.tests/itest.bndrun +++ b/itests/org.openhab.core.ephemeris.tests/itest.bndrun @@ -16,23 +16,21 @@ feature.openhab-config: \ -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ javax.measure.unit-api;version='[2.2.0,2.2.1)',\ tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -49,13 +47,13 @@ feature.openhab-config: \ org.threeten.extra;version='[1.8.0,1.8.1)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -75,4 +73,7 @@ feature.openhab-config: \ com.fasterxml.jackson.core.jackson-annotations;version='[2.21.0,2.21.1)',\ com.fasterxml.jackson.core.jackson-core;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ - com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)' + com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.io.net.tests/itest.bndrun b/itests/org.openhab.core.io.net.tests/itest.bndrun index 0e3ca6664ee..f13eb1f1477 100644 --- a/itests/org.openhab.core.io.net.tests/itest.bndrun +++ b/itests/org.openhab.core.io.net.tests/itest.bndrun @@ -6,18 +6,16 @@ Fragment-Host: org.openhab.core.io.net -runrequires: \ bnd.identity;id='org.openhab.core.io.net.tests',\ bnd.identity;id='org.eclipse.jetty.http2.hpack',\ - bnd.identity;id='org.eclipse.jetty.websocket.server',\ + bnd.identity;id='org.eclipse.jetty.ee10.websocket.server',\ bnd.identity;id='org.apache.aries.spifly.dynamic.bundle' -runbundles: \ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ @@ -27,7 +25,7 @@ Fragment-Host: org.openhab.core.io.net tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -43,24 +41,26 @@ Fragment-Host: org.openhab.core.io.net ch.qos.logback.core;version='[1.5.27,1.5.28)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.alpn.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.hpack;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.api;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.servlet;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.alpn.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.hpack;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.api;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.websocket.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.websocket.servlet;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -72,4 +72,19 @@ Fragment-Host: org.openhab.core.io.net org.openhab.core.test;version='[5.2.0,5.2.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ - org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)' + org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ + jakarta.enterprise.cdi-api;version='[4.0.1,4.0.2)',\ + jakarta.enterprise.lang-model;version='[4.0.1,4.0.2)',\ + jakarta.interceptor-api;version='[2.1.0,2.1.1)',\ + jakarta.transaction-api;version='[2.0.1,2.0.2)',\ + org.eclipse.jetty.ee;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.plus;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.webapp;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.jndi;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.plus;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.xml;version='[12.0.23,12.0.24)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + jakarta.el-api;version='[5.0.0,5.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/ClientFactoryTest.java b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/ClientFactoryTest.java index 2f6cbf789b4..3802e1960a8 100644 --- a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/ClientFactoryTest.java +++ b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/ClientFactoryTest.java @@ -21,8 +21,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.client.ContentResponse; import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpMethod; import org.eclipse.jetty.http.HttpStatus; @@ -123,7 +123,7 @@ public void testHttp2Client() throws Exception { TestStreamAdapter streamAdapter = new TestStreamAdapter(); MetaData.Request request = new MetaData.Request(HttpMethod.GET.toString(), - new HttpURI(getServer().getHttpUri()), HttpVersion.HTTP_2, new HttpFields()); + HttpURI.from(getServer().getHttpUri().toString()), HttpVersion.HTTP_2, HttpFields.EMPTY); HeadersFrame headers = new HeadersFrame(request, null, true); @@ -133,8 +133,8 @@ public void testHttp2Client() throws Exception { client.start(); // establish session - client.connect(new InetSocketAddress(getServer().getHost(), getServer().getPort()), - new Session.Listener.Adapter(), sessionCompletable); + client.connect(new InetSocketAddress(getServer().getHost(), getServer().getPort()), new Session.Listener() { + }, sessionCompletable); Session session = sessionCompletable.get(WAIT_SECONDS, TimeUnit.SECONDS); assertNotNull(session); assertFalse(session.isClosed()); diff --git a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestHttpServlet.java b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestHttpServlet.java index 512baa44fc9..e5ea1dea675 100644 --- a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestHttpServlet.java +++ b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestHttpServlet.java @@ -16,15 +16,16 @@ import java.io.Serial; import java.nio.charset.StandardCharsets; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.core.MediaType; - import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.io.net.tests.ClientFactoryTest; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.ws.rs.core.MediaType; + /** * Servlet for org.openhab.core.io.net tests. * @@ -36,10 +37,12 @@ public class TestHttpServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) + protected void doGet(@Nullable HttpServletRequest request, @Nullable HttpServletResponse response) throws ServletException, IOException { - response.setContentType(MediaType.TEXT_PLAIN); - response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); - response.getWriter().write(ClientFactoryTest.RESPONSE); + if (response != null) { + response.setContentType(MediaType.TEXT_PLAIN); + response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); + response.getWriter().write(ClientFactoryTest.RESPONSE); + } } } diff --git a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestServer.java b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestServer.java index 25076d2c8eb..daee374148d 100644 --- a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestServer.java +++ b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestServer.java @@ -15,13 +15,14 @@ import java.net.URI; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jetty.ee10.servlet.ServletContextHandler; +import org.eclipse.jetty.ee10.servlet.ServletHolder; +import org.eclipse.jetty.ee10.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; -import org.eclipse.jetty.servlet.ServletHandler; -import org.eclipse.jetty.servlet.ServletHolder; /** * Embedded jetty server used in the tests. @@ -64,10 +65,12 @@ public URI getWebSocketUri() { } public void startServer() throws Exception { - ServletHandler handler = new ServletHandler(); - handler.addServletWithMapping(new ServletHolder(new TestHttpServlet()), SERVLET_PATH); - handler.addServletWithMapping(new ServletHolder(new TestWebSocketServlet()), WEBSOCKET_PATH); - server.setHandler(handler); + ServletContextHandler context = new ServletContextHandler(); + context.setContextPath("/"); + JettyWebSocketServletContainerInitializer.configure(context, null); + context.addServlet(new ServletHolder(new TestHttpServlet()), SERVLET_PATH); + context.addServlet(new ServletHolder(new TestWebSocketServlet()), WEBSOCKET_PATH); + server.setHandler(context); HttpConfiguration httpConfig = new HttpConfiguration(); HttpConnectionFactory h1 = new HttpConnectionFactory(httpConfig); diff --git a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestStreamAdapter.java b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestStreamAdapter.java index 1daac54f891..596e62b4672 100644 --- a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestStreamAdapter.java +++ b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestStreamAdapter.java @@ -12,33 +12,42 @@ */ package org.openhab.core.io.net.tests.internal; -import static org.junit.jupiter.api.Assertions.*; - +import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.concurrent.CompletableFuture; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jetty.http2.api.Stream; -import org.eclipse.jetty.http2.frames.DataFrame; -import org.eclipse.jetty.util.Callback; -import org.eclipse.jetty.websocket.api.annotations.WebSocket; /** * HTTP/2 stream adapter for org.openhab.core.io.net tests. * * @author Andrew Fiddian-Green - Initial contribution */ -@WebSocket @NonNullByDefault -public class TestStreamAdapter extends Stream.Listener.Adapter { +public class TestStreamAdapter implements Stream.Listener { public final CompletableFuture completable = new CompletableFuture<>(); @Override - public void onData(@Nullable Stream stream, @Nullable DataFrame frame, @Nullable Callback callback) { - assertNotNull(stream); - assertNotNull(frame); - assertTrue(frame.isEndStream()); - completable.complete(StandardCharsets.UTF_8.decode(frame.getData()).toString()); + public void onDataAvailable(@Nullable Stream stream) { + if (stream == null) { + return; + } + while (true) { + Stream.Data data = stream.readData(); + if (data == null) { + stream.demand(); + return; + } + boolean last = data.frame().isEndStream(); + ByteBuffer buffer = data.frame().getByteBuffer(); + String text = StandardCharsets.UTF_8.decode(buffer).toString(); + data.release(); + if (last) { + completable.complete(text); + return; + } + } } } diff --git a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestWebSocketAdapter.java b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestWebSocketAdapter.java index f8e35b2c47e..128ccbc259d 100644 --- a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestWebSocketAdapter.java +++ b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestWebSocketAdapter.java @@ -12,12 +12,10 @@ */ package org.openhab.core.io.net.tests.internal; -import java.io.IOException; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jetty.websocket.api.Callback; import org.eclipse.jetty.websocket.api.Session; -import org.eclipse.jetty.websocket.api.WebSocketAdapter; import org.openhab.core.io.net.tests.ClientFactoryTest; /** @@ -26,14 +24,12 @@ * @author Andrew Fiddian-Green - Initial contribution */ @NonNullByDefault -public class TestWebSocketAdapter extends WebSocketAdapter { +public class TestWebSocketAdapter implements Session.Listener.AutoDemanding { @Override - public void onWebSocketConnect(@Nullable Session session) { - super.onWebSocketConnect(session); - try { - getRemote().sendString(ClientFactoryTest.RESPONSE); - } catch (IOException e) { + public void onWebSocketOpen(@Nullable Session session) { + if (session != null) { + session.sendText(ClientFactoryTest.RESPONSE, Callback.NOOP); } } } diff --git a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestWebSocketServlet.java b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestWebSocketServlet.java index 53f9443e12b..a973a4f1093 100644 --- a/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestWebSocketServlet.java +++ b/itests/org.openhab.core.io.net.tests/src/main/java/org/openhab/core/io/net/tests/internal/TestWebSocketServlet.java @@ -16,8 +16,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.jetty.websocket.servlet.WebSocketServlet; -import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory; +import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServlet; +import org.eclipse.jetty.ee10.websocket.server.JettyWebSocketServletFactory; /** * Servlet for org.openhab.core.io.net tests. @@ -25,14 +25,12 @@ * @author Andrew Fiddian-Green - Initial contribution */ @NonNullByDefault -public class TestWebSocketServlet extends WebSocketServlet { +public class TestWebSocketServlet extends JettyWebSocketServlet { @Serial private static final long serialVersionUID = 1L; @Override - public void configure(@Nullable WebSocketServletFactory factory) { - if (factory != null) { - factory.register(TestWebSocketAdapter.class); - } + public void configure(@Nullable JettyWebSocketServletFactory factory) { + factory.setCreator((req, resp) -> new TestWebSocketAdapter()); } } diff --git a/itests/org.openhab.core.io.rest.core.tests/itest.bndrun b/itests/org.openhab.core.io.rest.core.tests/itest.bndrun index 9f32fcee8c3..bf4dc7541ba 100644 --- a/itests/org.openhab.core.io.rest.core.tests/itest.bndrun +++ b/itests/org.openhab.core.io.rest.core.tests/itest.bndrun @@ -6,28 +6,35 @@ Fragment-Host: org.openhab.core.io.rest.core -runrequires: \ bnd.identity;id='org.openhab.core.io.rest.core.tests' --runblacklist: \ - bnd.identity;id='jakarta.ws.rs-api' - # # done # -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ - org.osgi.service.jaxrs;version='[1.0.1,1.0.2)',\ + jakarta.ws.rs-api;version='[3.1.0,3.1.1)',\ + org.osgi.service.jakartars;version='[2.0.0,2.0.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ - org.apache.aries.component-dsl.component-dsl;version='[1.2.2,1.2.3)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)',\ + org.glassfish.jersey.core.jersey-common;version='[3.1.3,3.1.4)',\ + org.glassfish.jersey.core.jersey-client;version='[3.1.3,3.1.4)',\ + org.glassfish.jersey.core.jersey-server;version='[3.1.3,3.1.4)',\ + org.glassfish.jersey.inject.jersey-hk2;version='[3.1.3,3.1.4)',\ + org.glassfish.jersey.containers.jersey-container-servlet-core;version='[3.1.3,3.1.4)',\ + org.glassfish.jersey.containers.jersey-container-servlet;version='[3.1.3,3.1.4)',\ + org.glassfish.jersey.media.jersey-media-sse;version='[3.1.3,3.1.4)',\ + org.glassfish.jersey.media.jersey-media-jaxb;version='[3.1.3,3.1.4)',\ + jakarta.validation.jakarta.validation-api;version='[3.0.2,3.0.3)',\ + org.eclipse.osgitech.rest;version='[1.2.3,1.2.4)',\ + org.eclipse.osgitech.rest.servlet.whiteboard;version='[1.2.3,1.2.4)',\ + org.eclipse.osgitech.rest.sse;version='[1.2.3,1.2.4)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ - org.apache.aries.jax.rs.whiteboard;version='[2.0.2,2.0.3)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -39,20 +46,12 @@ Fragment-Host: org.openhab.core.io.rest.core tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ - org.apache.aries.javax.jax.rs-api;version='[1.0.4,1.0.5)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ org.osgi.util.promise;version='[1.3.0,1.3.1)',\ com.google.gson;version='[2.13.2,2.13.3)',\ - org.apache.cxf.cxf-core;version='[3.6.10,3.6.11)',\ - org.apache.cxf.cxf-rt-frontend-jaxrs;version='[3.6.10,3.6.11)',\ - org.apache.cxf.cxf-rt-rs-client;version='[3.6.10,3.6.11)',\ - org.apache.cxf.cxf-rt-rs-sse;version='[3.6.10,3.6.11)',\ - org.apache.cxf.cxf-rt-security;version='[3.6.10,3.6.11)',\ - org.apache.cxf.cxf-rt-transports-http;version='[3.6.10,3.6.11)',\ - org.apache.ws.xmlschema.core;version='[2.3.2,2.3.3)',\ junit-jupiter-api;version='[5.14.2,5.14.3)',\ junit-jupiter-engine;version='[5.14.2,5.14.3)',\ junit-jupiter-params;version='[5.14.2,5.14.3)',\ @@ -68,26 +67,24 @@ Fragment-Host: org.openhab.core.io.rest.core net.minidev.json-smart;version='[2.6.0,2.6.1)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.jaas;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.xml;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.xml;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree.analysis;version='[9.6.0,9.6.1)',\ org.objectweb.asm.util;version='[9.6.0,9.6.1)',\ - org.ops4j.pax.web.pax-web-api;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-jetty;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-runtime;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-spi;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-tomcat-common;version='[8.0.34,8.0.35)',\ - com.fasterxml.woodstox.woodstox-core;version='[6.6.2,6.6.3)',\ + org.ops4j.pax.web.pax-web-api;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-jetty;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-runtime;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-spi;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-tomcat-common;version='[11.0.1,11.0.2)',\ org.openhab.core;version='[5.2.0,5.2.1)',\ org.openhab.core.addon;version='[5.2.0,5.2.1)',\ org.openhab.core.config.core;version='[5.2.0,5.2.1)',\ @@ -102,7 +99,13 @@ Fragment-Host: org.openhab.core.io.rest.core org.openhab.core.test;version='[5.2.0,5.2.1)',\ org.openhab.core.thing;version='[5.2.0,5.2.1)',\ org.openhab.core.transform;version='[5.2.0,5.2.1)',\ - stax2-api;version='[4.2.2,4.2.3)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - org.osgi.service.cm;version='[1.6.1,1.6.2)' + org.osgi.service.cm;version='[1.6.1,1.6.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + javassist;version='[3.30.2,3.30.3)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.glassfish.hk2.api;version='[3.1.1,3.1.2)',\ + org.glassfish.hk2.external.aopalliance-repackaged;version='[3.1.1,3.1.2)',\ + org.glassfish.hk2.locator;version='[3.1.1,3.1.2)',\ + org.glassfish.hk2.utils;version='[3.1.1,3.1.2)' diff --git a/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/discovery/InboxResourceOSGITest.java b/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/discovery/InboxResourceOSGITest.java index 5f21c34b820..3d98ed6a2cd 100644 --- a/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/discovery/InboxResourceOSGITest.java +++ b/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/discovery/InboxResourceOSGITest.java @@ -16,9 +16,6 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -33,6 +30,9 @@ import org.openhab.core.thing.ThingUID; import org.openhab.core.thing.binding.builder.ThingBuilder; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; + /** * @author Christoph Knauf - Initial contribution */ diff --git a/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResourceOSGiTest.java b/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResourceOSGiTest.java index 96bb7c3ccb2..0b36de183e9 100644 --- a/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResourceOSGiTest.java +++ b/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/item/ItemResourceOSGiTest.java @@ -30,14 +30,6 @@ import java.util.Set; import java.util.stream.Stream; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.Request; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; -import javax.ws.rs.core.StreamingOutput; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.hamcrest.Matcher; @@ -71,6 +63,14 @@ import com.google.gson.JsonParser; import com.jayway.jsonpath.JsonPath; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; +import jakarta.ws.rs.core.StreamingOutput; +import jakarta.ws.rs.core.UriBuilder; +import jakarta.ws.rs.core.UriInfo; + /** * @author Henning Treu - Initial contribution */ diff --git a/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResourceOSGiTest.java b/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResourceOSGiTest.java index 2dba3514eab..8133605579b 100644 --- a/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResourceOSGiTest.java +++ b/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/link/ItemChannelLinkResourceOSGiTest.java @@ -27,12 +27,6 @@ import java.nio.charset.StandardCharsets; import java.util.List; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.StreamingOutput; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -54,6 +48,12 @@ import com.google.gson.JsonSyntaxException; import com.jayway.jsonpath.JsonPath; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.StreamingOutput; +import jakarta.ws.rs.core.UriBuilder; +import jakarta.ws.rs.core.UriInfo; + /** * @author Christoph Weitkamp - Initial contribution */ diff --git a/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/service/ConfigurableServiceResourceOSGiTest.java b/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/service/ConfigurableServiceResourceOSGiTest.java index 1e562a5adf2..a6c84cc0f39 100644 --- a/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/service/ConfigurableServiceResourceOSGiTest.java +++ b/itests/org.openhab.core.io.rest.core.tests/src/main/java/org/openhab/core/io/rest/core/internal/service/ConfigurableServiceResourceOSGiTest.java @@ -25,8 +25,6 @@ import java.util.Map; import java.util.Optional; -import javax.ws.rs.core.Response; - import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.junit.jupiter.api.BeforeEach; @@ -37,6 +35,8 @@ import org.osgi.service.cm.Configuration; import org.osgi.service.cm.ConfigurationAdmin; +import jakarta.ws.rs.core.Response; + /** * {@link ConfigurableServiceResourceOSGiTest} tests the ConfigurableService REST resource on the OSGi level. * diff --git a/itests/org.openhab.core.model.item.tests/itest.bndrun b/itests/org.openhab.core.model.item.tests/itest.bndrun index a7fa41e99aa..5edf8149640 100644 --- a/itests/org.openhab.core.model.item.tests/itest.bndrun +++ b/itests/org.openhab.core.model.item.tests/itest.bndrun @@ -15,10 +15,8 @@ Fragment-Host: org.openhab.core.model.item org.glassfish.hk2.external.aopalliance-repackaged;version='[3.1.1,3.1.2)',\ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ org.eclipse.emf.ecore.xmi;version='[2.37.0,2.37.1)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ @@ -31,7 +29,7 @@ Fragment-Host: org.openhab.core.model.item tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -51,65 +49,30 @@ Fragment-Host: org.openhab.core.model.item ch.qos.logback.classic;version='[1.5.27,1.5.28)',\ ch.qos.logback.core;version='[1.5.27,1.5.28)',\ org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ - org.threeten.extra;version='[1.8.0,1.8.1)',\ com.google.guava.failureaccess;version='[1.0.3,1.0.4)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ io.github.classgraph.classgraph;version='[4.8.184,4.8.185)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ - org.eclipse.jetty.alpn.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.hpack;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.jaas;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.api;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.xml;version='[9.4.58,9.4.59)',\ org.eclipse.xtend.lib;version='[2.41.0,2.41.1)',\ org.eclipse.xtend.lib.macro;version='[2.41.0,2.41.1)',\ org.eclipse.xtext;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.common.types;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.util;version='[2.41.0,2.41.1)',\ - org.eclipse.xtext.xbase;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.xbase.lib;version='[2.41.0,2.41.1)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree.analysis;version='[9.6.0,9.6.1)',\ org.objectweb.asm.util;version='[9.6.0,9.6.1)',\ - org.ops4j.pax.web.pax-web-api;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-jetty;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-runtime;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-spi;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-tomcat-common;version='[8.0.34,8.0.35)',\ org.openhab.core;version='[5.2.0,5.2.1)',\ org.openhab.core.addon;version='[5.2.0,5.2.1)',\ - org.openhab.core.audio;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation.module.script;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation.module.script.rulesupport;version='[5.2.0,5.2.1)',\ org.openhab.core.config.core;version='[5.2.0,5.2.1)',\ - org.openhab.core.ephemeris;version='[5.2.0,5.2.1)',\ org.openhab.core.io.console;version='[5.2.0,5.2.1)',\ - org.openhab.core.io.net;version='[5.2.0,5.2.1)',\ org.openhab.core.model.core;version='[5.2.0,5.2.1)',\ org.openhab.core.model.item;version='[5.2.0,5.2.1)',\ org.openhab.core.model.item.runtime;version='[5.2.0,5.2.1)',\ org.openhab.core.model.item.tests;version='[5.2.0,5.2.1)',\ org.openhab.core.model.persistence;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.rule;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.rule.runtime;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.script;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.script.runtime;version='[5.2.0,5.2.1)',\ org.openhab.core.model.sitemap;version='[5.2.0,5.2.1)',\ org.openhab.core.model.thing;version='[5.2.0,5.2.1)',\ org.openhab.core.persistence;version='[5.2.0,5.2.1)',\ @@ -118,17 +81,58 @@ Fragment-Host: org.openhab.core.model.item org.openhab.core.test;version='[5.2.0,5.2.1)',\ org.openhab.core.thing;version='[5.2.0,5.2.1)',\ org.openhab.core.transform;version='[5.2.0,5.2.1)',\ - org.openhab.core.voice;version='[5.2.0,5.2.1)',\ - stax2-api;version='[4.2.2,4.2.3)',\ com.google.guava;version='[33.5.0,33.5.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - de.focus_shift.jollyday-core;version='[1.8.1,1.8.2)',\ - de.focus_shift.jollyday-jackson;version='[1.8.1,1.8.2)',\ + org.osgi.service.cm;version='[1.6.1,1.6.2)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.openhab.core.model.sitemap.runtime;version='[5.2.0,5.2.1)',\ com.fasterxml.jackson.core.jackson-annotations;version='[2.21.0,2.21.1)',\ com.fasterxml.jackson.core.jackson-core;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ + de.focus_shift.jollyday-core;version='[1.8.1,1.8.2)',\ + de.focus_shift.jollyday-jackson;version='[1.8.1,1.8.2)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ + org.eclipse.jetty.alpn.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.hpack;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.api;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.xml;version='[12.0.23,12.0.24)',\ + org.eclipse.xtext.xbase;version='[2.41.0,2.41.1)',\ + org.openhab.core.audio;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation.module.script;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation.module.script.rulesupport;version='[5.2.0,5.2.1)',\ + org.openhab.core.ephemeris;version='[5.2.0,5.2.1)',\ + org.openhab.core.io.net;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.rule;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.script;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.script.runtime;version='[5.2.0,5.2.1)',\ + org.openhab.core.voice;version='[5.2.0,5.2.1)',\ + org.ops4j.pax.web.pax-web-api;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-jetty;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-runtime;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-spi;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-tomcat-common;version='[11.0.1,11.0.2)',\ + org.threeten.extra;version='[1.8.0,1.8.1)',\ org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ - org.osgi.service.cm;version='[1.6.1,1.6.2)' + stax2-api;version='[4.2.2,4.2.3)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)',\ + org.apache.felix.http.servlet-api;version='[2.1.0,2.1.1)' diff --git a/itests/org.openhab.core.model.rule.tests/itest.bndrun b/itests/org.openhab.core.model.rule.tests/itest.bndrun index ae0f6e998b8..a38282f7a92 100644 --- a/itests/org.openhab.core.model.rule.tests/itest.bndrun +++ b/itests/org.openhab.core.model.rule.tests/itest.bndrun @@ -18,24 +18,22 @@ Fragment-Host: org.openhab.core.model.rule.runtime org.glassfish.hk2.external.aopalliance-repackaged;version='[3.1.1,3.1.2)',\ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ org.eclipse.emf.ecore.xmi;version='[2.37.0,2.37.1)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ javax.measure.unit-api;version='[2.2.0,2.2.1)',\ tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -59,23 +57,21 @@ Fragment-Host: org.openhab.core.model.rule.runtime com.sun.jna;version='[5.18.1,5.18.2)',\ io.github.classgraph.classgraph;version='[4.8.184,4.8.185)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.alpn.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.hpack;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.jaas;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.api;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.xml;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.alpn.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.hpack;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.api;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.xml;version='[12.0.23,12.0.24)',\ org.eclipse.xtend.lib;version='[2.41.0,2.41.1)',\ org.eclipse.xtend.lib.macro;version='[2.41.0,2.41.1)',\ org.eclipse.xtext;version='[2.41.0,2.41.1)',\ @@ -88,11 +84,12 @@ Fragment-Host: org.openhab.core.model.rule.runtime org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree.analysis;version='[9.6.0,9.6.1)',\ org.objectweb.asm.util;version='[9.6.0,9.6.1)',\ - org.ops4j.pax.web.pax-web-api;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-jetty;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-runtime;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-spi;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-tomcat-common;version='[8.0.34,8.0.35)',\ + org.ops4j.pax.web.pax-web-api;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-jetty;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-runtime;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-spi;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-tomcat-common;version='[11.0.1,11.0.2)',\ org.openhab.core;version='[5.2.0,5.2.1)',\ org.openhab.core.addon;version='[5.2.0,5.2.1)',\ org.openhab.core.audio;version='[5.2.0,5.2.1)',\ @@ -132,4 +129,10 @@ Fragment-Host: org.openhab.core.model.rule.runtime com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ - org.osgi.service.cm;version='[1.6.1,1.6.2)' + org.osgi.service.cm;version='[1.6.1,1.6.2)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.common;version='[12.0.23,12.0.24)',\ + org.openhab.core.model.sitemap.runtime;version='[5.2.0,5.2.1)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.model.script.tests/itest.bndrun b/itests/org.openhab.core.model.script.tests/itest.bndrun index 394a1989bed..42965d62908 100644 --- a/itests/org.openhab.core.model.script.tests/itest.bndrun +++ b/itests/org.openhab.core.model.script.tests/itest.bndrun @@ -18,17 +18,15 @@ Fragment-Host: org.openhab.core.model.script org.glassfish.hk2.external.aopalliance-repackaged;version='[3.1.1,3.1.2)',\ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ org.eclipse.emf.ecore.xmi;version='[2.37.0,2.37.1)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -40,7 +38,7 @@ Fragment-Host: org.openhab.core.model.script tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -64,23 +62,21 @@ Fragment-Host: org.openhab.core.model.script com.sun.jna;version='[5.18.1,5.18.2)',\ io.github.classgraph.classgraph;version='[4.8.184,4.8.185)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.alpn.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.hpack;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.jaas;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.api;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.xml;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.alpn.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.hpack;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.api;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.xml;version='[12.0.23,12.0.24)',\ org.eclipse.xtend.lib;version='[2.41.0,2.41.1)',\ org.eclipse.xtend.lib.macro;version='[2.41.0,2.41.1)',\ org.eclipse.xtext;version='[2.41.0,2.41.1)',\ @@ -93,11 +89,12 @@ Fragment-Host: org.openhab.core.model.script org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree.analysis;version='[9.6.0,9.6.1)',\ org.objectweb.asm.util;version='[9.6.0,9.6.1)',\ - org.ops4j.pax.web.pax-web-api;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-jetty;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-runtime;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-spi;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-tomcat-common;version='[8.0.34,8.0.35)',\ + org.ops4j.pax.web.pax-web-api;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-jetty;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-runtime;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-spi;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-tomcat-common;version='[11.0.1,11.0.2)',\ org.openhab.core;version='[5.2.0,5.2.1)',\ org.openhab.core.addon;version='[5.2.0,5.2.1)',\ org.openhab.core.audio;version='[5.2.0,5.2.1)',\ @@ -113,7 +110,6 @@ Fragment-Host: org.openhab.core.model.script org.openhab.core.model.persistence;version='[5.2.0,5.2.1)',\ org.openhab.core.sitemap;version='[5.2.0,5.2.1)',\ org.openhab.core.model.rule;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.rule.runtime;version='[5.2.0,5.2.1)',\ org.openhab.core.model.script;version='[5.2.0,5.2.1)',\ org.openhab.core.model.script.runtime;version='[5.2.0,5.2.1)',\ org.openhab.core.model.script.tests;version='[5.2.0,5.2.1)',\ @@ -136,4 +132,10 @@ Fragment-Host: org.openhab.core.model.script com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ - org.yaml.snakeyaml;version='[2.5.0,2.5.1)' + org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.common;version='[12.0.23,12.0.24)',\ + org.openhab.core.model.sitemap.runtime;version='[5.2.0,5.2.1)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.model.thing.tests/itest.bndrun b/itests/org.openhab.core.model.thing.tests/itest.bndrun index 976628a212e..ed2beb8ffdc 100644 --- a/itests/org.openhab.core.model.thing.tests/itest.bndrun +++ b/itests/org.openhab.core.model.thing.tests/itest.bndrun @@ -16,10 +16,8 @@ Fragment-Host: org.openhab.core.model.thing org.glassfish.hk2.external.aopalliance-repackaged;version='[3.1.1,3.1.2)',\ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ org.eclipse.emf.ecore.xmi;version='[2.37.0,2.37.1)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ @@ -37,7 +35,7 @@ Fragment-Host: org.openhab.core.model.thing tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -57,64 +55,29 @@ Fragment-Host: org.openhab.core.model.thing ch.qos.logback.classic;version='[1.5.27,1.5.28)',\ ch.qos.logback.core;version='[1.5.27,1.5.28)',\ org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ - org.threeten.extra;version='[1.8.0,1.8.1)',\ com.google.guava.failureaccess;version='[1.0.3,1.0.4)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ io.github.classgraph.classgraph;version='[4.8.184,4.8.185)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ - org.eclipse.jetty.alpn.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.hpack;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.jaas;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.api;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.xml;version='[9.4.58,9.4.59)',\ org.eclipse.xtend.lib;version='[2.41.0,2.41.1)',\ org.eclipse.xtend.lib.macro;version='[2.41.0,2.41.1)',\ org.eclipse.xtext;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.common.types;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.util;version='[2.41.0,2.41.1)',\ - org.eclipse.xtext.xbase;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.xbase.lib;version='[2.41.0,2.41.1)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree.analysis;version='[9.6.0,9.6.1)',\ org.objectweb.asm.util;version='[9.6.0,9.6.1)',\ - org.ops4j.pax.web.pax-web-api;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-jetty;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-runtime;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-spi;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-tomcat-common;version='[8.0.34,8.0.35)',\ org.openhab.core;version='[5.2.0,5.2.1)',\ org.openhab.core.addon;version='[5.2.0,5.2.1)',\ - org.openhab.core.audio;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation.module.script;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation.module.script.rulesupport;version='[5.2.0,5.2.1)',\ org.openhab.core.config.core;version='[5.2.0,5.2.1)',\ - org.openhab.core.ephemeris;version='[5.2.0,5.2.1)',\ org.openhab.core.io.console;version='[5.2.0,5.2.1)',\ - org.openhab.core.io.net;version='[5.2.0,5.2.1)',\ org.openhab.core.model.core;version='[5.2.0,5.2.1)',\ org.openhab.core.model.item;version='[5.2.0,5.2.1)',\ org.openhab.core.model.item.runtime;version='[5.2.0,5.2.1)',\ org.openhab.core.model.persistence;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.rule;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.rule.runtime;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.script;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.script.runtime;version='[5.2.0,5.2.1)',\ org.openhab.core.model.sitemap;version='[5.2.0,5.2.1)',\ org.openhab.core.model.thing;version='[5.2.0,5.2.1)',\ org.openhab.core.model.thing.runtime;version='[5.2.0,5.2.1)',\ @@ -126,17 +89,58 @@ Fragment-Host: org.openhab.core.model.thing org.openhab.core.test;version='[5.2.0,5.2.1)',\ org.openhab.core.thing;version='[5.2.0,5.2.1)',\ org.openhab.core.transform;version='[5.2.0,5.2.1)',\ - org.openhab.core.voice;version='[5.2.0,5.2.1)',\ - stax2-api;version='[4.2.2,4.2.3)',\ com.google.guava;version='[33.5.0,33.5.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - de.focus_shift.jollyday-core;version='[1.8.1,1.8.2)',\ - de.focus_shift.jollyday-jackson;version='[1.8.1,1.8.2)',\ + org.osgi.service.cm;version='[1.6.1,1.6.2)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.openhab.core.model.sitemap.runtime;version='[5.2.0,5.2.1)',\ com.fasterxml.jackson.core.jackson-annotations;version='[2.21.0,2.21.1)',\ com.fasterxml.jackson.core.jackson-core;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ + de.focus_shift.jollyday-core;version='[1.8.1,1.8.2)',\ + de.focus_shift.jollyday-jackson;version='[1.8.1,1.8.2)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ + org.eclipse.jetty.alpn.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.hpack;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.api;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.xml;version='[12.0.23,12.0.24)',\ + org.eclipse.xtext.xbase;version='[2.41.0,2.41.1)',\ + org.openhab.core.audio;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation.module.script;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation.module.script.rulesupport;version='[5.2.0,5.2.1)',\ + org.openhab.core.ephemeris;version='[5.2.0,5.2.1)',\ + org.openhab.core.io.net;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.rule;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.script;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.script.runtime;version='[5.2.0,5.2.1)',\ + org.openhab.core.voice;version='[5.2.0,5.2.1)',\ + org.ops4j.pax.web.pax-web-api;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-jetty;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-runtime;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-spi;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-tomcat-common;version='[11.0.1,11.0.2)',\ + org.threeten.extra;version='[1.8.0,1.8.1)',\ org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ - org.osgi.service.cm;version='[1.6.1,1.6.2)' + stax2-api;version='[4.2.2,4.2.3)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)',\ + org.apache.felix.http.servlet-api;version='[2.1.0,2.1.1)' diff --git a/itests/org.openhab.core.storage.json.tests/itest.bndrun b/itests/org.openhab.core.storage.json.tests/itest.bndrun index f1308f68733..8cb011290f4 100644 --- a/itests/org.openhab.core.storage.json.tests/itest.bndrun +++ b/itests/org.openhab.core.storage.json.tests/itest.bndrun @@ -11,23 +11,20 @@ Fragment-Host: org.openhab.core.storage.json -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ javax.measure.unit-api;version='[2.2.0,2.2.1)',\ tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -44,13 +41,6 @@ Fragment-Host: org.openhab.core.storage.json org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -68,4 +58,15 @@ Fragment-Host: org.openhab.core.storage.json biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - org.openhab.core.semantics;version='[5.2.0,5.2.1)' + org.openhab.core.semantics;version='[5.2.0,5.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.tests/itest.bndrun b/itests/org.openhab.core.tests/itest.bndrun index 65e9a856f8d..4476ab2a346 100644 --- a/itests/org.openhab.core.tests/itest.bndrun +++ b/itests/org.openhab.core.tests/itest.bndrun @@ -11,16 +11,14 @@ Fragment-Host: org.openhab.core -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ net.bytebuddy.byte-buddy-agent;version='[1.17.7,1.17.8)',\ @@ -31,7 +29,7 @@ Fragment-Host: org.openhab.core tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -47,13 +45,13 @@ Fragment-Host: org.openhab.core ch.qos.logback.core;version='[1.5.27,1.5.28)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ @@ -64,4 +62,7 @@ Fragment-Host: org.openhab.core org.openhab.core.tests;version='[5.2.0,5.2.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.osgi.service.cm;version='[1.6.1,1.6.2)',\ - org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)' + org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.thing.tests/itest.bndrun b/itests/org.openhab.core.thing.tests/itest.bndrun index e7029c33b55..c398138caff 100644 --- a/itests/org.openhab.core.thing.tests/itest.bndrun +++ b/itests/org.openhab.core.thing.tests/itest.bndrun @@ -15,16 +15,13 @@ Fragment-Host: org.openhab.core.thing -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ net.bytebuddy.byte-buddy;version='[1.17.7,1.17.8)',\ @@ -36,7 +33,7 @@ Fragment-Host: org.openhab.core.thing tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -53,13 +50,6 @@ Fragment-Host: org.openhab.core.thing org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree.analysis;version='[9.6.0,9.6.1)',\ @@ -75,45 +65,15 @@ Fragment-Host: org.openhab.core.thing biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.openhab.core.semantics;version='[5.2.0,5.2.1)',\ com.google.inject;version='[7.0.0,7.0.1)',\ - de.focus_shift.jollyday-core;version='[1.8.1,1.8.2)',\ - de.focus_shift.jollyday-jackson;version='[1.8.1,1.8.2)',\ io.github.classgraph.classgraph;version='[4.8.184,4.8.185)',\ org.antlr.runtime;version='[3.2.0,3.2.1)',\ - org.eclipse.jetty.alpn.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.http2.hpack;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.jaas;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.api;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.client;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.websocket.common;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.xml;version='[9.4.58,9.4.59)',\ org.glassfish.hk2.external.aopalliance-repackaged;version='[3.1.1,3.1.2)',\ - org.openhab.core.audio;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation.module.script;version='[5.2.0,5.2.1)',\ - org.openhab.core.automation.module.script.rulesupport;version='[5.2.0,5.2.1)',\ - org.openhab.core.ephemeris;version='[5.2.0,5.2.1)',\ - org.openhab.core.io.net;version='[5.2.0,5.2.1)',\ org.openhab.core.model.core;version='[5.2.0,5.2.1)',\ org.openhab.core.model.item;version='[5.2.0,5.2.1)',\ org.openhab.core.model.persistence;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.rule;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.rule.runtime;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.script;version='[5.2.0,5.2.1)',\ - org.openhab.core.model.script.runtime;version='[5.2.0,5.2.1)',\ org.openhab.core.model.sitemap;version='[5.2.0,5.2.1)',\ org.openhab.core.model.thing;version='[5.2.0,5.2.1)',\ org.openhab.core.persistence;version='[5.2.0,5.2.1)',\ - org.openhab.core.voice;version='[5.2.0,5.2.1)',\ - org.threeten.extra;version='[1.8.0,1.8.1)',\ - stax2-api;version='[4.2.2,4.2.3)',\ - com.fasterxml.jackson.core.jackson-annotations;version='[2.21.0,2.21.1)',\ - com.fasterxml.jackson.core.jackson-core;version='[2.21.1,2.21.2)',\ - com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ - com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ - com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ com.google.guava;version='[33.5.0,33.5.1)',\ com.google.guava.failureaccess;version='[1.0.3,1.0.4)',\ org.eclipse.emf.common;version='[2.30.0,2.30.1)',\ @@ -125,14 +85,56 @@ Fragment-Host: org.openhab.core.thing org.eclipse.xtext;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.common.types;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.util;version='[2.41.0,2.41.1)',\ - org.eclipse.xtext.xbase;version='[2.41.0,2.41.1)',\ org.eclipse.xtext.xbase.lib;version='[2.41.0,2.41.1)',\ org.openhab.core.sitemap;version='[5.2.0,5.2.1)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - org.ops4j.pax.web.pax-web-api;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-jetty;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-runtime;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-spi;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-tomcat-common;version='[8.0.34,8.0.35)',\ - org.yaml.snakeyaml;version='[2.5.0,2.5.1)' + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.openhab.core.model.sitemap.runtime;version='[5.2.0,5.2.1)',\ + com.fasterxml.jackson.core.jackson-annotations;version='[2.21.0,2.21.1)',\ + com.fasterxml.jackson.core.jackson-core;version='[2.21.1,2.21.2)',\ + com.fasterxml.jackson.core.jackson-databind;version='[2.21.1,2.21.2)',\ + com.fasterxml.jackson.dataformat.jackson-dataformat-xml;version='[2.21.1,2.21.2)',\ + com.fasterxml.jackson.dataformat.jackson-dataformat-yaml;version='[2.21.1,2.21.2)',\ + de.focus_shift.jollyday-core;version='[1.8.1,1.8.2)',\ + de.focus_shift.jollyday-jackson;version='[1.8.1,1.8.2)',\ + org.eclipse.jetty.alpn.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.http2.hpack;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.api;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.client;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.websocket.core.common;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.xml;version='[12.0.23,12.0.24)',\ + org.eclipse.xtext.xbase;version='[2.41.0,2.41.1)',\ + org.openhab.core.audio;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation.module.script;version='[5.2.0,5.2.1)',\ + org.openhab.core.automation.module.script.rulesupport;version='[5.2.0,5.2.1)',\ + org.openhab.core.ephemeris;version='[5.2.0,5.2.1)',\ + org.openhab.core.io.net;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.rule;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.script;version='[5.2.0,5.2.1)',\ + org.openhab.core.model.script.runtime;version='[5.2.0,5.2.1)',\ + org.openhab.core.voice;version='[5.2.0,5.2.1)',\ + org.ops4j.pax.web.pax-web-api;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-jetty;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-runtime;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-spi;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-tomcat-common;version='[11.0.1,11.0.2)',\ + org.threeten.extra;version='[1.8.0,1.8.1)',\ + org.yaml.snakeyaml;version='[2.5.0,2.5.1)',\ + stax2-api;version='[4.2.2,4.2.3)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/itests/org.openhab.core.voice.tests/itest.bndrun b/itests/org.openhab.core.voice.tests/itest.bndrun index 9ed7de6be53..4e07146f6b9 100644 --- a/itests/org.openhab.core.voice.tests/itest.bndrun +++ b/itests/org.openhab.core.voice.tests/itest.bndrun @@ -16,23 +16,21 @@ Fragment-Host: org.openhab.core.voice -runbundles: \ org.apache.servicemix.specs.annotation-api-1.3;version='[1.3.0,1.3.1)',\ org.hamcrest;version='[3.0.0,3.0.1)',\ - jakarta.xml.bind-api;version='[2.3.3,2.3.4)',\ - org.apache.servicemix.specs.activation-api-1.2.1;version='[1.2.1,1.2.2)',\ - org.glassfish.hk2.osgi-resource-locator;version='[3.0.0,3.0.1)',\ + jakarta.xml.bind-api;version='[3.0.0,3.0.1)',\ jakarta.annotation-api;version='[2.1.1,2.1.2)',\ jakarta.inject.jakarta.inject-api;version='[2.0.1,2.0.2)',\ si-units;version='[2.2.3,2.2.4)',\ si-quantity;version='[2.2.3,2.2.4)',\ org.osgi.util.function;version='[1.2.0,1.2.1)',\ org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\ - org.apache.felix.http.servlet-api;version='[1.2.0,1.2.1)',\ + jakarta.servlet-api;version='[6.1.0,6.1.1)',\ org.osgi.service.component;version='[1.5.1,1.5.2)',\ xstream;version='[1.4.21,1.4.22)',\ javax.measure.unit-api;version='[2.2.0,2.2.1)',\ tech.units.indriya;version='[2.2.3,2.2.4)',\ uom-lib-common;version='[2.2.0,2.2.1)',\ io.methvin.directory-watcher;version='[0.19.1,0.19.2)',\ - com.sun.xml.bind.jaxb-osgi;version='[2.3.9,2.3.10)',\ + com.sun.xml.bind.jaxb-osgi;version='[3.0.2,3.0.3)',\ org.apache.felix.scr;version='[2.2.6,2.2.7)',\ org.eclipse.equinox.event;version='[1.6.300,1.6.301)',\ org.osgi.service.event;version='[1.4.1,1.4.2)',\ @@ -50,25 +48,24 @@ Fragment-Host: org.openhab.core.voice org.osgi.service.component.annotations;version='[1.5.1,1.5.2)',\ com.sun.jna;version='[5.18.1,5.18.2)',\ org.apache.aries.spifly.dynamic.bundle;version='[1.3.7,1.3.8)',\ - org.eclipse.jetty.http;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.io;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.jaas;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.security;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.server;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.servlet;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.util.ajax;version='[9.4.58,9.4.59)',\ - org.eclipse.jetty.xml;version='[9.4.58,9.4.59)',\ + org.eclipse.jetty.http;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.io;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.security;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.server;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.ee10.servlet;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.util;version='[12.0.23,12.0.24)',\ + org.eclipse.jetty.xml;version='[12.0.23,12.0.24)',\ org.objectweb.asm;version='[9.9.0,9.9.1)',\ org.objectweb.asm.commons;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree;version='[9.6.0,9.6.1)',\ org.objectweb.asm.tree.analysis;version='[9.6.0,9.6.1)',\ org.objectweb.asm.util;version='[9.6.0,9.6.1)',\ - org.ops4j.pax.web.pax-web-api;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-jetty;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-runtime;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-spi;version='[8.0.34,8.0.35)',\ - org.ops4j.pax.web.pax-web-tomcat-common;version='[8.0.34,8.0.35)',\ + org.ops4j.pax.web.pax-web-api;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-compatibility-servlet;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-jetty;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-runtime;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-spi;version='[11.0.1,11.0.2)',\ + org.ops4j.pax.web.pax-web-tomcat-common;version='[11.0.1,11.0.2)',\ org.openhab.core;version='[5.2.0,5.2.1)',\ org.openhab.core.addon;version='[5.2.0,5.2.1)',\ org.openhab.core.audio;version='[5.2.0,5.2.1)',\ @@ -81,4 +78,8 @@ Fragment-Host: org.openhab.core.voice org.openhab.core.voice.tests;version='[5.2.0,5.2.1)',\ biz.aQute.tester.junit-platform;version='[7.2.1,7.2.2)',\ org.ops4j.pax.logging.pax-logging-api;version='[2.3.2,2.3.3)',\ - org.openhab.core.semantics;version='[5.2.0,5.2.1)' + org.openhab.core.semantics;version='[5.2.0,5.2.1)',\ + org.eclipse.jetty.session;version='[12.0.23,12.0.24)',\ + org.osgi.service.servlet;version='[2.0.0,2.0.1)',\ + com.sun.activation.jakarta.activation;version='[2.0.0,2.0.1)',\ + org.glassfish.hk2.osgi-resource-locator;version='[1.0.3,1.0.4)' diff --git a/pom.xml b/pom.xml index 8403dd25ab9..d0ae33494b3 100644 --- a/pom.xml +++ b/pom.xml @@ -74,8 +74,8 @@ 7.2.1 3.12.0 2.4.0 - 4.4.10 - 4.4.10 + 4.5.0-SNAPSHOT + 4.5.0-SNAPSHOT 0.18.0 2.0.17 2.41.0 @@ -83,11 +83,9 @@ 4.25 4.21.0 - 2.2.43 + 2.2.31 - - 3.6.10 5.14.2 5.21.0 @@ -374,7 +372,7 @@ Import-Package: \ io.swagger.core.v3 - swagger-annotations + swagger-annotations-jakarta ${swagger.version} compile