Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@apache.org Received: (qmail 1945 invoked from network); 4 May 2002 18:49:47 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 4 May 2002 18:49:47 -0000 Received: (qmail 15624 invoked by uid 97); 4 May 2002 18:49:49 -0000 Delivered-To: qmlist-jakarta-archive-commons-dev@nagoya.betaversion.org Received: (qmail 15532 invoked by alias); 4 May 2002 18:49:49 -0000 Delivered-To: jakarta-archive-commons-dev@jakarta.apache.org Received: (qmail 15500 invoked by uid 97); 4 May 2002 18:49:48 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 15488 invoked by uid 98); 4 May 2002 18:49:47 -0000 X-Antivirus: nagoya (v4198 created Apr 24 2002) X-Qmail-Scanner-Mail-From: baliuka@centras.lt via jim.skynet.vl X-Qmail-Scanner: 1.03 (Clean. Processed in 1.297105 secs) Message-ID: <000901c1f39c$6cf09b40$0111010a@user> From: "Juozas Baliuka" To: "Jakarta Commons Developers List" References: <12522DBF.5DF27E3D.002160F5@netscape.net> Subject: Re: RE: Re: ClassCastException raised in newFactory() method when starting from JUnit test Date: Sat, 4 May 2002 20:49:30 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N Hi, Yes it can solve the problem in JUnit and it is possible to solve this problem in app containers by adding commons-logging to sytem classpath, but I think it is good to to add factory method with ClassLoader paramater or use the same classloader for interface and implementation loading, it must be trivial to fix. ----- Original Message ----- From: "Rice Yeh" To: ""Jakarta Commons Developers List"" Sent: Saturday, May 04, 2002 7:44 PM Subject: RE: RE: Re: ClassCastException raised in newFactory() method when starting from JUnit test > Hi, > I find a quick solution to this problem. It is to add the following properties to junit's excluded.properties file, which is located in package junit.runner. > > excluded.6=org.apache.commons.logging.* > excluded.7=org.xml.* > > Because Digest's test programs seem having similar problem. By adding org.xml.* to this file, it is solved. By adding these two properties, then these kinds of classes will be loaded by system classloader and hence not reloadable from junit. I just wonder developer writting this test program have any other way out or just do not meet this problem. > > Regards, > Rice > > riceyeh@netscape.net (Rice Yeh) wrote: > > >Hi, > > newFactory() use thread context classloader to load class. It is like > > > >clazz = classLoader.loadClass(factoryClass); > >return (LogFactory) clazz.newInstance(); > > > >where classLoader is thread context loader. I am confused with java's classloader's mechanism. Does this problem have anything to do with namespace? It should be no. Isn't? > > Another mail said this problem is just like anothe problem rasing ClassNotFound Exception. Could any detail explanation be provided? Thank you. > > > >Regards, > >Rice > > > > > > > >"Juozas Baliuka" wrote: > > > >>Sorry, > >>"MyCass obj = (MyCass)Class.forName(MyCass.class.getName());" > >>----- Original Message ----- > >>From: "Juozas Baliuka" > >>To: "Jakarta Commons Developers List" > >>Sent: Wednesday, May 01, 2002 9:49 PM > >>Subject: Re: ClassCastException raised in newFactory() method when starting > >>from JUnit test > >> > >> > >>> Hi, > >>> I am not sure about "newFactory()", but in the most problem is like this: > >>> > >>> MyCass obj = Class.forName(MyCass.class.getName()); > >>> > >>> This allways throws ClassCastException if this code is loaded not by > >>> "SystemClassLoader". > >>> In this case we have two diferent classes, the same name but not > >>> ClassLoader. > >>> > >>> This is OK: > >>> MyCass obj = Class.forName(MyCass.class.getName(),true, > >>> MyCass.class.getClassLoader() ); > >>> > >>> Both classes have the same name and ClassLoader. > >>> > >>> if "newFactory()" doe's "Class.forName" it must have alternatyve: > >>> "newFactory(ClassLoader cl)" and use "cl" as parameter in "Class.forName". > >>> > >>> > >>> > >>> > >>> ----- Original Message ----- > >>> From: "Rice Yeh" > >>> To: ""Jakarta Commons Developers List"" > >>> Sent: Wednesday, May 01, 2002 2:48 PM > >>> Subject: RE: ClassCastException raised in newFactory() method when > >>starting > >>> from JUnit test > >>> > >>> > >>> > Hi, > >>> > Sorry, I past wrong attachement. The original one will not cause this > >>> problem. I attache a new one, which just moves > >>> > > >>> > Digester d = new Digester(); > >>> > System.out.println("OK"); > >>> > to testLogging() method. > >>> > > >>> > Regards, > >>> > Rice > >>> > > >>> > riceyeh@netscape.net (Rice Yeh) wrote: > >>> > > >>> > >Hi all, > >>> > > > >>> > > Just wonder why ClassCastException is raised at line 496 of LogFactory > >>> in newFactory() method when running as a JUnit test? I found this problem > >>> when running RequiredNameTest in commons-validator. When casting a class > >>to > >>> some superclass, does classloader from other thread form a namespace and > >>so > >>> can NOT cast it? Java language spec seems not regulate this. I have proven > >>> this with a small program. > >>> > > Attached are JUnit test files I use to study this problem. > >>> > > > >>> > >Regards, > >>> > >Rice > >>> > > > >>> > > > >>> > >__________________________________________________________________ > >>> > >Your favorite stores, helpful shopping tools and great gift ideas. > >>> Experience the convenience of buying online with Shop@Netscape! > >>> http://shopnow.netscape.com/ > >>> > > > >>> > >Get your own FREE, personal Netscape Mail account today at > >>> http://webmail.netscape.com/ > >>> > > > >>> > > >>> > > >>> > __________________________________________________________________ > >>> > Your favorite stores, helpful shopping tools and great gift ideas. > >>> Experience the convenience of buying online with Shop@Netscape! > >>> http://shopnow.netscape.com/ > >>> > > >>> > Get your own FREE, personal Netscape Mail account today at > >>> http://webmail.netscape.com/ > >>> > > >>> > >>> > >>> ------------------------------------------------------------------------ -- > >>-- > >>> ---- > >>> > >>> > >>> > /* > >>> > * TestSuite.java > >>> > * JUnit based test > >>> > * > >>> > * Created on May 1, 2002, 7:38 PM > >>> > */ > >>> > > >>> > package test; > >>> > > >>> > import junit.framework.*; > >>> > import org.apache.commons.digester.Digester; > >>> > > >>> > /** > >>> > * > >>> > * @author Rice Yeh > >>> > */ > >>> > public class LoggingFromDigestTest extends TestCase > >>> > { > >>> > > >>> > public LoggingFromDigestTest(java.lang.String testName) > >>> > { > >>> > super(testName); > >>> > } > >>> > > >>> > public static void main(java.lang.String[] args) > >>> > { > >>> > > >>> > > >>> > junit.swingui.TestRunner.run(suite()); > >>> > } > >>> > > >>> > public void setUp() > >>> > { > >>> > > >>> > } > >>> > > >>> > > >>> > > >>> > public static Test suite() > >>> > { > >>> > TestSuite suite = new TestSuite(LoggingFromDigestTest.class); > >>> > > >>> > return suite; > >>> > } > >>> > > >>> > public void testLogging() > >>> > { > >>> > Digester d = new Digester(); > >>> > System.out.println("OK"); > >>> > } > >>> > > >>> > public void tearDown() > >>> > { > >>> > } > >>> > } > >>> > > >>> > > >>> > >>> > >>> ------------------------------------------------------------------------ -- > >>-- > >>> ---- > >>> > >>> > >>> > -- > >>> > To unsubscribe, e-mail: > >>> > >>> > For additional commands, e-mail: > >>> > >>> > >>> > >>> -- > >>> To unsubscribe, e-mail: > >> > >>> For additional commands, e-mail: > >> > >>> > >> > >> > >>-- > >>To unsubscribe, e-mail: > >>For additional commands, e-mail: > >> > >> > > > > > >__________________________________________________________________ > >Your favorite stores, helpful shopping tools and great gift ideas. Experience the convenience of buying online with Shop@Netscape! http://shopnow.netscape.com/ > > > >Get your own FREE, personal Netscape Mail account today at http://webmail.netscape.com/ > > > > > >-- > >To unsubscribe, e-mail: > >For additional commands, e-mail: > > > > > > > __________________________________________________________________ > Your favorite stores, helpful shopping tools and great gift ideas. Experience the convenience of buying online with Shop@Netscape! http://shopnow.netscape.com/ > > Get your own FREE, personal Netscape Mail account today at http://webmail.netscape.com/ > > > -- > To unsubscribe, e-mail: > For additional commands, e-mail: > -- To unsubscribe, e-mail: For additional commands, e-mail: