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

ffang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/main by this push:
     new 8015d56fb2 [CXF-9130]NPE guard for WrapperClassLoader
8015d56fb2 is described below

commit 8015d56fb2046679f12e6ce4dca343b1c0e779bc
Author: Freeman Fang <[email protected]>
AuthorDate: Tue Apr 29 12:35:25 2025 -0400

    [CXF-9130]NPE guard for WrapperClassLoader
---
 .../apache/cxf/jaxws/spi/WrapperClassLoader.java   | 43 +++++++++++++++-------
 1 file changed, 30 insertions(+), 13 deletions(-)

diff --git 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/WrapperClassLoader.java
 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/WrapperClassLoader.java
index 9a993272ac..97f08935bc 100644
--- 
a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/WrapperClassLoader.java
+++ 
b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/spi/WrapperClassLoader.java
@@ -21,8 +21,12 @@ package org.apache.cxf.jaxws.spi;
 import java.lang.reflect.Method;
 import java.util.LinkedHashSet;
 import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 
 import org.apache.cxf.Bus;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.spi.GeneratedClassClassLoader;
 import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean;
@@ -39,8 +43,12 @@ import 
org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean;
  * @author olivier dufour
  */
 public class WrapperClassLoader extends GeneratedClassClassLoader implements 
WrapperClassCreator {
+    
+    protected static final Logger LOG = 
LogUtils.getL7dLogger(WrapperClassLoader.class);
+    
     private final WrapperClassNamingConvention wrapperClassNaming;
-
+    
+        
     public WrapperClassLoader(Bus bus) {
         super(bus);
         wrapperClassNaming = 
bus.getExtension(WrapperClassNamingConvention.class);
@@ -58,23 +66,29 @@ public class WrapperClassLoader extends 
GeneratedClassClassLoader implements Wra
                 MessagePartInfo inf = opInfo.getInput().getFirstMessagePart();
                 if (inf.getTypeClass() == null) {
                     MessageInfo messageInfo = 
opInfo.getUnwrappedOperation().getInput();
-                    wrapperBeans.add(createWrapperClass(inf,
-                            messageInfo,
-                            opInfo,
-                            method,
-                            true,
-                            factory));
+                    Class<?> wrapperClass = createWrapperClass(inf,
+                                       messageInfo,
+                                       opInfo,
+                                       method,
+                                       true,
+                                       factory);
+                    if (wrapperClass != null) {
+                        wrapperBeans.add(wrapperClass);
+                    }
                 }
                 MessageInfo messageInfo = 
opInfo.getUnwrappedOperation().getOutput();
                 if (messageInfo != null) {
                     inf = opInfo.getOutput().getFirstMessagePart();
                     if (inf.getTypeClass() == null) {
-                        wrapperBeans.add(createWrapperClass(inf,
-                                messageInfo,
-                                opInfo,
-                                method,
-                                false,
-                                factory));
+                        Class<?> wrapperClass = createWrapperClass(inf,
+                                           messageInfo,
+                                           opInfo,
+                                           method,
+                                           false,
+                                           factory);
+                        if (wrapperClass != null) {
+                            wrapperBeans.add(wrapperClass);
+                        }
                     }
                 }
             }
@@ -112,6 +126,9 @@ public class WrapperClassLoader extends 
GeneratedClassClassLoader implements Wra
             }
         }
         //throw new ClassNotFoundException(origClassName);
+        LOG.log(Level.WARNING, "Failed to find or generate wrapper class for 
operation '{}', "
+            + "                 method '{}'. This may lead to runtime 
errors.", 
+                new Object[] {op.getName(), method.getName()});
         return null;
     }
 }

Reply via email to