void processPendingInitializations() { if (pendingInitializations != null) { final Collection<PendingInitialization> pendingInitializationValues = new HashSet<PendingInitialization>( pendingInitializations.values()); for (PendingInitialization pi : pendingInitializationValues) { // move pi from pending initializations to under initialization final String objectName = pi.initializable.getName(); pi = pendingInitializations.remove(objectName); if (pi != null) { // initialize performInitialization(pi.object, pi.initializable); } } } }
void initialize(final Object object, final Descriptor descriptor, final boolean isDelayable) { final InitializationType initializationType = getInitializationType(object, descriptor, isDelayable); if (initializationType == InitializationType.IMMEDIATE) { performInitialization(object, descriptor); } else if (initializationType == InitializationType.DELAYEBLE) { addPendingInitialization(object, descriptor); } else { final String objectName = descriptor.getName(); if (objectName != null) { set(objectName, object); } } }