openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Curtis (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-1692) Add post creation callback to BrokerFactory
Date Fri, 11 Jun 2010 19:21:14 GMT

    [ https://issues.apache.org/jira/browse/OPENJPA-1692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12877931#action_12877931
] 

Rick Curtis commented on OPENJPA-1692:
--------------------------------------

@Pinaki -- Great point, but I want to keep this JIRA focused on properly designing the infrastructure
for post creation callbacks and moving existing dependent code.

I opened OPENJPA-1694 as a defect for us to be more intelligent about when we can eagerly
load metadata. Perhaps when doing this work we will discover that there are other cases where
it makes sense to remove some of the laziness of OpenJPA for the sake of scalability.

> Add post creation callback to BrokerFactory
> -------------------------------------------
>
>                 Key: OPENJPA-1692
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1692
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.0.0, 2.1.0
>            Reporter: Rick Curtis
>            Assignee: Rick Curtis
>             Fix For: 2.1.0
>
>
> 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.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message