JPMS for SPI in modules

Signed-off-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/containers/jersey-servlet-core/src/main/java/module-info.java b/containers/jersey-servlet-core/src/main/java/module-info.java
index 8990521..8c3cd04 100644
--- a/containers/jersey-servlet-core/src/main/java/module-info.java
+++ b/containers/jersey-servlet-core/src/main/java/module-info.java
@@ -14,6 +14,14 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
+import org.glassfish.jersey.servlet.internal.spi.ExtendedServletContainerProvider;
+import org.glassfish.jersey.servlet.internal.spi.RequestContextProvider;
+import org.glassfish.jersey.servlet.internal.spi.RequestScopedInitializerProvider;
+import org.glassfish.jersey.servlet.internal.spi.ServletContainerProvider;
+import org.glassfish.jersey.servlet.spi.AsyncContextDelegate;
+import org.glassfish.jersey.servlet.spi.AsyncContextDelegateProvider;
+import org.glassfish.jersey.servlet.spi.FilterUrlMappingsProvider;
+
 module org.glassfish.jersey.container.servlet.core {
     requires java.logging;
     requires java.naming;
@@ -32,4 +40,13 @@
     exports org.glassfish.jersey.servlet.spi;
 
     opens org.glassfish.jersey.servlet;
+
+    uses AsyncContextDelegate;
+    uses AsyncContextDelegateProvider;
+    uses FilterUrlMappingsProvider;
+
+    uses ExtendedServletContainerProvider;
+    uses RequestContextProvider;
+    uses RequestScopedInitializerProvider;
+    uses ServletContainerProvider;
 }
