You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2007/06/01 22:28:57 UTC

svn commit: r543596 - in /roller/branches/roller_guice/apps/weblogger: src/java/org/apache/roller/weblogger/business/ src/java/org/apache/roller/weblogger/business/hibernate/ web/WEB-INF/classes/

Author: snoopdave
Date: Fri Jun  1 13:28:56 2007
New Revision: 543596

URL: http://svn.apache.org/viewvc?view=rev&rev=543596
Log:
Merging from trunk, still recovering from reorg

Added:
    roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateModule.java
Modified:
    roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java
    roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateAutoPingManagerImpl.java
    roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateRollerImpl.java
    roller/branches/roller_guice/apps/weblogger/web/WEB-INF/classes/roller.properties

Modified: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java?view=diff&rev=543596&r1=543595&r2=543596
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java (original)
+++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/RollerFactory.java Fri Jun  1 13:28:56 2007
@@ -18,6 +18,10 @@
 
 package org.apache.roller.weblogger.business;
 
+import com.google.inject.Binder;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.config.RollerConfig;
@@ -26,78 +30,44 @@
 /**
  * Provides access to the Roller instance.
  */
-public abstract class RollerFactory {
-    
+public abstract class RollerFactory implements Module {
     private static Log log = LogFactory.getLog(RollerFactory.class);
+    private static Injector injector = null;
+       
     
     private static final String DEFAULT_IMPL =
-        "org.apache.roller.weblogger.business.jpa.JPARollerImpl";
-        //"org.apache.roller.weblogger.business.hibernate.HibernateRollerImpl";
-        //"org.apache.roller.weblogger.business.datamapper.jpa.JPARollerImpl";
+        "org.apache.roller.business.jpa.JPARollerImpl";
+        //"org.apache.roller.business.hibernate.HibernateRollerImpl";
+        //"org.apache.roller.business.datamapper.jpa.JPARollerImpl";
     
     private static Roller rollerInstance = null;
     
     
-    
+   
     // non-instantiable
     private RollerFactory() {
         // hello all you beautiful people
     }
     
+
+    static { 
+        String moduleClassname = RollerConfig.getProperty("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);
+        }
+    }
+    
     
     /**
-     * Static accessor for the instance of Roller.
+     * Static accessor for the instance of Roller
      */
     public static Roller getRoller() {
-        
-        // check to see if we need to instantiate
-        if(rollerInstance == null) {
-            
-            // lookup value for the roller classname to use
-            String roller_classname =
-                    RollerConfig.getProperty("persistence.roller.classname");
-            if(roller_classname == null || roller_classname.trim().length() < 1)
-                roller_classname = DEFAULT_IMPL;
-            
-            try {
-                Class rollerClass = Class.forName(roller_classname);
-                java.lang.reflect.Method instanceMethod =
-                        rollerClass.getMethod("instantiate", (Class[])null);
-                
-                // do the invocation
-                rollerInstance = (Roller) instanceMethod.invoke(rollerClass, (Object[])null);
-                
-                log.info("Using Roller Impl: " + roller_classname);
-                
-            } catch (Throwable e) {
-                
-                // uh oh
-                log.error("Error instantiating " + roller_classname, e);
-                
-                try {
-                    // if we didn't already try DEFAULT_IMPL then try it now
-                    if( ! DEFAULT_IMPL.equals(roller_classname)) {
-                        
-                        log.info("** Trying DEFAULT_IMPL "+DEFAULT_IMPL+" **");
-                        
-                        Class rollerClass = Class.forName(DEFAULT_IMPL);
-                        java.lang.reflect.Method instanceMethod =
-                                rollerClass.getMethod("instantiate", (Class[])null);
-                        
-                        // do the invocation
-                        rollerInstance = (Roller) instanceMethod.invoke(rollerClass, (Object[])null);
-                    } else {
-                        // we just do this so that the logger gets the message
-                        throw new Exception("Doh! Couldn't instantiate a roller class");
-                    }
-                    
-                } catch (Exception re) {
-                    log.fatal("Failed to instantiate fallback roller impl", re);
-                }
-            }
-        }
-        
-        return rollerInstance;
-    }
-    
+        return injector.getInstance(Roller.class);
+    }    
 }
+

Modified: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateAutoPingManagerImpl.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateAutoPingManagerImpl.java?view=diff&rev=543596&r1=543595&r2=543596
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateAutoPingManagerImpl.java (original)
+++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateAutoPingManagerImpl.java Fri Jun  1 13:28:56 2007
@@ -16,12 +16,12 @@
  * directory of this distribution.
  */
 
-package org.apache.roller.weblogger.business.hibernate;
+package org.apache.roller.weblogger.business.hibernate; 
 
