[ 
https://issues.apache.org/jira/browse/AXIS2-5751?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15216383#comment-15216383
 ] 

Andreas Veithen commented on AXIS2-5751:
----------------------------------------

Can you provide a minimal test service that triggers the problem?

> 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: 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]

Reply via email to