jersey common modules - module infos added

Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/core-client/src/main/java/module-info.java b/core-client/src/main/java/module-info.java
index b3c7030..cc806c0 100644
--- a/core-client/src/main/java/module-info.java
+++ b/core-client/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -15,16 +15,11 @@
  */
 
 module org.glassfish.jersey.client {
-    //requires jakarta.ws.rs;
-    requires org.glassfish.jersey.core.common;
-
     requires jakarta.annotation;
-
-    requires java.logging;
-    //requires java.base;
-
-
     requires jakarta.inject;
+    requires java.logging;
+
+    requires org.glassfish.jersey.core.common;
 
     exports org.glassfish.jersey.client;
     exports org.glassfish.jersey.client.authentication;
@@ -33,6 +28,17 @@
     exports org.glassfish.jersey.client.inject;
     exports org.glassfish.jersey.client.spi;
 
-    provides jakarta.ws.rs.client.ClientBuilder with
-            org.glassfish.jersey.client.JerseyClientBuilder;
+    opens org.glassfish.jersey.client;
+    opens org.glassfish.jersey.client.spi;
+    opens org.glassfish.jersey.client.filter;
+
+    // for Localization messages
+    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;
+
+    provides jakarta.ws.rs.client.ClientBuilder
+            with org.glassfish.jersey.client.JerseyClientBuilder;
 }
\ No newline at end of file
diff --git a/core-common/pom.xml b/core-common/pom.xml
index 4997e1d..06a368b 100644
--- a/core-common/pom.xml
+++ b/core-common/pom.xml
@@ -84,8 +84,6 @@
                 <version>${compiler.common.mvn.plugin.version}</version>
                 <inherited>false</inherited>
                 <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
                     <compilerArguments>
                         <!-- Do not warn about using sun.misc.Unsafe -->
                         <XDignore.symbol.file />
@@ -225,6 +223,13 @@
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
             <scope>provided</scope>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.xml.bind</groupId>
+            <artifactId>jakarta.xml.bind-api</artifactId>
+            <scope>provided</scope>
+            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>jakarta.inject</groupId>
diff --git a/core-common/src/main/java/module-info.java b/core-common/src/main/java/module-info.java
index e48ec4c..a1d7a1d 100644
--- a/core-common/src/main/java/module-info.java
+++ b/core-common/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -16,28 +16,30 @@
 
 module org.glassfish.jersey.core.common {
     requires transitive jakarta.ws.rs;
+    requires transitive jakarta.inject;
     requires static jakarta.xml.bind;
-    requires java.logging;
+    requires static jakarta.activation;
     requires jakarta.annotation;
+    requires java.logging;
     requires java.desktop;
-    requires jakarta.activation;
 
     // Filename-based auto-modules
-    requires transitive jakarta.inject;
-    requires org.osgi.core;
+    requires static org.osgi.core;
     requires osgi.resource.locator;
 
     // Exports rather all, which corresponds to previous state without module-info
+    exports org.glassfish.jersey;
+    exports org.glassfish.jersey.internal;
     exports org.glassfish.jersey.internal.config;
     exports org.glassfish.jersey.internal.guava;
     exports org.glassfish.jersey.internal.inject;
+    exports org.glassfish.jersey.internal.jsr166 to org.glassfish.jersey.core.server;
     exports org.glassfish.jersey.internal.l10n;
     exports org.glassfish.jersey.internal.sonar;
     exports org.glassfish.jersey.internal.spi;
     exports org.glassfish.jersey.internal.routing;
     exports org.glassfish.jersey.internal.util;
     exports org.glassfish.jersey.internal.util.collection;
-    exports org.glassfish.jersey.internal;
     exports org.glassfish.jersey.logging;
     exports org.glassfish.jersey.message;
     exports org.glassfish.jersey.message.internal;
@@ -49,18 +51,27 @@
     exports org.glassfish.jersey.spi;
     exports org.glassfish.jersey.uri;
     exports org.glassfish.jersey.uri.internal;
-    exports org.glassfish.jersey;
-    exports org.glassfish.jersey.internal.jsr166 to org.glassfish.jersey.core.server;
 
-    opens org.glassfish.jersey.message.internal;
+    opens org.glassfish.jersey.innate.spi to org.glassfish.jersey.media.multipart;
     opens org.glassfish.jersey.internal;
+    opens org.glassfish.jersey.message.internal;
 
+    uses jakarta.ws.rs.core.Feature;
+    uses jakarta.ws.rs.container.DynamicFeature;
+    uses jakarta.ws.rs.ext.RuntimeDelegate;
+
+    uses org.glassfish.jersey.innate.spi.EntityPartBuilderProvider;
+    uses org.glassfish.jersey.internal.ServiceFinder;
     uses org.glassfish.jersey.internal.inject.InjectionManagerFactory;
     uses org.glassfish.jersey.internal.spi.AutoDiscoverable;
     uses org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable;
+    uses org.glassfish.jersey.model.internal.spi.ParameterServiceProvider;
+    uses org.glassfish.jersey.spi.HeaderDelegateProvider;
+    uses org.glassfish.jersey.spi.ExternalConfigurationProvider;
 
-    provides jakarta.ws.rs.ext.RuntimeDelegate with org.glassfish.jersey.internal.RuntimeDelegateImpl;
-    provides org.glassfish.jersey.internal.spi.AutoDiscoverable with org.glassfish.jersey.logging.LoggingFeatureAutoDiscoverable;
-    //provides org.osgi.framework.SynchronousBundleListener with org.glassfish.jersey.internal.OsgiRegistry;
-
+    provides jakarta.ws.rs.ext.RuntimeDelegate
+            with org.glassfish.jersey.internal.RuntimeDelegateImpl;
+    provides org.glassfish.jersey.internal.spi.AutoDiscoverable
+            with org.glassfish.jersey.logging.LoggingFeatureAutoDiscoverable,
+                    org.glassfish.jersey.internal.config.ExternalPropertiesAutoDiscoverable;
 }
