mirror of
https://github.com/Alfresco/SearchServices.git
synced 2025-10-01 14:41:19 +00:00
SEARCH-66: AlfrescoCoreAdminHandler.handleCustomAction now handles unknown actions
This commit is contained in:
@@ -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);
|
||||||
|
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user