{"action":"created","issue":{"url":"https://api.github.com/repos/gchq/Gaffer/issues/1804","repository_url":"https://api.github.com/repos/gchq/Gaffer","labels_url":"https://api.github.com/repos/gchq/Gaffer/issues/1804/labels{/name}","comments_url":"https://api.github.com/repos/gchq/Gaffer/issues/1804/comments","events_url":"https://api.github.com/repos/gchq/Gaffer/issues/1804/events","html_url":"https://github.com/gchq/Gaffer/issues/1804","id":326131558,"node_id":"MDU6SXNzdWUzMjYxMzE1NTg=","number":1804,"title":"Signature of methods in SchemaElementDefinition","user":{"login":"gaffer01","id":16287361,"node_id":"MDQ6VXNlcjE2Mjg3MzYx","avatar_url":"https://avatars0.githubusercontent.com/u/16287361?v=4","gravatar_id":"","url":"https://api.github.com/users/gaffer01","html_url":"https://github.com/gaffer01","followers_url":"https://api.github.com/users/gaffer01/followers","following_url":"https://api.github.com/users/gaffer01/following{/other_user}","gists_url":"https://api.github.com/users/gaffer01/gists{/gist_id}","starred_url":"https://api.github.com/users/gaffer01/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gaffer01/subscriptions","organizations_url":"https://api.github.com/users/gaffer01/orgs","repos_url":"https://api.github.com/users/gaffer01/repos","events_url":"https://api.github.com/users/gaffer01/events{/privacy}","received_events_url":"https://api.github.com/users/gaffer01/received_events","type":"User","site_admin":false},"labels":[{"id":299417604,"node_id":"MDU6TGFiZWwyOTk0MTc2MDQ=","url":"https://api.github.com/repos/gchq/Gaffer/labels/enhancement","name":"enhancement","color":"fbca04","default":true},{"id":345654327,"node_id":"MDU6TGFiZWwzNDU2NTQzMjc=","url":"https://api.github.com/repos/gchq/Gaffer/labels/in-review","name":"in-review","color":"fef2c0","default":false},{"id":345653872,"node_id":"MDU6TGFiZWwzNDU2NTM4NzI=","url":"https://api.github.com/repos/gchq/Gaffer/labels/p:low","name":"p:low","color":"c7def8","default":false}],"state":"open","locked":false,"assignee":{"login":"m55624","id":29117199,"node_id":"MDQ6VXNlcjI5MTE3MTk5","avatar_url":"https://avatars3.githubusercontent.com/u/29117199?v=4","gravatar_id":"","url":"https://api.github.com/users/m55624","html_url":"https://github.com/m55624","followers_url":"https://api.github.com/users/m55624/followers","following_url":"https://api.github.com/users/m55624/following{/other_user}","gists_url":"https://api.github.com/users/m55624/gists{/gist_id}","starred_url":"https://api.github.com/users/m55624/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/m55624/subscriptions","organizations_url":"https://api.github.com/users/m55624/orgs","repos_url":"https://api.github.com/users/m55624/repos","events_url":"https://api.github.com/users/m55624/events{/privacy}","received_events_url":"https://api.github.com/users/m55624/received_events","type":"User","site_admin":false},"assignees":[{"login":"m55624","id":29117199,"node_id":"MDQ6VXNlcjI5MTE3MTk5","avatar_url":"https://avatars3.githubusercontent.com/u/29117199?v=4","gravatar_id":"","url":"https://api.github.com/users/m55624","html_url":"https://github.com/m55624","followers_url":"https://api.github.com/users/m55624/followers","following_url":"https://api.github.com/users/m55624/following{/other_user}","gists_url":"https://api.github.com/users/m55624/gists{/gist_id}","starred_url":"https://api.github.com/users/m55624/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/m55624/subscriptions","organizations_url":"https://api.github.com/users/m55624/orgs","repos_url":"https://api.github.com/users/m55624/repos","events_url":"https://api.github.com/users/m55624/events{/privacy}","received_events_url":"https://api.github.com/users/m55624/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/gchq/Gaffer/milestones/66","html_url":"https://github.com/gchq/Gaffer/milestone/66","labels_url":"https://api.github.com/repos/gchq/Gaffer/milestones/66/labels","id":3311887,"node_id":"MDk6TWlsZXN0b25lMzMxMTg4Nw==","number":66,"title":"v2.0.0","description":null,"creator":{"login":"GCHQDeveloper404","id":17044322,"node_id":"MDQ6VXNlcjE3MDQ0MzIy","avatar_url":"https://avatars0.githubusercontent.com/u/17044322?v=4","gravatar_id":"","url":"https://api.github.com/users/GCHQDeveloper404","html_url":"https://github.com/GCHQDeveloper404","followers_url":"https://api.github.com/users/GCHQDeveloper404/followers","following_url":"https://api.github.com/users/GCHQDeveloper404/following{/other_user}","gists_url":"https://api.github.com/users/GCHQDeveloper404/gists{/gist_id}","starred_url":"https://api.github.com/users/GCHQDeveloper404/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GCHQDeveloper404/subscriptions","organizations_url":"https://api.github.com/users/GCHQDeveloper404/orgs","repos_url":"https://api.github.com/users/GCHQDeveloper404/repos","events_url":"https://api.github.com/users/GCHQDeveloper404/events{/privacy}","received_events_url":"https://api.github.com/users/GCHQDeveloper404/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2018-05-01T15:20:18Z","updated_at":"2018-06-27T12:32:02Z","due_on":null,"closed_at":null},"comments":0,"created_at":"2018-05-24T13:50:59Z","updated_at":"2018-10-17T11:31:02Z","closed_at":null,"author_association":"MEMBER","body":"In `SchemaElementDefinition` the signature of the method `getGroupBy` is to return `Set<String>`. The actual object that is returned is of type `LinkedHashSet`. Many callers of this method assume that the results are in a consistent order, e.g. when properties are serialised they need to always be serialised in the same order. As the result is a `LinkedHashSet`, the results are in a consistent order. But as the signature doesn't guarantee that, in theory the implementation of `SchemaElementDefinition` could change (to return a `HashSet` for example) and client code would break as the order would not be consistent.\r\n\r\nThere are similar issues with `getIdentifierMap` and `getProperties`.\r\n\r\nIf we think that the only callers of these methods are internal to Gaffer then we can just update the signature. If not, then we can deprecate these methods and replace them with ones that guarantee a consistent order and update all the callers of the methods in Gaffer to use the new ones."},"comment":{"url":"https://api.github.com/repos/gchq/Gaffer/issues/comments/430592450","html_url":"https://github.com/gchq/Gaffer/issues/1804#issuecomment-430592450","issue_url":"https://api.github.com/repos/gchq/Gaffer/issues/1804","id":430592450,"node_id":"MDEyOklzc3VlQ29tbWVudDQzMDU5MjQ1MA==","user":{"login":"m55624","id":29117199,"node_id":"MDQ6VXNlcjI5MTE3MTk5","avatar_url":"https://avatars3.githubusercontent.com/u/29117199?v=4","gravatar_id":"","url":"https://api.github.com/users/m55624","html_url":"https://github.com/m55624","followers_url":"https://api.github.com/users/m55624/followers","following_url":"https://api.github.com/users/m55624/following{/other_user}","gists_url":"https://api.github.com/users/m55624/gists{/gist_id}","starred_url":"https://api.github.com/users/m55624/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/m55624/subscriptions","organizations_url":"https://api.github.com/users/m55624/orgs","repos_url":"https://api.github.com/users/m55624/repos","events_url":"https://api.github.com/users/m55624/events{/privacy}","received_events_url":"https://api.github.com/users/m55624/received_events","type":"User","site_admin":false},"created_at":"2018-10-17T11:31:02Z","updated_at":"2018-10-17T11:31:02Z","author_association":"CONTRIBUTOR","body":"We cannot update the signature as the methods are public, so new `ordered` methods have been created and the old ones deprecated, as mentioned above."}}
{"actor":{"display_login":"m55624"}}