You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2009/10/16 16:14:08 UTC

svn commit: r825904 - in /openjpa/sandboxes/perf: openjpa-kernel/src/main/java/org/apache/openjpa/conf/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-persistence-jdbc/src/test/reso...

Author: curtisr7
Date: Fri Oct 16 14:14:08 2009
New Revision: 825904

URL: http://svn.apache.org/viewvc?rev=825904&view=rev
Log:
Updating preload with latests functional changes.

Modified:
    openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataRepositoryValue.java
    openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
    openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
    openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml
    openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java

Modified: openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataRepositoryValue.java
URL: http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataRepositoryValue.java?rev=825904&r1=825903&r2=825904&view=diff
==============================================================================
--- openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataRepositoryValue.java (original)
+++ openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/conf/MetaDataRepositoryValue.java Fri Oct 16 14:14:08 2009
@@ -34,9 +34,7 @@
     extends PluginValue {
 
     private static final String KEY = "MetaDataRepository";
-    private static final String PRELOAD_STR = "Preload=true";
-    private static final String NOLOCK_STR = "NoLock=true";
-      
+
     public MetaDataRepositoryValue() {
         super(KEY, false);
         String[] aliases = new String[] {
@@ -48,25 +46,6 @@
         setString(aliases[0]);
     }
 
-    public boolean getPreload() {
-        String p = getProperties();
-        if (p != null && p.indexOf(PRELOAD_STR) >= 0) {
-            return true;
-        } else if (getNoLock() == true) {
-            // No locking implies that we need to also preload.
-            // Return true regardless of the value of the
-            // preload flag.
-            return true;
-        }
-        return false;
-    }
-    public boolean getNoLock(){
-        String p = getProperties();
-        if (p != null && p.indexOf(NOLOCK_STR) >= 0) {
-            return true;
-        }
-        return false;
-    }
     public Object instantiate(Class type, Configuration c, boolean fatal) {
         MetaDataRepository repos = null;
         OpenJPAConfiguration conf = (OpenJPAConfiguration) c;

Modified: openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java
URL: http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java?rev=825904&r1=825903&r2=825904&view=diff
==============================================================================
--- openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java (original)
+++ openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AbstractBrokerFactory.java Fri Oct 16 14:14:08 2009
@@ -150,19 +150,6 @@
         _brokers = newBrokerSet();
         getPcClassLoaders();
 
-        // This logic needs to happen here for a reason! The preloading of the MDR
-        // can not happen during the configuration of the MDR because when running
-        // in a container environment we need to be able to get an uninitialized
-        // MDR to pass to the PCClassFileTransformer. If we preload before registering
-        // the class transformer, we miss the class being defined by the JVM and in turn
-        // we fail to enhance our entities.
-        OpenJPAConfigurationImpl impl = (OpenJPAConfigurationImpl) config;
-        MetaDataRepositoryValue m = impl.metaRepositoryPlugin;
-        if (m.getPreload() == true) {
-            // Obtain a reference to the MetaDataRepository and trigger the preload
-            MetaDataRepository mdr = config.getMetaDataRepositoryInstance();
-            mdr.preload();
-        }
     }
 
     /**

Modified: openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL: http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?rev=825904&r1=825903&r2=825904&view=diff
==============================================================================
--- openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
+++ openjpa/sandboxes/perf/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Fri Oct 16 14:14:08 2009
@@ -133,8 +133,8 @@
     private transient InterfaceImplGenerator _implGen = null;
     private transient MetaDataFactory _factory = null;
 
-    private int _resMode = MODE_META | MODE_MAPPING;
     private int _sourceMode = MODE_META | MODE_MAPPING | MODE_QUERY;
+    private int _resMode = MODE_META | MODE_MAPPING;
     private int _validate = VALIDATE_META | VALIDATE_UNENHANCED;
 
     // we buffer up any classes that register themselves to prevent
@@ -320,7 +320,7 @@
             _subs = new HashMap();
             _lock = null;
         }
-
+        
         MultiClassLoader multi =
             AccessController.doPrivileged(J2DoPrivHelper.newMultiClassLoaderAction());
         multi.addClassLoader(AccessController.doPrivileged(J2DoPrivHelper
@@ -343,7 +343,11 @@
                 Class<?> cls =
                     AccessController
                         .doPrivileged((J2DoPrivHelper.getForNameAction(c, true, multi)));
-                _factory.load(cls, MODE_ALL, multi);
+                // TODO -- need to test this
+//                resolveAll(multi);
+//                // Load query metadata
+//                _factory.load(cls, MODE_QUERY, multi);
+                _factory.load(cls, MODE_ALL, multi);                
             } catch (PrivilegedActionException pae) {
                 // Unexpected!
                 if (_log.isTraceEnabled() == true) {
@@ -352,6 +356,11 @@
                 }
             }
         }// end for
+        
+        // Hook this class in early so we can process registered classes and add them 
+        // to _aliases list.
+        PCRegistry.addRegisterClassListener(this);
+        processRegisteredClasses(multi);
     }
     
     protected void lock() {

Modified: openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml?rev=825904&r1=825903&r2=825904&view=diff
==============================================================================
--- openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml (original)
+++ openjpa/sandboxes/perf/openjpa-persistence-jdbc/src/test/resources/META-INF/persistence.xml Fri Oct 16 14:14:08 2009
@@ -94,6 +94,5 @@
         <mapping-file>org/apache/openjpa/persistence/jdbc/unique/orm.xml</mapping-file>
         <class>org.apache.openjpa.persistence.jdbc.unique.UniqueA</class>
         <class>org.apache.openjpa.persistence.jdbc.unique.UniqueB</class>
-    </persistence-unit>
-    
+    </persistence-unit>   
 </persistence>

Modified: openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
URL: http://svn.apache.org/viewvc/openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java?rev=825904&r1=825903&r2=825904&view=diff
==============================================================================
--- openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java (original)
+++ openjpa/sandboxes/perf/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java Fri Oct 16 14:14:08 2009
@@ -22,12 +22,14 @@
 import java.lang.instrument.IllegalClassFormatException;
 import java.security.ProtectionDomain;
 import java.util.Map;
+
 import javax.persistence.EntityManager;
 import javax.persistence.spi.ClassTransformer;
 import javax.persistence.spi.PersistenceProvider;
 import javax.persistence.spi.PersistenceUnitInfo;
 
 import org.apache.openjpa.conf.BrokerValue;
+import org.apache.openjpa.conf.MetaDataRepositoryValue;
 import org.apache.openjpa.conf.OpenJPAConfiguration;
 import org.apache.openjpa.conf.OpenJPAConfigurationImpl;
 import org.apache.openjpa.enhance.PCClassFileTransformer;
@@ -38,6 +40,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.util.ClassResolver;
@@ -79,6 +82,18 @@
                 return null;
 
             BrokerFactory factory = getBrokerFactory(cp, poolValue, null);
+            
+            // 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.
+            OpenJPAConfiguration conf = factory.getConfiguration();
+            Options o = Configurations.parseProperties(Configurations.getProperties(conf.getMetaDataRepository()));
+            if(o.getBooleanProperty("Preload")){
+                conf.getMetaDataRepositoryInstance().preload();
+            }
+            
             return JPAFacadeHelper.toEntityManagerFactory(factory);
         } catch (Exception e) {
             throw PersistenceExceptions.toPersistenceException(e);
@@ -153,6 +168,17 @@
                         _loc.get("transformer-registration-error", pui));
                 }
             }
+            // 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.
+            OpenJPAConfiguration conf = factory.getConfiguration();
+            Options o = Configurations.parseProperties(Configurations.getProperties(conf.getMetaDataRepository()));
+            if(o.getBooleanProperty("Preload")){
+                conf.getMetaDataRepositoryInstance().preload();
+            }
+            
             return JPAFacadeHelper.toEntityManagerFactory(factory);
         } catch (Exception e) {
             throw PersistenceExceptions.toPersistenceException(e);