Added: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/RollerModule.java URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/RollerModule.java?view=auto&rev=544030 ============================================================================== --- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/RollerModule.java (added) +++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/jpa/RollerModule.java Sun Jun 3 19:03:40 2007 @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. The ASF licenses this file to You + * under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. For additional information regarding + * copyright in this work, please see the NOTICE file in the top level + * directory of this distribution. + */ + +package org.apache.roller.weblogger.business.jpa; + +import com.google.inject.Binder; +import com.google.inject.Module; +import org.apache.roller.weblogger.business.DatabaseProvider; +import org.apache.roller.weblogger.business.BookmarkManager; +import org.apache.roller.weblogger.business.FileManager; +import org.apache.roller.weblogger.business.FileManagerImpl; +import org.apache.roller.weblogger.business.PluginManager; +import org.apache.roller.weblogger.business.PluginManagerImpl; +import org.apache.roller.weblogger.business.PropertiesManager; +import org.apache.roller.weblogger.business.Roller; +import org.apache.roller.weblogger.business.RollerDatabaseProvider; +import org.apache.roller.weblogger.business.UserManager; +import org.apache.roller.weblogger.business.WeblogManager; +import org.apache.roller.weblogger.business.pings.AutoPingManager; +import org.apache.roller.weblogger.business.pings.PingQueueManager; +import org.apache.roller.weblogger.business.pings.PingTargetManager; +import org.apache.roller.weblogger.business.referrers.RefererManager; +import org.apache.roller.weblogger.business.referrers.ReferrerQueueManager; +import org.apache.roller.weblogger.business.referrers.ReferrerQueueManagerImpl; +import org.apache.roller.weblogger.business.runnable.ThreadManager; +import org.apache.roller.weblogger.business.runnable.ThreadManagerImpl; +import org.apache.roller.weblogger.business.search.IndexManager; +import org.apache.roller.weblogger.business.search.IndexManagerImpl; +import org.apache.roller.weblogger.business.themes.ThemeManager; +import org.apache.roller.weblogger.business.themes.ThemeManagerImpl; + +/** + * Guice module for configuring JPA as Roller-backend. + */ +public class RollerModule implements Module { + + public void configure(Binder binder) { + + binder.bind(DatabaseProvider.class).to(RollerDatabaseProvider.class); + + binder.bind(Roller.class).to(JPARollerImpl.class); + + binder.bind(JPAPersistenceStrategy.class); + binder.bind(org.apache.roller.planet.business.jpa.JPAPersistenceStrategy.class); + + binder.bind(AutoPingManager.class).to( JPAAutoPingManagerImpl.class); + binder.bind(BookmarkManager.class).to( JPABookmarkManagerImpl.class); + binder.bind(PingQueueManager.class).to( JPAPingQueueManagerImpl.class); + binder.bind(PingTargetManager.class).to( JPAPingTargetManagerImpl.class); + binder.bind(PropertiesManager.class).to( JPAPropertiesManagerImpl.class); + binder.bind(RefererManager.class).to( JPARefererManagerImpl.class); + binder.bind(UserManager.class).to( JPAUserManagerImpl.class); + binder.bind(WeblogManager.class).to( JPAWeblogManagerImpl.class); + + + binder.bind(ReferrerQueueManager.class).to(ReferrerQueueManagerImpl.class); + binder.bind(FileManager.class).to( FileManagerImpl.class); + binder.bind(IndexManager.class).to( IndexManagerImpl.class); + binder.bind(PluginManager.class).to( PluginManagerImpl.class); + binder.bind(ThemeManager.class).to( ThemeManagerImpl.class); + binder.bind(ThreadManager.class).to( ThreadManagerImpl.class); + } +} +
Copied: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/HibernateRollerPlanetPersistenceStrategy.java (from r543978, roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/PlanetHibernatePersistenceStrategy.java) URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/HibernateRollerPlanetPersistenceStrategy.java?view=diff&rev=544030&p1=roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/PlanetHibernatePersistenceStrategy.java&r1=543978&p2=roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/HibernateRollerPlanetPersistenceStrategy.java&r2=544030 ============================================================================== --- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/PlanetHibernatePersistenceStrategy.java (original) +++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/HibernateRollerPlanetPersistenceStrategy.java Sun Jun 3 19:03:40 2007 @@ -18,32 +18,32 @@ package org.apache.roller.weblogger.planet.business.hibernate; -import org.apache.roller.weblogger.WebloggerException; -import org.apache.roller.weblogger.business.hibernate.HibernatePersistenceStrategy; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.roller.planet.PlanetException; +import org.apache.roller.planet.business.hibernate.HibernatePersistenceStrategy; import org.apache.roller.weblogger.config.RollerConfig; /** - * Base class for Hibernate persistence implementation. - * - * This class serves as a helper/util class for all of the Hibernate - * manager implementations by providing a set of basic persistence methods - * that can be easily reused. + * Hibernate strategy for Planet, uses RollerConfig to get Hibernate configuration. */ @com.google.inject.Singleton -public class PlanetHibernatePersistenceStrategy extends HibernatePersistenceStrategy { +public class HibernateRollerPlanetPersistenceStrategy extends HibernatePersistenceStrategy { + private static Log logger = + LogFactory.getFactory().getInstance(HibernateRollerPlanetPersistenceStrategy.class); /** - * Persistence strategy configures itself by using Roller properties: - * 'hibernate.configResource' - the resource name of Roller's Hibernate XML configuration file, - * 'hibernate.dialect' - the classname of the Hibernate dialect to be used, - * 'hibernate.connectionProvider - the classname of Roller's connnection provider impl. + * Persistence strategy configures itself by using 'planet-hibernate.cfg.xml' + * and Roller properties: 'hibernate.dialect' - the classname of the Hibernate + * dialect to be used, 'hibernate.connectionProvider - the classname of + * Roller's connnection provider impl. */ - protected PlanetHibernatePersistenceStrategy() throws WebloggerException { + protected HibernateRollerPlanetPersistenceStrategy() throws PlanetException { String dialect = RollerConfig.getProperty("hibernate.dialect"); String connectionProvider = RollerConfig.getProperty("hibernate.connectionProvider"); - String configuration = "hibernate.cfg.xml"; + String configuration = "planet-hibernate.cfg.xml"; init(dialect, connectionProvider, configuration); } } Added: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/RollerPlanetModule.java URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/RollerPlanetModule.java?view=auto&rev=544030 ============================================================================== --- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/RollerPlanetModule.java (added) +++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/hibernate/RollerPlanetModule.java Sun Jun 3 19:03:40 2007 @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. The ASF licenses this file to You + * under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. For additional information regarding + * copyright in this work, please see the NOTICE file in the top level + * directory of this distribution. + */ + +package org.apache.roller.weblogger.planet.business.hibernate; + +import com.google.inject.Binder; +import com.google.inject.Module; +import org.apache.roller.planet.business.Planet; +import org.apache.roller.planet.business.PlanetManager; +import org.apache.roller.planet.business.PropertiesManager; +import org.apache.roller.planet.business.hibernate.HibernatePlanetImpl; +import org.apache.roller.planet.business.hibernate.HibernatePlanetManagerImpl; +import org.apache.roller.planet.business.hibernate.HibernatePropertiesManagerImpl; + + +/** + * Guice module for configuring Roller's built-in Planet, Hibernate version. + */ +public class RollerPlanetModule implements Module { + + public void configure(Binder binder) { + + binder.bind(Planet.class).to(HibernatePlanetImpl.class); + + // Use special Planet persistence strategy that works against RollerConfig + binder.bind(HibernateRollerPlanetPersistenceStrategy.class); + + binder.bind(PlanetManager.class).to( HibernatePlanetManagerImpl.class); + binder.bind(PropertiesManager.class).to( HibernatePropertiesManagerImpl.class); + } +} + Added: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/jpa/JPARollerPlanetPersistenceStrategy.java URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/jpa/JPARollerPlanetPersistenceStrategy.java?view=auto&rev=544030 ============================================================================== --- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/jpa/JPARollerPlanetPersistenceStrategy.java (added) +++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/jpa/JPARollerPlanetPersistenceStrategy.java Sun Jun 3 19:03:40 2007 @@ -0,0 +1,94 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. The ASF licenses this file to You + * under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. For additional information regarding + * copyright in this work, please see the NOTICE file in the top level + * directory of this distribution. + */ + +package org.apache.roller.weblogger.planet.business.jpa; + +import java.util.Enumeration; +import java.util.Properties; +import javax.persistence.Persistence; +import javax.persistence.PersistenceException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.roller.planet.PlanetException; +import org.apache.roller.planet.business.jpa.JPAPersistenceStrategy; +import org.apache.roller.weblogger.business.DatabaseProvider; +import org.apache.roller.weblogger.config.RollerConfig; + +/** + * JPA strategy for Planet, uses RollerConfig to get JPA configuration. + */ [EMAIL PROTECTED] +public class JPARollerPlanetPersistenceStrategy extends JPAPersistenceStrategy { + private static Log logger = + LogFactory.getFactory().getInstance(JPARollerPlanetPersistenceStrategy.class); + + /** + * Construct by finding using DatabaseProvider and RollerConfig. + * @throws org.apache.roller.PlanetException on any error + */ + public JPARollerPlanetPersistenceStrategy() throws PlanetException { + + // 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 = RollerConfig.keys(); + while (keys.hasMoreElements()) { + String key = (String)keys.nextElement(); + if (key.startsWith("openjpa.") || key.startsWith("toplink.")) { + String value = RollerConfig.getProperty(key); + logger.info(key + ": " + value); + emfProps.setProperty(key, value); + } + } + + DatabaseProvider dbProvider = DatabaseProvider.getDatabaseProvider(); + 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); + } + } +} Added: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/jpa/RollerPlanetModule.java URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/jpa/RollerPlanetModule.java?view=auto&rev=544030 ============================================================================== --- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/jpa/RollerPlanetModule.java (added) +++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/planet/business/jpa/RollerPlanetModule.java Sun Jun 3 19:03:40 2007 @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. The ASF licenses this file to You + * under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. For additional information regarding + * copyright in this work, please see the NOTICE file in the top level + * directory of this distribution. + */ + +package org.apache.roller.weblogger.planet.business.jpa; + +import com.google.inject.Binder; +import com.google.inject.Module; +import org.apache.roller.planet.business.Planet; +import org.apache.roller.planet.business.PlanetManager; +import org.apache.roller.planet.business.PropertiesManager; +import org.apache.roller.planet.business.jpa.JPAPlanetImpl; +import org.apache.roller.planet.business.jpa.JPAPlanetManagerImpl; +import org.apache.roller.planet.business.jpa.JPAPropertiesManagerImpl; +import org.apache.roller.weblogger.planet.business.jpa.JPARollerPlanetPersistenceStrategy; + + +/** + * Guice module for configuring Roller's built-in Planet, JPA version. + */ +public class RollerPlanetModule implements Module { + + public void configure(Binder binder) { + + binder.bind(Planet.class).to(JPAPlanetImpl.class); + + // Use special Planet persistence strategy that works against RollerConfig + binder.bind(JPARollerPlanetPersistenceStrategy.class); + + binder.bind(PlanetManager.class).to( JPAPlanetManagerImpl.class); + binder.bind(PropertiesManager.class).to( JPAPropertiesManagerImpl.class); + } +} + Modified: roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/planet.properties URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/planet.properties?view=diff&rev=544030&r1=544029&r2=544030 ============================================================================== --- roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/planet.properties (original) +++ roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/planet.properties Sun Jun 3 19:03:40 2007 @@ -40,7 +40,6 @@ # properties in this file are accessed like this ... # PlanetConfig.getProperty("propname"); -persistence.planet.classname=org.apache.roller.planet.business.jpa.JPAPlanetImpl # You MUST override and set these three properties correctly: cache.dir=/var/planet/cache @@ -53,5 +52,11 @@ # choose a feed fetcher feedfetcher.classname=\ org.apache.roller.weblogger.planet.business.RollerRomeFeedFetcher + + +#--------------------------------- + +# Pluggable backend +guice.backend.module=org.apache.roller.weblogger.planet.business.hibernate.RollerModule Modified: roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/roller.properties URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/roller.properties?view=diff&rev=544030&r1=544029&r2=544030 ============================================================================== --- roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/roller.properties (original) +++ roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/roller.properties Sun Jun 3 19:03:40 2007 @@ -40,6 +40,7 @@ # properties in this file are accessed like this ... # RollerConfig.getProperty("propname"); + #--------------------------------- # Database configuration settings @@ -69,8 +70,11 @@ mail.username mail.password + #--------------------------------- -guice.backend.module=org.apache.roller.weblogger.business.hibernate.HibernateModule + +# Pluggable backend +guice.backend.module=org.apache.roller.weblogger.business.hibernate.RollerModule # Hibernate dialect: You MUST override this to use a database other than MySQL4 hibernate.dialect=org.hibernate.dialect.MySQLDialect Modified: roller/branches/roller_guice/merges.txt URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/merges.txt?view=diff&rev=544030&r1=544029&r2=544030 ============================================================================== --- roller/branches/roller_guice/merges.txt (original) +++ roller/branches/roller_guice/merges.txt Sun Jun 3 19:03:40 2007 @@ -1,9 +1,16 @@ -Latest - -May 30, 2007 +June 1-3, 2007 +svn merge -r 543970:543971 https://svn.apache.org/repos/asf/roller/trunk +svn merge -r 543952:543970 https://svn.apache.org/repos/asf/roller/trunk +svn merge -r 543889:543952 https://svn.apache.org/repos/asf/roller/trunk +svn merge -r 543889:543952 https://svn.apache.org/repos/asf/roller/trunk +svn merge -r 543886:543889 https://svn.apache.org/repos/asf/roller/trunk +svn merge -r 543760:543886 https://svn.apache.org/repos/asf/roller/trunk +svn merge -r 542905:543760 https://svn.apache.org/repos/asf/roller/trunk svn merge -r 542748:542905 https://svn.apache.org/repos/asf/roller/trunk svn merge -r 541742:542748 https://svn.apache.org/repos/asf/roller/trunk +svn merge -r 539779:541742 https://svn.apache.org/repos/asf/roller/trunk May 25, 2007 svn merge -r 539779:541742 https://svn.apache.org/repos/asf/roller/trunk + Modified: roller/branches/roller_guice/tools/roller-planet/roller-planet-business.jar URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/tools/roller-planet/roller-planet-business.jar?view=diff&rev=544030&r1=544029&r2=544030 ============================================================================== Binary files - no diff available.