-import org.hibernate.Criteria;
-import org.hibernate.HibernateException;
-import org.hibernate.Session;
-import org.hibernate.criterion.Expression;
+import org.hibernate.Criteria; 
+import org.hibernate.HibernateException; 
+import org.hibernate.Session; 
+import org.hibernate.criterion.Expression; 
 import org.apache.roller.RollerException;
 import org.apache.roller.weblogger.pojos.AutoPing;
 import org.apache.roller.weblogger.pojos.PingTarget;
@@ -31,12 +31,12 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import org.apache.commons.logging.Log;  
+import org.apache.commons.logging.LogFactory;  
+import org.apache.roller.weblogger.business.Roller;
 import org.apache.roller.weblogger.config.PingConfig;
 import org.apache.roller.weblogger.business.pings.AutoPingManager;
 import org.apache.roller.weblogger.business.pings.PingQueueManager;
-import org.apache.roller.weblogger.business.RollerFactory;
 
 
 /**
@@ -46,14 +46,17 @@
  */
 public class HibernateAutoPingManagerImpl implements AutoPingManager {
     
+    private Roller roller;
+    
     static final long serialVersionUID = 5420615676256979199L;
     
     private static Log log = LogFactory.getLog(HibernateAutoPingManagerImpl.class);
     
     private HibernatePersistenceStrategy strategy = null;
     
-    
-    public HibernateAutoPingManagerImpl(HibernatePersistenceStrategy strat) {
+    @com.google.inject.Inject    
+    public HibernateAutoPingManagerImpl(Roller roller, HibernatePersistenceStrategy strat) {
+        this.roller = roller;
         this.strategy = strat;
     }
     
@@ -122,7 +125,7 @@
         }
         
         // TODO: new manager method for addQueueEntries(list)?
-        PingQueueManager pingQueueMgr = RollerFactory.getRoller().getPingQueueManager();
+        PingQueueManager pingQueueMgr = roller.getPingQueueManager();
         List applicableAutopings = getApplicableAutoPings(changedWeblogEntry);
         for (Iterator i = applicableAutopings.iterator(); i.hasNext(); ) {
             AutoPing autoPing = (AutoPing) i.next();

Added: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateModule.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateModule.java?view=auto&rev=543596
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateModule.java (added)
+++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateModule.java Fri Jun  1 13:28:56 2007
@@ -0,0 +1,71 @@
+/*
+ * 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.hibernate;
+
+import com.google.inject.Binder;
+import com.google.inject.Module;
+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.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 Hibernate as Roller-backend.
+ */
+public class HibernateModule implements Module {
+
+    public void configure(Binder binder) {
+        
+        binder.bind(Roller.class).to(HibernateRollerImpl.class);
+        
+        binder.bind(AutoPingManager.class).to(     HibernateAutoPingManagerImpl.class);   
+        binder.bind(BookmarkManager.class).to(     HibernateBookmarkManagerImpl.class);  
+        binder.bind(PingQueueManager.class).to(    HibernatePingQueueManagerImpl.class);   
+        binder.bind(PingTargetManager.class).to(   HibernatePingTargetManagerImpl.class); 
+        binder.bind(PropertiesManager.class).to(   HibernatePropertiesManagerImpl.class);   
+        binder.bind(RefererManager.class).to(      HibernateRefererManagerImpl.class);
+        binder.bind(UserManager.class).to(         HibernateUserManagerImpl.class);   
+        binder.bind(WeblogManager.class).to(       HibernateWeblogManagerImpl.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);  
+    }    
+}
+

Modified: roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateRollerImpl.java
URL: http://svn.apache.org/viewvc/roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateRollerImpl.java?view=diff&rev=543596&r1=543595&r2=543596
==============================================================================
--- roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateRollerImpl.java (original)
+++ roller/branches/roller_guice/apps/weblogger/src/java/org/apache/roller/weblogger/business/hibernate/HibernateRollerImpl.java Fri Jun  1 13:28:56 2007
@@ -196,7 +196,7 @@
      */
     public AutoPingManager getAutopingManager() {
         if (autoPingManager == null) {
-            autoPingManager = new HibernateAutoPingManagerImpl(strategy);
+            autoPingManager = new HibernateAutoPingManagerImpl(this, strategy);
         }
         return autoPingManager;
     }

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=543596&r1=543595&r2=543596
==============================================================================
--- 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 Fri Jun  1 13:28:56 2007
@@ -70,6 +70,8 @@
 mail.password
 
 #---------------------------------
+guice.backend.module=org.apache.roller.business.hibernate.HibernateModule
+
 # Hibernate dialect: You MUST override this to use a database other than MySQL4
 hibernate.dialect=org.hibernate.dialect.MySQLDialect