{"action":"created","comment":{"url":"https://api.github.com/repos/typesafehub/config/pulls/comments/26168602","id":26168602,"diff_hunk":"@@ -0,0 +1,15 @@\n+package com.typesafe.config.impl;\n+\n+import com.typesafe.config.ConfigNode;\n+\n+abstract class AbstractConfigNode implements ConfigNode {\n+    final private Token token;","path":"config/src/main/java/com/typesafe/config/impl/AbstractConfigNode.java","position":6,"original_position":6,"commit_id":"3166db4d722589fc832e916d6c13093d3766c4cb","original_commit_id":"fa0aaeabbf9d027b297d6d26c1cc5514071728fb","user":{"login":"fpringvaldsen","id":5620801,"avatar_url":"https://avatars.githubusercontent.com/u/5620801?v=3","gravatar_id":"","url":"https://api.github.com/users/fpringvaldsen","html_url":"https://github.com/fpringvaldsen","followers_url":"https://api.github.com/users/fpringvaldsen/followers","following_url":"https://api.github.com/users/fpringvaldsen/following{/other_user}","gists_url":"https://api.github.com/users/fpringvaldsen/gists{/gist_id}","starred_url":"https://api.github.com/users/fpringvaldsen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpringvaldsen/subscriptions","organizations_url":"https://api.github.com/users/fpringvaldsen/orgs","repos_url":"https://api.github.com/users/fpringvaldsen/repos","events_url":"https://api.github.com/users/fpringvaldsen/events{/privacy}","received_events_url":"https://api.github.com/users/fpringvaldsen/received_events","type":"User","site_admin":false},"body":"@havocp As it stands right now, each token lives in its own node. However, some nodes have child nodes instead of Tokens.","created_at":"2015-03-10T21:34:27Z","updated_at":"2015-03-10T21:34:27Z","html_url":"https://github.com/typesafehub/config/pull/280#discussion_r26168602","pull_request_url":"https://api.github.com/repos/typesafehub/config/pulls/280","_links":{"self":{"href":"https://api.github.com/repos/typesafehub/config/pulls/comments/26168602"},"html":{"href":"https://github.com/typesafehub/config/pull/280#discussion_r26168602"},"pull_request":{"href":"https://api.github.com/repos/typesafehub/config/pulls/280"}}},"pull_request":{"url":"https://api.github.com/repos/typesafehub/config/pulls/280","id":30867377,"html_url":"https://github.com/typesafehub/config/pull/280","diff_url":"https://github.com/typesafehub/config/pull/280.diff","patch_url":"https://github.com/typesafehub/config/pull/280.patch","issue_url":"https://api.github.com/repos/typesafehub/config/issues/280","number":280,"state":"open","locked":false,"title":"(FOR REVIEW) Add ConfigNode classes","user":{"login":"fpringvaldsen","id":5620801,"avatar_url":"https://avatars.githubusercontent.com/u/5620801?v=3","gravatar_id":"","url":"https://api.github.com/users/fpringvaldsen","html_url":"https://github.com/fpringvaldsen","followers_url":"https://api.github.com/users/fpringvaldsen/followers","following_url":"https://api.github.com/users/fpringvaldsen/following{/other_user}","gists_url":"https://api.github.com/users/fpringvaldsen/gists{/gist_id}","starred_url":"https://api.github.com/users/fpringvaldsen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpringvaldsen/subscriptions","organizations_url":"https://api.github.com/users/fpringvaldsen/orgs","repos_url":"https://api.github.com/users/fpringvaldsen/repos","events_url":"https://api.github.com/users/fpringvaldsen/events{/privacy}","received_events_url":"https://api.github.com/users/fpringvaldsen/received_events","type":"User","site_admin":false},"body":"This work came out of the discussion in https://github.com/typesafehub/config/issues/272.\r\n\r\nThese commits add a new grouping of classes, `ConfigNode`, to the library, which are used to form an AST. This AST contains all the tokens from which it was parsed, so the original text can be reproduced from them.\r\n\r\nI'm opening this up for review now as the implementation is complete, so I think that portion is ready for review. The testing code is rough right now, largely because of the difficulty involved with crafting instances of `ConfigNodeComplexValue` by hand, so I'm still working on improving that, although any feedback on that front is welcome.","created_at":"2015-03-10T16:29:49Z","updated_at":"2015-03-10T21:34:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0f498f7f1b35f21867ed9bd0ee993cbd89ef0a64","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/typesafehub/config/pulls/280/commits","review_comments_url":"https://api.github.com/repos/typesafehub/config/pulls/280/comments","review_comment_url":"https://api.github.com/repos/typesafehub/config/pulls/comments{/number}","comments_url":"https://api.github.com/repos/typesafehub/config/issues/280/comments","statuses_url":"https://api.github.com/repos/typesafehub/config/statuses/3166db4d722589fc832e916d6c13093d3766c4cb","head":{"label":"fpringvaldsen:task/create-ConfigNode","ref":"task/create-ConfigNode","sha":"3166db4d722589fc832e916d6c13093d3766c4cb","user":{"login":"fpringvaldsen","id":5620801,"avatar_url":"https://avatars.githubusercontent.com/u/5620801?v=3","gravatar_id":"","url":"https://api.github.com/users/fpringvaldsen","html_url":"https://github.com/fpringvaldsen","followers_url":"https://api.github.com/users/fpringvaldsen/followers","following_url":"https://api.github.com/users/fpringvaldsen/following{/other_user}","gists_url":"https://api.github.com/users/fpringvaldsen/gists{/gist_id}","starred_url":"https://api.github.com/users/fpringvaldsen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpringvaldsen/subscriptions","organizations_url":"https://api.github.com/users/fpringvaldsen/orgs","repos_url":"https://api.github.com/users/fpringvaldsen/repos","events_url":"https://api.github.com/users/fpringvaldsen/events{/privacy}","received_events_url":"https://api.github.com/users/fpringvaldsen/received_events","type":"User","site_admin":false},"repo":{"id":31284302,"name":"config","full_name":"fpringvaldsen/config","owner":{"login":"fpringvaldsen","id":5620801,"avatar_url":"https://avatars.githubusercontent.com/u/5620801?v=3","gravatar_id":"","url":"https://api.github.com/users/fpringvaldsen","html_url":"https://github.com/fpringvaldsen","followers_url":"https://api.github.com/users/fpringvaldsen/followers","following_url":"https://api.github.com/users/fpringvaldsen/following{/other_user}","gists_url":"https://api.github.com/users/fpringvaldsen/gists{/gist_id}","starred_url":"https://api.github.com/users/fpringvaldsen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpringvaldsen/subscriptions","organizations_url":"https://api.github.com/users/fpringvaldsen/orgs","repos_url":"https://api.github.com/users/fpringvaldsen/repos","events_url":"https://api.github.com/users/fpringvaldsen/events{/privacy}","received_events_url":"https://api.github.com/users/fpringvaldsen/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/fpringvaldsen/config","description":"Configuration library for JVM languages","fork":true,"url":"https://api.github.com/repos/fpringvaldsen/config","forks_url":"https://api.github.com/repos/fpringvaldsen/config/forks","keys_url":"https://api.github.com/repos/fpringvaldsen/config/keys{/key_id}","collaborators_url":"https://api.github.com/repos/fpringvaldsen/config/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/fpringvaldsen/config/teams","hooks_url":"https://api.github.com/repos/fpringvaldsen/config/hooks","issue_events_url":"https://api.github.com/repos/fpringvaldsen/config/issues/events{/number}","events_url":"https://api.github.com/repos/fpringvaldsen/config/events","assignees_url":"https://api.github.com/repos/fpringvaldsen/config/assignees{/user}","branches_url":"https://api.github.com/repos/fpringvaldsen/config/branches{/branch}","tags_url":"https://api.github.com/repos/fpringvaldsen/config/tags","blobs_url":"https://api.github.com/repos/fpringvaldsen/config/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/fpringvaldsen/config/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/fpringvaldsen/config/git/refs{/sha}","trees_url":"https://api.github.com/repos/fpringvaldsen/config/git/trees{/sha}","statuses_url":"https://api.github.com/repos/fpringvaldsen/config/statuses/{sha}","languages_url":"https://api.github.com/repos/fpringvaldsen/config/languages","stargazers_url":"https://api.github.com/repos/fpringvaldsen/config/stargazers","contributors_url":"https://api.github.com/repos/fpringvaldsen/config/contributors","subscribers_url":"https://api.github.com/repos/fpringvaldsen/config/subscribers","subscription_url":"https://api.github.com/repos/fpringvaldsen/config/subscription","commits_url":"https://api.github.com/repos/fpringvaldsen/config/commits{/sha}","git_commits_url":"https://api.github.com/repos/fpringvaldsen/config/git/commits{/sha}","comments_url":"https://api.github.com/repos/fpringvaldsen/config/comments{/number}","issue_comment_url":"https://api.github.com/repos/fpringvaldsen/config/issues/comments{/number}","contents_url":"https://api.github.com/repos/fpringvaldsen/config/contents/{+path}","compare_url":"https://api.github.com/repos/fpringvaldsen/config/compare/{base}...{head}","merges_url":"https://api.github.com/repos/fpringvaldsen/config/merges","archive_url":"https://api.github.com/repos/fpringvaldsen/config/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/fpringvaldsen/config/downloads","issues_url":"https://api.github.com/repos/fpringvaldsen/config/issues{/number}","pulls_url":"https://api.github.com/repos/fpringvaldsen/config/pulls{/number}","milestones_url":"https://api.github.com/repos/fpringvaldsen/config/milestones{/number}","notifications_url":"https://api.github.com/repos/fpringvaldsen/config/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/fpringvaldsen/config/labels{/name}","releases_url":"https://api.github.com/repos/fpringvaldsen/config/releases{/id}","created_at":"2015-02-24T22:03:27Z","updated_at":"2015-03-10T16:23:03Z","pushed_at":"2015-03-10T20:56:09Z","git_url":"git://github.com/fpringvaldsen/config.git","ssh_url":"git@github.com:fpringvaldsen/config.git","clone_url":"https://github.com/fpringvaldsen/config.git","svn_url":"https://github.com/fpringvaldsen/config","homepage":"http://typesafe.com","size":4112,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"typesafehub:master","ref":"master","sha":"7511e865a5cc0a6a49fc2e403474e73c08361b46","user":{"login":"typesafehub","id":784923,"avatar_url":"https://avatars.githubusercontent.com/u/784923?v=3","gravatar_id":"","url":"https://api.github.com/users/typesafehub","html_url":"https://github.com/typesafehub","followers_url":"https://api.github.com/users/typesafehub/followers","following_url":"https://api.github.com/users/typesafehub/following{/other_user}","gists_url":"https://api.github.com/users/typesafehub/gists{/gist_id}","starred_url":"https://api.github.com/users/typesafehub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/typesafehub/subscriptions","organizations_url":"https://api.github.com/users/typesafehub/orgs","repos_url":"https://api.github.com/users/typesafehub/repos","events_url":"https://api.github.com/users/typesafehub/events{/privacy}","received_events_url":"https://api.github.com/users/typesafehub/received_events","type":"Organization","site_admin":false},"repo":{"id":2923236,"name":"config","full_name":"typesafehub/config","owner":{"login":"typesafehub","id":784923,"avatar_url":"https://avatars.githubusercontent.com/u/784923?v=3","gravatar_id":"","url":"https://api.github.com/users/typesafehub","html_url":"https://github.com/typesafehub","followers_url":"https://api.github.com/users/typesafehub/followers","following_url":"https://api.github.com/users/typesafehub/following{/other_user}","gists_url":"https://api.github.com/users/typesafehub/gists{/gist_id}","starred_url":"https://api.github.com/users/typesafehub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/typesafehub/subscriptions","organizations_url":"https://api.github.com/users/typesafehub/orgs","repos_url":"https://api.github.com/users/typesafehub/repos","events_url":"https://api.github.com/users/typesafehub/events{/privacy}","received_events_url":"https://api.github.com/users/typesafehub/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/typesafehub/config","description":"Configuration library for JVM languages","fork":false,"url":"https://api.github.com/repos/typesafehub/config","forks_url":"https://api.github.com/repos/typesafehub/config/forks","keys_url":"https://api.github.com/repos/typesafehub/config/keys{/key_id}","collaborators_url":"https://api.github.com/repos/typesafehub/config/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/typesafehub/config/teams","hooks_url":"https://api.github.com/repos/typesafehub/config/hooks","issue_events_url":"https://api.github.com/repos/typesafehub/config/issues/events{/number}","events_url":"https://api.github.com/repos/typesafehub/config/events","assignees_url":"https://api.github.com/repos/typesafehub/config/assignees{/user}","branches_url":"https://api.github.com/repos/typesafehub/config/branches{/branch}","tags_url":"https://api.github.com/repos/typesafehub/config/tags","blobs_url":"https://api.github.com/repos/typesafehub/config/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/typesafehub/config/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/typesafehub/config/git/refs{/sha}","trees_url":"https://api.github.com/repos/typesafehub/config/git/trees{/sha}","statuses_url":"https://api.github.com/repos/typesafehub/config/statuses/{sha}","languages_url":"https://api.github.com/repos/typesafehub/config/languages","stargazers_url":"https://api.github.com/repos/typesafehub/config/stargazers","contributors_url":"https://api.github.com/repos/typesafehub/config/contributors","subscribers_url":"https://api.github.com/repos/typesafehub/config/subscribers","subscription_url":"https://api.github.com/repos/typesafehub/config/subscription","commits_url":"https://api.github.com/repos/typesafehub/config/commits{/sha}","git_commits_url":"https://api.github.com/repos/typesafehub/config/git/commits{/sha}","comments_url":"https://api.github.com/repos/typesafehub/config/comments{/number}","issue_comment_url":"https://api.github.com/repos/typesafehub/config/issues/comments{/number}","contents_url":"https://api.github.com/repos/typesafehub/config/contents/{+path}","compare_url":"https://api.github.com/repos/typesafehub/config/compare/{base}...{head}","merges_url":"https://api.github.com/repos/typesafehub/config/merges","archive_url":"https://api.github.com/repos/typesafehub/config/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/typesafehub/config/downloads","issues_url":"https://api.github.com/repos/typesafehub/config/issues{/number}","pulls_url":"https://api.github.com/repos/typesafehub/config/pulls{/number}","milestones_url":"https://api.github.com/repos/typesafehub/config/milestones{/number}","notifications_url":"https://api.github.com/repos/typesafehub/config/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/typesafehub/config/labels{/name}","releases_url":"https://api.github.com/repos/typesafehub/config/releases{/id}","created_at":"2011-12-06T08:02:29Z","updated_at":"2015-03-10T21:23:18Z","pushed_at":"2015-03-09T20:55:35Z","git_url":"git://github.com/typesafehub/config.git","ssh_url":"git@github.com:typesafehub/config.git","clone_url":"https://github.com/typesafehub/config.git","svn_url":"https://github.com/typesafehub/config","homepage":"http://typesafe.com","size":6244,"stargazers_count":1150,"watchers_count":1150,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":169,"mirror_url":null,"open_issues_count":42,"forks":169,"open_issues":42,"watchers":1150,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/typesafehub/config/pulls/280"},"html":{"href":"https://github.com/typesafehub/config/pull/280"},"issue":{"href":"https://api.github.com/repos/typesafehub/config/issues/280"},"comments":{"href":"https://api.github.com/repos/typesafehub/config/issues/280/comments"},"review_comments":{"href":"https://api.github.com/repos/typesafehub/config/pulls/280/comments"},"review_comment":{"href":"https://api.github.com/repos/typesafehub/config/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/typesafehub/config/pulls/280/commits"},"statuses":{"href":"https://api.github.com/repos/typesafehub/config/statuses/3166db4d722589fc832e916d6c13093d3766c4cb"}}}}