Using setClassLoader

Ted Hesselroth <[email protected]> Thu, 02 Sep 2004 18:33:07 -0700
Newsgroups gmane.comp.embedded.carlsbad-cubes
Message-ID <[email protected]>
Trying setClassLoader in SwingEngine, I could not get it to work until 
changing the Class.forName line|| in Parser.java

        Class initClass = Class.forName( classname , true, 
this.engine.getClassLoader() );      // load update type

--kept getting ClassNotFoundException there. It looks like the 
classloader "cl" field is not getting fully propagated.


Also, I have a custom component using initclass. The component takes an 
Object argrument in its constructor. It wouldn't initialize until I 
changed the argument checking in DefaultFactory.java

         for (int j = 0; ctor != null && j < cParams.length; j++) {
           //if (cParams[j].equals( Object.class )) {
           // if (!cParams[j].equals( pTypes[j] )) {
           //   ctor = null; //dismissed
           //  }
           //} else {
             if (!cParams[j].isAssignableFrom( pTypes[j] )) {
               ctor = null; //dismissed
             }
           //}
         } // end for j - loop Ctor's parameter

I am using the getInstance of initclass to aquire an 
already-instantiated singleton, but my custom component doesn't know or 
need to know the type. That's why I'm giving it a subclass of Object 
even though it takes Object. Only the method isAssignableFrom is needed, 
because it also includes the "equals" case.

By the way, I'll be giving a talk including SWIX in the upcoming ADASS 
conference on astronomical data reduction, and just yesterday my 
application using SWIX was released, see

http://ssc.spitzer.caltech.edu/postbcd/spice.html

Ted Hesselroth