[
https://issues.apache.org/jira/browse/AXIS2-5751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15246531#comment-15246531
]
Hudson commented on AXIS2-5751:
-------------------------------
SUCCESS: Integrated in Axis2 #3441 (See
[https://builds.apache.org/job/Axis2/3441/])
AXIS2-5751: Correctly handle anyType (Object) properties with null values.
(veithen: rev 1739815)
* axis2/modules/adb/pom.xml
* axis2/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
* axis2/modules/adb/test/org/apache/axis2/databinding/utils/BeanUtilTest.java
*
axis2/modules/adb/test/org/apache/axis2/databinding/utils/ComplexTypeWithAnyTypeElement.java
> Databinding- BeanUtil.getPullParser() throws NullPointerException
> -----------------------------------------------------------------
>
> Key: AXIS2-5751
> URL: https://issues.apache.org/jira/browse/AXIS2-5751
> Project: Axis2
> Issue Type: Bug
> Components: adb
> Affects Versions: 1.7.1
> Reporter: Vasile Bucur
> Attachments: AXIS2-5751-ServiceTest.7z, stacktrace.txt,
> stacktrace_array_tc2.txt
>
>
> 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:
> {code:java}
> public class CustomError {
> private Error code;
> private Object detail;
> // constructors
> // getters and setters
> }
> ..
> new CustomError(code41); // detail is null
> {code}
> in adb:
> {code:title=BeanUtil.java}
> 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);
> {code}
> {code:title=BeanUtil.java}
> public static XMLStreamReader getPullParser(Object beanObject,
> QName beanName,
> TypeTable typeTable,
> boolean qualified,
> boolean processingDocLitBare)
> {
> Class beanClass = beanObject.getClass(); // NullPointerException
> ..............
> {code}
> 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!
> {code:title=BeanUtil.java}
> 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());
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]