OpenJPA
  1. OpenJPA
  2. OPENJPA-1692

Add post creation callback to BrokerFactory

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0, 2.1.0
    • Fix Version/s: 2.1.0
    • Component/s: kernel
    • Labels:
      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.

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Rick Curtis
            Reporter:
            Rick Curtis
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development