You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by dw...@apache.org on 2010/01/20 21:53:58 UTC

svn commit: r901374 - in /openjpa/trunk: openjpa-persistence-jdbc/pom.xml openjpa-persistence-locking/pom.xml openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java openjpa-slice/pom.xml pom.xml

Author: dwoods
Date: Wed Jan 20 20:53:57 2010
New Revision: 901374

URL: http://svn.apache.org/viewvc?rev=901374&view=rev
Log:
OPENJPA-1374 Enable junits to be executed against an in-memory Derby 10.5.3.0 db.  Moved common Derby profiles to the parent POM.  Added new Derby props in o-p-j which knocked 2 mins off build time.  Added a test-derbymem profile to use Derby 10.5.3.0 as in-memory DB, which reduced build time by 5 mins.

Modified:
    openjpa/trunk/openjpa-persistence-jdbc/pom.xml
    openjpa/trunk/openjpa-persistence-locking/pom.xml
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/PersistenceProviderImpl.java
    openjpa/trunk/openjpa-slice/pom.xml
    openjpa/trunk/pom.xml

Modified: openjpa/trunk/openjpa-persistence-jdbc/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/pom.xml?rev=901374&r1=901373&r2=901374&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/pom.xml (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/pom.xml Wed Jan 20 20:53:57 2010
@@ -99,77 +99,6 @@
         </build>
         </profile>
 
-        <!-- Default profile for testing with embedded Apache Derby -->
-        <profile>
-            <!--
-                Optionally, you can override the following properties:
-                    -Dderby.version=10.2.2.0
-            -->
-            <id>test-derby</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-                <property>
-                    <name>test-derby</name>
-                </property>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.derby</groupId>
-                    <artifactId>derby</artifactId>
-                    <version>${derby.version}</version>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-            <properties>
-                <connection.driver.name>org.apache.derby.jdbc.EmbeddedDriver</connection.driver.name>
-                <connection.url>jdbc:derby:target/database/openjpa-derby-database;create=true</connection.url>
-                <connection.username />
-                <connection.password />
-            </properties>
-        </profile>
-
-        <!-- Profile for testing with Apache Derby network server -->
-        <profile>
-            <!--
-                Example Derby Network Server profile.
-                You must manually start a Derby network server instance and
-                also set the following properties:
-                    -Dopenjpa.derbynet.url=jdbc:derby://<HOST>:<PORT>/<DBNAME>;\
-                    	create=true
-
-                Optionally, you can override the following properties:
-                    -Dopenjpa.derbynet.driver=org.apache.derby.jdbc.ClientXADataSource
-                    -Dopenjpa.derbynet.username=
-                    -Dopenjpa.derbynet.password=
-                    -Dderby.version=10.2.2.0
-            -->
-            <id>test-derbynet</id>
-            <activation>
-                <property>
-                    <name>test-derbynet</name>
-                </property>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.derby</groupId>
-                    <artifactId>derbyclient</artifactId>
-                    <version>${derby.version}</version>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-            <properties>
-                <openjpa.derbynet.url>jdbc:derby://localhost:1527/openjpa20;create=true;traceDirectory=target;traceFile=derby.log</openjpa.derbynet.url>
-                <openjpa.derbynet.driver>org.apache.derby.jdbc.ClientDriver</openjpa.derbynet.driver>
-                <!-- Note: commons-dbcp requires dummy values for uid/pwd -->
-                <openjpa.derbynet.username>uid</openjpa.derbynet.username>
-                <openjpa.derbynet.password>pwd</openjpa.derbynet.password>
-                <connection.driver.name>${openjpa.derbynet.driver}</connection.driver.name>
-                <connection.url>${openjpa.derbynet.url}</connection.url>
-                <connection.username>${openjpa.derbynet.username}</connection.username>
-                <connection.password>${openjpa.derbynet.password}</connection.password>
-            </properties>
-        </profile>
-
         <!-- Profile for testing with HSQL DB -->
         <profile>
             <id>test-hsqldb</id>
@@ -1063,6 +992,14 @@
                             <value>${derby.locks.waitTimeout}</value>
                         </property>
                         <property>
+                            <name>derby.storage.pageCacheSize</name>
+                            <value>10000</value>
+                        </property>
+                        <property>
+                            <name>derby.storage.initialPages</name>
+                            <value>10</value>
+                        </property>
+                        <property>
                             <name>openjpa.ConnectionProperties</name>
                             <value>DriverClassName=${connection.driver.name},Url=${connection.url},Username=${connection.username},Password=${connection.password},${dbcp.args}</value>
                         </property>

Modified: openjpa/trunk/openjpa-persistence-locking/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/pom.xml?rev=901374&r1=901373&r2=901374&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-locking/pom.xml (original)
+++ openjpa/trunk/openjpa-persistence-locking/pom.xml Wed Jan 20 20:53:57 2010
@@ -101,77 +101,6 @@
             </build>
         </profile>
 
-        <!-- Default profile for testing with embedded Apache Derby -->
-        <profile>
-            <!--
-                Optionally, you can override the following properties:
-                    -Dderby.version=10.2.2.0
-            -->
-            <id>test-derby</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-                <property>
-                    <name>test-derby</name>
-                </property>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.derby</groupId>
-                    <artifactId>derby</artifactId>
-                    <version>${derby.version}</version>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-            <properties>
-                <connection.driver.name>org.apache.derby.jdbc.EmbeddedDriver</connection.driver.name>
-                <connection.url>jdbc:derby:target/database/openjpa-derby-database;create=true</connection.url>
-                <connection.username />
-                <connection.password />
-            </properties>
-        </profile>
-
-        <!-- Profile for testing with Apache Derby network server -->
-        <profile>
-            <!--
-                Example Derby Network Server profile.
-                You must manually start a Derby network server instance and
-                also set the following properties:
-                    -Dopenjpa.derbynet.url=jdbc:derby://<HOST>:<PORT>/<DBNAME>;\
-                    	create=true
-
-                Optionally, you can override the following properties:
-                    -Dopenjpa.derbynet.driver=org.apache.derby.jdbc.ClientXADataSource
-                    -Dopenjpa.derbynet.username=
-                    -Dopenjpa.derbynet.password=
-                    -Dderby.version=10.2.2.0
-            -->
-            <id>test-derbynet</id>
-            <activation>
-                <property>
-                    <name>test-derbynet</name>
-                </property>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.derby</groupId>
-                    <artifactId>derbyclient</artifactId>
-                    <version>${derby.version}</version>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-            <properties>
-                <openjpa.derbynet.url>jdbc:derby://localhost:1527/openjpa20;create=true;traceDirectory=target;traceFile=derby.log</openjpa.derbynet.url>
-                <openjpa.derbynet.driver>org.apache.derby.jdbc.ClientDriver</openjpa.derbynet.driver>
-                <!-- Note: commons-dbcp requires dummy values for uid/pwd -->
-                <openjpa.derbynet.username>uid</openjpa.derbynet.username>
-                <openjpa.derbynet.password>pwd</openjpa.derbynet.password>
-                <connection.driver.name>${openjpa.derbynet.driver}</connection.driver.name>
-                <connection.url>${openjpa.derbynet.url}</connection.url>
-                <connection.username>${openjpa.derbynet.username}</connection.username>
-                <connection.password>${openjpa.derbynet.password}</connection.password>
-            </properties>
-        </profile>
-
         <!-- Profile for testing with HSQL DB -->
         <profile>
             <id>test-hsqldb</id>

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=901374&r1=901373&r2=901374&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 Wed Jan 20 20:53:57 2010
@@ -93,12 +93,17 @@
             _log = conf.getLog(OpenJPAConfiguration.LOG_RUNTIME);            
             pd.checkPuNameCollisions(_log,name);
             
-            loadAgent(_log, conf);
+            // add enhancer
+            loadAgent(factory);
             
-            // TODO - Can this be moved back to BrokerImpl.initialize()?
             // Create appropriate LifecycleEventManager
-            loadValidator(_log, conf);
+            loadValidator(factory);
             
+            // 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.
             preloadMetaDataRepository(factory);
             
             return JPAFacadeHelper.toEntityManagerFactory(factory);
@@ -181,18 +186,17 @@
                     log.warn(_loc.get("transformer-registration-error", pui));
                 }
             }
