{"action":"opened","issue":{"url":"https://api.github.com/repos/timmolter/XChange/issues/841","labels_url":"https://api.github.com/repos/timmolter/XChange/issues/841/labels{/name}","comments_url":"https://api.github.com/repos/timmolter/XChange/issues/841/comments","events_url":"https://api.github.com/repos/timmolter/XChange/issues/841/events","html_url":"https://github.com/timmolter/XChange/issues/841","id":55523694,"number":841,"title":"Version 3.0.0 comments thread","user":{"login":"timmolter","id":738972,"avatar_url":"https://avatars.githubusercontent.com/u/738972?v=3","gravatar_id":"","url":"https://api.github.com/users/timmolter","html_url":"https://github.com/timmolter","followers_url":"https://api.github.com/users/timmolter/followers","following_url":"https://api.github.com/users/timmolter/following{/other_user}","gists_url":"https://api.github.com/users/timmolter/gists{/gist_id}","starred_url":"https://api.github.com/users/timmolter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timmolter/subscriptions","organizations_url":"https://api.github.com/users/timmolter/orgs","repos_url":"https://api.github.com/users/timmolter/repos","events_url":"https://api.github.com/users/timmolter/events{/privacy}","received_events_url":"https://api.github.com/users/timmolter/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-01-26T19:11:17Z","updated_at":"2015-01-26T19:11:17Z","closed_at":null,"body":"Hi Everyone. I just pushed a wide-sweeping refactor. The main motivation behind it was to provide a way to \"inject\" metadata into each Exchange. This metadata is data associated with exchanges that is somewhat static, but does tend to change over time. Examples include, currency pairs, max polling rates, scaling factors, etc. \r\n\r\nThis new feature works by having each exchange module provide a json file in `resources` that matches the exchange name in the ExchangeConfiguration. During creation of the exchange, the file is loaded into an object called `MetaData`. I will be expanding this object over the next days to include more parameters. I plan to add a way to specify an override file from any local path.\r\n\r\nThe metadata is available at the top of the class hierarchy: `BaseExchange`. This makes the metadata available to all services, including streaming now.\r\n\r\nI was also motivated to do this because of the upcoming release I want to do. I always try to \"clean things up\" before each release. While going through the code, I noticed that many of the implementations have gone a bit of track. That's OK, but it's my job to try to keep everything consistent, and I changed a few things for the sake of consistency. For example, where Collections, List and Sets were, I picked List. Sometimes `synchronized` was used, and I removed it. Gasp! The point is, if it's important, let's decide to add something or not and then add it throughout and not just \"here and there\".\r\n\r\nPlease voice your opinions and report anything that I broke. Also, if you have anything general to say about any part of XChange, now would be a good time. I'll be working through stuff over the next week, trying to get 3.0.0 released. "}}