package com.adobe.acs.commons.oak.impl; import com.adobe.acs.commons.oak.EnsureOakIndexManager; import org.apache.commons.lang.StringUtils; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Properties; import org.apache.felix.scr.annotations.Property; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.Service; import javax.servlet.Servlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * HTTP POST /system/console/ensure-oak-index * Parameters * force = true | false (optional; when blank defaults to false) * path = /abs/path/to/ensure/definition (optional; when blank indicates all) */ //@formatter:off @Component(immediate = true) @Properties({ @Property( name = "felix.webconsole.label", value = "Ensure Oak Index" ) }) @Service(Servlet.class) //@formatter:on public class EnsureOakIndexServlet extends HttpServlet { //@formatter:off private static final String PARAM_FORCE = "force"; private static final String PARAM_PATH = "path"; @Reference private EnsureOakIndexManager ensureOakIndexManager; //@formatter:on protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.getWriter().println("<pre>"); response.getWriter().println(); response.getWriter().println(); response.getWriter().println("HTTP method GET is not supported by this URL"); response.getWriter().println("Use HTTP POST to access this end-point"); response.getWriter().println("--------------------------------------------"); response.getWriter().println("HTTP POST /system/console/ensure-oak-index"); response.getWriter().println(" Parameters"); response.getWriter().println(" * force = true | false (optional; when blank defaults to false)"); response.getWriter().println(" * path = /abs/path/to/ensure/definition (optional; when blank indicates all)"); response.getWriter().println(); response.getWriter().println(); response.getWriter().println("Example: curl --user admin:admin --data \"force=true\" https://localhost:4502/system/console/ensure-oak-index"); response.getWriter().println("</pre>"); response.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { String forceParam = StringUtils.defaultIfEmpty(request.getParameter(PARAM_FORCE), "false"); boolean force = Boolean.valueOf(forceParam); String path = StringUtils.stripToNull(request.getParameter(PARAM_PATH)); int count = 0; if (StringUtils.isBlank(path)) { count = ensureOakIndexManager.ensureAll(force); } else { count = ensureOakIndexManager.ensure(force, path); } response.setContentType("text/plain; charset=utf-8"); response.getWriter().println("Initiated the ensuring of " + count + " oak indexes"); response.setStatus(HttpServletResponse.SC_OK); } }