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 2006/01/05 17:00:37 UTC

svn commit: r366209 - in /incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo: JDORollerImpl.java JDOStrategy.java

Author: snoopdave
Date: Thu Jan  5 08:00:35 2006
New Revision: 366209

URL: http://svn.apache.org/viewcvs?rev=366209&view=rev
Log:
First JDORoller patch

Modified:
    incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDORollerImpl.java
    incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDOStrategy.java

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDORollerImpl.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDORollerImpl.java?rev=366209&r1=366208&r2=366209&view=diff
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDORollerImpl.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDORollerImpl.java Thu Jan  5 08:00:35 2006
@@ -5,15 +5,16 @@
 
 import java.sql.Connection;
 
+import javax.jdo.JDOHelper;
+import javax.jdo.PersistenceManagerFactory;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.hibernate.SessionFactory;
 import org.roller.RollerException;
 import org.roller.business.PersistenceStrategy;
 import org.roller.business.utils.UpgradeDatabase;
 import org.roller.model.AutoPingManager;
 import org.roller.model.BookmarkManager;
-import org.roller.model.ConfigManager;
 import org.roller.model.PingQueueManager;
 import org.roller.model.PingTargetManager;
 import org.roller.model.PlanetManager;
@@ -31,27 +32,16 @@
  * @author Dave Johnson
  */
 public class JDORollerImpl extends org.roller.business.RollerImpl {
-    private static Log              mLogger        = LogFactory
-                                                           .getFactory()
-                                                           .getInstance(
-                                                                   JDORollerImpl.class);
-
-    protected BookmarkManager       mBookmarkManager;
-    protected ConfigManager         mConfigManager = null;
-    protected PropertiesManager     mPropsManager  = null;
-    protected PlanetManager         planetManager  = null;
-    protected RefererManager        mRefererManager;
-    protected UserManager           mUserManager;
-    protected WeblogManager         mWeblogManager;
-    protected PingQueueManager      mPingQueueManager;
-    protected AutoPingManager       mAutoPingManager;
-    protected PingTargetManager     mPingTargetManager;
+    private static Log mLogger = LogFactory.getFactory()
+            .getInstance(JDORollerImpl.class);
+
     protected static JDORollerImpl  me;
     protected PersistenceStrategy   mStrategy      = null;
-    protected static SessionFactory mSessionFactory;
 
     protected JDORollerImpl() throws RollerException {
-        mStrategy = new JDOStrategy();
+        PersistenceManagerFactory pmf = 
+                JDOHelper.getPersistenceManagerFactory("JDOPMF.properties");
+        mStrategy = new JDOStrategy(pmf);
     }
 
     public static Roller instantiate() throws RollerException {
@@ -62,133 +52,50 @@
         return me;
     }
 
-    public void begin() throws RollerException {
-        mStrategy.begin(UserData.ANONYMOUS_USER);
-    }
 
-    public void begin(UserData user) throws RollerException {
-        mStrategy.begin(user);
+    /** */
+    protected UserManager createUserManager() {
+        return new JDOUserManagerImpl(mStrategy);
     }
 
-    public UserData getUser() throws RollerException {
-        return mStrategy.getUser();
+    /** */
+    protected BookmarkManager createBookmarkManager() {
+        return new JDOBookmarkManagerImpl(mStrategy);
     }
 
-    public void setUser(UserData user) throws RollerException {
-        mStrategy.setUser(user);
+    /** */
+    protected WeblogManager createWeblogManager() {
+        return new JDOWeblogManagerImpl(mStrategy);
     }
 
-    public void commit() throws RollerException {
-        mStrategy.commit();
+    /** */
+    protected RefererManager createRefererManager() {
+        return new JDORefererManagerImpl();
     }
 
-    public void rollback() {
-        try {
-            mStrategy.rollback();
-        }
-        catch (Throwable e) {
-            mLogger.error(e);
-        }
+    /** */
+    protected PropertiesManager createPropertiesManager() {
+        return new JDOPropertiesManagerImpl(mStrategy);
     }
 
-    /**
-     * @see org.roller.model.Roller#getUserManager()
-     */
-    public UserManager getUserManager() throws RollerException {
-        if (mUserManager == null) {
-            mUserManager = new JDOUserManagerImpl(mStrategy);
-        }
-        return mUserManager;
+    /** */
+    protected PingQueueManager createPingQueueManager() {
+        return new JDOPingQueueManagerImpl(mStrategy);
     }
 
-    /**
-     * @see org.roller.model.Roller#getBookmarkManager()
-     */
-    public BookmarkManager getBookmarkManager() throws RollerException {
-        if (mBookmarkManager == null) {
-            mBookmarkManager = new JDOBookmarkManagerImpl(mStrategy);
-        }
-        return mBookmarkManager;
+    /** */
+    protected PlanetManager createPlanetManager() {
+        return new JDOPlanetManagerImpl(mStrategy, this);
     }
 
-    /**
-     * @see org.roller.model.Roller#getWeblogManager()
-     */
-    public WeblogManager getWeblogManager() throws RollerException {
-        if (mWeblogManager == null) {
-            mWeblogManager = new JDOWeblogManagerImpl(mStrategy);
-        }
-        return mWeblogManager;
+    /** */
+    protected  AutoPingManager createAutoPingManager() {
+        return new JDOAutoPingManagerImpl(mStrategy);
     }
 
-    /**
-     * @see org.roller.model.Roller#getRefererManager()
-     */
-    public RefererManager getRefererManager() throws RollerException {
-        if (mRefererManager == null) {
-            mRefererManager = new JDORefererManagerImpl();
-        }
-        return mRefererManager;
-    }
-
-    /**
-     * @see org.roller.model.Roller#getConfigManager()
-     */
-    public ConfigManager getConfigManager() throws RollerException {
-        if (mConfigManager == null) {
-            mConfigManager = new JDOConfigManagerImpl(mStrategy);
-        }
-        return mConfigManager;
-    }
-
-    /**
-     * @see org.roller.model.Roller#getPropertiesManager()
-     */
-    public PropertiesManager getPropertiesManager() throws RollerException {
-        if (mPropsManager == null) {
-            mPropsManager = new JDOPropertiesManagerImpl(mStrategy);
-        }
-        return mPropsManager;
-    }
-
-    /**
-     * @see org.roller.model.Roller#getPingTargetManager()
-     */
-    public PingQueueManager getPingQueueManager() throws RollerException {
-        if (mPingQueueManager == null) {
-            mPingQueueManager = new JDOPingQueueManagerImpl(mStrategy);
-        }
-        return mPingQueueManager;
-    }
-
-    /**
-     * @see org.roller.model.Roller#getPlanetManager()
-     */
-    public PlanetManager getPlanetManager() throws RollerException {
-        if (planetManager == null) {
-            planetManager = new JDOPlanetManagerImpl(mStrategy, this);
-        }
-        return planetManager;
-    }
-
-    /**
-     * @see org.roller.model.Roller#getPingTargetManager()
-     */
-    public AutoPingManager getAutopingManager() throws RollerException {
-        if (mAutoPingManager == null) {
-            mAutoPingManager = new JDOAutoPingManagerImpl(mStrategy);
-        }
-        return mAutoPingManager;
-    }
-
-    /**
-     * @see org.roller.model.Roller#getPingTargetManager()
-     */
-    public PingTargetManager getPingTargetManager() throws RollerException {
-        if (mPingTargetManager == null) {
-            mPingTargetManager = new JDOPingTargetManagerImpl(mStrategy);
-        }
-        return mPingTargetManager;
+    /** */
+    protected PingTargetManager createPingTargetManager() {
+        return new JDOPingTargetManagerImpl(mStrategy);
     }
 
     /**
@@ -198,40 +105,9 @@
         return mStrategy;
     }
 
-    /**
-     * @see org.roller.model.Roller#upgradeDatabase(java.sql.Connection)
-     */
-    public void upgradeDatabase(Connection con) throws RollerException {
-        UpgradeDatabase.upgradeDatabase(con);
-    }
-
     public void release() {
         super.release();
-
-        if (mBookmarkManager != null)
-            mBookmarkManager.release();
-        if (mConfigManager != null)
-            mConfigManager.release();
-        if (mRefererManager != null)
-            mRefererManager.release();
-        if (mUserManager != null)
-            mUserManager.release();
-        if (mWeblogManager != null)
-            mWeblogManager.release();
-        if (mPingTargetManager != null)
-            mPingTargetManager.release();
-        if (mPingQueueManager != null)
-            mPingQueueManager.release();
-        if (mAutoPingManager != null)
-            mAutoPingManager.release();
-
-        try {
-            if (mStrategy != null)
-                mStrategy.release();
-        }
-        catch (Throwable e) {
-            mLogger.error("Exception with mSupport.release() [" + e + "]", e);
-        }
+        // nothing else to do for now
     }
 
     public void shutdown() {
@@ -241,7 +117,7 @@
             release();
         }
         catch (Exception e) {
-            mLogger.error("Unable to close SessionFactory", e);
+            mLogger.error("Unable to close PersistenceManagerFactory", e);
         }
     }
 }

Modified: incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDOStrategy.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDOStrategy.java?rev=366209&r1=366208&r2=366209&view=diff
==============================================================================
--- incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDOStrategy.java (original)
+++ incubator/roller/trunk/sandbox/jdobackend/src/org/roller/business/jdo/JDOStrategy.java Thu Jan  5 08:00:35 2006
@@ -5,6 +5,9 @@
 
 import java.util.List;
 
+import javax.jdo.PersistenceManager;
+import javax.jdo.PersistenceManagerFactory;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.roller.RollerException;
@@ -19,17 +22,16 @@
  */
 public class JDOStrategy implements PersistenceStrategy {
     private static final ThreadLocal mSessionTLS = new ThreadLocal();
-
-    private static Log               mLogger     = LogFactory
-                                                         .getFactory()
-                                                         .getInstance(
-                                                                 JDOStrategy.class);
+    private PersistenceManagerFactory mPMF = null;
+    private static Log mLogger = LogFactory
+            .getFactory().getInstance(JDOStrategy.class);
 
     //-------------------------------------------------------------------------
     /**
-     * Construct using Hibernate Session Factory.
+     * Construct using JDO PersistenceManagerFactory.
      */
-    public JDOStrategy() throws RollerException {
+    public JDOStrategy(PersistenceManagerFactory pmf) throws RollerException {
+        this.mPMF = pmf;
     }
 
     //-------------------------------------------------------------------------
@@ -76,7 +78,34 @@
      */
     public PersistenceSession getPersistenceSession(UserData user,
             boolean createNew) throws RollerException {
-        return null;
+        PersistenceSession ses = (PersistenceSession)mSessionTLS.get();
+        if (createNew && ses != null)
+        {
+            mLogger.warn("TLS not empty at beginnng of request");
+            release();
+            ses = null;
+        }
+        if (ses == null && user != null)
+        {
+            try
+            {
+                PersistenceManager pm = mPMF.getPersistenceManager();
+                ses = new JDOPersistenceSession(user, pm);
+            }
+            catch (Throwable e)
+            {
+                mLogger.error(
+                    "JDOStrategy.exceptionGetPersistenceManager");
+                throw new RuntimeException();
+            }
+            mSessionTLS.set(ses);
+        }
+        else if (ses == null)
+        {
+            throw new RollerException(
+                "MUST specify user for new persistence session");
+        }
+        return ses;
     }
 
     //-------------------------------------------------------------------------