SEARCH-66: AlfrescoCoreAdminHandler.handleCustomAction now handles unknown actions

This commit is contained in:
Gethin James
2016-06-16 11:25:25 +02:00
parent 487d8d7dfd
commit 31f749efb8
2 changed files with 167 additions and 149 deletions

View File

@@ -178,167 +178,125 @@ public class AlfrescoCoreAdminHandler extends CoreAdminHandler
protected void handleCustomAction(SolrQueryRequest req, SolrQueryResponse rsp) protected void handleCustomAction(SolrQueryRequest req, SolrQueryResponse rsp)
{ {
System.out.println("######## Handle Custom Action ###########"); log.info("######## Handle Custom Action ###########");
SolrParams params = req.getParams(); SolrParams params = req.getParams();
String cname = params.get(CoreAdminParams.CORE); String cname = params.get(CoreAdminParams.CORE);
String a = params.get(CoreAdminParams.ACTION); String action = params.get(CoreAdminParams.ACTION);
action = action==null?"":action.toUpperCase();
try try
{ {
if (a.equalsIgnoreCase("TEST")) switch (action) {
{ case "TEST":
System.out.println("######## Run Tests ###########"); log.info("######## Run Tests ###########");
new AlfrescoCoreAdminTester(this).runTests(req, rsp); new AlfrescoCoreAdminTester(this).runTests(req, rsp);
} break;
else if (a.equalsIgnoreCase("AUTHTEST")) case "AUTHTEST":
{
new AlfrescoCoreAdminTester(this).runAuthTest(req, rsp); new AlfrescoCoreAdminTester(this).runAuthTest(req, rsp);
} break;
else if (a.equalsIgnoreCase("CMISTEST")) case "CMISTEST":
{
new AlfrescoCoreAdminTester(this).runCmisTests(req, rsp); new AlfrescoCoreAdminTester(this).runCmisTests(req, rsp);
} break;
else if (a.equalsIgnoreCase("newCore")) case "NEWCORE":
{
newCore(req, rsp); newCore(req, rsp);
} break;
else if (a.equalsIgnoreCase("updateCore")) case "UPDATECORE":
{
updateCore(req, rsp); updateCore(req, rsp);
} break;
else if (a.equalsIgnoreCase("removeCore")) case "REMOVECORE":
{
removeCore(req, rsp); removeCore(req, rsp);
} break;
else if (a.equalsIgnoreCase("CHECK")) case "CHECK":
{
actionCHECK(cname); actionCHECK(cname);
} break;
else if (a.equalsIgnoreCase("NODEREPORT")) case "NODEREPORT":
{
actionNODEREPORTS(rsp, params, cname); actionNODEREPORTS(rsp, params, cname);
} break;
else if (a.equalsIgnoreCase("ACLREPORT")) case "ACLREPORT":
{
actionACLREPORT(rsp, params, cname); actionACLREPORT(rsp, params, cname);
} break;
else if (a.equalsIgnoreCase("TXREPORT")) case "TXREPORT":
{
actionTXREPORT(rsp, params, cname); actionTXREPORT(rsp, params, cname);
} break;
else if (a.equalsIgnoreCase("ACLTXREPORT")) case "ACLTXREPORT":
{
actionACLTXREPORT(rsp, params, cname); actionACLTXREPORT(rsp, params, cname);
} break;
else if (a.equalsIgnoreCase("REPORT")) case "REPORT":
{
actionREPORT(rsp, params, cname); actionREPORT(rsp, params, cname);
} break;
else if (a.equalsIgnoreCase("PURGE")) case "PURGE":
{ if (cname != null) {
if (cname != null)
{
actionPURGE(params, cname); actionPURGE(params, cname);
} } else {
else for (String coreName : getTrackerRegistry().getCoreNames()) {
{
for (String coreName : getTrackerRegistry().getCoreNames())
{
actionPURGE(params, coreName); actionPURGE(params, coreName);
} }
} }
} break;
else if (a.equalsIgnoreCase("REINDEX")) case "REINDEX":
{ if (cname != null) {
if (cname != null)
{
actionREINDEX(params, cname); actionREINDEX(params, cname);
} } else {
else for (String coreName : getTrackerRegistry().getCoreNames()) {
{
for (String coreName : getTrackerRegistry().getCoreNames())
{
actionREINDEX(params, coreName); actionREINDEX(params, coreName);
} }
} }
} break;
else if (a.equalsIgnoreCase("RETRY")) case "RETRY":
{ if (cname != null) {
if (cname != null)
{
actionRETRY(rsp, cname); actionRETRY(rsp, cname);
} } else {
else for (String coreName : getTrackerRegistry().getCoreNames()) {
{
for (String coreName : getTrackerRegistry().getCoreNames())
{
actionRETRY(rsp, coreName); actionRETRY(rsp, coreName);
} }
} }
} break;
else if (a.equalsIgnoreCase("INDEX")) case "INDEX":
{ if (cname != null) {
if (cname != null)
{
actionINDEX(params, cname); actionINDEX(params, cname);
} } else {
else for (String coreName : getTrackerRegistry().getCoreNames()) {
{
for (String coreName : getTrackerRegistry().getCoreNames())
{
actionINDEX(params, coreName); actionINDEX(params, coreName);
} }
} }
} break;
else if (a.equalsIgnoreCase("FIX")) case "FIX":
{ if (cname != null) {
if (cname != null)
{
actionFIX(cname); actionFIX(cname);
} } else {
else for (String coreName : getTrackerRegistry().getCoreNames()) {
{
for (String coreName : getTrackerRegistry().getCoreNames())
{
actionFIX(coreName); actionFIX(coreName);
} }
} }
} break;
else if (a.equalsIgnoreCase("SUMMARY")) case "SUMMARY":
{ if (cname != null) {
if (cname != null)
{
NamedList<Object> report = new SimpleOrderedMap<Object>(); NamedList<Object> report = new SimpleOrderedMap<Object>();
actionSUMMARY(params, report, cname); actionSUMMARY(params, report, cname);
rsp.add("Summary", report); rsp.add("Summary", report);
} } else {
else
{
NamedList<Object> report = new SimpleOrderedMap<Object>(); NamedList<Object> report = new SimpleOrderedMap<Object>();
for (String coreName : getTrackerRegistry().getCoreNames()) for (String coreName : getTrackerRegistry().getCoreNames()) {
{
actionSUMMARY(params, report, coreName); actionSUMMARY(params, report, coreName);
} }
rsp.add("Summary", report); rsp.add("Summary", report);
} }
} break;
else if (a.equalsIgnoreCase("LOG4J")) case "LOG4J":
{
String resource = "log4j-solr.properties"; String resource = "log4j-solr.properties";
if (params.get("resource") != null) if (params.get("resource") != null) {
{
resource = params.get("resource"); resource = params.get("resource");
} }
initResourceBasedLogging(resource); initResourceBasedLogging(resource);
} break;
else default:
{ super.handleCustomAction(req, rsp);
handleCustomAction(req, rsp); break;
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
"Error executing implementation of admin request " + a, ex); "Error executing implementation of admin request " + action, ex);
} }
} }
@@ -373,8 +331,6 @@ public class AlfrescoCoreAdminHandler extends CoreAdminHandler
File template = new File(templates, templateName); File template = new File(templates, templateName);
if(numShards > 1 ) if(numShards > 1 )
{ {
int replicationFactor = params.getInt("replicationFactor", 1); int replicationFactor = params.getInt("replicationFactor", 1);

View File

@@ -0,0 +1,62 @@
package org.alfresco.solr;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.common.SolrException;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.params.CoreAdminParams;
import org.apache.solr.handler.admin.CoreAdminHandler;
import org.apache.solr.response.SolrQueryResponse;
import org.junit.BeforeClass;
import org.junit.Test;
@LuceneTestCase.SuppressCodecs({"Appending","Lucene3x","Lucene40","Lucene41","Lucene42","Lucene43", "Lucene44", "Lucene45","Lucene46","Lucene47","Lucene48","Lucene49"})
@SolrTestCaseJ4.SuppressSSL
public class AdminHandlerTest extends AlfrescoSolrTestCaseJ4 {
static CoreAdminHandler admin;
@BeforeClass
public static void beforeClass() throws Exception {
initAlfrescoCore("solrconfig-afts.xml", "schema-afts.xml");
admin = h.getCoreContainer().getMultiCoreHandler();
}
@Test(expected = SolrException.class)
public void testUnhandled() throws Exception
{
SolrQueryResponse resp = new SolrQueryResponse();
admin.handleRequestBody(req(CoreAdminParams.ACTION, "totalnonsense",
CoreAdminParams.NAME, h.getCore().getName()),
resp);
}
@Test
public void testhandledTestActions() throws Exception
{
requestAction("test");
requestAction("CMISTEST");
requestAction("authTEST");
}
@Test
public void testhandledCores() throws Exception
{
requestAction("newCore");
requestAction("updateCore");
requestAction("removeCore");
}
@Test
public void testhandledReports() throws Exception
{
requestAction("CHECK");
requestAction("REPORT");
requestAction("SUMMARY");
}
private void requestAction(String actionName) throws Exception {
admin.handleRequestBody(req(CoreAdminParams.ACTION, actionName,
CoreAdminParams.NAME, h.getCore().getName()),
new SolrQueryResponse());
}
}