upgrade eclipselink from 2.7.x to 3.0.x
diff --git a/app/pom.xml b/app/pom.xml
index a70c49e..a6fd1b7 100644
--- a/app/pom.xml
+++ b/app/pom.xml
@@ -45,7 +45,7 @@
         <commons-validator.version>1.7</commons-validator.version>
         <commons-beanutils.version>1.9.4</commons-beanutils.version>
         <commons-codec.version>1.15</commons-codec.version>
-        <eclipse-link.version>2.7.10</eclipse-link.version>
+        <eclipse-link.version>3.0.2</eclipse-link.version>
         <guice.version>5.1.0</guice.version>
         <log4j2.version>2.17.2</log4j2.version>
         <lucene.version>9.1.0</lucene.version>
diff --git a/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java b/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
index 0e170b6..40355a1 100644
--- a/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
@@ -23,9 +23,9 @@
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-import javax.persistence.NoResultException;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -49,7 +49,7 @@
 @com.google.inject.Singleton
 public class JPAPlanetManagerImpl extends AbstractManagerImpl implements PlanetManager {
     
-    private static Log log = LogFactory.getLog(JPAPlanetManagerImpl.class);
+    private static final Log log = LogFactory.getLog(JPAPlanetManagerImpl.class);
     
     /** The strategy for this manager. */
     private final JPAPersistenceStrategy strategy;
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.java
index aec723c..627557b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAAutoPingManagerImpl.java
@@ -29,8 +29,8 @@
 import org.apache.roller.weblogger.pojos.Weblog;
 import java.util.Collection;
 import java.util.List;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
 import org.apache.roller.weblogger.business.Weblogger;
 
 /*
@@ -47,7 +47,7 @@
     /**
      * The logger instance for this class.
      */
-    private static Log logger = LogFactory.getFactory().getInstance(JPAAutoPingManagerImpl.class);
+    private static final Log logger = LogFactory.getFactory().getInstance(JPAAutoPingManagerImpl.class);
 
     /**
      * Creates a new instance of JPAAutoPingManagerImpl
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java
index fada3f4..bde6dc0 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPABookmarkManagerImpl.java
@@ -20,8 +20,8 @@
 
 import java.io.StringReader;
 import java.util.List;
-import javax.persistence.NoResultException;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -52,8 +52,7 @@
     /**
      * The logger instance for this class.
      */
-    private static Log log = LogFactory
-            .getFactory().getInstance(JPABookmarkManagerImpl.class);
+    private static final Log log = LogFactory.getFactory().getInstance(JPABookmarkManagerImpl.class);
 
     /**
      * Creates a new instance of JPABookmarkManagerImpl
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java
index 76965fc..2a4071c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAMediaFileManagerImpl.java
@@ -37,8 +37,8 @@
 import java.util.Set;
 
 import javax.imageio.ImageIO;
-import javax.persistence.NoResultException;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAOAuthManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAOAuthManagerImpl.java
index 640533e..baebb32 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAOAuthManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAOAuthManagerImpl.java
@@ -22,7 +22,7 @@
 import java.sql.Timestamp;
 import java.util.Date;
 import java.util.UUID;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.TypedQuery;
 import net.oauth.OAuthAccessor;
 import net.oauth.OAuthConsumer;
 import net.oauth.OAuthException;
@@ -52,8 +52,7 @@
     /**
      * The logger instance for this class.
      */
-    private static Log log = LogFactory
-            .getFactory().getInstance(JPAOAuthManagerImpl.class);
+    private static final Log log = LogFactory.getFactory().getInstance(JPAOAuthManagerImpl.class);
 
 
     @com.google.inject.Inject
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
index 85b170a..0f72f84 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
@@ -25,15 +25,15 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.config.WebloggerConfig;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.EntityManager;
-import javax.persistence.FlushModeType;
-import javax.persistence.Persistence;
-import javax.persistence.PersistenceException;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.FlushModeType;
+import jakarta.persistence.Persistence;
+import jakarta.persistence.PersistenceException;
+import jakarta.persistence.Query;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.roller.weblogger.business.DatabaseProvider;
 
@@ -81,7 +81,7 @@
             Enumeration<Object> keys = WebloggerConfig.keys();
             while (keys.hasMoreElements()) {
                 String key = (String) keys.nextElement();
-                if (       key.startsWith("javax.persistence.") 
+                if (       key.startsWith("jakarta.persistence.")
                         || key.startsWith("openjpa.")
                         || key.startsWith("eclipselink.")
                         || key.startsWith("hibernate.")) {
@@ -92,12 +92,12 @@
             }
 
             if (dbProvider.getType() == DatabaseProvider.ConfigurationType.JNDI_NAME) {
-                emfProps.setProperty("javax.persistence.nonJtaDataSource", dbProvider.getFullJndiName());
+                emfProps.setProperty("jakarta.persistence.nonJtaDataSource", dbProvider.getFullJndiName());
             } else {
-                emfProps.setProperty("javax.persistence.jdbc.driver", dbProvider.getJdbcDriverClass());
-                emfProps.setProperty("javax.persistence.jdbc.url", dbProvider.getJdbcConnectionURL());
-                emfProps.setProperty("javax.persistence.jdbc.user", dbProvider.getJdbcUsername());
-                emfProps.setProperty("javax.persistence.jdbc.password", dbProvider.getJdbcPassword());
+                emfProps.setProperty("jakarta.persistence.jdbc.driver", dbProvider.getJdbcDriverClass());
+                emfProps.setProperty("jakarta.persistence.jdbc.url", dbProvider.getJdbcConnectionURL());
+                emfProps.setProperty("jakarta.persistence.jdbc.user", dbProvider.getJdbcUsername());
+                emfProps.setProperty("jakarta.persistence.jdbc.password", dbProvider.getJdbcPassword());
             }
 
             try {
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.java
index 5bbd1ce..fd651d8 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPingQueueManagerImpl.java
@@ -20,7 +20,7 @@
 
 import java.sql.Timestamp;
 import java.util.List;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -38,8 +38,7 @@
 @com.google.inject.Singleton
 public class JPAPingQueueManagerImpl implements PingQueueManager {
 
-    private static Log log = LogFactory.getLog(
-        JPAPingQueueManagerImpl.class);
+    private static final Log log = LogFactory.getLog(JPAPingQueueManagerImpl.class);
 
     /** The strategy for this manager. */
     private final JPAPersistenceStrategy strategy;
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl.java
index 0f8626c..0112278 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAPingTargetManagerImpl.java
@@ -23,8 +23,8 @@
 import java.net.URL;
 import java.net.UnknownHostException;
 import java.util.List;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.roller.weblogger.WebloggerException;
 import org.apache.roller.weblogger.business.pings.PingTargetManager;
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl.java
index 9fbbd51..05ab7be 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAThreadManagerImpl.java
@@ -20,9 +20,9 @@
 
 import java.sql.Timestamp;
 import java.util.Date;
-import javax.persistence.NoResultException;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.util.DateUtil;
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
index 1e42cf7..0ccdcb8 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAUserManagerImpl.java
@@ -19,7 +19,6 @@
 package org.apache.roller.weblogger.business.jpa;
 
 import java.sql.Timestamp;
-import javax.persistence.NoResultException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -33,7 +32,8 @@
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.TypedQuery;
 import org.apache.roller.weblogger.config.WebloggerConfig;
 import org.apache.roller.weblogger.pojos.GlobalPermission;
 import org.apache.roller.weblogger.pojos.RollerPermission;
@@ -45,12 +45,12 @@
 
 @com.google.inject.Singleton
 public class JPAUserManagerImpl implements UserManager {
-    private static Log log = LogFactory.getLog(JPAUserManagerImpl.class);
+    private static final Log log = LogFactory.getLog(JPAUserManagerImpl.class);
 
     private final JPAPersistenceStrategy strategy;
     
     // cached mapping of userNames -> userIds
-    private Map<String, String> userNameToIdMap = Collections.synchronizedMap(new HashMap<String, String>());
+    private final Map<String, String> userNameToIdMap = Collections.synchronizedMap(new HashMap<>());
     
 
     @com.google.inject.Inject
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java
index 8c27a9e..b9bdf1f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogEntryManagerImpl.java
@@ -21,9 +21,9 @@
 import java.util.*;
 import java.text.SimpleDateFormat;
 import java.sql.Timestamp;
-import javax.persistence.NoResultException;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java
index 09ae3eb..8cb1f96 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWeblogManagerImpl.java
@@ -26,9 +26,9 @@
 import org.apache.roller.weblogger.business.pings.PingTargetManager;
 import org.apache.roller.weblogger.config.WebloggerConfig;
 
-import javax.persistence.NoResultException;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
+import jakarta.persistence.NoResultException;
+import jakarta.persistence.Query;
+import jakarta.persistence.TypedQuery;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -81,7 +81,7 @@
     private final JPAPersistenceStrategy strategy;
     
     // cached mapping of weblogHandles -> weblogIds
-    private final Map<String,String> weblogHandleToIdMap = Collections.synchronizedMap(new HashMap<String,String>());
+    private final Map<String, String> weblogHandleToIdMap = Collections.synchronizedMap(new HashMap<>());
 
     @com.google.inject.Inject
     protected JPAWeblogManagerImpl(Weblogger roller, JPAPersistenceStrategy strat) {