File Source: JPARollerPlanetPersistenceStrategy.java
1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. The ASF licenses this file to You
4 * under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License. For additional information regarding
15 * copyright in this work, please see the NOTICE file in the top level
16 * directory of this distribution.
17 */
18
19 package org.apache.roller.weblogger.planet.business.jpa;
20
21 import java.util.Enumeration;
22 import java.util.Properties;
23 import javax.persistence.Persistence;
24 import javax.persistence.PersistenceException;
25 import org.apache.commons.logging.Log;
26 import org.apache.commons.logging.LogFactory;
27 import org.apache.roller.planet.PlanetException;
28 import org.apache.roller.planet.business.jpa.JPAPersistenceStrategy;
29 import org.apache.roller.weblogger.business.DatabaseProvider;
30 import org.apache.roller.weblogger.business.startup.WebloggerStartup;
31 import org.apache.roller.weblogger.config.WebloggerConfig;
32
33
34 /**
35 * JPA strategy for Planet, uses WebloggerConfig to get JPA configuration.
36 */
37 @com.google.inject.Singleton
38 public class JPARollerPlanetPersistenceStrategy extends JPAPersistenceStrategy {
39
/*
P/P * Method: org.apache.roller.weblogger.planet.business.jpa.JPARollerPlanetPersistenceStrategy__static_init
*
* Presumptions:
* org.apache.commons.logging.LogFactory:getFactory(...)@40 != null
*
* Postconditions:
* init'ed(logger)
*/
40 private static Log logger =
41 LogFactory.getFactory().getInstance(JPARollerPlanetPersistenceStrategy.class);
42
43
44 /**
45 * Construct by finding using DatabaseProvider and WebloggerConfig.
46 *
47 * @throws org.apache.roller.PlanetException on any error
48 */
/*
P/P * Method: void org.apache.roller.weblogger.planet.business.jpa.JPARollerPlanetPersistenceStrategy()
*
* Preconditions:
* org/apache/roller/weblogger/business/startup/WebloggerStartup.dbProvider != null
* init'ed(org/apache/roller/weblogger/business/startup/WebloggerStartup.dbProvider.type)
* org/apache/roller/weblogger/config/WebloggerConfig.config != null
* (soft) logger != null
* (soft) init'ed(org/apache/roller/weblogger/business/startup/WebloggerStartup.dbProvider.jdbcConnectionURL)
* (soft) init'ed(org/apache/roller/weblogger/business/startup/WebloggerStartup.dbProvider.jdbcDriverClass)
* (soft) init'ed(org/apache/roller/weblogger/business/startup/WebloggerStartup.dbProvider.jdbcPassword)
* (soft) init'ed(org/apache/roller/weblogger/business/startup/WebloggerStartup.dbProvider.jdbcUsername)
* (soft) init'ed(org/apache/roller/weblogger/business/startup/WebloggerStartup.dbProvider.jndiName)
* (soft) org/apache/roller/weblogger/config/WebloggerConfig.log != null
*
* Presumptions:
* java.util.Enumeration:nextElement(...)@60 != null
* java.util.Properties:keys(...)@205 != null
* org.apache.roller.weblogger.planet.business.jpa.JPARollerPlanetPersistenceStrategy:loadPropertiesFromResourceName(...)@54 != null
*
* Postconditions:
* init'ed(this.emf)
*
* Test Vectors:
* java.lang.String:startsWith(...)@61: {1}, {0}
* java.lang.String:startsWith(...)@61: {0}, {1}
* java.util.Enumeration:hasMoreElements(...)@59: {0}, {1}
*/
49 protected JPARollerPlanetPersistenceStrategy() throws PlanetException {
50
51 DatabaseProvider dbProvider = WebloggerStartup.getDatabaseProvider();
52
53 // Pull in any properties defined in JMAEMF.properties config file
54 Properties emfProps = loadPropertiesFromResourceName(
55 "JPAEMF.properties", getContextClassLoader());
56
57 // Add all OpenJPA and Toplinks properties found in WebloggerConfig
58 Enumeration keys = WebloggerConfig.keys();
59 while (keys.hasMoreElements()) {
60 String key = (String)keys.nextElement();
61 if (key.startsWith("openjpa.") || key.startsWith("toplink.")) {
62 String value = WebloggerConfig.getProperty(key);
63 logger.info(key + ": " + value);
64 emfProps.setProperty(key, value);
65 }
66 }
67
68 if (dbProvider.getType() == DatabaseProvider.ConfigurationType.JNDI_NAME) {
69 // We're doing JNDI, so set OpenJPA JNDI name property
70 String jndiName = "java:comp/env/" + dbProvider.getJndiName();
71 emfProps.setProperty("openjpa.ConnectionFactoryName", jndiName);
72
73 } else {
74 // So set JDBD properties for OpenJPA
75 emfProps.setProperty("openjpa.ConnectionDriverName", dbProvider.getJdbcDriverClass());
76 emfProps.setProperty("openjpa.ConnectionURL", dbProvider.getJdbcConnectionURL());
77 emfProps.setProperty("openjpa.ConnectionUserName", dbProvider.getJdbcUsername());
78 emfProps.setProperty("openjpa.ConnectionPassword", dbProvider.getJdbcPassword());
79
80 // And Toplink JPA
81 emfProps.setProperty("toplink.jdbc.driver", dbProvider.getJdbcDriverClass());
82 emfProps.setProperty("toplink.jdbc.url", dbProvider.getJdbcConnectionURL());
83 emfProps.setProperty("toplink.jdbc.user", dbProvider.getJdbcUsername());
84 emfProps.setProperty("toplink.jdbc.password", dbProvider.getJdbcPassword());
85
86 // And Hibernate JPA
87 emfProps.setProperty("hibernate.connection.driver_class",dbProvider.getJdbcDriverClass());
88 emfProps.setProperty("hibernate.connection.url", dbProvider.getJdbcConnectionURL());
89 emfProps.setProperty("hibernate.connection.username", dbProvider.getJdbcUsername());
90 emfProps.setProperty("hibernate.connection.password", dbProvider.getJdbcPassword());
91 }
92
93 try {
94 emf = Persistence.createEntityManagerFactory("PlanetPU", emfProps);
95 } catch (PersistenceException pe) {
96 logger.error("ERROR: creating entity manager", pe);
97 throw new PlanetException(pe);
98 }
99 }
100
101 }
SofCheck Inspector Build Version : 2.18479
| JPARollerPlanetPersistenceStrategy.java |
2009-Jan-02 14:25:22 |
| JPARollerPlanetPersistenceStrategy.class |
2009-Sep-04 03:12:32 |