You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2016/02/19 16:25:35 UTC

svn commit: r1731256 - /sling/trunk/contrib/extensions/bgservlets/engine/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java

Author: bdelacretaz
Date: Fri Feb 19 15:25:35 2016
New Revision: 1731256

URL: http://svn.apache.org/viewvc?rev=1731256&view=rev
Log:
SLING-5535 - use POST for webconsole plugin commands. Contributed by Alex Collignon, thanks!

Modified:
    sling/trunk/contrib/extensions/bgservlets/engine/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java

Modified: sling/trunk/contrib/extensions/bgservlets/engine/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/bgservlets/engine/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java?rev=1731256&r1=1731255&r2=1731256&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/bgservlets/engine/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java (original)
+++ sling/trunk/contrib/extensions/bgservlets/engine/src/main/java/org/apache/sling/bgservlets/impl/webconsole/JobConsolePlugin.java Fri Feb 19 15:25:35 2016
@@ -134,32 +134,51 @@ public class JobConsolePlugin {
             Session s = null;
             try {
                 s = repository.loginAdministrative(repository.getDefaultWorkspace());
-                processCommands(req, pw, s, jobConsole);
                 renderJobs(req, pw, s, jobConsole);
             } catch(RepositoryException re) {
-                throw new ServletException("RepositoryExceptio in renderContent()", re);
+                throw new ServletException("RepositoryException in renderContent()", re);
             } finally {
                 if(s != null) {
                     s.logout();
                 }
             }
         }
-        
-        private void processCommands(HttpServletRequest req, PrintWriter pw, Session s, JobConsole console) {
-            // TODO should use POST
-            final String jobPath = req.getParameter("jobPath");
-            if (jobPath != null) {
-                final JobStatus job = console.getJobStatus(s, jobPath);
-                if (job != null) {
-                    final String action = req.getParameter("action");
-                    if ("suspend".equals(action)) {
-                        job.requestStateChange(JobStatus.State.SUSPENDED);
-                    } else if ("stop".equals(action)) {
-                        job.requestStateChange(JobStatus.State.STOPPED);
-                    } else if ("resume".equals(action)) {
-                        job.requestStateChange(JobStatus.State.RUNNING);
+
+        @Override
+        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+            final PrintWriter pw = resp.getWriter();
+
+            // Access required services
+            final SlingRepository repository = (SlingRepository)repositoryTracker.getService();
+            if(repository == null) {
+                pw.println("No SlingRepository service found");
+                return;
+            }
+            Session s = null;
+            try {
+                s = repository.loginAdministrative(repository.getDefaultWorkspace());
+                final String jobPath = req.getParameter("jobPath");
+                if (jobPath != null) {
+                    final JobStatus job = jobConsole.getJobStatus(s, jobPath);
+                    if (job != null) {
+                        final String action = req.getParameter("action");
+                        if ("suspend".equals(action)) {
+                            job.requestStateChange(JobStatus.State.SUSPENDED);
+                        } else if ("stop".equals(action)) {
+                            job.requestStateChange(JobStatus.State.STOPPED);
+                        } else if ("resume".equals(action)) {
+                            job.requestStateChange(JobStatus.State.RUNNING);
+                        }
                     }
                 }
+
+                resp.sendRedirect(req.getServletPath() + req.getPathInfo());
+            } catch(RepositoryException re) {
+                throw new ServletException("RepositoryException in doPost()", re);
+            } finally {
+                if(s != null) {
+                    s.logout();
+                }
             }
         }
         
@@ -199,7 +218,7 @@ public class JobConsolePlugin {
 
         private void renderJobStatus(HttpServletRequest request, PrintWriter pw, JobConsole console, JobStatus job) {
             pw.println("<tr class='content'>");
-            pw.println("<td><form action='./" + LABEL + "' method='GET'>");
+            pw.println("<td><form action='./" + LABEL + "' method='POST'>");
             final String[] actions = { "suspend", "resume", "stop" };
             for (String action : actions) {
                 pw.println("<input type='submit' name='action' value='"