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;
}
}