mirror of https://github.com/apache/lucene.git
SOLR-5762 broke backward compatibility of Javabin format
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1570793 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
35a0cb3a2d
commit
225459815c
|
@ -184,7 +184,13 @@ public class JavaBinUpdateRequestCodec {
|
|||
delByIdMap = (Map<String,Map<String,Object>>) namedList[0].get("delByIdMap");
|
||||
delByQ = (List<String>) namedList[0].get("delByQ");
|
||||
doclist = (List) namedList[0].get("docs");
|
||||
docMap = (List<Entry<SolrInputDocument,Map<Object,Object>>>) namedList[0].get("docsMap");
|
||||
Object docsMapObj = namedList[0].get("docsMap");
|
||||
|
||||
if (docsMapObj instanceof Map) {//SOLR-5762
|
||||
docMap = new ArrayList(((Map)docsMapObj).entrySet());
|
||||
} else {
|
||||
docMap = (List<Entry<SolrInputDocument, Map<Object, Object>>>) docsMapObj;
|
||||
}
|
||||
|
||||
|
||||
// we don't add any docs, because they were already processed
|
||||
|
|
Binary file not shown.
|
@ -18,6 +18,9 @@ package org.apache.solr.client.solrj.request;
|
|||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
@ -31,6 +34,7 @@ import junit.framework.Assert;
|
|||
import org.apache.lucene.util.LuceneTestCase;
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
import org.apache.solr.common.SolrInputField;
|
||||
import org.apache.solr.util.ExternalPaths;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
|
@ -160,6 +164,75 @@ public class TestUpdateRequestCodec extends LuceneTestCase {
|
|||
|
||||
|
||||
|
||||
public void testBackCompat4_5() throws IOException {
|
||||
|
||||
UpdateRequest updateRequest = new UpdateRequest();
|
||||
updateRequest.deleteById("*:*");
|
||||
updateRequest.deleteById("id:5");
|
||||
updateRequest.deleteByQuery("2*");
|
||||
updateRequest.deleteByQuery("1*");
|
||||
updateRequest.setParam("a", "b");
|
||||
SolrInputDocument doc = new SolrInputDocument();
|
||||
doc.addField("id", 1);
|
||||
doc.addField("desc", "one", 2.0f);
|
||||
doc.addField("desc", "1");
|
||||
updateRequest.add(doc);
|
||||
|
||||
doc = new SolrInputDocument();
|
||||
doc.addField("id", 2);
|
||||
doc.setDocumentBoost(10.0f);
|
||||
doc.addField("desc", "two", 3.0f);
|
||||
doc.addField("desc", "2");
|
||||
updateRequest.add(doc);
|
||||
|
||||
doc = new SolrInputDocument();
|
||||
doc.addField("id", 3);
|
||||
doc.addField("desc", "three", 3.0f);
|
||||
doc.addField("desc", "3");
|
||||
updateRequest.add(doc);
|
||||
|
||||
doc = new SolrInputDocument();
|
||||
Collection<String> foobar = new HashSet<String>();
|
||||
foobar.add("baz1");
|
||||
foobar.add("baz2");
|
||||
doc.addField("foobar",foobar);
|
||||
updateRequest.add(doc);
|
||||
|
||||
updateRequest.deleteById("2");
|
||||
updateRequest.deleteByQuery("id:3");
|
||||
|
||||
|
||||
|
||||
FileInputStream is = new FileInputStream(new File(ExternalPaths.SOURCE_HOME, "solrj/src/test-files/solrj/updateReq_4_5.bin"));
|
||||
UpdateRequest updateUnmarshalled = new JavaBinUpdateRequestCodec().unmarshal(is, new JavaBinUpdateRequestCodec.StreamingUpdateHandler() {
|
||||
@Override
|
||||
public void update(SolrInputDocument document, UpdateRequest req, Integer commitWithin, Boolean override) {
|
||||
if(commitWithin == null ){
|
||||
req.add(document);
|
||||
}
|
||||
System.err.println("Doc" + document + " ,commitWithin:"+commitWithin+ " , override:"+ override);
|
||||
}
|
||||
});
|
||||
|
||||
System.err.println(updateUnmarshalled.getDocumentsMap());
|
||||
System.err.println(updateUnmarshalled.getDocuments());
|
||||
|
||||
for (int i = 0; i < updateRequest.getDocuments().size(); i++) {
|
||||
SolrInputDocument inDoc = updateRequest.getDocuments().get(i);
|
||||
SolrInputDocument outDoc = updateUnmarshalled.getDocuments().get(i);
|
||||
compareDocs("doc#"+i, inDoc, outDoc);
|
||||
}
|
||||
Assert.assertEquals(updateUnmarshalled.getDeleteById().get(0) ,
|
||||
updateRequest.getDeleteById().get(0));
|
||||
Assert.assertEquals(updateUnmarshalled.getDeleteQuery().get(0) ,
|
||||
updateRequest.getDeleteQuery().get(0));
|
||||
|
||||
assertEquals("b", updateUnmarshalled.getParams().get("a"));
|
||||
is.close();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void compareDocs(String m,
|
||||
SolrInputDocument expectedDoc,
|
||||
SolrInputDocument actualDoc) {
|
||||
|
|
Loading…
Reference in New Issue