\ No newline at end of file
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/util/ReflectionHelper.java b/core-common/src/main/java/org/glassfish/jersey/internal/util/ReflectionHelper.java
index 6383095..324b9a7 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/util/ReflectionHelper.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/util/ReflectionHelper.java
@@ -57,6 +57,7 @@
 import org.glassfish.jersey.internal.LocalizationMessages;
 import org.glassfish.jersey.internal.OsgiRegistry;
 import org.glassfish.jersey.internal.util.collection.ClassTypePair;
+
 import org.glassfish.jersey.internal.util.collection.LazyValue;
 import org.glassfish.jersey.internal.util.collection.Value;
 import org.glassfish.jersey.internal.util.collection.Values;
diff --git a/core-server/pom.xml b/core-server/pom.xml
index e28874a..43b94fe 100644
--- a/core-server/pom.xml
+++ b/core-server/pom.xml
@@ -154,9 +154,13 @@
                     <parallel>classes</parallel>
                     <perCoreThreadCount>true</perCoreThreadCount>
                     <threadCount>1</threadCount>
-                    <forkCount>0</forkCount>
+                    <forkCount>1</forkCount>
                     <reuseForks>true</reuseForks>
                     <systemPropertiesFile>${project.basedir}/etc/systemPropertiesFile</systemPropertiesFile>
+                    <argLine>
+                        --add-modules jakarta.xml.bind
+                        ${surefire.security.argline}
+                    </argLine>
                 </configuration>
             </plugin>
             <plugin>
diff --git a/core-server/src/main/java/module-info.java b/core-server/src/main/java/module-info.java
index 048dca7..c443c29 100644
--- a/core-server/src/main/java/module-info.java
+++ b/core-server/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -34,18 +34,44 @@
     // Exports rather all, which corresponds to previous state without module-info
     exports org.glassfish.jersey.server;
     exports org.glassfish.jersey.server.spi;
-    exports org.glassfish.jersey.server.spi.internal;
     exports org.glassfish.jersey.server.model;
     exports org.glassfish.jersey.server.wadl;
     exports org.glassfish.jersey.server.wadl.config;
     exports org.glassfish.jersey.server.wadl.processor;
     exports org.glassfish.jersey.server.filter;
+    exports org.glassfish.jersey.server.filter.internal;
     exports org.glassfish.jersey.server.monitoring;
     exports org.glassfish.jersey.server.wadl.internal;
     exports org.glassfish.jersey.server.internal;
     exports org.glassfish.jersey.server.internal.inject;
