Uptake Jakarta Dependencies: istack commons, GF, Copyright plugin & mimepull (#4002)

Signed-off-by: Jan Supol <jan.supol@oracle.com>
diff --git a/core-common/pom.xml b/core-common/pom.xml
index ea7c997..91b312c 100644
--- a/core-common/pom.xml
+++ b/core-common/pom.xml
@@ -95,7 +95,7 @@
             </plugin>
             <plugin>
                 <groupId>com.sun.istack</groupId>
-                <artifactId>maven-istack-commons-plugin</artifactId>
+                <artifactId>istack-commons-maven-plugin</artifactId>
                 <inherited>true</inherited>
             </plugin>
             <plugin>
@@ -126,6 +126,8 @@
                         <!-- Note: When you're changing these properties change them also in bundles/jaxrs-ri/pom.xml. -->
                         <Import-Package>
                             sun.misc.*;resolution:=optional,
+                            javax.activation.*;version="!",
+                            javax.annotation.*;version="!",
                             *
                         </Import-Package>
                         <Export-Package>org.glassfish.jersey.*;version=${project.version}</Export-Package>
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/l10n/Localizable.java b/core-common/src/main/java/org/glassfish/jersey/internal/l10n/Localizable.java
index a518896..d9a0274 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/l10n/Localizable.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/l10n/Localizable.java
@@ -16,6 +16,9 @@
 
 package org.glassfish.jersey.internal.l10n;
 
+import java.util.Locale;
+import java.util.ResourceBundle;
+
 /**
  * Localizable message.
  *
@@ -54,4 +57,11 @@
      * @return the localization messages resource bundle name.
      */
     public String getResourceBundleName();
+
+    /**
+     * Get the resource bundle of the given localization.
+     * @param locale the given {@code Locale}
+     * @return the localization messages resource bundle for given locale.
+     */
+    public ResourceBundle getResourceBundle(Locale locale);
 }
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/l10n/LocalizableMessage.java b/core-common/src/main/java/org/glassfish/jersey/internal/l10n/LocalizableMessage.java
index e5e402d..b941485 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/l10n/LocalizableMessage.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/l10n/LocalizableMessage.java
@@ -16,17 +16,30 @@
 
 package org.glassfish.jersey.internal.l10n;
 
+import java.util.Arrays;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
 /**
  * @author WS Development Team
  */
 public final class LocalizableMessage implements Localizable {
 
     private final String _bundlename;
+    private final LocalizableMessageFactory.ResourceBundleSupplier _rbSupplier;
+
     private final String _key;
     private final Object[] _args;
 
+    @Deprecated
     public LocalizableMessage(String bundlename, String key, Object... args) {
+        this(bundlename, null, key, args);
+    }
+
+    public LocalizableMessage(String bundlename, LocalizableMessageFactory.ResourceBundleSupplier rbSupplier,
+                              String key, Object... args) {
         _bundlename = bundlename;
+        _rbSupplier = rbSupplier;
         _key = key;
         if (args == null) {
             args = new Object[0];
@@ -41,11 +54,20 @@
 
     @Override
     public Object[] getArguments() {
-        return _args.clone();
+        return Arrays.copyOf(_args, _args.length);
     }
 
     @Override
     public String getResourceBundleName() {
         return _bundlename;
     }
-}
+
+    @Override
+    public ResourceBundle getResourceBundle(Locale locale) {
+        if (_rbSupplier == null) {
+            return null;
+        }
+
+        return _rbSupplier.getResourceBundle(locale);
+    }
+}
\ No newline at end of file
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/l10n/LocalizableMessageFactory.java b/core-common/src/main/java/org/glassfish/jersey/internal/l10n/LocalizableMessageFactory.java
index 5886fe0..d5d62e2 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/l10n/LocalizableMessageFactory.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/l10n/LocalizableMessageFactory.java
@@ -16,19 +16,39 @@
 
 package org.glassfish.jersey.internal.l10n;
 
+import java.util.Locale;
+import java.util.ResourceBundle;
+
 /**
  * @author WS Development Team
  */
 public class LocalizableMessageFactory {
 
     private final String _bundlename;
+    private final ResourceBundleSupplier _rbSupplier;
 
+    @Deprecated
     public LocalizableMessageFactory(String bundlename) {
         _bundlename = bundlename;
+        _rbSupplier = null;
+    }
+
+    public LocalizableMessageFactory(String bundlename, ResourceBundleSupplier rbSupplier) {
+        _bundlename = bundlename;
+        _rbSupplier = rbSupplier;
     }
 
     public Localizable getMessage(String key, Object... args) {
-        return new LocalizableMessage(_bundlename, key, args);
+        return new LocalizableMessage(_bundlename, _rbSupplier, key, args);
+    }
+
+    public interface ResourceBundleSupplier {
+        /**
+         * Gets the ResourceBundle.
+         * @param locale the requested bundle's locale
+         * @return ResourceBundle
+         */
+        ResourceBundle getResourceBundle(Locale locale);
     }
 
 }
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/l10n/Localizer.java b/core-common/src/main/java/org/glassfish/jersey/internal/l10n/Localizer.java
index b812d64..058617f 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/l10n/Localizer.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/l10n/Localizer.java
@@ -86,7 +86,12 @@
                                     alternateBundleName,
                                     _locale);
                         } catch (MissingResourceException e2) {
-                            // try OSGi
+                            //try context classloader
+                            try {
+                                bundle = ResourceBundle.getBundle(bundlename, _locale,
+                                        Thread.currentThread().getContextClassLoader());
+                            } catch (MissingResourceException e3) {
+                                // try OSGi
                                 OsgiRegistry osgiRegistry = ReflectionHelper.getOsgiRegistryInstance();
                                 if (osgiRegistry != null) {
                                     bundle = osgiRegistry.getResourceBundle(bundlename);
@@ -101,6 +106,7 @@
                                         }
                                     }
                                 }
+                            }
                         }
                     }
                 }