directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stefan Seelmann (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (DIRSTUDIO-585) Do not modify the current thread's ClassLoader; or reset it afterwards
Date Mon, 08 Mar 2010 13:03:27 GMT

     [ https://issues.apache.org/jira/browse/DIRSTUDIO-585?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Stefan Seelmann resolved DIRSTUDIO-585.
---------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.5.3
         Assignee: Stefan Seelmann

Fixed in trunk:
  http://svn.apache.org/viewvc?rev=920308&view=rev


> Do not modify the current thread's ClassLoader; or reset it afterwards
> ----------------------------------------------------------------------
>
>                 Key: DIRSTUDIO-585
>                 URL: https://issues.apache.org/jira/browse/DIRSTUDIO-585
>             Project: Directory Studio
>          Issue Type: Bug
>          Components: studio-ldapbrowser
>    Affects Versions: 1.4.0, 1.5.0
>            Reporter: Karsten Baensch
>            Assignee: Stefan Seelmann
>             Fix For: 1.5.3
>
>
> Hi,
> in BrowserConnectionManager.load
> and in
> Utils.serialize / deserialize
> we recognized that the ClassLoader is modified without conserving / resetting it to the
previous one at the end.
> This conflicted with our class loading mechanisms ... streaming from our own class store.
> As a quick fix for testing, we could do for example the following; however, this is not
a real solution:
>     public static String serialize( Object o )
>     {
>     	String s = null;
>         Thread cur_thrd = Thread.currentThread(); //patch reset current class loader
>         ClassLoader cur_thrd_cl = cur_thrd.getContextClassLoader();
>         try{
> 	        cur_thrd.setContextClassLoader( Utils.class.getClassLoader() );
> 	        ByteArrayOutputStream baos = new ByteArrayOutputStream();
> 	        XMLEncoder encoder = new XMLEncoder( baos );
> 	        encoder.writeObject( o );
> 	        encoder.close();
> 	        s = LdifUtils.utf8decode( baos.toByteArray() );
>         }finally{
>             cur_thrd.setContextClassLoader(cur_thrd_cl);
>         }
>         return s;
>     }
> => Is there a better way?
> Thanks and regards,
> Karsten

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message