diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java index 8c8f89ca5..6108d7daa 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataDefaults.java @@ -350,9 +350,11 @@ public abstract class AbstractMetaDataDefaults * user-defined. */ protected static boolean isUserDefined(Class cls) { - return cls != null && !cls.getName().startsWith("java.") - && !cls.getName().startsWith ("javax."); - } + return cls != null + && !cls.getName().startsWith("java.") + && !cls.getName().startsWith ("javax.") + && !cls.getName().startsWith ("jakarta."); + } /** * Affirms if the given method matches the following signature diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java index bef35b699..9a8bcc48e 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedArrayListProxy.java @@ -25,6 +25,7 @@ import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.ListIterator; +import java.util.function.IntFunction; import org.apache.openjpa.kernel.AutoDetach; import org.apache.openjpa.kernel.Broker; @@ -406,6 +407,14 @@ public class DelayedArrayListProxy extends ArrayList implements ProxyCollection, return super.toArray(array); } + @Override + public Object[] toArray(IntFunction generator) { + if (!_directAccess && isDelayLoad()) { + load(); + } + return super.toArray(generator); + } + @Override public boolean equals(Object paramObject) { if (!_directAccess && isDelayLoad()) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java index d15fedfbf..cb142f56d 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedHashSetProxy.java @@ -23,6 +23,7 @@ import java.util.Collection; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; +import java.util.function.IntFunction; import org.apache.openjpa.kernel.AutoDetach; import org.apache.openjpa.kernel.Broker; @@ -276,6 +277,14 @@ public class DelayedHashSetProxy extends HashSet implements DelayedProxy, ProxyC return super.toArray(a); } + @Override + public Object[] toArray(IntFunction generator) { + if (!_directAccess && isDelayLoad()) { + load(); + } + return super.toArray(generator); + } + @Override public boolean containsAll(Collection c) { if (!_directAccess && isDelayLoad()) { @@ -284,6 +293,7 @@ public class DelayedHashSetProxy extends HashSet implements DelayedProxy, ProxyC return super.containsAll(c); } + @Override public String toString() { if (!_directAccess && isDelayLoad()) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java index 15e6b1dac..a15618771 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedHashSetProxy.java @@ -23,6 +23,7 @@ import java.util.Collection; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.function.IntFunction; import org.apache.openjpa.kernel.AutoDetach; import org.apache.openjpa.kernel.Broker; @@ -275,6 +276,14 @@ public class DelayedLinkedHashSetProxy extends LinkedHashSet implements DelayedP return super.toArray(a); } + @Override + public Object[] toArray(IntFunction generator) { + if (!_directAccess && isDelayLoad()) { + load(); + } + return super.toArray(generator); + } + @Override public boolean containsAll(Collection c) { if (!_directAccess && isDelayLoad()) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java index 8df82db6b..77562c628 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedLinkedListProxy.java @@ -25,6 +25,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; +import java.util.function.IntFunction; import org.apache.openjpa.kernel.AutoDetach; import org.apache.openjpa.kernel.Broker; @@ -568,6 +569,14 @@ public class DelayedLinkedListProxy extends LinkedList implements ProxyCollectio return super.toArray(array); } + @Override + public Object[] toArray(IntFunction generator) { + if (!_directAccess && isDelayLoad()) { + load(); + } + return super.toArray(generator); + } + @Override public boolean contains(Object object) { if (!_directAccess && isDelayLoad()) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java index 10f07da33..54283b9ec 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedPriorityQueueProxy.java @@ -24,6 +24,7 @@ import java.util.Comparator; import java.util.Iterator; import java.util.PriorityQueue; import java.util.SortedSet; +import java.util.function.IntFunction; import org.apache.openjpa.kernel.AutoDetach; import org.apache.openjpa.kernel.Broker; @@ -330,6 +331,14 @@ public class DelayedPriorityQueueProxy extends PriorityQueue implements ProxyCol return super.toArray(array); } + @Override + public Object[] toArray(IntFunction generator) { + if (!_directAccess && isDelayLoad()) { + load(); + } + return super.toArray(generator); + } + @Override public boolean containsAll(Collection c) { if (!_directAccess && isDelayLoad()) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java index 281bf9aa8..0bdbb4b24 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedTreeSetProxy.java @@ -25,6 +25,7 @@ import java.util.Iterator; import java.util.NavigableSet; import java.util.SortedSet; import java.util.TreeSet; +import java.util.function.IntFunction; import org.apache.openjpa.kernel.AutoDetach; import org.apache.openjpa.kernel.Broker; @@ -315,6 +316,14 @@ public class DelayedTreeSetProxy extends TreeSet implements ProxyCollection, Del return super.toArray(array); } + @Override + public Object[] toArray(IntFunction generator) { + if (!_directAccess && isDelayLoad()) { + load(); + } + return super.toArray(generator); + } + @Override public Comparator comparator() { if (!_directAccess && isDelayLoad()) { diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java index ee2ea87ea..d71495030 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/util/DelayedVectorProxy.java @@ -26,6 +26,7 @@ import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Vector; +import java.util.function.IntFunction; import org.apache.openjpa.kernel.AutoDetach; import org.apache.openjpa.kernel.Broker; @@ -525,6 +526,14 @@ public class DelayedVectorProxy extends Vector implements ProxyCollection, Delay return super.toArray(array); } + @Override + public Object[] toArray(IntFunction generator) { + if (!_directAccess && isDelayLoad()) { + load(); + } + return super.toArray(generator); + } + @Override public synchronized boolean equals(Object paramObject) { if (!_directAccess && isDelayLoad()) { diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java index b0acd1399..8c97b3978 100644 --- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java +++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ConfigurationImpl.java @@ -769,7 +769,7 @@ public class ConfigurationImpl /** * Adds a prefix "openjpa." to the given key, if necessary. A key is * considered without prefix if it starts neither of "openjpa.", - * "java." and "javax.". + * "java.", "javax." and {@code "jakarta."}. */ String fixPrefix(String key) { return (key == null || hasKnownPrefix(key)) ? key : "openjpa."+key; diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java index 246ea3b49..1b104dc75 100644 --- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java +++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/meta/ClassMetaDataIterator.java @@ -66,6 +66,7 @@ public class ClassMetaDataIterator implements MetaDataIterator { ClassLoader loader, boolean topDown) { // skip classes that can't have metadata if (cls != null && (cls.isPrimitive() + || cls.getName().startsWith("jakarta.") || cls.getName().startsWith("java.") || cls.getName().startsWith("javax."))) { _loader = null; diff --git a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java index f56f2fc46..1c3881790 100644 --- a/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java +++ b/openjpa-lib/src/main/java/org/apache/openjpa/lib/util/TemporaryClassLoader.java @@ -55,7 +55,8 @@ public class TemporaryClassLoader extends ClassLoader { // "sun." is required for JDK 1.4, which has an access check for // sun.reflect.GeneratedSerializationConstructorAccessor1 if (name.startsWith("java.") || name.startsWith("javax.") - || name.startsWith("sun.") || name.startsWith("jdk.")) { + || name.startsWith("sun.") || name.startsWith("jdk.") + || name.startsWith("jakarta.") ) { return Class.forName(name, resolve, getClass().getClassLoader()); }