johnzon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Romain Manni-Bucau (JIRA)" <>
Subject [jira] [Commented] (JOHNZON-124) JsonArrayImpl should not override equals method
Date Tue, 06 Jun 2017 11:38:18 GMT


Romain Manni-Bucau commented on JOHNZON-124:

I think both point of views are valid. Now in json-p space you can't get a list so I'm not
sure it is sane to support it since JsonArray *API* can be enhanced to support operations
breaking the list equals. More concretely what would mean "a json array is equal to a list
of json value"?

List#equals doesn't accept Collection which are not list so JsonArray can't accept plain List

> JsonArrayImpl should not override equals method
> -----------------------------------------------
>                 Key: JOHNZON-124
>                 URL:
>             Project: Johnzon
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 1.0.0
>            Reporter: Kaloyan Spiridonov
>            Assignee: Romain Manni-Bucau
>             Fix For: 1.1.2
> According to javadoc the equals method of JsonArray should be inherited from List.  The
javadoc of java.util.List.equals(Object o) says:
> {quote}
> Compares the specified object with this list for equality. Returns true if and only if
the specified object is also a list, both lists have the same size, and all corresponding
pairs of elements in the two lists are equal. (Two elements e1 and e2 are equal if (e1==null
? e2==null : e1.equals(e2)).) In other words, two lists are defined to be equal if they contain
the same elements in the same order. This definition ensures that the equals method works
properly across different implementations of the List interface.
> {quote}
> The following code:
> {code}
> JsonReader reader = Json.createReader(new StringReader("[true]"));
> 	    JsonArray jsonArray = reader.readArray();
>     	List<JsonValue> actList = jsonArray;
>     	List<JsonValue> list = new ArrayList<JsonValue>();
>      	list.add(JsonValue.TRUE);
>     	System.out.println(actList.equals(list));
> {code}
> should return true instead of false.
> One fix will be just to remove the equals method from JsonArrayImpl and then the AbstractList<E>.equals(Object
paramObject) will be used.

This message was sent by Atlassian JIRA

View raw message