Uploaded image for project: 'OpenJPA'
  1. OpenJPA
  2. OPENJPA-1692

Add post creation callback to BrokerFactory

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.0, 2.1.0
    • 2.1.0
    • kernel
    • None

    Description

      There have been a couple instances (that come to my mind) where there was the need to do some work after creating the broker factory. Sometimes there is a necessity to ensure single threadedness @see (PersistenceProviderImpl.postBrokerFactoryInitialization(...)), other times we need to perform some additional configuration / initialization after the BrokerFactory has completed (openjpa.InitializeEagerly=true).

      I recently ran across a problem with the second case. In AbstractBrokerFactory.ctor(...) we attempt to create a broker even though the subclassed BrokerFactory hasn't able to execute it's constructor.

      Example pseudo code:

      abstract class AbstractBrokerFactory {
      AbstractBrokerFactory(Config c)

      { // setup if(InitializeEagerly==true) this.newBroker(); <-- BAD! The subclass hasn't executed it's constructor but it may be asked to create a new broker. }


      }

      class ConcreteBrokerFactory extends AbstractBrokerFactory {
      Config _conf;
      ConcreteBrokerFactory (Config c)

      { super(c); // setup _conf = c; }

      newBroker()

      { _conf.getSomething(); <-- _conf IS NULL because the constructor hasn't fully executed yet. }

      }

      I propose that we need a postCreationCallBack method on the BrokerFactory interface. This will be a single place that Bootstrap can drive this 'after creation ish' work.

      Attachments

        Activity

          People

            curtisr7 Richard G. Curtis
            curtisr7 Richard G. Curtis
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: