Author: sdumitriu
Date: 2008-02-20 02:45:28 +0100 (Wed, 20 Feb 2008)
New Revision: 7861

Modified:
   
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/ObjectRemoveAction.java
   
xwiki-platform/core/trunk/xwiki-core/src/main/resources/ApplicationResources.properties
Log:
XWIKI-1751: Display a warning message instead of stack trace when no classid 
parameter was sent in a ObjectRemove action
Fixed.


Modified: 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/ObjectRemoveAction.java
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/ObjectRemoveAction.java
        2008-02-19 23:48:39 UTC (rev 7860)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/main/java/com/xpn/xwiki/web/ObjectRemoveAction.java
        2008-02-20 01:45:28 UTC (rev 7861)
@@ -20,28 +20,90 @@
  */
 package com.xpn.xwiki.web;
 
+import java.io.IOException;
+
+import org.apache.commons.lang.BooleanUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.velocity.VelocityContext;
+
 import com.xpn.xwiki.XWiki;
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
 import com.xpn.xwiki.doc.XWikiDocument;
 import com.xpn.xwiki.objects.BaseObject;
 
-public class ObjectRemoveAction extends XWikiAction {
-       public boolean action(XWikiContext context) throws XWikiException {
+public class ObjectRemoveAction extends XWikiAction
+{
+    protected BaseObject getObject(XWikiDocument doc, XWikiContext context)
+    {
+        ObjectRemoveForm form = (ObjectRemoveForm) context.getForm();
+        BaseObject obj = null;
+
+        String className = form.getClassName();
+        int classId = form.getClassId();
+        if (StringUtils.isBlank(className)) {
+            ((VelocityContext) context.get("vcontext")).put("message", 
context.getMessageTool()
+                
.get("platform.core.action.objectRemove.noClassnameSpecified"));
+        } else if (classId < 0) {
+            ((VelocityContext) context.get("vcontext")).put("message", 
context.getMessageTool()
+                .get("platform.core.action.objectRemove.noObjectSpecified"));
+        } else {
+            obj = doc.getObject(className, classId);
+            if (obj == null) {
+                ((VelocityContext) context.get("vcontext")).put("message", 
context.getMessageTool()
+                    .get("platform.core.action.objectRemove.invalidObject"));  
              
+            }
+        }
+        return obj;
+    }
+    /**
+     * [EMAIL PROTECTED]
+     * 
+     * @see XWikiAction#action(XWikiContext)
+     */
+    public boolean action(XWikiContext context) throws XWikiException
+    {
         XWiki xwiki = context.getWiki();
         XWikiResponse response = context.getResponse();
         XWikiDocument doc = context.getDoc();
-        XWikiForm form = context.getForm();
-
-        String className = ((ObjectRemoveForm) form).getClassName();
-        int classId = ((ObjectRemoveForm) form).getClassId();
-        BaseObject obj = doc.getObject(className, classId);
+        BaseObject obj = getObject(doc, context);
+        if (obj == null) {
+            return true;
+        }
         doc.removeObject(obj);
-        xwiki.saveDocument(doc, 
context.getMessageTool().get("core.comment.deleteObject"), true, context);
+        xwiki.saveDocument(doc, 
context.getMessageTool().get("core.comment.deleteObject"), true,
+            context);
 
-        // forward to edit
-        String redirect = Utils.getRedirect("edit", context);
-        sendRedirect(response, redirect);
+        if (BooleanUtils.isTrue((Boolean) context.get("ajax"))) {
+            response.setStatus(204);
+            response.setContentLength(0);
+        } else {
+            // forward to edit
+            String redirect = Utils.getRedirect("edit", context);
+            sendRedirect(response, redirect);
+        }
         return false;
-       }
+    }
+
+    /**
+     * [EMAIL PROTECTED]
+     * 
+     * @see XWikiAction#render(XWikiContext)
+     */
+    public String render(XWikiContext context) throws XWikiException
+    {
+        if (BooleanUtils.isTrue((Boolean) context.get("ajax"))) {
+            XWikiResponse response = context.getResponse();
+            response.setStatus(409);
+            response.setContentType("text/plain");
+            try {
+                response.getWriter().write("failed");
+                response.setContentLength(6);
+            } catch (IOException e) {
+            }
+            return null;
+        } else {
+            return "error";
+        }
+    }
 }

Modified: 
xwiki-platform/core/trunk/xwiki-core/src/main/resources/ApplicationResources.properties
===================================================================
--- 
xwiki-platform/core/trunk/xwiki-core/src/main/resources/ApplicationResources.properties
     2008-02-19 23:48:39 UTC (rev 7860)
+++ 
xwiki-platform/core/trunk/xwiki-core/src/main/resources/ApplicationResources.properties
     2008-02-20 01:45:28 UTC (rev 7861)
@@ -934,4 +934,7 @@
 platform.core.errorMessageType=Error
 platform.core.noticeMessageType=Notice
 platform.core.warningMessageType=Warning
-platform.core.invalidUrl=This is not a valid URL
\ No newline at end of file
+platform.core.invalidUrl=This is not a valid URL
+platform.core.action.objectRemove.noClassnameSpecified=No object type 
specified.
+platform.core.action.objectRemove.noObjectSpecified=No object specified.
+platform.core.action.objectRemove.invalidObject=Invalid object specified.
\ No newline at end of file

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to