Author: snoopdave
Date: Fri Aug 10 09:34:47 2007
New Revision: 564662

URL: http://svn.apache.org/viewvc?view=rev&rev=564662
Log:
Applying patch for:
"Allow jndi lookup of jpa emf"
http://opensource.atlassian.com/projects/roller/browse/ROL-1482

Modified:
    
roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/jpa/JPAPersistenceStrategy.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
    roller/trunk/tools/roller-core/roller-core.jar
    roller/trunk/tools/roller-planet/roller-planet-business.jar

Modified: 
roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/jpa/JPAPersistenceStrategy.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/jpa/JPAPersistenceStrategy.java?view=diff&rev=564662&r1=564661&r2=564662
==============================================================================
--- 
roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/jpa/JPAPersistenceStrategy.java
 (original)
+++ 
roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/jpa/JPAPersistenceStrategy.java
 Fri Aug 10 09:34:47 2007
@@ -35,6 +35,9 @@
 import javax.persistence.Persistence;
 import javax.persistence.PersistenceException;
 import javax.persistence.Query;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
 import org.apache.roller.planet.PlanetException;
 import org.apache.roller.planet.business.DatabaseProvider;
 import org.apache.roller.planet.business.startup.PlanetStartup;
@@ -64,64 +67,74 @@
             
     /**
      * Construct by finding JPA EntityManagerFactory.
-     * @throws org.apache.roller.PlanetException on any error
+     * @throws org.apache.roller.planet.PlanetException on any error
      */