+    exports org.glassfish.jersey.server.internal.monitoring;
+    exports org.glassfish.jersey.server.internal.process;
 
-    provides jakarta.ws.rs.core.Configuration with org.glassfish.jersey.server.ResourceConfig;
-//    provides jakarta.ws.rs.core.Configuration with org.glassfish.jersey.server.ServerConfig;
+    uses org.glassfish.jersey.server.spi.ComponentProvider;
+    uses org.glassfish.jersey.server.spi.ExternalRequestScope;
+    uses org.glassfish.jersey.server.spi.WebServerProvider;
 
+    opens com.sun.research.ws.wadl to jakarta.xml.bind;
+
+    opens org.glassfish.jersey.server;
+    opens org.glassfish.jersey.server.filter;
+    opens org.glassfish.jersey.server.filter.internal;
+    opens org.glassfish.jersey.server.internal;
+    opens org.glassfish.jersey.server.internal.inject;
+    opens org.glassfish.jersey.server.internal.monitoring;
+    opens org.glassfish.jersey.server.internal.monitoring.jmx;
+    opens org.glassfish.jersey.server.internal.process;
+    opens org.glassfish.jersey.server.internal.routing;
+    opens org.glassfish.jersey.server.model;
+    opens org.glassfish.jersey.server.wadl.processor;
+
+    provides jakarta.ws.rs.ext.RuntimeDelegate
+            with org.glassfish.jersey.server.internal.RuntimeDelegateImpl;
+    provides org.glassfish.jersey.internal.spi.AutoDiscoverable
+            with org.glassfish.jersey.server.filter.internal.ServerFiltersAutoDiscoverable;
+    provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable
+            with org.glassfish.jersey.server.wadl.internal.WadlAutoDiscoverable,
+                    org.glassfish.jersey.server.internal.monitoring.MonitoringAutodiscoverable;
+    provides org.glassfish.jersey.model.internal.spi.ParameterServiceProvider
+            with org.glassfish.jersey.server.model.Parameter.ServerParameterService;
 }
\ No newline at end of file
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/generators/WadlGeneratorJAXBGrammarGenerator.java b/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/generators/WadlGeneratorJAXBGrammarGenerator.java
index 57468eb..25b3c52 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/generators/WadlGeneratorJAXBGrammarGenerator.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/generators/WadlGeneratorJAXBGrammarGenerator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -19,6 +19,7 @@
 import java.io.CharArrayWriter;
 import java.io.IOException;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InaccessibleObjectException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
