Description
Test Case 1 (stacktrace.txt):
My service operation returns an Response Object, having a header and content. In Header i have in CustomError (see code below) object that describes application errors and in content i have the payload.
In my specific case i'm calling the service operation which returns an Response object having in header a custom error without details. This causes the operation to fail because the pull parser wants to instantiate the result of the getter method witch is a null java.lang.Object.
Test code:
public class CustomError { private Error code; private Object detail; // constructors // getters and setters } .. new CustomError(code41); // detail is null
in adb:
Object value; if (readMethod != null) { readMethod.setAccessible(true); value = readMethod.invoke(beanObject); // value is null } else { throw new AxisFault("Property '" + propertyName + "' in bean class '" + beanClass.getName() + "'is not readable."); } ...... ...... }else { addTypeQname(elemntNameSpace, propertyQnameValueList, property, beanName, processingDocLitBare); if (Object.class.equals(ptype)) { //this is required to match this element prefix as //root element's prefix. QName qNamefortheType = (QName) typeTable .getComplexSchemaMap().get( getClassName(beanClass)); OMFactory fac = OMAbstractFactory.getOMFactory(); QName elementName; OMElement element; if (elemntNameSpace != null) { elementName = new QName( elemntNameSpace.getNamespaceURI(), property.getName(), qNamefortheType.getPrefix()); } else { elementName = new QName(property.getName()); } if(SimpleTypeMapper.isSimpleType(value)){ element = fac.createOMElement(elementName); element.addChild(fac.createOMText(SimpleTypeMapper .getStringValue(value))); }else{ // value is null !!! XMLStreamReader xr = BeanUtil.getPullParser(value, elementName, typeTable, qualified, false);
public static XMLStreamReader getPullParser(Object beanObject, QName beanName, TypeTable typeTable, boolean qualified, boolean processingDocLitBare) { Class beanClass = beanObject.getClass(); // NullPointerException ..............
Testcase 2 (stacktrace_array_tc2.txt)
return of the operation is also a complex structure but now inside the returned object at a deeper level there is a Array List of String arrays. Here another problem because the BeanUtil tries to get the package of the class [Ljava.lang.Object; meaning the arrays of object which is NULL resulting to NullPointerException!
if (typeTable != null && qualified) { QName qNamefortheType = typeTable.getQNamefortheType(beanClass.getName()); if (qNamefortheType == null) { // beanClass.getPackage() is null for class [Ljava.lang.Object; (Object[].class) qNamefortheType = typeTable.getQNamefortheType(beanClass.getPackage().getName()); } if (qNamefortheType == null) { throw new AxisFault("Mapping qname not fond for the package: " + beanObject.getClass().getPackage().getName()); }