{"action":"closed","number":2530,"pull_request":{"url":"https://api.github.com/repos/knowm/XChange/pulls/2530","id":183536031,"html_url":"https://github.com/knowm/XChange/pull/2530","diff_url":"https://github.com/knowm/XChange/pull/2530.diff","patch_url":"https://github.com/knowm/XChange/pull/2530.patch","issue_url":"https://api.github.com/repos/knowm/XChange/issues/2530","number":2530,"state":"closed","locked":false,"title":"Balance,Currency,CurrencyPair,Wallet,AccountInfo as Interface ","user":{"login":"jnorthrup","id":73514,"avatar_url":"https://avatars2.githubusercontent.com/u/73514?v=4","gravatar_id":"","url":"https://api.github.com/users/jnorthrup","html_url":"https://github.com/jnorthrup","followers_url":"https://api.github.com/users/jnorthrup/followers","following_url":"https://api.github.com/users/jnorthrup/following{/other_user}","gists_url":"https://api.github.com/users/jnorthrup/gists{/gist_id}","starred_url":"https://api.github.com/users/jnorthrup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnorthrup/subscriptions","organizations_url":"https://api.github.com/users/jnorthrup/orgs","repos_url":"https://api.github.com/users/jnorthrup/repos","events_url":"https://api.github.com/users/jnorthrup/events{/privacy}","received_events_url":"https://api.github.com/users/jnorthrup/received_events","type":"User","site_admin":false},"body":"the author sees it as a good idea to simplify several central abstractions to pure interfaces.\r\n\r\nby request in Email @timmolter has requested a laser focussed debate and vote on this PR.\r\n\r\n  1. some default methods were extracted from the refactored classes into the replacement interfaces\r\n  1. the author preserves 100% unit test success\r\n  1. the PR went to great lengths to minimize change of imports in the DTO's affected.  unused imports were typically removed by intellij. \r\n  1. there are no changes to poms or build methods in this PR.\r\n  1. @timmolter has expressed intent to nominate this PR against a higher version increment designation, to indicate that this involves major changes.\r\n  1. constructors have been converted to factory methods and builders in the interfaces.  \r\n     * at no point was the functionality or scope changed for any given object's construction.\r\n  1. the implementation classses were refactored to .impl.Class  pattern to keep clarity of the original declarative choices. \r\n  1. there are notable whitespace/formatting impacts  \r\n  1. files that were touched were granted some automated tweaks in response to some of the shuffling due to builder parameters being broken out.    \r\n  1. there's some leftover full class names which don't affect anything in the code.  these couldn't be normalized cleanly without touching new files.  there's no consequence to this decision. \r\n  1. when discussing java Interfaces there seems to be a perfect storm for [bikeshed arguments](https://www.drupal.org/project/governance/issues/1493418).  to respect the reader's and the author's time, please limit the discussion to risks pertaining to the contents of this PR and limit conjecture.\r\n  1. The author acknowledges that opinions about code can be personal preferences but the author's opinion is that \r\n * Adapters are unnecessarily induced by the final Class DTO's.  if you like Adapters, this PR doesn't change anything for you.    \r\n*  A real-world example on more than one occasion has been with Balance \".total\" and \".available\" causing NPE's.  the consumer of a DTO should have no surprises about internal state, and so if one chooses to use an interface, there will be no surprises or unexpected NPE's by using that interface to define the method outputs specific to the API being queried.\r\nrs \r\n\r\n![image](https://user-images.githubusercontent.com/73514/39123714-e394b510-4722-11e8-9fd1-9c45dd2b1653.png)\r\nthank you  @walec51 I can represent my own ideologies without your assistance.  \r\n\r\nwhat's important is to review the code and report back to Tim.    ","created_at":"2018-04-23T19:38:12Z","updated_at":"2018-04-24T06:38:19Z","closed_at":"2018-04-24T06:38:18Z","merged_at":null,"merge_commit_sha":"d9fb9f0da83e08b08585f3d0c8155bd0ca8eb051","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/knowm/XChange/pulls/2530/commits","review_comments_url":"https://api.github.com/repos/knowm/XChange/pulls/2530/comments","review_comment_url":"https://api.github.com/repos/knowm/XChange/pulls/comments{/number}","comments_url":"https://api.github.com/repos/knowm/XChange/issues/2530/comments","statuses_url":"https://api.github.com/repos/knowm/XChange/statuses/45c8996c7f8c9ead56b2b615b2b4557281480711","head":{"label":"jnorthrup:ICurrency","ref":"ICurrency","sha":"45c8996c7f8c9ead56b2b615b2b4557281480711","user":{"login":"jnorthrup","id":73514,"avatar_url":"https://avatars2.githubusercontent.com/u/73514?v=4","gravatar_id":"","url":"https://api.github.com/users/jnorthrup","html_url":"https://github.com/jnorthrup","followers_url":"https://api.github.com/users/jnorthrup/followers","following_url":"https://api.github.com/users/jnorthrup/following{/other_user}","gists_url":"https://api.github.com/users/jnorthrup/gists{/gist_id}","starred_url":"https://api.github.com/users/jnorthrup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnorthrup/subscriptions","organizations_url":"https://api.github.com/users/jnorthrup/orgs","repos_url":"https://api.github.com/users/jnorthrup/repos","events_url":"https://api.github.com/users/jnorthrup/events{/privacy}","received_events_url":"https://api.github.com/users/jnorthrup/received_events","type":"User","site_admin":false},"repo":{"id":121066373,"name":"XChange","full_name":"jnorthrup/XChange","owner":{"login":"jnorthrup","id":73514,"avatar_url":"https://avatars2.githubusercontent.com/u/73514?v=4","gravatar_id":"","url":"https://api.github.com/users/jnorthrup","html_url":"https://github.com/jnorthrup","followers_url":"https://api.github.com/users/jnorthrup/followers","following_url":"https://api.github.com/users/jnorthrup/following{/other_user}","gists_url":"https://api.github.com/users/jnorthrup/gists{/gist_id}","starred_url":"https://api.github.com/users/jnorthrup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jnorthrup/subscriptions","organizations_url":"https://api.github.com/users/jnorthrup/orgs","repos_url":"https://api.github.com/users/jnorthrup/repos","events_url":"https://api.github.com/users/jnorthrup/events{/privacy}","received_events_url":"https://api.github.com/users/jnorthrup/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jnorthrup/XChange","description":"Aggressive XChange meta project fork","fork":true,"url":"https://api.github.com/repos/jnorthrup/XChange","forks_url":"https://api.github.com/repos/jnorthrup/XChange/forks","keys_url":"https://api.github.com/repos/jnorthrup/XChange/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jnorthrup/XChange/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jnorthrup/XChange/teams","hooks_url":"https://api.github.com/repos/jnorthrup/XChange/hooks","issue_events_url":"https://api.github.com/repos/jnorthrup/XChange/issues/events{/number}","events_url":"https://api.github.com/repos/jnorthrup/XChange/events","assignees_url":"https://api.github.com/repos/jnorthrup/XChange/assignees{/user}","branches_url":"https://api.github.com/repos/jnorthrup/XChange/branches{/branch}","tags_url":"https://api.github.com/repos/jnorthrup/XChange/tags","blobs_url":"https://api.github.com/repos/jnorthrup/XChange/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jnorthrup/XChange/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jnorthrup/XChange/git/refs{/sha}","trees_url":"https://api.github.com/repos/jnorthrup/XChange/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jnorthrup/XChange/statuses/{sha}","languages_url":"https://api.github.com/repos/jnorthrup/XChange/languages","stargazers_url":"https://api.github.com/repos/jnorthrup/XChange/stargazers","contributors_url":"https://api.github.com/repos/jnorthrup/XChange/contributors","subscribers_url":"https://api.github.com/repos/jnorthrup/XChange/subscribers","subscription_url":"https://api.github.com/repos/jnorthrup/XChange/subscription","commits_url":"https://api.github.com/repos/jnorthrup/XChange/commits{/sha}","git_commits_url":"https://api.github.com/repos/jnorthrup/XChange/git/commits{/sha}","comments_url":"https://api.github.com/repos/jnorthrup/XChange/comments{/number}","issue_comment_url":"https://api.github.com/repos/jnorthrup/XChange/issues/comments{/number}","contents_url":"https://api.github.com/repos/jnorthrup/XChange/contents/{+path}","compare_url":"https://api.github.com/repos/jnorthrup/XChange/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jnorthrup/XChange/merges","archive_url":"https://api.github.com/repos/jnorthrup/XChange/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jnorthrup/XChange/downloads","issues_url":"https://api.github.com/repos/jnorthrup/XChange/issues{/number}","pulls_url":"https://api.github.com/repos/jnorthrup/XChange/pulls{/number}","milestones_url":"https://api.github.com/repos/jnorthrup/XChange/milestones{/number}","notifications_url":"https://api.github.com/repos/jnorthrup/XChange/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jnorthrup/XChange/labels{/name}","releases_url":"https://api.github.com/repos/jnorthrup/XChange/releases{/id}","deployments_url":"https://api.github.com/repos/jnorthrup/XChange/deployments","created_at":"2018-02-11T00:13:14Z","updated_at":"2018-04-20T04:20:49Z","pushed_at":"2018-04-24T00:51:36Z","git_url":"git://github.com/jnorthrup/XChange.git","ssh_url":"git@github.com:jnorthrup/XChange.git","clone_url":"https://github.com/jnorthrup/XChange.git","svn_url":"https://github.com/jnorthrup/XChange","homepage":"","size":33392,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"polyglot"}},"base":{"label":"knowm:develop","ref":"develop","sha":"3d29fd2f17272b375b10632f5436bc366c4aa5e1","user":{"login":"knowm","id":748236,"avatar_url":"https://avatars0.githubusercontent.com/u/748236?v=4","gravatar_id":"","url":"https://api.github.com/users/knowm","html_url":"https://github.com/knowm","followers_url":"https://api.github.com/users/knowm/followers","following_url":"https://api.github.com/users/knowm/following{/other_user}","gists_url":"https://api.github.com/users/knowm/gists{/gist_id}","starred_url":"https://api.github.com/users/knowm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/knowm/subscriptions","organizations_url":"https://api.github.com/users/knowm/orgs","repos_url":"https://api.github.com/users/knowm/repos","events_url":"https://api.github.com/users/knowm/events{/privacy}","received_events_url":"https://api.github.com/users/knowm/received_events","type":"Organization","site_admin":false},"repo":{"id":3333998,"name":"XChange","full_name":"knowm/XChange","owner":{"login":"knowm","id":748236,"avatar_url":"https://avatars0.githubusercontent.com/u/748236?v=4","gravatar_id":"","url":"https://api.github.com/users/knowm","html_url":"https://github.com/knowm","followers_url":"https://api.github.com/users/knowm/followers","following_url":"https://api.github.com/users/knowm/following{/other_user}","gists_url":"https://api.github.com/users/knowm/gists{/gist_id}","starred_url":"https://api.github.com/users/knowm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/knowm/subscriptions","organizations_url":"https://api.github.com/users/knowm/orgs","repos_url":"https://api.github.com/users/knowm/repos","events_url":"https://api.github.com/users/knowm/events{/privacy}","received_events_url":"https://api.github.com/users/knowm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/knowm/XChange","description":"XChange is a Java library providing a streamlined API for interacting with 60+ Bitcoin and Altcoin exchanges providing a consistent interface for trading and accessing market data.","fork":false,"url":"https://api.github.com/repos/knowm/XChange","forks_url":"https://api.github.com/repos/knowm/XChange/forks","keys_url":"https://api.github.com/repos/knowm/XChange/keys{/key_id}","collaborators_url":"https://api.github.com/repos/knowm/XChange/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/knowm/XChange/teams","hooks_url":"https://api.github.com/repos/knowm/XChange/hooks","issue_events_url":"https://api.github.com/repos/knowm/XChange/issues/events{/number}","events_url":"https://api.github.com/repos/knowm/XChange/events","assignees_url":"https://api.github.com/repos/knowm/XChange/assignees{/user}","branches_url":"https://api.github.com/repos/knowm/XChange/branches{/branch}","tags_url":"https://api.github.com/repos/knowm/XChange/tags","blobs_url":"https://api.github.com/repos/knowm/XChange/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/knowm/XChange/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/knowm/XChange/git/refs{/sha}","trees_url":"https://api.github.com/repos/knowm/XChange/git/trees{/sha}","statuses_url":"https://api.github.com/repos/knowm/XChange/statuses/{sha}","languages_url":"https://api.github.com/repos/knowm/XChange/languages","stargazers_url":"https://api.github.com/repos/knowm/XChange/stargazers","contributors_url":"https://api.github.com/repos/knowm/XChange/contributors","subscribers_url":"https://api.github.com/repos/knowm/XChange/subscribers","subscription_url":"https://api.github.com/repos/knowm/XChange/subscription","commits_url":"https://api.github.com/repos/knowm/XChange/commits{/sha}","git_commits_url":"https://api.github.com/repos/knowm/XChange/git/commits{/sha}","comments_url":"https://api.github.com/repos/knowm/XChange/comments{/number}","issue_comment_url":"https://api.github.com/repos/knowm/XChange/issues/comments{/number}","contents_url":"https://api.github.com/repos/knowm/XChange/contents/{+path}","compare_url":"https://api.github.com/repos/knowm/XChange/compare/{base}...{head}","merges_url":"https://api.github.com/repos/knowm/XChange/merges","archive_url":"https://api.github.com/repos/knowm/XChange/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/knowm/XChange/downloads","issues_url":"https://api.github.com/repos/knowm/XChange/issues{/number}","pulls_url":"https://api.github.com/repos/knowm/XChange/pulls{/number}","milestones_url":"https://api.github.com/repos/knowm/XChange/milestones{/number}","notifications_url":"https://api.github.com/repos/knowm/XChange/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/knowm/XChange/labels{/name}","releases_url":"https://api.github.com/repos/knowm/XChange/releases{/id}","deployments_url":"https://api.github.com/repos/knowm/XChange/deployments","created_at":"2012-02-02T10:48:28Z","updated_at":"2018-04-23T08:16:47Z","pushed_at":"2018-04-24T05:52:03Z","git_url":"git://github.com/knowm/XChange.git","ssh_url":"git@github.com:knowm/XChange.git","clone_url":"https://github.com/knowm/XChange.git","svn_url":"https://github.com/knowm/XChange","homepage":"http://knowm.org/open-source/xchange/","size":30777,"stargazers_count":2217,"watchers_count":2217,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1041,"mirror_url":null,"archived":false,"open_issues_count":146,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":1041,"open_issues":146,"watchers":2217,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/knowm/XChange/pulls/2530"},"html":{"href":"https://github.com/knowm/XChange/pull/2530"},"issue":{"href":"https://api.github.com/repos/knowm/XChange/issues/2530"},"comments":{"href":"https://api.github.com/repos/knowm/XChange/issues/2530/comments"},"review_comments":{"href":"https://api.github.com/repos/knowm/XChange/pulls/2530/comments"},"review_comment":{"href":"https://api.github.com/repos/knowm/XChange/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/knowm/XChange/pulls/2530/commits"},"statuses":{"href":"https://api.github.com/repos/knowm/XChange/statuses/45c8996c7f8c9ead56b2b615b2b4557281480711"}},"author_association":"CONTRIBUTOR","merged":false,"mergeable":true,"rebaseable":false,"mergeable_state":"clean","merged_by":null,"comments":2,"review_comments":0,"maintainer_can_modify":false,"commits":5,"additions":5835,"deletions":5066,"changed_files":439}}
{"actor":{"display_login":"jnorthrup"}}