SOLR-1930: remove doLegacyUpdate, use DirectSolrConnection for tests

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1054124 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yonik Seeley 2010-12-31 15:05:41 +00:00
parent c918763e9b
commit 2d796fae1a
5 changed files with 34 additions and 101 deletions

View File

@ -84,47 +84,6 @@ public class XmlUpdateRequestHandler extends ContentStreamHandlerBase {
return new XMLLoader(processor, inputFactory);
}
/**
* A Convenience method for getting back a simple XML string indicating
* success or failure from an XML formated Update (from the Reader)
*
* @since solr 1.2
* @deprecated Direct updates fro ma Reader, as well as the response
* format produced by this method, have been deprecated
* and will be removed in future versions. Any code using
* this method should be changed to use {@link #handleRequest}
* method with a ContentStream.
*/
@Deprecated
public void doLegacyUpdate(Reader input, Writer output) {
SolrCore core = SolrCore.getSolrCore();
SolrQueryRequest req = new LocalSolrQueryRequest(core, new HashMap<String,String[]>());
try {
// Old style requests do not choose a custom handler
UpdateRequestProcessorChain processorFactory = core.getUpdateProcessingChain(null);
SolrQueryResponse rsp = new SolrQueryResponse(); // ignored
XMLStreamReader parser = inputFactory.createXMLStreamReader(input);
UpdateRequestProcessor processor = processorFactory.createProcessor(req, rsp);
XMLLoader loader = (XMLLoader) newLoader(req, processor);
loader.processUpdate(req, processor, parser);
processor.finish();
output.write("<result status=\"0\"></result>");
}
catch (Exception ex) {
try {
SolrException.logOnce(log, "Error processing \"legacy\" update command", ex);
XML.writeXML(output, "result", SolrException.toStr(ex), "status", "1");
} catch (Exception ee) {
log.error("Error writing to output stream: " + ee);
}
}
finally {
req.close();
}
}
//////////////////////// SolrInfoMBeans methods //////////////////////
@Override

View File

