Skip to content

Commit 877ff66

Browse files
committed
CXF-8701: eliminate use of java.beans.Introspector, reduce footprint dependency on java.desktop
Signed-off-by: Raymond Augé <[email protected]>
1 parent 6ba9e12 commit 877ff66

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

core/src/main/java/org/apache/cxf/common/jaxb/SchemaCollectionContextProxy.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
import org.w3c.dom.Document;
4545

46+
import org.apache.cxf.common.util.ClassHelper;
4647
import org.apache.cxf.common.util.StringUtils;
4748
import org.apache.cxf.common.xmlschema.SchemaCollection;
4849
import org.apache.ws.commons.schema.XmlSchemaElement;
@@ -135,7 +136,7 @@ public Object getBeanInfo(Class<?> cls) {
135136
String name = xre == null ? "##default" : xre.name();
136137
String namespace = xre == null ? "##default" : xre.namespace();
137138
if ("##default".equals(name)) {
138-
name = java.beans.Introspector.decapitalize(cls.getSimpleName());
139+
name = ClassHelper.decapitalizedSimpleName(cls);
139140
}
140141
if ("##default".equals(namespace) && cls.getPackage() != null) {
141142
XmlSchema sc = cls.getPackage().getAnnotation(XmlSchema.class);
@@ -199,7 +200,7 @@ private QName getTypeQName(Class<?> cls, String namespace) {
199200
String tn = xtype == null ? "##default" : xtype.name();
200201
String tns = xtype == null ? "##default" : xtype.namespace();
201202
if ("##default".equals(tn)) {
202-
tn = java.beans.Introspector.decapitalize(cls.getSimpleName());
203+
tn = ClassHelper.decapitalizedSimpleName(cls);
203204
}
204205
if ("##default".equals(tns) || StringUtils.isEmpty(tns)) {
205206
tns = JAXBUtils.getPackageNamespace(cls);

core/src/main/java/org/apache/cxf/common/util/ClassHelper.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,23 @@ private Object getRealObjectInternal(Object o) {
101101
return o instanceof Proxy ? Proxy.getInvocationHandler(o) : o;
102102
}
103103

104+
public static String decapitalizedSimpleName(Class<?> clazz) {
105+
if (clazz == null) {
106+
return null;
107+
}
108+
String name = clazz.getSimpleName();
109+
if (name == null || name.isEmpty()) {
110+
return name;
111+
}
112+
if (name.length() > 1 && Character.isUpperCase(name.charAt(1))
113+
&& Character.isUpperCase(name.charAt(0))) {
114+
return name;
115+
}
116+
char[] chars = name.toCharArray();
117+
chars[0] = Character.toLowerCase(chars[0]);
118+
return new String(chars);
119+
}
120+
104121
public static Class<?> getRealClass(Object o) {
105122
return getRealClass(null, o);
106123
}

0 commit comments

Comments
 (0)