From 39ee58a5115ba8364f2617a927adc16dbfa86e3a Mon Sep 17 00:00:00 2001 From: Brian Matzon Date: Wed, 27 Apr 2016 12:15:36 +0200 Subject: [PATCH] implement hashCode and equals in JwtMap --- .../java/io/jsonwebtoken/impl/JwtMap.java | 12 ++++++ .../io.jsonwebtoken.impl/JavaJwtMapTest.java | 39 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/test/java/io.jsonwebtoken.impl/JavaJwtMapTest.java diff --git a/src/main/java/io/jsonwebtoken/impl/JwtMap.java b/src/main/java/io/jsonwebtoken/impl/JwtMap.java index 40d21224..328c4c4f 100644 --- a/src/main/java/io/jsonwebtoken/impl/JwtMap.java +++ b/src/main/java/io/jsonwebtoken/impl/JwtMap.java @@ -155,4 +155,16 @@ public class JwtMap implements Map { public String toString() { return map.toString(); } + + @Override + public int hashCode() + { + return map.hashCode(); + } + + @Override + public boolean equals(Object obj) + { + return map.equals(obj); + } } diff --git a/src/test/java/io.jsonwebtoken.impl/JavaJwtMapTest.java b/src/test/java/io.jsonwebtoken.impl/JavaJwtMapTest.java new file mode 100644 index 00000000..2b1aa56b --- /dev/null +++ b/src/test/java/io.jsonwebtoken.impl/JavaJwtMapTest.java @@ -0,0 +1,39 @@ +package io.jsonwebtoken.impl; + +import org.junit.Test; + +import static junit.framework.Assert.assertTrue; +import static junit.framework.TestCase.assertEquals; + +/** + * Java specific test to ensure we don't hit Groovy's DefaultGroovyMethods + */ +public class JavaJwtMapTest +{ + + @Test + public void testEquals() throws Exception + { + JwtMap jwtMap1 = new JwtMap(); + jwtMap1.put("a", "a"); + + JwtMap jwtMap2 = new JwtMap(); + jwtMap2.put("a", "a"); + + assertEquals(jwtMap1, jwtMap2); + } + + @Test + public void testHashCode() throws Exception + { + JwtMap jwtMap = new JwtMap(); + int hashCodeEmpty = jwtMap.hashCode(); + + jwtMap.put("a", "b"); + int hashCodeNonEmpty = jwtMap.hashCode(); + assertTrue(hashCodeEmpty != hashCodeNonEmpty); + + int identityHash = System.identityHashCode(jwtMap); + assertTrue(hashCodeNonEmpty != identityHash); + } +}