You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2003/09/10 20:01:56 UTC

DO NOT REPLY [Bug 23076] New: - ArryDeserializer does not use proper classloader

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23076>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23076

ArryDeserializer does not use proper classloader

           Summary: ArryDeserializer does not use proper classloader
           Product: Axis
           Version: 1.1
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Serialization/Deserialization
        AssignedTo: axis-dev@ws.apache.org
        ReportedBy: holstege@mathling.com


Consider the case where the item class in an array, which is obtained from a


custom type mapper that uses a special classloader. An array of such a class


is not properly handled by the ArrayDeserializer, which reverts to the 


system classloader.




The following patch to ArrayDeserializer fixes the problem:




291,294c291,304


<                 arrayClass = ClassUtils.forName(


<                   JavaUtils.getLoadableClassName(


<                     JavaUtils.getTextClassName(arrayItemClass.getName()) +


<                     dims));


---


>                 String loadableArrayClassName =


>                   JavaUtils.getLoadableClassName( 


>                     JavaUtils.getTextClassName( arrayItemClass.getName() ) +


>                     dims );


>                 try {


>                     arrayClass = ClassUtils.forName( loadableArrayClassName,


>                                                      true,


>                                                      arrayItemClass.
getClassLoader() 


>                                                     );


>                 }


>                 catch ( Exception e )


>                 {


>                     arrayClass = ClassUtils.forName( loadableArrayClassName );


>                 }