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