diff --git a/src/gov/nist/javax/sdp/fields/AttributeField.java b/src/gov/nist/javax/sdp/fields/AttributeField.java index cb6d62dbb..ff73a69cc 100755 --- a/src/gov/nist/javax/sdp/fields/AttributeField.java +++ b/src/gov/nist/javax/sdp/fields/AttributeField.java @@ -183,8 +183,15 @@ public Object clone() { public boolean equals(Object that ) { if ( ! (that instanceof AttributeField)) return false; AttributeField other = (AttributeField) that; - return other.getAttribute().getName().equalsIgnoreCase(this.getAttribute().getName()) && - this.getAttribute().getValueAsObject().equals(other.getAttribute().getValueAsObject()); + boolean equalNames = other.getAttribute().getName().equalsIgnoreCase(this.getAttribute().getName()); + boolean equalValues; + if(this.getAttribute().getValueAsObject() != null) { + equalValues = this.getAttribute().getValueAsObject().equals(other.getAttribute().getValueAsObject()); + } else { + equalValues = (other.getAttribute().getValueAsObject() == null); + } + + return equalNames && equalValues; } @Override diff --git a/src/test/gov/nist/javax/sdp/parser/SdpParserTest.java b/src/test/gov/nist/javax/sdp/parser/SdpParserTest.java index d90af0509..8edf87c8d 100644 --- a/src/test/gov/nist/javax/sdp/parser/SdpParserTest.java +++ b/src/test/gov/nist/javax/sdp/parser/SdpParserTest.java @@ -92,7 +92,16 @@ public void testWebRtcSdpParser() throws Exception { public void testAttribEquals() throws Exception { AttributeField f1 = new AttributeFieldParser("a=sendrecv").attributeField(); AttributeField f2 = new AttributeFieldParser("a=sendrecv").attributeField(); - f1.equals(f2); + AttributeField f3 = new AttributeFieldParser("a=sendonly").attributeField(); + AttributeField f4 = new AttributeFieldParser("a=f:sendonly").attributeField(); + AttributeField f5 = new AttributeFieldParser("a=f:sendonly").attributeField(); + AttributeField f6 = new AttributeFieldParser("a=ff:sendonly").attributeField(); + f1.equals(f2); // NPE here Issue 25 + assertEquals(f1, f2); + assertFalse(f2.equals(f3)); + assertFalse(f4.equals(f3)); + assertEquals(f5, f4); + assertFalse(f5.equals(f6)); } public void testSdpParser() throws Exception {