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.