@ -17,6 +17,7 @@
package org.apache.solr.util;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.XML;
@ -25,13 +26,16 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.CoreDescriptor;
import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.handler.JsonUpdateRequestHandler;
import org.apache.solr.handler.XmlUpdateRequestHandler;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestHandler;
import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.response.QueryResponseWriter;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.schema.IndexSchema;
import org.apache.solr.servlet.DirectSolrConnection;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import org.apache.solr.common.util.NamedList.NamedListEntry;
@ -202,20 +206,25 @@ public class TestHarness {
/**
* Processes an "update" (add, commit or optimize) and
* returns the response as a String.
*
* @deprecated The better approach is to instantiate an Updatehandler directly
*
* @param xml The XML of the update
* @return The XML response to the update
*/
@Deprecated
public String update(String xml) {
StringReader req = new StringReader(xml);
StringWriter writer = new StringWriter(32000);
updater.doLegacyUpdate(req, writer);
return writer.toString();
DirectSolrConnection connection = new DirectSolrConnection(core);
SolrRequestHandler handler = core.getRequestHandler("/update");
// prefer the handler mapped to /update, but use our generic backup handler
// if that lookup fails
if (handler == null) {
handler = updater;
}
try {
return connection.request(handler, null, xml);
} catch (SolrException e) {
throw (SolrException)e;
} catch (Exception e) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
}
@ -240,7 +249,12 @@ public class TestHarness {
* @return null if successful, otherwise the XML response to the update
*/
public String validateErrorUpdate(String xml) throws SAXException {
return checkUpdateStatus(xml, "1");
try {
return checkUpdateStatus(xml, "1");
} catch (SolrException e) {
// return ((SolrException)e).getMessage();
return null; // success
}
}
/**
@ -254,7 +268,7 @@ public class TestHarness {
public String checkUpdateStatus(String xml, String code) throws SAXException {
try {
String res = update(xml);
String valid = validateXPath(res, "//result[@status="+code+"]" );
String valid = validateXPath(res, "//int[@name='status']="+code );
return (null == valid) ? null : res;
} catch (XPathExpressionException e) {
throw new RuntimeException
@ -262,27 +276,6 @@ public class TestHarness {
}
}
/**
* Validates that an add of a single document results in success.
*
* @param fieldsAndValues Odds are field names, Evens are values
* @return null if successful, otherwise the XML response to the update
* @see #appendSimpleDoc
*/
public String validateAddDoc(String... fieldsAndValues)
throws XPathExpressionException, SAXException, IOException {
StringBuilder buf = new StringBuilder();
buf.append("<add>");
appendSimpleDoc(buf, fieldsAndValues);
buf.append("</add>");
String res = update(buf.toString());
String valid = validateXPath(res, "//result[@status=0]" );
return (null == valid) ? null : res;
}
/**
* Validates a "query" response against an array of XPath test strings
@ -409,29 +402,6 @@ public class TestHarness {
}
}
/**
* A helper that adds an xml &lt;doc&gt; containing all of the
* fields and values specified (odds are fields, evens are values)
* to a StringBuilder
*/
public void appendSimpleDoc(StringBuilder buf, String... fieldsAndValues)
throws IOException {
buf.append(makeSimpleDoc(fieldsAndValues));
}
/**
* A helper that adds an xml &lt;doc&gt; containing all of the
* fields and values specified (odds are fields, evens are values)
* to a StringBuffer.
* @deprecated see {@link #appendSimpleDoc(StringBuilder, String...)}
*/
@Deprecated
public void appendSimpleDoc(StringBuffer buf, String... fieldsAndValues)
throws IOException {
buf.append(makeSimpleDoc(fieldsAndValues));
}
/**
* A helper that creates an xml &lt;doc&gt; containing all of the
* fields and values specified

View File

@ -247,7 +247,7 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
clearIndex();
// big freaking kludge since the response is currently not well formed.
String res = h.update("<add><doc><field name=\"id\">1</field></doc><doc><field name=\"id\">2</field></doc></add>");
assertEquals("<result status=\"0\"></result>", res);
// assertEquals("<result status=\"0\"></result>", res);
assertU("<commit/>");
assertQ(req("id:[0 TO 99]")
,"//*[@numFound='2']"
@ -263,7 +263,7 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
"<field name=\"text\">hello</field></doc>" +
"</add>");
assertEquals("<result status=\"0\"></result>", res);
// assertEquals("<result status=\"0\"></result>", res);
assertU("<commit/>");
assertQ(req("text:hello")
,"//*[@numFound='2']"
@ -282,7 +282,7 @@ public class BasicFunctionalityTest extends SolrTestCaseJ4 {
"<field boost=\"2.0\" name=\"text\">hello</field></doc>" +
"</add>");
assertEquals("<result status=\"0\"></result>", res);
// assertEquals("<result status=\"0\"></result>", res);
assertU("<commit/>");
assertQ(req("text:hello"),
"//*[@numFound='2']"

View File

@ -60,10 +60,12 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
assertU(adoc("id","1"));
// More than one id should fail
assertFailedU(adoc("id","2", "id","3", "text","ignore_exception"));
assertFailedU(adoc("id","2", "id","ignore_exception", "text","foo"));
// No id should fail
assertFailedU(adoc("text","ignore_exception"));
ignoreException("id");
assertFailedU(adoc("text","foo"));
resetExceptionIgnores();
}

View File

@ -28,10 +28,12 @@
<requestHandler name="standard" class="solr.StandardRequestHandler"/>
<updateHandler class="solr.DirectUpdateHandler2"/>
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
<!-- test ValueSourceParser plugins -->
<valueSourceParser name="nvl" class="org.apache.solr.search.function.NvlValueSourceParser">
<float name="nvlFloatValue">0.0</float>
</valueSourceParser>
</config>