You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2014/03/14 12:44:41 UTC
svn commit: r1577491 - in /lucene/dev/trunk/solr:
core/src/test/org/apache/solr/update/ solrj/src/java/org/apache/solr/common/
solrj/src/test/org/apache/solr/common/util/
test-framework/src/java/org/apache/solr/
Author: noble
Date: Fri Mar 14 11:44:40 2014
New Revision: 1577491
URL: http://svn.apache.org/r1577491
Log:
SOLR-5837 remove .equals from Solr doc objects
Modified:
lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java
lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java
lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputField.java
lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java?rev=1577491&r1=1577490&r2=1577491&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/update/DocumentBuilderTest.java Fri Mar 14 11:44:40 2014
@@ -26,6 +26,7 @@ import org.apache.lucene.search.similari
import org.apache.lucene.util.TestUtil;
import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.SolrDocument;
+import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
@@ -406,16 +407,16 @@ public class DocumentBuilderTest extends
SolrDocument doc2 = new SolrDocument();
doc2.addField("foo", randomString);
- assertTrue(doc1.equals(doc2));
+ assertTrue(assertSolrDocumentEquals(doc1, doc2));
doc1.addField("foo", "bar");
- assertFalse(doc1.equals(doc2));
+ assertFalse(assertSolrDocumentEquals(doc1, doc2));
doc1 = new SolrDocument();
doc1.addField("bar", randomString);
- assertFalse(doc1.equals(doc2));
+ assertFalse(assertSolrDocumentEquals(doc1, doc2));
int randomInt = random().nextInt();
doc1 = new SolrDocument();
@@ -423,12 +424,12 @@ public class DocumentBuilderTest extends
doc2 = new SolrDocument();
doc2.addField("foo", randomInt);
- assertTrue(doc1.equals(doc2));
+ assertTrue(assertSolrDocumentEquals(doc1, doc2));
doc2 = new SolrDocument();
doc2.addField("bar", randomInt);
- assertFalse(doc1.equals(doc2));
+ assertFalse(assertSolrDocumentEquals(doc1, doc2));
}
@@ -441,16 +442,16 @@ public class DocumentBuilderTest extends
SolrInputDocument doc2 = new SolrInputDocument();
doc2.addField("foo", randomString);
- assertTrue(doc1.equals(doc2));
+ assertTrue(assertSolrInputDocumentEquals(doc1, doc2));
doc1.setDocumentBoost(1.1f);
- assertFalse(doc1.equals(doc2));
+ assertFalse(assertSolrInputDocumentEquals(doc1, doc2));
doc2.setDocumentBoost(1.1f);
- assertTrue(doc1.equals(doc2));
+ assertTrue(assertSolrInputDocumentEquals(doc1, doc2));
doc2.setDocumentBoost(20f);
- assertFalse(doc1.equals(doc2));
+ assertFalse(assertSolrInputDocumentEquals(doc1, doc2));
doc1 = new SolrInputDocument();
@@ -462,15 +463,15 @@ public class DocumentBuilderTest extends
childDoc.addField("foo", "bar");
doc1.addChildDocument(childDoc);
- assertFalse(doc1.equals(doc2));
+ assertFalse(assertSolrInputDocumentEquals(doc1, doc2));
doc2.addChildDocument(childDoc);
- assertTrue(doc1.equals(doc2));
+ assertTrue(assertSolrInputDocumentEquals(doc1, doc2));
SolrInputDocument childDoc1 = new SolrInputDocument();
childDoc.addField(TestUtil.randomSimpleString(random()), TestUtil.randomSimpleString(random()));
doc2.addChildDocument(childDoc1);
- assertFalse(doc1.equals(doc2));
+ assertFalse(assertSolrInputDocumentEquals(doc1, doc2));
}
@@ -483,17 +484,17 @@ public class DocumentBuilderTest extends
SolrInputField sif2 = new SolrInputField(randomString);
sif2.setValue(val, 1.0f);
- assertTrue(sif1.equals(sif2));
+ assertTrue(assertSolrInputFieldEquals(sif1, sif2));
sif1.setBoost(2.1f);
sif2.setBoost(2.1f);
- assertTrue(sif1.equals(sif2));
+ assertTrue(assertSolrInputFieldEquals(sif1, sif2));
sif2.setBoost(2.0f);
- assertFalse(sif1.equals(sif2));
+ assertFalse(assertSolrInputFieldEquals(sif1, sif2));
sif2.setName("foo");
- assertFalse(sif1.equals(sif2));
+ assertFalse(assertSolrInputFieldEquals(sif1, sif2));
}
Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java?rev=1577491&r1=1577490&r2=1577491&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrDocument.java Fri Mar 14 11:44:40 2014
@@ -213,40 +213,6 @@ public class SolrDocument implements Map
public Iterator<Entry<String, Object>> iterator() {
return _fields.entrySet().iterator();
}
- /**
- * This method is implemented for tests and should not be counted
- * on in production code.
- *
- * @lucene.experimental
- */
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof SolrDocument)) {
- return false;
- }
-
- SolrDocument solrDocument = (SolrDocument) o;
-
- if (!_fields.equals(solrDocument._fields)) {
- return false;
- }
-
- return true;
- }
-
- /**
- * This method is implemented for tests and should not be counted
- * on in production code.
- *
- * @lucene.experimental
- */
- @Override
- public int hashCode() {
- return _fields.hashCode();
- }
//-----------------------------------------------------------------------------------------
// JSTL Helpers
Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java?rev=1577491&r1=1577490&r2=1577491&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputDocument.java Fri Mar 14 11:44:40 2014
@@ -276,50 +276,6 @@ public class SolrInputDocument implement
return _fields.values();
}
- /**
- * This method is implemented for tests and should not be counted
- * on in production code.
- *
- * @lucene.experimental
- */
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof SolrInputDocument)) {
- return false;
- }
-
- SolrInputDocument sdoc = (SolrInputDocument) o;
-
- if (!_fields.equals(sdoc._fields)) {
- return false;
- }
- if (Float.compare(sdoc._documentBoost, _documentBoost) != 0) {
- return false;
- }
- if (_childDocuments != null ? !_childDocuments.equals(sdoc._childDocuments) : sdoc._childDocuments != null) {
- return false;
- }
-
- return true;
- }
-
- /**
- * This method is implemented for tests and should not be counted
- * on in production code.
- *
- * @lucene.experimental
- */
- @Override
- public int hashCode() {
- int result = _fields.hashCode();
- result = 31 * result + (_documentBoost != +0.0f ? Float.floatToIntBits(_documentBoost) : 0);
- result = 31 * result + (_childDocuments != null ? _childDocuments.hashCode() : 0);
- return result;
- }
-
public void addChildDocument(SolrInputDocument child) {
if (_childDocuments == null) {
_childDocuments = new ArrayList<>();
Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputField.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputField.java?rev=1577491&r1=1577490&r2=1577491&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputField.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/SolrInputField.java Fri Mar 14 11:44:40 2014
@@ -229,50 +229,4 @@ public class SolrInputField implements I
}
return clone;
}
-
- /**
- * This method is implemented for tests and should not be counted
- * on in production code.
- *
- * @lucene.experimental
- */
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof SolrInputField)) {
- return false;
- }
-
- SolrInputField sif = (SolrInputField) o;
-
- if (!name.equals(sif.name)) {
- return false;
- }
-
- if (!value.equals(sif.value)) {
- return false;
- }
-
- if (Float.compare(sif.boost, boost) != 0) {
- return false;
- }
-
- return true;
- }
-
- /**
- * This method is implemented for tests and should not be counted
- * on in production code.
- *
- * @lucene.experimental
- */
- @Override
- public int hashCode() {
- int result = name.hashCode();
- result = 31 * result + value.hashCode();
- result = 31 * result + (boost != +0.0f ? Float.floatToIntBits(boost) : 0);
- return result;
- }
}
Modified: lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java?rev=1577491&r1=1577490&r2=1577491&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java (original)
+++ lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java Fri Mar 14 11:44:40 2014
@@ -34,13 +34,15 @@ import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
+import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.EnumFieldValue;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.SolrInputField;
import org.junit.Test;
-public class TestJavaBinCodec extends LuceneTestCase {
+public class TestJavaBinCodec extends SolrTestCaseJ4 {
private static final String SOLRJ_JAVABIN_BACKCOMPAT_BIN = "/solrj/javabin_backcompat.bin";
private final String BIN_FILE_LOCATION = "./solr/solrj/src/test-files/solrj/javabin_backcompat.bin";
@@ -136,7 +138,6 @@ private final String BIN_FILE_LOCATION =
@Test
public void testBackCompat() {
- List iteratorAsList = null;
JavaBinCodec javabin = new JavaBinCodec(){
@Override
public List<Object> readIterator(DataInputInputStream fis) throws IOException {
@@ -155,7 +156,14 @@ private final String BIN_FILE_LOCATION =
byte[] b1 = (byte[]) unmarshaledObj.get(i);
byte[] b2 = (byte[]) matchObj.get(i);
assertTrue(Arrays.equals(b1, b2));
-
+ } else if(unmarshaledObj.get(i) instanceof SolrDocument && matchObj.get(i) instanceof SolrDocument ) {
+ assertSolrDocumentEquals(unmarshaledObj.get(i), matchObj.get(i));
+ } else if(unmarshaledObj.get(i) instanceof SolrDocumentList && matchObj.get(i) instanceof SolrDocumentList ) {
+ assertSolrDocumentEquals(unmarshaledObj.get(i), matchObj.get(i));
+ } else if(unmarshaledObj.get(i) instanceof SolrInputDocument && matchObj.get(i) instanceof SolrInputDocument) {
+ assertSolrInputDocumentEquals(unmarshaledObj.get(i), matchObj.get(i));
+ } else if(unmarshaledObj.get(i) instanceof SolrInputField && matchObj.get(i) instanceof SolrInputField) {
+ assertSolrInputFieldEquals(unmarshaledObj.get(i), matchObj.get(i));
} else {
assertEquals(unmarshaledObj.get(i), matchObj.get(i));
}
Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java?rev=1577491&r1=1577490&r2=1577491&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java Fri Mar 14 11:44:40 2014
@@ -34,9 +34,11 @@ import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -1857,5 +1859,144 @@ public abstract class SolrTestCaseJ4 ext
}
}
+ public boolean assertSolrDocumentEquals(Object expected, Object actual) {
+
+ if (!(expected instanceof SolrDocument) || !(actual instanceof SolrDocument)) {
+ return false;
+ }
+
+ if (expected == actual) {
+ return true;
+ }
+
+ SolrDocument solrDocument1 = (SolrDocument) expected;
+ SolrDocument solrDocument2 = (SolrDocument) actual;
+
+ if(solrDocument1.getFieldNames().size() != solrDocument1.getFieldNames().size()) {
+ return false;
+ }
+
+ Iterator<String> iter1 = solrDocument1.getFieldNames().iterator();
+ Iterator<String> iter2 = solrDocument2.getFieldNames().iterator();
+
+ if(iter1.hasNext()) {
+ String key1 = iter1.next();
+ String key2 = iter2.next();
+
+ Object val1 = solrDocument1.getFieldValues(key1);
+ Object val2 = solrDocument2.getFieldValues(key2);
+
+ if(!key1.equals(key2) || !val1.equals(val2)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public boolean assertSolrDocumentList(Object expected, Object actual) {
+ if (!(expected instanceof SolrDocumentList) || !(actual instanceof SolrDocumentList)) {
+ return false;
+ }
+
+ if (expected == actual) {
+ return true;
+ }
+
+ SolrDocumentList list1 = (SolrDocumentList) expected;
+ SolrDocumentList list2 = (SolrDocumentList) actual;
+
+ if(Float.compare(list1.getMaxScore(), list2.getMaxScore()) != 0 || list1.getNumFound() != list2.getNumFound() ||
+ list1.getStart() != list2.getStart()) {
+ return false;
+ }
+ for(int i=0; i<list1.getNumFound(); i++) {
+ if(!assertSolrDocumentEquals(list1.get(i), list2.get(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public boolean assertSolrInputDocumentEquals(Object expected, Object actual) {
+
+ if (!(expected instanceof SolrInputDocument) || !(actual instanceof SolrInputDocument)) {
+ return false;
+ }
+
+ if (expected == actual) {
+ return true;
+ }
+
+ SolrInputDocument sdoc1 = (SolrInputDocument) expected;
+ SolrInputDocument sdoc2 = (SolrInputDocument) actual;
+ if (Float.compare(sdoc1.getDocumentBoost(), sdoc2.getDocumentBoost()) != 0) {
+ return false;
+ }
+
+ if(sdoc1.getFieldNames().size() != sdoc2.getFieldNames().size()) {
+ return false;
+ }
+
+ Iterator<String> iter1 = sdoc1.getFieldNames().iterator();
+ Iterator<String> iter2 = sdoc2.getFieldNames().iterator();
+
+ if(iter1.hasNext()) {
+ String key1 = iter1.next();
+ String key2 = iter2.next();
+
+ Object val1 = sdoc1.getFieldValues(key1);
+ Object val2 = sdoc2.getFieldValues(key2);
+
+ if(!key1.equals(key2) || !val1.equals(val2)) {
+ return false;
+ }
+ }
+ if(sdoc1.getChildDocuments() == null && sdoc2.getChildDocuments() == null) {
+ return true;
+ }
+ if(sdoc1.getChildDocuments() == null || sdoc2.getChildDocuments() == null) {
+ return false;
+ } else if(sdoc1.getChildDocuments().size() != sdoc2.getChildDocuments().size()) {
+ return false;
+ } else {
+ Iterator<SolrInputDocument> childDocsIter1 = sdoc1.getChildDocuments().iterator();
+ Iterator<SolrInputDocument> childDocsIter2 = sdoc2.getChildDocuments().iterator();
+ while(childDocsIter1.hasNext()) {
+ if(!assertSolrInputDocumentEquals(childDocsIter1.next(), childDocsIter2.next())) {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
+
+ public boolean assertSolrInputFieldEquals(Object expected, Object actual) {
+ if (!(expected instanceof SolrInputField) || !(actual instanceof SolrInputField)) {
+ return false;
+ }
+
+ if (expected == actual) {
+ return true;
+ }
+
+ SolrInputField sif1 = (SolrInputField) expected;
+ SolrInputField sif2 = (SolrInputField) actual;
+
+ if (!sif1.getName().equals(sif2.getName())) {
+ return false;
+ }
+
+ if (!sif1.getValue().equals(sif2.getValue())) {
+ return false;
+ }
+
+ if (Float.compare(sif1.getBoost(), sif2.getBoost()) != 0) {
+ return false;
+ }
+
+ return true;
+ }
+
}