-    protected JPAPersistenceStrategy() throws PlanetException { 
+    protected JPAPersistenceStrategy() throws PlanetException {
 
-        DatabaseProvider dbProvider = PlanetStartup.getDatabaseProvider();
-        
-        // Pull in any properties defined in JMAEMF.properties config file
-        Properties emfProps = loadPropertiesFromResourceName(
-           "JPAEMF.properties", getContextClassLoader());
-                
-        // Add all OpenJPA and Toplinks properties found in RollerConfig
-        Enumeration keys = PlanetConfig.keys();
-        while (keys.hasMoreElements()) {
-            String key = (String)keys.nextElement();
-            if (key.startsWith("openjpa.") || key.startsWith("toplink.")) {
-                String value = PlanetConfig.getProperty(key);
-                logger.info(key + ": " + value);
-                emfProps.setProperty(key, value);
+        String jpaConfigurationType = 
PlanetConfig.getProperty("jpa.configurationType");
+        if ("jndi".equals(jpaConfigurationType)) {
+            String emfJndiName = "java:comp/env/" + 
PlanetConfig.getProperty("jpa.emf.jndi.name");
+            try {
+                emf = (EntityManagerFactory) new 
InitialContext().lookup(emfJndiName);
+            } catch (NamingException e) {
+                throw new PlanetException("Could not look up 
EntityManagerFactory in jndi at " + emfJndiName, e);
             }
-        }
-        
-        if (dbProvider.getType() == 
DatabaseProvider.ConfigurationType.JNDI_NAME) {
-            // We're doing JNDI, so set OpenJPA JNDI name property
-            String jndiName = "java:comp/env/" + dbProvider.getJndiName();
-            emfProps.setProperty("openjpa.ConnectionFactoryName", jndiName);
-            
         } else {
-            // So set JDBD properties for OpenJPA
-            emfProps.setProperty("openjpa.ConnectionDriverName",     
dbProvider.getJdbcDriverClass());
-            emfProps.setProperty("openjpa.ConnectionURL",            
dbProvider.getJdbcConnectionURL());
-            emfProps.setProperty("openjpa.ConnectionUserName",       
dbProvider.getJdbcUsername());
-            emfProps.setProperty("openjpa.ConnectionPassword",       
dbProvider.getJdbcPassword()); 
-
-            // And Toplink JPA
-            emfProps.setProperty("toplink.jdbc.driver",              
dbProvider.getJdbcDriverClass());
-            emfProps.setProperty("toplink.jdbc.url",                 
dbProvider.getJdbcConnectionURL());
-            emfProps.setProperty("toplink.jdbc.user",                
dbProvider.getJdbcUsername());
-            emfProps.setProperty("toplink.jdbc.password",            
dbProvider.getJdbcPassword());
-
-            // And Hibernate JPA
-            
emfProps.setProperty("hibernate.connection.driver_class",dbProvider.getJdbcDriverClass());
-            emfProps.setProperty("hibernate.connection.url",         
dbProvider.getJdbcConnectionURL());
-            emfProps.setProperty("hibernate.connection.username",    
dbProvider.getJdbcUsername());
-            emfProps.setProperty("hibernate.connection.password",    
dbProvider.getJdbcPassword()); 
-        }
-        
-        try {
-            this.emf = Persistence.createEntityManagerFactory("PlanetPU", 
emfProps);
-        } catch (PersistenceException pe) {
-            logger.error("ERROR: creating entity manager", pe);
-            throw new PlanetException(pe);
+            DatabaseProvider dbProvider = PlanetStartup.getDatabaseProvider();
+
+            // Pull in any properties defined in JMAEMF.properties config file
+            Properties emfProps = loadPropertiesFromResourceName(
+                    "JPAEMF.properties", getContextClassLoader());
+
+            // Add all OpenJPA and Toplinks properties found in RollerConfig
+            Enumeration keys = PlanetConfig.keys();
+            while (keys.hasMoreElements()) {
+                String key = (String) keys.nextElement();
+                if (key.startsWith("openjpa.") || key.startsWith("toplink.")) {
+                    String value = PlanetConfig.getProperty(key);
+                    logger.info(key + ": " + value);
+                    emfProps.setProperty(key, value);
+                }
+            }
+
+            if (dbProvider.getType() == 
DatabaseProvider.ConfigurationType.JNDI_NAME) {
+                // We're doing JNDI, so set OpenJPA JNDI name property
+                String jndiName = "java:comp/env/" + dbProvider.getJndiName();
+                emfProps.setProperty("openjpa.ConnectionFactoryName", 
jndiName);
+
+            } else {
+                // So set JDBD properties for OpenJPA
+                emfProps.setProperty("openjpa.ConnectionDriverName", 
dbProvider.getJdbcDriverClass());
+                emfProps.setProperty("openjpa.ConnectionURL", 
dbProvider.getJdbcConnectionURL());
+                emfProps.setProperty("openjpa.ConnectionUserName", 
dbProvider.getJdbcUsername());
+                emfProps.setProperty("openjpa.ConnectionPassword", 
dbProvider.getJdbcPassword());
+
+                // And Toplink JPA
+                emfProps.setProperty("toplink.jdbc.driver", 
dbProvider.getJdbcDriverClass());
+                emfProps.setProperty("toplink.jdbc.url", 
dbProvider.getJdbcConnectionURL());
+                emfProps.setProperty("toplink.jdbc.user", 
dbProvider.getJdbcUsername());
+                emfProps.setProperty("toplink.jdbc.password", 
dbProvider.getJdbcPassword());
+
+                // And Hibernate JPA
+                emfProps.setProperty("hibernate.connection.driver_class", 
dbProvider.getJdbcDriverClass());
+                emfProps.setProperty("hibernate.connection.url", 
dbProvider.getJdbcConnectionURL());
+                emfProps.setProperty("hibernate.connection.username", 
dbProvider.getJdbcUsername());
+                emfProps.setProperty("hibernate.connection.password", 
dbProvider.getJdbcPassword());
+            }
+
+            try {
+                this.emf = Persistence.createEntityManagerFactory("PlanetPU", 
emfProps);
+            } catch (PersistenceException pe) {
+                logger.error("ERROR: creating entity manager", pe);
+                throw new PlanetException(pe);
+            }
         }
     }
           
     
     /**
      * Flush changes to the datastore, commit transaction, release em.
-     * @throws org.apache.roller.PlanetException on any error
+     * @throws org.apache.roller.planet.PlanetException on any error
      */
     public void flush() throws PlanetException {
         try {
@@ -148,7 +161,7 @@
      * Store object using an existing transaction.
      * @param obj the object to persist
      * @return the object persisted
-     * @throws org.apache.roller.PlanetException on any error
+     * @throws org.apache.roller.planet.PlanetException on any error
      */
     public Object store(Object obj) throws PlanetException {
         EntityManager em = getEntityManager(true);
@@ -174,7 +187,7 @@
     /**
      * Remove object from persistence storage.
      * @param po the persistent object to remove
-     * @throws org.apache.roller.PlanetException on any error
+     * @throws org.apache.roller.planet.PlanetException on any error
      */
     public void remove(Object po) throws PlanetException {
         EntityManager em = getEntityManager(true);
@@ -184,7 +197,7 @@
     /**
      * Remove object from persistence storage.
      * @param pos the persistent objects to remove
-     * @throws org.apache.roller.PlanetException on any error
+     * @throws org.apache.roller.planet.PlanetException on any error
      */
     public void removeAll(Collection pos) throws PlanetException {
         EntityManager em = getEntityManager(true);
@@ -255,9 +268,8 @@
     
     /**
      * Get named query with FlushModeType.COMMIT
-     * @param clazz the class of instances to find
      * @param queryName the name of the query
-     * @throws org.apache.roller.PlanetException on any error
+     * @throws org.apache.roller.planet.PlanetException on any error
      */
     public Query getNamedQuery(String queryName)
     throws PlanetException {
@@ -271,7 +283,7 @@
     /**
      * Create query from queryString with FlushModeType.COMMIT
      * @param queryString the quuery
-     * @throws org.apache.roller.PlanetException on any error
+     * @throws org.apache.roller.planet.PlanetException on any error
      */
     public Query getDynamicQuery(String queryString)
     throws PlanetException {
@@ -284,9 +296,8 @@
     
     /**
      * Get named update query with default flush mode
-     * @param clazz the class of instances to find
      * @param queryName the name of the query
-     * @throws org.apache.roller.PlanetException on any error
+     * @throws org.apache.roller.planet.PlanetException on any error
      */
     public Query getNamedUpdate(String queryName)
     throws PlanetException {

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java?view=diff&rev=564662&r1=564661&r2=564662
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/JPAPersistenceStrategy.java
 Fri Aug 10 09:34:47 2007
@@ -36,6 +36,9 @@
 import javax.persistence.Persistence;
 import javax.persistence.PersistenceException;
 import javax.persistence.Query;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
 import org.apache.roller.weblogger.business.DatabaseProvider;
 
 
@@ -61,62 +64,73 @@
             
     /**
      * Construct by finding JPA EntityManagerFactory.
-     * @throws org.apache.roller.WebloggerException on any error
+     * @param dbProvider database configuration information for manual 
configuration.
+     * @throws org.apache.roller.weblogger.WebloggerException on any error
      */
     @com.google.inject.Inject
-    protected JPAPersistenceStrategy(DatabaseProvider dbProvider) throws 
WebloggerException { 
-        
-        // Pull in any properties defined in JMAEMF.properties config file
-        Properties emfProps = loadPropertiesFromResourceName(
-           "JPAEMF.properties", getContextClassLoader());
-                
-        // Add all OpenJPA and Toplinks properties found in WebloggerConfig
-        Enumeration keys = WebloggerConfig.keys(); 
-        while (keys.hasMoreElements()) {
-            String key = (String)keys.nextElement();
-            if (key.startsWith("openjpa.") || key.startsWith("toplink.")) {
-                String value = WebloggerConfig.getProperty(key);
-                logger.info(key + ": " + value);
-                emfProps.setProperty(key, value);
+    protected JPAPersistenceStrategy(DatabaseProvider dbProvider) throws 
WebloggerException {
+        String jpaConfigurationType = 
WebloggerConfig.getProperty("jpa.configurationType");
+        if ("jndi".equals(jpaConfigurationType)) {
+            String emfJndiName = "java:comp/env/" + 
WebloggerConfig.getProperty("jpa.emf.jndi.name");
+            try {
+                emf = (EntityManagerFactory) new 
InitialContext().lookup(emfJndiName);
+            } catch (NamingException e) {
+                throw new WebloggerException("Could not look up 
EntityManagerFactory in jndi at " + emfJndiName, e);
             }
-        }
-        
-        if (dbProvider.getType() == 
DatabaseProvider.ConfigurationType.JNDI_NAME) { 
-            // We're doing JNDI, so set OpenJPA JNDI name property
-            String jndiName = "java:comp/env/" + dbProvider.getJndiName();
-            emfProps.setProperty("openjpa.ConnectionFactoryName", jndiName);
-            
         } else {
-            // So set JDBD properties for OpenJPA
-            emfProps.setProperty("openjpa.ConnectionDriverName",     
dbProvider.getJdbcDriverClass());
-            emfProps.setProperty("openjpa.ConnectionURL",            
dbProvider.getJdbcConnectionURL());
-            emfProps.setProperty("openjpa.ConnectionUserName",       
dbProvider.getJdbcUsername());
-            emfProps.setProperty("openjpa.ConnectionPassword",       
dbProvider.getJdbcPassword()); 
 
-            // And Toplink JPA
-            emfProps.setProperty("toplink.jdbc.driver",              
dbProvider.getJdbcDriverClass());
-            emfProps.setProperty("toplink.jdbc.url",                 
dbProvider.getJdbcConnectionURL());
-            emfProps.setProperty("toplink.jdbc.user",                
dbProvider.getJdbcUsername());
-            emfProps.setProperty("toplink.jdbc.password",            
dbProvider.getJdbcPassword());
+            // Pull in any properties defined in JMAEMF.properties config file
+            Properties emfProps = loadPropertiesFromResourceName(
+                    "JPAEMF.properties", getContextClassLoader());
 
-            // And Hibernate JPA
-            
emfProps.setProperty("hibernate.connection.driver_class",dbProvider.getJdbcDriverClass());
-            emfProps.setProperty("hibernate.connection.url",         
dbProvider.getJdbcConnectionURL());
-            emfProps.setProperty("hibernate.connection.username",    
dbProvider.getJdbcUsername());
-            emfProps.setProperty("hibernate.connection.password",    
dbProvider.getJdbcPassword()); 
-        }
-        
-        try {
-            this.emf = Persistence.createEntityManagerFactory("RollerPU", 
emfProps);
-        } catch (PersistenceException pe) {
-            logger.error("ERROR: creating entity manager", pe);
-            throw new WebloggerException(pe);
+            // Add all OpenJPA and Toplinks properties found in WebloggerConfig
+            Enumeration keys = WebloggerConfig.keys();
+            while (keys.hasMoreElements()) {
+                String key = (String) keys.nextElement();
+                if (key.startsWith("openjpa.") || key.startsWith("toplink.")) {
+                    String value = WebloggerConfig.getProperty(key);
+                    logger.info(key + ": " + value);
+                    emfProps.setProperty(key, value);
+                }
+            }
+
+            if (dbProvider.getType() == 
DatabaseProvider.ConfigurationType.JNDI_NAME) {
+                // We're doing JNDI, so set OpenJPA JNDI name property
+                String jndiName = "java:comp/env/" + dbProvider.getJndiName();
+                emfProps.setProperty("openjpa.ConnectionFactoryName", 
jndiName);
+
+            } else {
+                // So set JDBD properties for OpenJPA
+                emfProps.setProperty("openjpa.ConnectionDriverName", 
dbProvider.getJdbcDriverClass());
+                emfProps.setProperty("openjpa.ConnectionURL", 
dbProvider.getJdbcConnectionURL());
+                emfProps.setProperty("openjpa.ConnectionUserName", 
dbProvider.getJdbcUsername());
+                emfProps.setProperty("openjpa.ConnectionPassword", 
dbProvider.getJdbcPassword());
+
+                // And Toplink JPA
+                emfProps.setProperty("toplink.jdbc.driver", 
dbProvider.getJdbcDriverClass());
+                emfProps.setProperty("toplink.jdbc.url", 
dbProvider.getJdbcConnectionURL());
+                emfProps.setProperty("toplink.jdbc.user", 
dbProvider.getJdbcUsername());
+                emfProps.setProperty("toplink.jdbc.password", 
dbProvider.getJdbcPassword());
+
+                // And Hibernate JPA
+                emfProps.setProperty("hibernate.connection.driver_class", 
dbProvider.getJdbcDriverClass());
+                emfProps.setProperty("hibernate.connection.url", 
dbProvider.getJdbcConnectionURL());
+                emfProps.setProperty("hibernate.connection.username", 
dbProvider.getJdbcUsername());
+                emfProps.setProperty("hibernate.connection.password", 
dbProvider.getJdbcPassword());
+            }
+
+            try {
+                this.emf = Persistence.createEntityManagerFactory("RollerPU", 
emfProps);
+            } catch (PersistenceException pe) {
+                logger.error("ERROR: creating entity manager", pe);
+                throw new WebloggerException(pe);
+            }
         }
     }
                         
     /**
      * Flush changes to the datastore, commit transaction, release em.
-     * @throws org.apache.roller.WebloggerException on any error
+     * @throws org.apache.roller.weblogger.WebloggerException on any error
      */
     public void flush() throws WebloggerException {
         try {
@@ -143,7 +157,7 @@
      * Store object using an existing transaction.
      * @param obj the object to persist
      * @return the object persisted
-     * @throws org.apache.roller.WebloggerException on any error
+     * @throws org.apache.roller.weblogger.WebloggerException on any error
      */
     public Object store(Object obj) throws WebloggerException {
         EntityManager em = getEntityManager(true);
@@ -169,7 +183,7 @@
     /**
      * Remove object from persistence storage.
      * @param po the persistent object to remove
-     * @throws org.apache.roller.WebloggerException on any error
+     * @throws org.apache.roller.weblogger.WebloggerException on any error
      */
     public void remove(Object po) throws WebloggerException {
         EntityManager em = getEntityManager(true);
@@ -179,7 +193,7 @@
     /**
      * Remove object from persistence storage.
      * @param pos the persistent objects to remove
-     * @throws org.apache.roller.WebloggerException on any error
+     * @throws org.apache.roller.weblogger.WebloggerException on any error
      */
     public void removeAll(Collection pos) throws WebloggerException {
         EntityManager em = getEntityManager(true);
@@ -250,9 +264,8 @@
     
     /**
      * Get named query with FlushModeType.COMMIT
-     * @param clazz the class of instances to find
      * @param queryName the name of the query
-     * @throws org.apache.roller.WebloggerException on any error
+     * @throws org.apache.roller.weblogger.WebloggerException on any error
      */
     public Query getNamedQuery(String queryName)
     throws WebloggerException {
@@ -266,7 +279,7 @@
     /**
      * Create query from queryString with FlushModeType.COMMIT
      * @param queryString the quuery
-     * @throws org.apache.roller.WebloggerException on any error
+     * @throws org.apache.roller.weblogger.WebloggerException on any error
      */
     public Query getDynamicQuery(String queryString)
     throws WebloggerException {
@@ -279,9 +292,8 @@
     
     /**
      * Get named update query with default flush mode
-     * @param clazz the class of instances to find
      * @param queryName the name of the query
-     * @throws org.apache.roller.WebloggerException on any error
+     * @throws org.apache.roller.weblogger.WebloggerException on any error
      */
     public Query getNamedUpdate(String queryName)
     throws WebloggerException {
@@ -300,7 +312,7 @@
     private static Properties loadPropertiesFromResourceName(
             String resourceName, ClassLoader cl) throws WebloggerException {
         Properties props = new Properties();
-        InputStream in = null;
+        InputStream in;
         in = cl.getResourceAsStream(resourceName);
         if (in == null) {
             //TODO: Check how i18n is done in roller
@@ -313,11 +325,9 @@
             throw new WebloggerException(
                     "Could not load properties from " + resourceName);
         } finally {
-            if (in != null) {
-                try {
-                    in.close();
-                } catch (IOException ioe) {
-                }
+            try {
+                in.close();
+            } catch (IOException ioe) {
             }
         }
         

Modified: roller/trunk/tools/roller-core/roller-core.jar
URL: 
http://svn.apache.org/viewvc/roller/trunk/tools/roller-core/roller-core.jar?view=diff&rev=564662&r1=564661&r2=564662
==============================================================================
Binary files - no diff available.

Modified: roller/trunk/tools/roller-planet/roller-planet-business.jar
URL: 
http://svn.apache.org/viewvc/roller/trunk/tools/roller-planet/roller-planet-business.jar?view=diff&rev=564662&r1=564661&r2=564662
==============================================================================
Binary files - no diff available.


Reply via email to