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/10/07 01:20:23 UTC

svn commit: r453805 - in /incubator/roller/branches/roller_3.0/src/org/apache/roller: business/hibernate/ business/search/operations/ model/ ui/authoring/struts/actions/ ui/rendering/

Author: snoopdave
Date: Fri Oct  6 16:20:23 2006
New Revision: 453805

URL: http://svn.apache.org/viewvc?view=rev&rev=453805
Log:
Fixes for category delete and save problems (ROL-1163 and ROL-1165)

Modified:
    incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/business/search/operations/   (props changed)
    incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategoryDeleteAction.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategorySaveAction.java
    incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java?view=diff&rev=453805&r1=453804&r2=453805
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/business/hibernate/HibernateWeblogManagerImpl.java Fri Oct  6 16:20:23 2006
@@ -30,7 +30,6 @@
 import java.util.Map;
 import java.util.TreeMap;
 import org.apache.commons.collections.comparators.ReverseComparator;
-import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
@@ -86,8 +85,8 @@
     
     public void saveWeblogCategory(WeblogCategoryData cat) throws RollerException {
         
-        if(this.isDuplicateWeblogCategoryName(cat)) {
-            throw new RollerException("Duplicate category name");
+        if (StringUtils.isEmpty(cat.getId()) && isDuplicateWeblogCategoryName(cat)) {
+            throw new RollerException("Duplicate category name, cannot save new category");
         }
         
         // update weblog last modified date.  date updated by saveWebsite()
@@ -124,32 +123,24 @@
     }
     
     
-    public void moveWeblogCategoryContents(String srcId, String destId)
+    public void moveWeblogCategoryContents(WeblogCategoryData srcCat, WeblogCategoryData destCat)
             throws RollerException {
-        
-        WeblogCategoryData srcCd =
-                (WeblogCategoryData) this.strategy.load(
-                srcId, WeblogCategoryData.class);
-        
-        WeblogCategoryData destCd =
-                (WeblogCategoryData) this.strategy.load(
-                destId, WeblogCategoryData.class);
-        
+                
         // TODO: this check should be made before calling this method?
-        if (destCd.descendentOf(srcCd)) {
+        if (destCat.descendentOf(srcCat)) {
             throw new RollerException(
                     "ERROR cannot move parent category into it's own child");
         }
         
         // get all entries in category and subcats
-        List results = getWeblogEntries(srcCd, true);
+        List results = srcCat.retrieveWeblogEntries(true);
         
         // Loop through entries in src cat, assign them to dest cat
         Iterator iter = results.iterator();
-        WebsiteData website = destCd.getWebsite();
+        WebsiteData website = destCat.getWebsite();
         while (iter.hasNext()) {
             WeblogEntryData entry = (WeblogEntryData) iter.next();
-            entry.setCategory(destCd);
+            entry.setCategory(destCat);
             entry.setWebsite(website);
             this.strategy.store(entry);
         }
@@ -157,16 +148,16 @@
         // Make sure website's default and bloggerapi categories
         // are valid after the move
         
-        if (srcCd.getWebsite().getDefaultCategory().getId().equals(srcId)
-        || srcCd.getWebsite().getDefaultCategory().descendentOf(srcCd)) {
-            srcCd.getWebsite().setDefaultCategory(destCd);
-            this.strategy.store(srcCd.getWebsite());
+        if (srcCat.getWebsite().getDefaultCategory().getId().equals(srcCat.getId())
+        || srcCat.getWebsite().getDefaultCategory().descendentOf(srcCat)) {
+            srcCat.getWebsite().setDefaultCategory(destCat);
+            this.strategy.store(srcCat.getWebsite());
         }
         
-        if (srcCd.getWebsite().getBloggerCategory().getId().equals(srcId)
-        || srcCd.getWebsite().getBloggerCategory().descendentOf(srcCd)) {
-            srcCd.getWebsite().setBloggerCategory(destCd);
-            this.strategy.store(srcCd.getWebsite());
+        if (srcCat.getWebsite().getBloggerCategory().getId().equals(srcCat.getId())
+        || srcCat.getWebsite().getBloggerCategory().descendentOf(srcCat)) {
+            srcCat.getWebsite().setBloggerCategory(destCat);
+            this.strategy.store(srcCat.getWebsite());
         }
     }
     
@@ -674,7 +665,7 @@
             } catch (HibernateException e) {
                 throw new RollerException(e);
             }
-            if (sameNames.size() > 1) {
+            if (sameNames.size() > 0) {
                 return true;
             }
         }

Propchange: incubator/roller/branches/roller_3.0/src/org/apache/roller/business/search/operations/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Oct  6 16:20:23 2006
@@ -1 +1,2 @@
 .LCKIndexOperation.java~
+.LCKReIndexEntryOperation.java~

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java?view=diff&rev=453805&r1=453804&r2=453805
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/model/WeblogManager.java Fri Oct  6 16:20:23 2006
@@ -236,7 +236,7 @@
     /**
      * Recategorize all entries with one category to another.
      */
-    public void moveWeblogCategoryContents(String srcId, String destId) 
+    public void moveWeblogCategoryContents(WeblogCategoryData srcCat, WeblogCategoryData destCat) 
             throws RollerException;
     
     /**

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategoryDeleteAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategoryDeleteAction.java?view=diff&rev=453805&r1=453804&r2=453805
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategoryDeleteAction.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategoryDeleteAction.java Fri Oct  6 16:20:23 2006
@@ -85,8 +85,7 @@
                     // root and the sub-cats of the category being deleted.
                     if (!cat.getId().equals(catid) 
                         && cat.getParent()!=null
-                        && !cat.descendentOf(catToDelete)
-                        && cat.retrieveWeblogEntries(true).size() < 1)
+                        && !cat.descendentOf(catToDelete))
                     {
                         destCats.add(cat);
                     }                    
@@ -113,15 +112,32 @@
                 
                 // User clicked YES to delete
                 // remove cat to delete
+                if (form.getMoveToWeblogCategoryId() != null) 
+                {
+                    WeblogCategoryData destCat = 
+                        wmgr.getWeblogCategory(form.getMoveToWeblogCategoryId());
+                    if (rses.isUserAuthorizedToAuthor(destCat.getWebsite())) 
+                    {
+                        wmgr.moveWeblogCategoryContents(catToDelete, destCat);                
+                        RollerFactory.getRoller().flush();
+                    } 
+                    else 
+                    {
+                        return mapping.findForward("access-denied");
+                    }
+                }
+                                
+                catToDelete = wmgr.getWeblogCategory(catToDelete.getId());
                 wmgr.removeWeblogCategory(catToDelete);
                 RollerFactory.getRoller().flush();
-                
+
                 // notify caches of invalidated object
                 CacheManager.invalidate(catToDelete);
-                
-                if (null != returnId) {
+
+                if (null != returnId) 
+                {
                     request.setAttribute(RequestConstants.WEBLOGCATEGORY_ID, returnId);
-                }               
+                }  
             }
             else 
             {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategorySaveAction.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategorySaveAction.java?view=diff&rev=453805&r1=453804&r2=453805
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategorySaveAction.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/authoring/struts/actions/CategorySaveAction.java Fri Oct  6 16:20:23 2006
@@ -38,6 +38,7 @@
 import org.apache.roller.util.cache.CacheManager;
 import org.apache.roller.ui.authoring.struts.formbeans.WeblogCategoryFormEx;
 import org.apache.roller.ui.core.RequestConstants;
+import org.apache.roller.RollerException;
 
 /**
  * @struts.action path="/roller-ui/authoring/categorySave" name="weblogCategoryFormEx"
@@ -78,11 +79,18 @@
             rses.getAuthenticatedUser(), PermissionsData.AUTHOR))
         {
             form.copyTo(cd, request.getLocale());
-            wmgr.saveWeblogCategory(cd);
-            RollerFactory.getRoller().flush();
-            
-            // notify caches of object invalidation
-            CacheManager.invalidate(cd);
+            try {
+                wmgr.saveWeblogCategory(cd);
+                RollerFactory.getRoller().flush();
+                
+                // notify caches of object invalidation
+                CacheManager.invalidate(cd);
+            } catch (RollerException re) {
+                ActionErrors errors = new ActionErrors();
+                errors.add(ActionErrors.GLOBAL_ERROR,
+                    new ActionError("error.untranslated", re.getMessage())); 
+                saveErrors(request, errors);
+            }            
         }
         else
         {

Modified: incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java
URL: http://svn.apache.org/viewvc/incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java?view=diff&rev=453805&r1=453804&r2=453805
==============================================================================
--- incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java (original)
+++ incubator/roller/branches/roller_3.0/src/org/apache/roller/ui/rendering/WeblogRequestMapper.java Fri Oct  6 16:20:23 2006
@@ -25,6 +25,7 @@
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.config.RollerConfig;
@@ -103,6 +104,12 @@
         // figure out potential weblog handle
         String servlet = request.getServletPath();
         String pathInfo = null;
+        
+        // WAS6.1 returns "" for servletPath use pathInfo instead
+        if (StringUtils.isEmpty(request.getServletPath())) {
+            servlet = request.getPathInfo();
+        }
+        
         if(servlet != null && servlet.trim().length() > 1) {
             
             // strip off the leading slash