You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by se...@apache.org on 2017/10/10 13:38:02 UTC

[tika] branch master updated (450ab4b -> 2966cab)

This is an automated email from the ASF dual-hosted git repository.

sergeyb pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/tika.git.


    from 450ab4b  TIKA-2473 PCX and DCX mime magic and detection unit tests
     new b1d80bd  [TIKA-2472] Reimplementing Metadata.hashCode using the AbstractMap code but with Arrays.hashCode as suggested by Ken
     new 2966cab  [TIKA-2472] Removing a null value check as Arrays.hashCode does it

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/apache/tika/metadata/Metadata.java    | 17 +++++++-
 .../org/apache/tika/metadata/TestMetadata.java     | 46 ++++++++++++++++++++++
 2 files changed, 61 insertions(+), 2 deletions(-)

-- 
To stop receiving notification emails like this one, please contact
['"commits@tika.apache.org" <co...@tika.apache.org>'].

[tika] 02/02: [TIKA-2472] Removing a null value check as Arrays.hashCode does it

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeyb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tika.git

commit 2966cab3d8e4c975ba3b8b04f71d0254eeaf2f8c
Author: Sergey Beryozkin <sb...@gmail.com>
AuthorDate: Tue Oct 10 14:37:50 2017 +0100

    [TIKA-2472] Removing a null value check as Arrays.hashCode does it
---
 tika-core/src/main/java/org/apache/tika/metadata/Metadata.java | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java b/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java
index 03f9cfc..843aaab 100644
--- a/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java
+++ b/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java
@@ -496,8 +496,7 @@ public class Metadata implements CreativeCommons, Geographic, HttpHeaders,
     }
 
     private int getMetadataEntryHashCode(Entry<String, String[]> e) {
-    	return Objects.hashCode(e.getKey()) 
-            ^ (e.getValue() == null ? 0 : Arrays.hashCode(e.getValue()));
+    	return Objects.hashCode(e.getKey()) ^ Arrays.hashCode(e.getValue());
 	}
 
 	public boolean equals(Object o) {

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.

[tika] 01/02: [TIKA-2472] Reimplementing Metadata.hashCode using the AbstractMap code but with Arrays.hashCode as suggested by Ken

Posted by se...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sergeyb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tika.git

commit b1d80bd7a649e90b225b2769c8affc4809a9cb9b
Author: Sergey Beryozkin <sb...@gmail.com>
AuthorDate: Tue Oct 10 14:19:27 2017 +0100

    [TIKA-2472] Reimplementing Metadata.hashCode using the AbstractMap code but with Arrays.hashCode as suggested by Ken
---
 .../java/org/apache/tika/metadata/Metadata.java    | 18 ++++++++-
 .../org/apache/tika/metadata/TestMetadata.java     | 46 ++++++++++++++++++++++
 2 files changed, 62 insertions(+), 2 deletions(-)

diff --git a/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java b/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java
index 217eb01..03f9cfc 100644
--- a/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java
+++ b/tika-core/src/main/java/org/apache/tika/metadata/Metadata.java
@@ -22,12 +22,16 @@ import java.io.Serializable;
 import java.text.DateFormat;
 import java.text.DateFormatSymbols;
 import java.text.SimpleDateFormat;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
 import java.util.Properties;
 import java.util.TimeZone;
 
@@ -483,10 +487,20 @@ public class Metadata implements CreativeCommons, Geographic, HttpHeaders,
     }
 
     public int hashCode() {
-        return metadata.hashCode();
+        int h = 0;
+        for (Iterator<Entry<String,String[]>> i = metadata.entrySet().iterator();
+             i.hasNext();) {
+            h += getMetadataEntryHashCode(i.next());
+        }
+        return h;
     }
 
-    public boolean equals(Object o) {
+    private int getMetadataEntryHashCode(Entry<String, String[]> e) {
+    	return Objects.hashCode(e.getKey()) 
+            ^ (e.getValue() == null ? 0 : Arrays.hashCode(e.getValue()));
+	}
+
+	public boolean equals(Object o) {
 
         if (o == null) {
             return false;
diff --git a/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java b/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java
index e44b277..46b956d 100644
--- a/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java
+++ b/tika-core/src/test/java/org/apache/tika/metadata/TestMetadata.java
@@ -422,4 +422,50 @@ public class TestMetadata {
             return 1;
         }
     }
+    
+    @Test
+    public void testEquals() {
+        Metadata meta1 = new Metadata();
+        meta1.add("key", "value1");
+        meta1.add("key", "value2");
+        meta1.add("key2", "value12");
+        
+        Metadata meta2 = new Metadata();
+        meta2.add("key", "value1");
+        meta2.add("key", "value2");
+        meta2.add("key2", "value12");
+        
+        assertEquals(meta1, meta2);
+    }
+    
+    @Test
+    public void testNotEquals() {
+        Metadata meta1 = new Metadata();
+        meta1.add("key", "value1");
+        meta1.add("key", "value2");
+        meta1.add("key2", "value12");
+        
+        Metadata meta2 = new Metadata();
+        meta2.add("key", "value1");
+        meta2.add("key", "value2");
+        meta2.add("key2", "value22");
+        
+        assertFalse(meta1.equals(meta2));
+    }
+    
+    @Test
+    public void testEqualAndHashCode() {
+        Metadata meta1 = new Metadata();
+        meta1.add("key", "value1");
+        meta1.add("key", "value2");
+        meta1.add("key2", "value12");
+        
+        Metadata meta2 = new Metadata();
+        meta2.add("key", "value1");
+        meta2.add("key", "value2");
+        meta2.add("key2", "value12");
+        
+        assertEquals(meta1, meta2);
+        assertEquals(meta1.hashCode(), meta2.hashCode());
+    }
 }

-- 
To stop receiving notification emails like this one, please contact
"commits@tika.apache.org" <co...@tika.apache.org>.