Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 89971 invoked from network); 12 Feb 2004 20:36:31 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 12 Feb 2004 20:36:31 -0000 Received: (qmail 62806 invoked by uid 500); 12 Feb 2004 20:36:10 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 62771 invoked by uid 500); 12 Feb 2004 20:36:10 -0000 Mailing-List: contact ojb-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "OJB Developers List" Reply-To: "OJB Developers List" Delivered-To: mailing list ojb-dev@db.apache.org Received: (qmail 62725 invoked from network); 12 Feb 2004 20:36:09 -0000 Received: from unknown (HELO minotaur.apache.org) (209.237.227.194) by daedalus.apache.org with SMTP; 12 Feb 2004 20:36:09 -0000 Received: (qmail 89849 invoked from network); 12 Feb 2004 20:36:19 -0000 Received: from localhost.hyperreal.org (HELO apache.org) (127.0.0.1) by localhost.hyperreal.org with SMTP; 12 Feb 2004 20:36:19 -0000 Message-ID: <402BE3BB.5010201@apache.org> Date: Thu, 12 Feb 2004 21:36:11 +0100 From: Armin Waibel User-Agent: Mozilla Thunderbird 0.5 (Windows/20040207) X-Accept-Language: en-us, en MIME-Version: 1.0 To: OJB Developers List Subject: Re: Initialization of classes in Metadatamanager References: <402BD88D.1070201@olin.edu> In-Reply-To: <402BD88D.1070201@olin.edu> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Rating: localhost.hyperreal.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Hi Gus, Gus Heck wrote: > It seems that in the process of loading MetadataManager each persistant > class is loaded with a class.forName(classname, true, > Thread.currentThread().getContextClassLoader()). (in > org.apache.ojb.broker.util.ClassHelper) I think the second argument true > is causing java to do a test initialization of the 0 arg constructor. Is > this neccessary? I am getting the following stack trace when I tried to > have a persistent class grab an ID from a static instance of my own > IDManager class. The result was an NPE in the *constructor* of my class > which really shouldn't be called until I actually instantiate an > instance. Since IdManager is itself persistant I can't set this value at > class initialization for the same reason.... > > Does passing true to class.forName have an important benefit that I am > not aware of? For the pc objects AFAIK no! Interesting problem. All metadata classes use the 'initialize true' parameter. The class object was only loaded to verifiy the existence of the class on metadata read, no need to initialize the pc object. Should we change this? regards, Armin > > Gus > > Exception in thread "main" java.lang.ExceptionInInitializerError > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:219) > at > org.apache.ojb.broker.util.ClassHelper.getClass(ClassHelper.java:21) > at > org.apache.ojb.broker.util.ClassHelper.getClass(ClassHelper.java:89) > at > org.apache.ojb.broker.metadata.RepositoryXmlHandler.startElement(RepositoryXmlHandler.java:235) > > at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1637) > at org.apache.crimson.parser.Parser2.content(Parser2.java:1926) > at > org.apache.crimson.parser.Parser2.externalParsedEntity(Parser2.java:2984) > at > org.apache.crimson.parser.Parser2.expandEntityInContent(Parser2.java:2702) > at > org.apache.crimson.parser.Parser2.maybeReferenceInContent(Parser2.java:2569) > > at org.apache.crimson.parser.Parser2.content(Parser2.java:1980) > at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654) > at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:634) > at org.apache.crimson.parser.Parser2.parse(Parser2.java:333) > at > org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448) > at > org.apache.ojb.broker.metadata.RepositoryPersistor.readMetadataFromXML(RepositoryPersistor.java:343) > > at > org.apache.ojb.broker.metadata.RepositoryPersistor.buildRepository(RepositoryPersistor.java:300) > > at > org.apache.ojb.broker.metadata.RepositoryPersistor.readDescriptorRepository(RepositoryPersistor.java:215) > > at > org.apache.ojb.broker.metadata.MetadataManager.init(MetadataManager.java:133) > > at > org.apache.ojb.broker.metadata.MetadataManager.(MetadataManager.java:123) > > at > org.apache.ojb.broker.metadata.MetadataManager.(MetadataManager.java:112) > > at > org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl.getDefaultKey(PersistenceBrokerFactoryBaseImpl.java:114) > > at > org.apache.ojb.broker.core.PersistenceBrokerFactoryBaseImpl.defaultPersistenceBroker(PersistenceBrokerFactoryBaseImpl.java:196) > > at > org.apache.ojb.broker.PersistenceBrokerFactory.defaultPersistenceBroker(PersistenceBrokerFactory.java:104) > > at > org.cs101.fdb.impl.jdo.PersistenceHelper.getDirectDBCon(PersistenceHelper.java:145) > > at > org.cs101.fdb.impl.jdo.PersistenceHelper.(PersistenceHelper.java:74) > > at org.cs101.fdb.test.DbTestCase.(DbTestCase.java:36) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:141) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.(JUnitTestRunner.java:237) > > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.(JUnitTestRunner.java:210) > > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:520) > > Caused by: java.lang.NullPointerException > at org.cs101.fdb.impl.jdo.PersonBase.(PersonBase.java:87) > at org.cs101.fdb.impl.jdo.PersonBase.(PersonBase.java) > ... 32 more > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org > For additional commands, e-mail: ojb-dev-help@db.apache.org > > > --------------------------------------------------------------------- To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For additional commands, e-mail: ojb-dev-help@db.apache.org