{"action":"created","comment":{"url":"https://api.github.com/repos/oracle/opengrok/pulls/comments/191335985","pull_request_review_id":123880169,"id":191335985,"diff_hunk":"@@ -282,113 +188,214 @@ public boolean equals(Object obj) {\n      * @param port port number","path":"src/org/opensolaris/opengrok/configuration/messages/Message.java","position":286,"original_position":286,"commit_id":"1392096af5a946a13bd9708a37e5bf4827a3645a","original_commit_id":"1392096af5a946a13bd9708a37e5bf4827a3645a","user":{"login":"tulinkry","id":6997160,"avatar_url":"https://avatars1.githubusercontent.com/u/6997160?v=4","gravatar_id":"","url":"https://api.github.com/users/tulinkry","html_url":"https://github.com/tulinkry","followers_url":"https://api.github.com/users/tulinkry/followers","following_url":"https://api.github.com/users/tulinkry/following{/other_user}","gists_url":"https://api.github.com/users/tulinkry/gists{/gist_id}","starred_url":"https://api.github.com/users/tulinkry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tulinkry/subscriptions","organizations_url":"https://api.github.com/users/tulinkry/orgs","repos_url":"https://api.github.com/users/tulinkry/repos","events_url":"https://api.github.com/users/tulinkry/events{/privacy}","received_events_url":"https://api.github.com/users/tulinkry/received_events","type":"User","site_admin":false},"body":"this is not XML anymore","created_at":"2018-05-29T08:10:54Z","updated_at":"2018-05-29T08:50:44Z","html_url":"https://github.com/oracle/opengrok/pull/2109#discussion_r191335985","pull_request_url":"https://api.github.com/repos/oracle/opengrok/pulls/2109","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/oracle/opengrok/pulls/comments/191335985"},"html":{"href":"https://github.com/oracle/opengrok/pull/2109#discussion_r191335985"},"pull_request":{"href":"https://api.github.com/repos/oracle/opengrok/pulls/2109"}}},"pull_request":{"url":"https://api.github.com/repos/oracle/opengrok/pulls/2109","id":188123051,"html_url":"https://github.com/oracle/opengrok/pull/2109","diff_url":"https://github.com/oracle/opengrok/pull/2109.diff","patch_url":"https://github.com/oracle/opengrok/pull/2109.patch","issue_url":"https://api.github.com/repos/oracle/opengrok/issues/2109","number":2109,"state":"open","locked":false,"title":"Messages modularization","user":{"login":"Orviss","id":12401160,"avatar_url":"https://avatars3.githubusercontent.com/u/12401160?v=4","gravatar_id":"","url":"https://api.github.com/users/Orviss","html_url":"https://github.com/Orviss","followers_url":"https://api.github.com/users/Orviss/followers","following_url":"https://api.github.com/users/Orviss/following{/other_user}","gists_url":"https://api.github.com/users/Orviss/gists{/gist_id}","starred_url":"https://api.github.com/users/Orviss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Orviss/subscriptions","organizations_url":"https://api.github.com/users/Orviss/orgs","repos_url":"https://api.github.com/users/Orviss/repos","events_url":"https://api.github.com/users/Orviss/events{/privacy}","received_events_url":"https://api.github.com/users/Orviss/received_events","type":"User","site_admin":false},"body":"<!--\r\nThank you for proposing a contribution to the {OpenGrok project. In order to accept changes from the \"outside world\", all contributors should \"sign\" the [Oracle Contributor Agreement](www.oracle.com/technetwork/community/oca-486395.html) . \r\nOCA basically means that you won't be sueing Oracle over code you donate to {OpenGrok project (and similar way, that Oracle won't sue you over your patch :-D ).\r\nIf you have already signed OCA or are from Oracle, then ignore this message, you just need to sign once for all patches to {OpenGrok.\r\nAlternative is to provide a written acceptance of OCA line into the comment of specific pull request (and ideally sign, scan and mail back OCA to Oracle in parallel), but this simple acceptance is only valid for single pull request.\r\n-->\r\nOpenGrok has modules and some other modules might be added (e.g. suggester which I'm working on). These other modules might need to listen to some events -> e.g. new project was added, data were reindexed etc. However, this is not easily possible to do right now without adding dependency to the main module in which messages are located. Thus, this PR.\r\n\r\nMain features: \r\n* messages logic moved from `RuntimeEnvironment` to `MessageListener`\r\n* it is now possible to register custom handlers for messages\r\n* messages are now immutable -> so no handler can modify them\r\n* there was a problem with immutability -> used XML encoders/decoders were for JavaBeans, therefore they needed setters so I moved completely from XML to JSON (I think @vladak already experimented with this so I hope it is okay)\r\n\r\nI tried to leave all the tests logic unmodified so we might be sure that it works as before.\r\n\r\n@tulinkry could you please take a look when you are free? I believe as original author you will have the best insight into it.\r\n\r\nAlso, I would like to change JSON message conversions in `Util` from `Json Simple` to `Gson` if that's okay with you guys.\r\n\r\n**Notice:** \r\n* I believe this PR is a step forward but I'm not sure you will agree with all of my changes. So please consider it a work in progress.\r\n* Ant is not supported in this. I am not sure if we truly want to support it anymore. If yes, I will add it.\r\n\r\nThanks :) ","created_at":"2018-05-15T13:10:51Z","updated_at":"2018-05-29T08:50:44Z","closed_at":null,"merged_at":null,"merge_commit_sha":"435175fd399dbf5fa6347b5a73e4a5aba927cb74","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/oracle/opengrok/pulls/2109/commits","review_comments_url":"https://api.github.com/repos/oracle/opengrok/pulls/2109/comments","review_comment_url":"https://api.github.com/repos/oracle/opengrok/pulls/comments{/number}","comments_url":"https://api.github.com/repos/oracle/opengrok/issues/2109/comments","statuses_url":"https://api.github.com/repos/oracle/opengrok/statuses/1392096af5a946a13bd9708a37e5bf4827a3645a","head":{"label":"Orviss:messages_refactor","ref":"messages_refactor","sha":"1392096af5a946a13bd9708a37e5bf4827a3645a","user":{"login":"Orviss","id":12401160,"avatar_url":"https://avatars3.githubusercontent.com/u/12401160?v=4","gravatar_id":"","url":"https://api.github.com/users/Orviss","html_url":"https://github.com/Orviss","followers_url":"https://api.github.com/users/Orviss/followers","following_url":"https://api.github.com/users/Orviss/following{/other_user}","gists_url":"https://api.github.com/users/Orviss/gists{/gist_id}","starred_url":"https://api.github.com/users/Orviss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Orviss/subscriptions","organizations_url":"https://api.github.com/users/Orviss/orgs","repos_url":"https://api.github.com/users/Orviss/repos","events_url":"https://api.github.com/users/Orviss/events{/privacy}","received_events_url":"https://api.github.com/users/Orviss/received_events","type":"User","site_admin":false},"repo":{"id":101753164,"name":"OpenGrok","full_name":"Orviss/OpenGrok","owner":{"login":"Orviss","id":12401160,"avatar_url":"https://avatars3.githubusercontent.com/u/12401160?v=4","gravatar_id":"","url":"https://api.github.com/users/Orviss","html_url":"https://github.com/Orviss","followers_url":"https://api.github.com/users/Orviss/followers","following_url":"https://api.github.com/users/Orviss/following{/other_user}","gists_url":"https://api.github.com/users/Orviss/gists{/gist_id}","starred_url":"https://api.github.com/users/Orviss/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Orviss/subscriptions","organizations_url":"https://api.github.com/users/Orviss/orgs","repos_url":"https://api.github.com/users/Orviss/repos","events_url":"https://api.github.com/users/Orviss/events{/privacy}","received_events_url":"https://api.github.com/users/Orviss/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Orviss/OpenGrok","description":"Main {OpenGrok git repository","fork":true,"url":"https://api.github.com/repos/Orviss/OpenGrok","forks_url":"https://api.github.com/repos/Orviss/OpenGrok/forks","keys_url":"https://api.github.com/repos/Orviss/OpenGrok/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Orviss/OpenGrok/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Orviss/OpenGrok/teams","hooks_url":"https://api.github.com/repos/Orviss/OpenGrok/hooks","issue_events_url":"https://api.github.com/repos/Orviss/OpenGrok/issues/events{/number}","events_url":"https://api.github.com/repos/Orviss/OpenGrok/events","assignees_url":"https://api.github.com/repos/Orviss/OpenGrok/assignees{/user}","branches_url":"https://api.github.com/repos/Orviss/OpenGrok/branches{/branch}","tags_url":"https://api.github.com/repos/Orviss/OpenGrok/tags","blobs_url":"https://api.github.com/repos/Orviss/OpenGrok/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Orviss/OpenGrok/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Orviss/OpenGrok/git/refs{/sha}","trees_url":"https://api.github.com/repos/Orviss/OpenGrok/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Orviss/OpenGrok/statuses/{sha}","languages_url":"https://api.github.com/repos/Orviss/OpenGrok/languages","stargazers_url":"https://api.github.com/repos/Orviss/OpenGrok/stargazers","contributors_url":"https://api.github.com/repos/Orviss/OpenGrok/contributors","subscribers_url":"https://api.github.com/repos/Orviss/OpenGrok/subscribers","subscription_url":"https://api.github.com/repos/Orviss/OpenGrok/subscription","commits_url":"https://api.github.com/repos/Orviss/OpenGrok/commits{/sha}","git_commits_url":"https://api.github.com/repos/Orviss/OpenGrok/git/commits{/sha}","comments_url":"https://api.github.com/repos/Orviss/OpenGrok/comments{/number}","issue_comment_url":"https://api.github.com/repos/Orviss/OpenGrok/issues/comments{/number}","contents_url":"https://api.github.com/repos/Orviss/OpenGrok/contents/{+path}","compare_url":"https://api.github.com/repos/Orviss/OpenGrok/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Orviss/OpenGrok/merges","archive_url":"https://api.github.com/repos/Orviss/OpenGrok/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Orviss/OpenGrok/downloads","issues_url":"https://api.github.com/repos/Orviss/OpenGrok/issues{/number}","pulls_url":"https://api.github.com/repos/Orviss/OpenGrok/pulls{/number}","milestones_url":"https://api.github.com/repos/Orviss/OpenGrok/milestones{/number}","notifications_url":"https://api.github.com/repos/Orviss/OpenGrok/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Orviss/OpenGrok/labels{/name}","releases_url":"https://api.github.com/repos/Orviss/OpenGrok/releases{/id}","deployments_url":"https://api.github.com/repos/Orviss/OpenGrok/deployments","created_at":"2017-08-29T11:21:18Z","updated_at":"2018-05-09T14:03:58Z","pushed_at":"2018-05-28T17:28:12Z","git_url":"git://github.com/Orviss/OpenGrok.git","ssh_url":"git@github.com:Orviss/OpenGrok.git","clone_url":"https://github.com/Orviss/OpenGrok.git","svn_url":"https://github.com/Orviss/OpenGrok","homepage":"http://opengrok.github.io/OpenGrok/","size":22702,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"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":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":0,"open_issues":0,"watchers":0,"default_branch":"mavenize"}},"base":{"label":"oracle:master","ref":"master","sha":"b173dbc4a2bbcd9821ad7d6c991cbb0413f461bf","user":{"login":"oracle","id":4430336,"avatar_url":"https://avatars1.githubusercontent.com/u/4430336?v=4","gravatar_id":"","url":"https://api.github.com/users/oracle","html_url":"https://github.com/oracle","followers_url":"https://api.github.com/users/oracle/followers","following_url":"https://api.github.com/users/oracle/following{/other_user}","gists_url":"https://api.github.com/users/oracle/gists{/gist_id}","starred_url":"https://api.github.com/users/oracle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oracle/subscriptions","organizations_url":"https://api.github.com/users/oracle/orgs","repos_url":"https://api.github.com/users/oracle/repos","events_url":"https://api.github.com/users/oracle/events{/privacy}","received_events_url":"https://api.github.com/users/oracle/received_events","type":"Organization","site_admin":false},"repo":{"id":7481569,"name":"opengrok","full_name":"oracle/opengrok","owner":{"login":"oracle","id":4430336,"avatar_url":"https://avatars1.githubusercontent.com/u/4430336?v=4","gravatar_id":"","url":"https://api.github.com/users/oracle","html_url":"https://github.com/oracle","followers_url":"https://api.github.com/users/oracle/followers","following_url":"https://api.github.com/users/oracle/following{/other_user}","gists_url":"https://api.github.com/users/oracle/gists{/gist_id}","starred_url":"https://api.github.com/users/oracle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oracle/subscriptions","organizations_url":"https://api.github.com/users/oracle/orgs","repos_url":"https://api.github.com/users/oracle/repos","events_url":"https://api.github.com/users/oracle/events{/privacy}","received_events_url":"https://api.github.com/users/oracle/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/oracle/opengrok","description":"OpenGrok is a fast and usable source code search and cross reference engine, written in Java","fork":false,"url":"https://api.github.com/repos/oracle/opengrok","forks_url":"https://api.github.com/repos/oracle/opengrok/forks","keys_url":"https://api.github.com/repos/oracle/opengrok/keys{/key_id}","collaborators_url":"https://api.github.com/repos/oracle/opengrok/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/oracle/opengrok/teams","hooks_url":"https://api.github.com/repos/oracle/opengrok/hooks","issue_events_url":"https://api.github.com/repos/oracle/opengrok/issues/events{/number}","events_url":"https://api.github.com/repos/oracle/opengrok/events","assignees_url":"https://api.github.com/repos/oracle/opengrok/assignees{/user}","branches_url":"https://api.github.com/repos/oracle/opengrok/branches{/branch}","tags_url":"https://api.github.com/repos/oracle/opengrok/tags","blobs_url":"https://api.github.com/repos/oracle/opengrok/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/oracle/opengrok/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/oracle/opengrok/git/refs{/sha}","trees_url":"https://api.github.com/repos/oracle/opengrok/git/trees{/sha}","statuses_url":"https://api.github.com/repos/oracle/opengrok/statuses/{sha}","languages_url":"https://api.github.com/repos/oracle/opengrok/languages","stargazers_url":"https://api.github.com/repos/oracle/opengrok/stargazers","contributors_url":"https://api.github.com/repos/oracle/opengrok/contributors","subscribers_url":"https://api.github.com/repos/oracle/opengrok/subscribers","subscription_url":"https://api.github.com/repos/oracle/opengrok/subscription","commits_url":"https://api.github.com/repos/oracle/opengrok/commits{/sha}","git_commits_url":"https://api.github.com/repos/oracle/opengrok/git/commits{/sha}","comments_url":"https://api.github.com/repos/oracle/opengrok/comments{/number}","issue_comment_url":"https://api.github.com/repos/oracle/opengrok/issues/comments{/number}","contents_url":"https://api.github.com/repos/oracle/opengrok/contents/{+path}","compare_url":"https://api.github.com/repos/oracle/opengrok/compare/{base}...{head}","merges_url":"https://api.github.com/repos/oracle/opengrok/merges","archive_url":"https://api.github.com/repos/oracle/opengrok/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/oracle/opengrok/downloads","issues_url":"https://api.github.com/repos/oracle/opengrok/issues{/number}","pulls_url":"https://api.github.com/repos/oracle/opengrok/pulls{/number}","milestones_url":"https://api.github.com/repos/oracle/opengrok/milestones{/number}","notifications_url":"https://api.github.com/repos/oracle/opengrok/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/oracle/opengrok/labels{/name}","releases_url":"https://api.github.com/repos/oracle/opengrok/releases{/id}","deployments_url":"https://api.github.com/repos/oracle/opengrok/deployments","created_at":"2013-01-07T11:49:18Z","updated_at":"2018-05-29T08:00:15Z","pushed_at":"2018-05-29T08:32:26Z","git_url":"git://github.com/oracle/opengrok.git","ssh_url":"git@github.com:oracle/opengrok.git","clone_url":"https://github.com/oracle/opengrok.git","svn_url":"https://github.com/oracle/opengrok","homepage":"http://oracle.github.io/opengrok/","size":21930,"stargazers_count":2016,"watchers_count":2016,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":422,"mirror_url":null,"archived":false,"open_issues_count":443,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":422,"open_issues":443,"watchers":2016,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/oracle/opengrok/pulls/2109"},"html":{"href":"https://github.com/oracle/opengrok/pull/2109"},"issue":{"href":"https://api.github.com/repos/oracle/opengrok/issues/2109"},"comments":{"href":"https://api.github.com/repos/oracle/opengrok/issues/2109/comments"},"review_comments":{"href":"https://api.github.com/repos/oracle/opengrok/pulls/2109/comments"},"review_comment":{"href":"https://api.github.com/repos/oracle/opengrok/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/oracle/opengrok/pulls/2109/commits"},"statuses":{"href":"https://api.github.com/repos/oracle/opengrok/statuses/1392096af5a946a13bd9708a37e5bf4827a3645a"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"tulinkry"}}