You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2007/07/10 19:03:02 UTC
svn commit: r555007 - in
/roller/trunk/apps/planet/src/java/org/apache/roller/planet:
business/GuicePlanetProvider.java business/PlanetFactory.java
config/planet.properties
Author: agilliland
Date: Tue Jul 10 10:02:57 2007
New Revision: 555007
URL: http://svn.apache.org/viewvc?view=rev&rev=555007
Log:
One final change to make planet backend fully pluggable. We want to make it possible for people to plugin their own PlanetProvider classes so we introduce a 'planet.provider.class' into the planet.properties config and setup the PlanetFactory.bootstrap() method to use the configured provider.
Modified:
roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/GuicePlanetProvider.java
roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/PlanetFactory.java
roller/trunk/apps/planet/src/java/org/apache/roller/planet/config/planet.properties
Modified: roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/GuicePlanetProvider.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/GuicePlanetProvider.java?view=diff&rev=555007&r1=555006&r2=555007
==============================================================================
--- roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/GuicePlanetProvider.java (original)
+++ roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/GuicePlanetProvider.java Tue Jul 10 10:02:57 2007
@@ -21,6 +21,7 @@
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
+import org.apache.roller.planet.config.PlanetConfig;
/**
@@ -33,6 +34,28 @@
// maintain our own singleton instance of Planet
private Planet planetInstance = null;
+
+
+ /**
+ * Instantiate a new GuicePlanetProvider using default guice module
+ * configured in PlanetConfig via 'guice.backend.module' property.
+ */
+ public GuicePlanetProvider() {
+
+ String moduleClassname = PlanetConfig.getProperty("guice.backend.module");
+ if(moduleClassname == null) {
+ throw new NullPointerException("unable to lookup default guice module via property 'guice.backend.module'");
+ }
+
+ try {
+ Class moduleClass = Class.forName(moduleClassname);
+ Module module = (Module)moduleClass.newInstance();
+ injector = Guice.createInjector(module);
+ } catch (Throwable e) {
+ // Fatal misconfiguration, cannot recover
+ throw new RuntimeException("Error instantiating backend module " + moduleClassname, e);
+ }
+ }
/**
Modified: roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/PlanetFactory.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/PlanetFactory.java?view=diff&rev=555007&r1=555006&r2=555007
==============================================================================
--- roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/PlanetFactory.java (original)
+++ roller/trunk/apps/planet/src/java/org/apache/roller/planet/business/PlanetFactory.java Tue Jul 10 10:02:57 2007
@@ -79,14 +79,22 @@
throw new IllegalStateException("Cannot bootstrap until application has been properly prepared");
}
- // default provider is Guice, so lookup our module from PlanetConfig
- String guiceModule = PlanetConfig.getProperty("guice.backend.module");
-
- // instantiate guice provider using the configured module
- PlanetProvider guiceProvider = new GuicePlanetProvider(guiceModule);
-
- // finish things off by calling bootstrap() with our guice provider
- bootstrap(guiceProvider);
+ // lookup our default provider and instantiate it
+ PlanetProvider defaultProvider;
+ String providerClassname = PlanetConfig.getProperty("planet.provider.class");
+ if(providerClassname != null) {
+ try {
+ Class providerClass = Class.forName(providerClassname);
+ defaultProvider = (PlanetProvider) providerClass.newInstance();
+ } catch (Exception ex) {
+ throw new BootstrapException("Error instantiating default provider: "+providerClassname, ex);
+ }
+ } else {
+ throw new NullPointerException("No provider specified in config property 'planet.provider.class'");
+ }
+
+ // now just bootstrap using our default provider
+ bootstrap(defaultProvider);
}
Modified: roller/trunk/apps/planet/src/java/org/apache/roller/planet/config/planet.properties
URL: http://svn.apache.org/viewvc/roller/trunk/apps/planet/src/java/org/apache/roller/planet/config/planet.properties?view=diff&rev=555007&r1=555006&r2=555007
==============================================================================
--- roller/trunk/apps/planet/src/java/org/apache/roller/planet/config/planet.properties (original)
+++ roller/trunk/apps/planet/src/java/org/apache/roller/planet/config/planet.properties Tue Jul 10 10:02:57 2007
@@ -70,6 +70,9 @@
# Optional properties
# Pluggable backend
+planet.provider.class=org.apache.roller.planet.business.GuicePlanetProvider
+
+# default guice module
guice.backend.module=org.apache.roller.planet.business.jpa.JPAPlanetModule
# Number of Technorati queries allowed per day