Author: curtisr7
Date: Mon Oct 5 17:14:29 2009
New Revision: 821925
URL: http://svn.apache.org/viewvc?rev=821925&view=rev
Log:
OPENJPA-250: Moved preloading to later in the init process and only create MDR
if preload is configured.
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java?rev=821925&r1=821924&r2=821925&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCBrokerFactory.java
Mon Oct 5 17:14:29 2009
@@ -85,11 +85,7 @@
public JDBCBrokerFactory(JDBCConfiguration conf) {
super(conf);
}
-
- public JDBCBrokerFactory(JDBCConfiguration conf, boolean earlyInit) {
- super(conf, earlyInit);
- }
-
+
public Map<String,Object> getProperties() {
// add platform property
Map<String,Object> props = super.getProperties();
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java?rev=821925&r1=821924&r2=821925&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
Mon Oct 5 17:14:29 2009
@@ -150,13 +150,10 @@
return (AbstractBrokerFactory) _pool.get(key);
}
- protected AbstractBrokerFactory(OpenJPAConfiguration config) {
- this(config, true);
- }
/**
* Constructor. Configuration must be provided on construction.
*/
- protected AbstractBrokerFactory(OpenJPAConfiguration config, boolean
earlyInit) {
+ protected AbstractBrokerFactory(OpenJPAConfiguration config) {
_conf = config;
_brokers = newBrokerSet();
getPcClassLoaders();
@@ -167,25 +164,6 @@
_conf.getConnectionRetainModeConstant(), false).close();
}
- if (!earlyInit)
- return;
- // This eager metadata loading is invoked at construction.
- // It can not happen during the MetaDataRepository configuration
because
- // within a container environment an uninitialized repository must be
passed
- // to the PCClassFileTransformer. If we attempt to load before
registering
- // the class transformer, we miss the class being defined by the JVM
and in turn
- // we fail to enhance our entities.
- try {
- MetaDataRepository mdr = config.getMetaDataRepositoryInstance();
- mdr.preload();
- } catch (MetaDataException e) {
- // recognize metadata related error if using early initialization
- throw e;
- } catch (Throwable t) {
- // swallow other errors because merely trying to obtain a
repository
- // may trigger a database connection
-
_conf.getConfigurationLog().error(_loc.get("factory-init-error",t));
- }
initWriteBehindCallback();
}
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=821925&r1=821924&r2=821925&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
Mon Oct 5 17:14:29 2009
@@ -315,8 +315,7 @@
* all internal data container structures.
* If the openjpa.MetaDataRepository plugin value preload=false is set,
this method will noop.
* <p>
- * NOTE : This method is not thread safe and should ONLY be called by the
AbstractBrokerFactory
- * constructor.
+ * NOTE : This method is not thread safe and should ONLY be called by
PersistenceProviderImpl.
*
* @see #getPersistentTypeNames(boolean, ClassLoader)
*/
Modified:
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java?rev=821925&r1=821924&r2=821925&view=diff
==============================================================================
---
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
(original)
+++
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
Mon Oct 5 17:14:29 2009
@@ -42,6 +42,7 @@
import org.apache.openjpa.lib.conf.Configurations;
import org.apache.openjpa.lib.log.Log;
import org.apache.openjpa.lib.util.Localizer;
+import org.apache.openjpa.lib.util.Options;
import org.apache.openjpa.meta.MetaDataModes;
import org.apache.openjpa.meta.MetaDataRepository;
import org.apache.openjpa.persistence.validation.ValidationUtils;
@@ -94,6 +95,16 @@
// TODO - Can this be moved back to BrokerImpl.initialize()?
// Create appropriate LifecycleEventManager
loadValidator(_log, conf);
+
+ // We need to wait to preload until after we get back a fully
configured/instantiated
+ // BrokerFactory. This is because it is possible that someone has
extended OpenJPA
+ // functions and they need to be allowed time to configure
themselves before we go off and
+ // start instanting configurable objects
(ie:openjpa.MetaDataRepository). Don't catch
+ // any exceptions here because we want to fail-fast.
+ Options o =
Configurations.parseProperties(Configurations.getProperties("openjpa.MetaDataRepository"));
+ if(o.getBooleanProperty("Preload")){
+ conf.getMetaDataRepositoryInstance().preload();
+ }
return JPAFacadeHelper.toEntityManagerFactory(factory);
} catch (Exception e) {
@@ -180,7 +191,16 @@
OpenJPAConfiguration conf = factory.getConfiguration();
_log = conf.getLog(OpenJPAConfiguration.LOG_RUNTIME);
loadValidator(_log, conf);
-
+ // We need to wait to preload until after we get back a fully
configured/instantiated
+ // BrokerFactory. This is because it is possible that someone has
extended OpenJPA
+ // functions and they need to be allowed time to configure
themselves before we go off and
+ // start instanting configurable objects
(ie:openjpa.MetaDataRepository). Don't catch
+ // any exceptions here because we want to fail-fast.
+ Options o =
Configurations.parseProperties(Configurations.getProperties("openjpa.MetaDataRepository"));
+ if(o.getBooleanProperty("Preload")){
+ conf.getAbstractBrokerFactoryInstance().preload();
+ }
+
return JPAFacadeHelper.toEntityManagerFactory(factory);
} catch (Exception e) {
throw PersistenceExceptions.toPersistenceException(e);
@@ -213,7 +233,7 @@
protected OpenJPAConfiguration newConfigurationImpl() {
return new OpenJPAConfigurationImpl();
}
-
+
/**
* Java EE 5 class transformer.
*/