\ No newline at end of file
diff --git a/core-client/src/main/java/module-info.java b/core-client/src/main/java/module-info.java
index a217f44..de2396f 100644
--- a/core-client/src/main/java/module-info.java
+++ b/core-client/src/main/java/module-info.java
@@ -14,6 +14,13 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
+import org.glassfish.jersey.client.spi.AsyncConnectorCallback;
+import org.glassfish.jersey.client.spi.ConnectorProvider;
+import org.glassfish.jersey.client.spi.DefaultSslContextProvider;
+import org.glassfish.jersey.client.spi.InvocationBuilderListener;
+import org.glassfish.jersey.client.spi.PostInvocationInterceptor;
+import org.glassfish.jersey.client.spi.PreInvocationInterceptor;
+
 module org.glassfish.jersey.core.client {
     requires jakarta.annotation;
     requires jakarta.inject;
@@ -36,8 +43,12 @@
     opens org.glassfish.jersey.client.internal;
     opens org.glassfish.jersey.client.internal.jdkconnector;
 
-    uses org.glassfish.jersey.client.spi.DefaultSslContextProvider;
-    uses org.glassfish.jersey.spi.ComponentProvider;
+    uses AsyncConnectorCallback;
+    uses ConnectorProvider;
+    uses DefaultSslContextProvider;
+    uses InvocationBuilderListener;
+    uses PostInvocationInterceptor;
+    uses PreInvocationInterceptor;
 
     provides jakarta.ws.rs.client.ClientBuilder
             with org.glassfish.jersey.client.JerseyClientBuilder;
diff --git a/core-common/src/main/java/module-info.java b/core-common/src/main/java/module-info.java
index 1a608e7..ad2bfef 100644
--- a/core-common/src/main/java/module-info.java
+++ b/core-common/src/main/java/module-info.java
@@ -71,6 +71,7 @@
     uses org.glassfish.jersey.model.internal.spi.ParameterServiceProvider;
     uses org.glassfish.jersey.spi.HeaderDelegateProvider;
     uses org.glassfish.jersey.spi.ExternalConfigurationProvider;
+    uses org.glassfish.jersey.spi.ComponentProvider;
 
     provides jakarta.ws.rs.ext.RuntimeDelegate
             with org.glassfish.jersey.internal.RuntimeDelegateImpl;
diff --git a/ext/cdi/jersey-cdi1x/src/main/java/module-info.java b/ext/cdi/jersey-cdi1x/src/main/java/module-info.java
index 02205ac..1eed93f 100644
--- a/ext/cdi/jersey-cdi1x/src/main/java/module-info.java
+++ b/ext/cdi/jersey-cdi1x/src/main/java/module-info.java
@@ -14,6 +14,12 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
+import org.glassfish.jersey.ext.cdi1x.internal.spi.BeanManagerProvider;
+import org.glassfish.jersey.ext.cdi1x.internal.spi.InjectionManagerInjectedTarget;
+import org.glassfish.jersey.ext.cdi1x.internal.spi.InjectionManagerStore;
+import org.glassfish.jersey.ext.cdi1x.internal.spi.InjectionTargetListener;
+import org.glassfish.jersey.ext.cdi1x.spi.Hk2CustomBoundTypesProvider;
+
 module org.glassfish.jersey.ext.cdi1x {
 
     requires java.naming;
@@ -33,4 +39,9 @@
     exports org.glassfish.jersey.ext.cdi1x.spi;
     opens org.glassfish.jersey.ext.cdi1x.internal;
 
+    uses Hk2CustomBoundTypesProvider;
+    uses BeanManagerProvider;
+    uses InjectionManagerInjectedTarget;
+    uses InjectionManagerStore;
+    uses InjectionTargetListener;
 }
\ No newline at end of file
diff --git a/ext/entity-filtering/src/main/java/module-info.java b/ext/entity-filtering/src/main/java/module-info.java
index fee8173..18a9326 100644
--- a/ext/entity-filtering/src/main/java/module-info.java
+++ b/ext/entity-filtering/src/main/java/module-info.java
@@ -14,6 +14,19 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
+import org.glassfish.jersey.message.filtering.spi.AbstractEntityProcessor;
+import org.glassfish.jersey.message.filtering.spi.AbstractObjectProvider;
+import org.glassfish.jersey.message.filtering.spi.EntityGraph;
+import org.glassfish.jersey.message.filtering.spi.EntityGraphProvider;
+import org.glassfish.jersey.message.filtering.spi.EntityInspector;
+import org.glassfish.jersey.message.filtering.spi.EntityProcessor;
+import org.glassfish.jersey.message.filtering.spi.EntityProcessorContext;
+import org.glassfish.jersey.message.filtering.spi.ObjectGraph;
+import org.glassfish.jersey.message.filtering.spi.ObjectGraphTransformer;
+import org.glassfish.jersey.message.filtering.spi.ObjectProvider;
+import org.glassfish.jersey.message.filtering.spi.ScopeProvider;
+import org.glassfish.jersey.message.filtering.spi.ScopeResolver;
+
 module org.glassfish.jersey.ext.entity.filtering {
     requires java.logging;
 
@@ -28,4 +41,17 @@
     exports org.glassfish.jersey.message.filtering;
     exports org.glassfish.jersey.message.filtering.spi;
 
+    uses AbstractEntityProcessor;
+    uses AbstractObjectProvider;
+    uses EntityGraph;
+    uses EntityGraphProvider;
+    uses EntityInspector;
+    uses EntityProcessor;
+    uses EntityProcessorContext;
+    uses ObjectGraph;
+    uses ObjectGraphTransformer;
+    uses ObjectProvider;
+    uses ScopeProvider;
+    uses ScopeResolver;
+
 }
\ No newline at end of file
diff --git a/ext/mvc/src/main/java/module-info.java b/ext/mvc/src/main/java/module-info.java
index f652153..1a54a21 100644
--- a/ext/mvc/src/main/java/module-info.java
+++ b/ext/mvc/src/main/java/module-info.java
@@ -14,6 +14,10 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
+import org.glassfish.jersey.server.mvc.spi.AbstractTemplateProcessor;
+import org.glassfish.jersey.server.mvc.spi.TemplateProcessor;
+import org.glassfish.jersey.server.mvc.spi.ViewableContext;
+
 module org.glassfish.jersey.ext.mvc {
     requires java.logging;
 
@@ -28,4 +32,8 @@
     exports org.glassfish.jersey.server.mvc;
     exports org.glassfish.jersey.server.mvc.internal;
     exports org.glassfish.jersey.server.mvc.spi;
+
+    uses TemplateProcessor;
+    uses ViewableContext;
+    uses AbstractTemplateProcessor;
 }
\ No newline at end of file