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

Add post creation callback to BrokerFactory

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    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

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          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:

              Slack

                Issue deployment