/** * Add the specified <code>RegisterClassListener</code> to the listener * list. * @param crl the listener to be added */ public void addRegisterClassListener (RegisterClassListener crl) { HashSet alreadyRegisteredClasses = null; synchronized (listeners) { listeners.add(crl); // Make a copy of the existing set of registered classes. // Between these two lines of code, any number of new class // registrations might occur, and will then all wait until this // synchronized block completes. Some of the class registrations // might be delivered twice to the newly registered listener. alreadyRegisteredClasses = new HashSet<Class> (registeredClasses.keySet()); } // new registrations will call the new listener while the following // occurs notify the new listener about already-registered classes for (Iterator it = alreadyRegisteredClasses.iterator(); it.hasNext();) { Class pcClass = (Class)it.next(); Meta meta = getMeta (pcClass); RegisterClassEvent event = new RegisterClassEvent( this, pcClass, meta.getFieldNames(), meta.getFieldTypes(), meta.getFieldFlags(), meta.getPersistenceCapableSuperclass()); crl.registerClass (event); } }
/** * Add the specified <code>RegisterClassListener</code> to the listener * list. * @param crl the listener to be added */ public void addRegisterClassListener (RegisterClassListener crl) { HashSet alreadyRegisteredClasses = null; synchronized (listeners) { listeners.add(crl); // Make a copy of the existing set of registered classes. // Between these two lines of code, any number of new class // registrations might occur, and will then all wait until this // synchronized block completes. Some of the class registrations // might be delivered twice to the newly registered listener. alreadyRegisteredClasses = new HashSet<Class> (registeredClasses.keySet()); } // new registrations will call the new listener while the following // occurs notify the new listener about already-registered classes for (Iterator it = alreadyRegisteredClasses.iterator(); it.hasNext();) { Class pcClass = (Class)it.next(); Meta meta = getMeta (pcClass); RegisterClassEvent event = new RegisterClassEvent( this, pcClass, meta.getFieldNames(), meta.getFieldTypes(), meta.getFieldFlags(), meta.getPersistenceCapableSuperclass()); crl.registerClass (event); } }
/** Get the field types for a <code>PersistenceCapable</code> class. The * order of fields is the same as for field names. * @param pcClass the <code>PersistenceCapable</code> class. * @return the field types for the class. */ public Class[] getFieldTypes (Class pcClass) { Meta meta = getMeta (pcClass); return meta.getFieldTypes(); }
/** Get the field types for a <code>PersistenceCapable</code> class. The * order of fields is the same as for field names. * @param pcClass the <code>PersistenceCapable</code> class. * @return the field types for the class. */ public Class[] getFieldTypes (Class pcClass) { Meta meta = getMeta (pcClass); return meta.getFieldTypes(); }