@@ -402,7 +403,7 @@
                                 });
                         parameterClassInstance = defaultConstructor.newInstance();
                     } catch (final InstantiationException | SecurityException | IllegalAccessException
-                            | IllegalArgumentException | InvocationTargetException ex) {
+                            | IllegalArgumentException | InvocationTargetException | InaccessibleObjectException ex) {
                         LOGGER.log(Level.FINE, null, ex);
                     } catch (final PrivilegedActionException ex) {
                         LOGGER.log(Level.FINE, null, ex.getCause());
diff --git a/core-server/src/test/java/org/glassfish/jersey/server/internal/RuntimeDelegateImplTest.java b/core-server/src/test/java/org/glassfish/jersey/server/internal/RuntimeDelegateImplTest.java
index 9aa7419..df71374 100644
--- a/core-server/src/test/java/org/glassfish/jersey/server/internal/RuntimeDelegateImplTest.java
+++ b/core-server/src/test/java/org/glassfish/jersey/server/internal/RuntimeDelegateImplTest.java
@@ -54,6 +54,11 @@
      */
     @Test
     public void testRuntimeDelegateInstance() {
+        try {
+            RuntimeDelegate.getInstance().createEndpoint((Application) null, com.sun.net.httpserver.HttpHandler.class);
+        } catch (Exception e) {
+            // does not matter, this just makes sure the correct RuntimeDelegate is set
+        }
         assertSame(RuntimeDelegateImpl.class, RuntimeDelegate.getInstance().getClass());
     }
 
diff --git a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/JarFileScannerTest.java b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/JarFileScannerTest.java
index 40f2757..4f1f8b8 100644
--- a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/JarFileScannerTest.java
+++ b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/JarFileScannerTest.java
@@ -43,6 +43,24 @@
 
     @BeforeEach
     public void setUp() throws Exception {
+        final String separator = System.getProperty("path.separator");
+        final String oldClassPath = System.getProperty("java.class.path");
+        final String sureFireClassPath = System.getProperty("surefire.test.class.path");
+        final String modulePath = System.getProperty("jdk.module.path");
+        final StringBuilder classPath = new StringBuilder();
+        if (oldClassPath != null) {
+            classPath.append(oldClassPath);
+            classPath.append(separator);
+        }
+        if (sureFireClassPath != null) {
+            classPath.append(sureFireClassPath);
+            classPath.append(separator);
+        }
+        if (modulePath != null) {
+            classPath.append(modulePath);
+        }
+
+        final String[] entries = classPath.toString().split(separator);
 
         jaxRsApiPath = setUpJaxRsApiPath();
 
diff --git a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/VFSSchemeResourceFinderTest.java b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/VFSSchemeResourceFinderTest.java
index 4d15358..b7a420b 100644
--- a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/VFSSchemeResourceFinderTest.java
+++ b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/VFSSchemeResourceFinderTest.java
@@ -46,6 +46,24 @@
 
     @BeforeEach
     public void setUp() throws Exception {
+        final String separator = System.getProperty("path.separator");
+        final String oldClassPath = System.getProperty("java.class.path");
+        final String sureFireClassPath = System.getProperty("surefire.test.class.path");
+        final String modulePath = System.getProperty("jdk.module.path");
+        final StringBuilder classPath = new StringBuilder();
+        if (oldClassPath != null) {
+            classPath.append(oldClassPath);
+            classPath.append(separator);
+        }
+        if (sureFireClassPath != null) {
+            classPath.append(sureFireClassPath);
+            classPath.append(separator);
+        }
+        if (modulePath != null) {
+            classPath.append(modulePath);
+        }
+
+        final String[] entries = classPath.toString().split(separator);
 
         jaxRsApiPath = setUpJaxRsApiPath();
 
diff --git a/core-server/src/test/resources/META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable b/core-server/src/test/resources/META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable
index 7f80709..4dde7b3 100644
--- a/core-server/src/test/resources/META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable
+++ b/core-server/src/test/resources/META-INF/services/org.glassfish.jersey.internal.spi.AutoDiscoverable
@@ -1 +1,2 @@
-org.glassfish.jersey.server.AutoDiscoverableServerTest$CommonAutoDiscoverable
\ No newline at end of file
+org.glassfish.jersey.server.AutoDiscoverableServerTest$CommonAutoDiscoverable
+org.glassfish.jersey.server.filter.internal.ServerFiltersAutoDiscoverable
\ No newline at end of file
diff --git a/inject/hk2/src/main/java/module-info.java b/inject/hk2/src/main/java/module-info.java
index 82ff87a..200d786 100644
--- a/inject/hk2/src/main/java/module-info.java
+++ b/inject/hk2/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -16,8 +16,8 @@
 
 module org.glassfish.jersey.inject.hk2 {
 
-    requires transitive jakarta.annotation;
-    requires transitive jakarta.inject;
+    requires jakarta.annotation;
+    requires jakarta.inject;
     requires java.logging;
 
     requires org.glassfish.hk2.api;
@@ -29,4 +29,6 @@
     exports org.glassfish.jersey.inject.hk2;
     opens org.glassfish.jersey.inject.hk2;
 
+    provides org.glassfish.jersey.internal.inject.InjectionManagerFactory
+            with org.glassfish.jersey.inject.hk2.Hk2InjectionManagerFactory;
 }
\ No newline at end of file
diff --git a/media/jaxb/src/main/java/module-info.java b/media/jaxb/src/main/java/module-info.java
new file mode 100644
index 0000000..079972e
--- /dev/null
+++ b/media/jaxb/src/main/java/module-info.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+module org.glassfish.jersey.media.jaxb {
+    requires java.logging;
+    requires jakarta.ws.rs;
+    requires jakarta.xml.bind;
+    requires org.glassfish.jersey.core.common;
+
+    opens org.glassfish.jersey.jaxb.internal;
+
+    exports org.glassfish.jersey.jaxb;
+    exports org.glassfish.jersey.jaxb.internal;
+
+    provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable
+            with org.glassfish.jersey.jaxb.internal.JaxbAutoDiscoverable;
+}
\ No newline at end of file