This is an automated email from the ASF dual-hosted git repository.

rzo1 pushed a commit to branch tomee-8.x
in repository https://gitbox.apache.org/repos/asf/tomee.git


The following commit(s) were added to refs/heads/tomee-8.x by this push:
     new cdcdacadf4 TOMEE-4126 - CXF 3.4.10
cdcdacadf4 is described below

commit cdcdacadf46bce4cd108333126902cbff9abe090
Author: Richard Zowalla <[email protected]>
AuthorDate: Thu Dec 15 08:05:25 2022 +0100

    TOMEE-4126 - CXF 3.4.10
---
 .../cxf/jaxrs/provider/AbstractJAXBProvider.java      | 19 ++++++++++++++-----
 .../org/apache/cxf/jaxrs/utils/GenericsUtils.java     |  4 ++++
 pom.xml                                               |  2 +-
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git 
a/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
 
b/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
index b94760ab33..165d9120d6 100644
--- 
a/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
+++ 
b/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxrs/provider/AbstractJAXBProvider.java
@@ -97,13 +97,14 @@ public abstract class AbstractJAXBProvider<T> extends 
AbstractConfigurableProvid
     protected static final String NS_MAPPER_PROPERTY_RI_INT = 
"com.sun.xml.internal.bind.namespacePrefixMapper";
     private static final String JAXB_DEFAULT_NAMESPACE = "##default";
     private static final String JAXB_DEFAULT_NAME = "##default";
-    private static final Set<Class<?>> UNSUPPORTED_CLASSES = 
+    private static final Set<Class<?>> UNSUPPORTED_CLASSES =
         new HashSet<Class<?>>(Arrays.asList(InputStream.class,
                                             OutputStream.class,
                                             StreamingOutput.class));
     protected Set<Class<?>> collectionContextClasses = 
ConcurrentHashMap.newKeySet();
 
     protected Map<String, String> jaxbElementClassMap = Collections.emptyMap();
+    protected Map<String, Boolean> objectFactoryOrIndexMap = new 
ConcurrentHashMap<>();
     protected boolean unmarshalAsJaxbElement;
     protected boolean marshalAsJaxbElement;
     protected boolean xmlTypeAsJaxbElementOnly;
@@ -146,7 +147,7 @@ public abstract class AbstractJAXBProvider<T> extends 
AbstractConfigurableProvid
     private DocumentDepthProperties depthProperties;
     private String namespaceMapperPropertyName;
 
-    private static JAXBContext newJAXBContextInstance(Class<?>[] classes, 
Map<String, Object> cProperties) 
+    private static JAXBContext newJAXBContextInstance(Class<?>[] classes, 
Map<String, Object> cProperties)
         throws JAXBException {
 
         try {
@@ -552,7 +553,7 @@ public abstract class AbstractJAXBProvider<T> extends 
AbstractConfigurableProvid
         final String packageName = PackageUtils.getPackageName(type);
         return packageContexts.computeIfAbsent(packageName, p -> {
             try {
-                final ClassLoader loader = 
AccessController.doPrivileged((PrivilegedAction<ClassLoader>) 
+                final ClassLoader loader = 
AccessController.doPrivileged((PrivilegedAction<ClassLoader>)
                     () -> {
                         return type.getClassLoader();
                     });
@@ -597,8 +598,15 @@ public abstract class AbstractJAXBProvider<T> extends 
AbstractConfigurableProvid
     }
 
     protected boolean objectFactoryOrIndexAvailable(Class<?> type) {
-        return type.getResource("ObjectFactory.class") != null
-               || type.getResource("jaxb.index") != null;
+        if (this.objectFactoryOrIndexMap.get(type.getName()) != null) {
+            return this.objectFactoryOrIndexMap.get(type.getName());
+        } else {
+            boolean ret = type.getResource("ObjectFactory.class") != null
+                    || type.getResource("jaxb.index") != null;
+            this.objectFactoryOrIndexMap.put(type.getName(), ret);
+            return ret;
+        }
+
     }
 
     private boolean objectFactoryForType(Type genericType) {
@@ -707,6 +715,7 @@ public abstract class AbstractJAXBProvider<T> extends 
AbstractConfigurableProvid
     public void clearContexts() {
         classContexts.clear();
         packageContexts.clear();
+        objectFactoryOrIndexMap.clear();
     }
 
     //TODO: move these methods into the dedicated utility class
diff --git 
a/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxrs/utils/GenericsUtils.java 
b/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxrs/utils/GenericsUtils.java
index ad7cca8550..d3aae0b669 100644
--- 
a/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxrs/utils/GenericsUtils.java
+++ 
b/deps/cxf-shade/src/patch/java/org/apache/cxf/jaxrs/utils/GenericsUtils.java
@@ -27,6 +27,10 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
+/**
+ * Note: This class isn't contained in the official CXF release series. <p></p>
+ * It is only present in the cxf-shade of the TomEE project.
+ */
 public final class GenericsUtils {
 
     private GenericsUtils() {
diff --git a/pom.xml b/pom.xml
index 99d8eab33a..8c7bc37167 100644
--- a/pom.xml
+++ b/pom.xml
@@ -207,7 +207,7 @@
     <version.activemq>5.16.5</version.activemq>
     <version.batchee>1.0.2</version.batchee>
     <version.bval>2.0.5</version.bval>
-    <version.cxf>3.4.9</version.cxf>
+    <version.cxf>3.4.10</version.cxf>
     <version.woodstox>6.4.0</version.woodstox>
     <version.geronimo.components>3.1.5</version.geronimo.components>
     
<version.geronimo-javamail_1.6_mail>1.0.1</version.geronimo-javamail_1.6_mail>

Reply via email to