Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 51506 invoked from network); 13 Feb 2004 15:52:15 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 13 Feb 2004 15:52:15 -0000 Received: (qmail 55346 invoked by uid 500); 13 Feb 2004 15:52:08 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 55327 invoked by uid 500); 13 Feb 2004 15:52:08 -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 55312 invoked from network); 13 Feb 2004 15:52:08 -0000 Received: from unknown (HELO mail) (141.154.102.8) by daedalus.apache.org with SMTP; 13 Feb 2004 15:52:08 -0000 Received: from whistler ( [141.154.102.2]) by transdecisions.com with ESMTP (Mailtraq/2.5.0.1568) id TRNSED5A33F7 for ojb-dev@db.apache.org; Fri, 13 Feb 2004 10:47:05 -0500 Message-ID: <00a101c3f24a$219bdbb0$7101a8c0@transdecisions.com> From: "Andy Malakov" To: "OJB Developers List" References: <402BD88D.1070201@olin.edu> Subject: Re: Initialization of classes in Metadatamanager Date: Fri, 13 Feb 2004 10:57:49 -0500 Organization: TransDecisions, Inc 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.2800.1158 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 X-Hops: 1 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 "I think the second argument true is causing java to do a test initialization of the 0 arg constructor" What do you mean? JVM certainly will NOT call any constructors during class initialization unless your class does it in own static initializers. ----- Original Message ----- From: "Gus Heck" To: "OJB Developers List" Sent: Thursday, February 12, 2004 2:48 PM Subject: Initialization of classes in Metadatamanager > 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? > > 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