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;
+  }
+
 
 }