+
             // Create appropriate LifecycleEventManager
-            OpenJPAConfiguration conf = factory.getConfiguration();
-            conf.setPersistenceUnitRootUrl(pui.getPersistenceUnitRootUrl());
-            _log = conf.getLog(OpenJPAConfiguration.LOG_RUNTIME);
-            loadValidator(_log, conf);
+            loadValidator(factory);
             
             // 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.
-            preloadMetaDataRepository(factory);           
+            preloadMetaDataRepository(factory);
+            
             return JPAFacadeHelper.toEntityManagerFactory(factory);
         } catch (Exception e) {
             throw PersistenceExceptions.toPersistenceException(e);
@@ -234,7 +238,7 @@
         // 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
+        // start instantiating 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()));
@@ -285,11 +289,14 @@
     /**
      * This private worker method will attempt load the PCEnhancerAgent.
      */
-    private void loadAgent(Log log, OpenJPAConfiguration conf) {
+    private void loadAgent(BrokerFactory factory) {
+        OpenJPAConfiguration conf = factory.getConfiguration();
+        Log log = conf.getLog(OpenJPAConfiguration.LOG_RUNTIME);
+
         if (conf.getDynamicEnhancementAgent() == true) {
             boolean res = PCEnhancerAgent.loadDynamicAgent(log);
-            if(_log.isInfoEnabled() && res == true ){
-                _log.info(_loc.get("dynamic-agent"));
+            if (log.isInfoEnabled() && res == true ){
+                log.info(_loc.get("dynamic-agent"));
             }
         }
     }
@@ -302,10 +309,13 @@
      * @param conf
      * @throws if validation setup failed and was required by the config
      */
-    private void loadValidator(Log log, OpenJPAConfiguration conf) {
+    private void loadValidator(BrokerFactory factory) {
+        OpenJPAConfiguration conf = factory.getConfiguration();
+        Log log = conf.getLog(OpenJPAConfiguration.LOG_RUNTIME);
+
         if ((ValidationUtils.setupValidation(conf) == true) &&
-                _log.isInfoEnabled()) {
-            _log.info(_loc.get("vlem-creation-info"));
+                log.isInfoEnabled()) {
+            log.info(_loc.get("vlem-creation-info"));
         }
     }
 

Modified: openjpa/trunk/openjpa-slice/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-slice/pom.xml?rev=901374&r1=901373&r2=901374&view=diff
==============================================================================
--- openjpa/trunk/openjpa-slice/pom.xml (original)
+++ openjpa/trunk/openjpa-slice/pom.xml Wed Jan 20 20:53:57 2010
@@ -63,29 +63,8 @@
         </dependency>
     </dependencies>
     <profiles>
-        <!-- Profile for testing with Apache Derby -->
-        <profile>
-            <id>test-derby</id>
-            <activation>
-                <activeByDefault>true</activeByDefault>
-                <property>
-                    <name>test-derby</name>
-                </property>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>org.apache.derby</groupId>
-                    <artifactId>derby</artifactId>
-                    <scope>test</scope>
-                </dependency>
-            </dependencies>
-            <properties>
-                <connection.driver.name> org.apache.derby.jdbc.EmbeddedDriver </connection.driver.name>
-                <connection.url> jdbc:derby:target/database/slice-derby-One;create=true </connection.url>
-                <connection.username />
-                <connection.password />
-            </properties>
-        </profile>
+        <!-- Default is to test with Embedded Derby, which is setup in
+             persistence.xml to create the required slices -->
 
         <!-- Sample profile for testing with MySQL DB -->
         <profile>

Modified: openjpa/trunk/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/pom.xml?rev=901374&r1=901373&r2=901374&view=diff
==============================================================================
--- openjpa/trunk/pom.xml (original)
+++ openjpa/trunk/pom.xml Wed Jan 20 20:53:57 2010
@@ -111,7 +111,113 @@
         <module>openjpa-integration</module>
         <module>openjpa-all</module>
     </modules>
+
     <profiles>
+        <!-- =============== -->
+        <!--  Test Profiles  -->
+        <!-- =============== -->
+        <!-- Default profile for testing with an embedded Apache Derby DB -->
+        <profile>
+            <!--
+                Optionally, you can override the following properties:
+                    -Dderby.version=10.2.2.0
+            -->
+            <id>test-derby</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            <property>
+                <name>test-derby</name>
+            </property>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.derby</groupId>
+                    <artifactId>derby</artifactId>
+                    <version>${derby.version}</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+            <properties>
+                <connection.driver.name>org.apache.derby.jdbc.EmbeddedDriver</connection.driver.name>
+                <connection.url>jdbc:derby:target/database/openjpa-derby-database;create=true</connection.url>
+                <connection.username />
+                <connection.password />
+            </properties>
+        </profile>
+        <!-- Profile for testing with an In-Memory Apache Derby DB -->
+        <profile>
+            <!--
+                Optionally, you can override the following properties:
+                    -Dderby.version=10.5.3.0_1
+            -->
+            <id>test-derbymem</id>
+            <activation>
+                <property>
+                    <name>test-derbymem</name>
+                </property>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.derby</groupId>
+                    <artifactId>derby</artifactId>
+                    <version>${derby.version}</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+            <properties>
+                <derby.version>10.5.3.0_1</derby.version>
+                <connection.driver.name>org.apache.derby.jdbc.EmbeddedDriver</connection.driver.name>
+                <connection.url>jdbc:derby:memory:openjpa-derby-inmem-database;create=true</connection.url>
+                <connection.username />
+                <connection.password />
+            </properties>
+        </profile>
+        <!-- Profile for testing with Apache Derby DB network server -->
+        <profile>
+            <!--
+                Example Derby Network Server profile.
+                You must manually start a Derby network server instance and
+                also set the following properties:
+                    -Dopenjpa.derbynet.url=jdbc:derby://<HOST>:<PORT>/<DBNAME>;\
+                        create=true
+
+                Optionally, you can override the following properties:
+                    -Dopenjpa.derbynet.driver=org.apache.derby.jdbc.ClientXADataSource
+                    -Dopenjpa.derbynet.username=
+                    -Dopenjpa.derbynet.password=
+                    -Dderby.version=10.2.2.0
+            -->
+            <id>test-derbynet</id>
+            <activation>
+                <property>
+                    <name>test-derbynet</name>
+                </property>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.apache.derby</groupId>
+                    <artifactId>derbyclient</artifactId>
+                    <version>${derby.version}</version>
+                    <scope>test</scope>
+                </dependency>
+            </dependencies>
+            <properties>
+                <openjpa.derbynet.url>jdbc:derby://localhost:1527/openjpa20;create=true;traceDirectory=target;traceFile=derby.log</openjpa.derbynet.url>
+                <openjpa.derbynet.driver>org.apache.derby.jdbc.ClientDriver</openjpa.derbynet.driver>
+                <!-- Note: commons-dbcp requires dummy values for uid/pwd -->
+                <openjpa.derbynet.username>uid</openjpa.derbynet.username>
+                <openjpa.derbynet.password>pwd</openjpa.derbynet.password>
+                <connection.driver.name>${openjpa.derbynet.driver}</connection.driver.name>
+                <connection.url>${openjpa.derbynet.url}</connection.url>
+                <connection.username>${openjpa.derbynet.username}</connection.username>
+                <connection.password>${openjpa.derbynet.password}</connection.password>
+            </properties>
+        </profile>
+
+
+        <!-- ================ -->
+        <!--  Build Profiles  -->
+        <!-- ================ -->
         <profile>
             <id>release</id>
             <activation>