{"action":"created","comment":{"url":"https://api.github.com/repos/Netflix/conductor/pulls/comments/200847447","pull_request_review_id":135239797,"id":200847447,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMDg0NzQ0Nw==","diff_hunk":"@@ -1,5 +1,10 @@\n dependencies {\n     compile project(':conductor-common')\n-    compile 'com.squareup:javapoet:1.11.1'\n-    compile 'com.github.jknack:handlebars:4.0.6'\n+    compile \"com.github.vmg.protogen:protogen-codegen:${revProtoGen}\"\n+}\n+\n+task generate(type: JavaExec) {","path":"protogen/build.gradle","position":8,"original_position":8,"commit_id":"73e020e8f466fcd037a6dafeb5a03ebd03c026c2","original_commit_id":"73e020e8f466fcd037a6dafeb5a03ebd03c026c2","user":{"login":"cyzhao","id":4484758,"node_id":"MDQ6VXNlcjQ0ODQ3NTg=","avatar_url":"https://avatars1.githubusercontent.com/u/4484758?v=4","gravatar_id":"","url":"https://api.github.com/users/cyzhao","html_url":"https://github.com/cyzhao","followers_url":"https://api.github.com/users/cyzhao/followers","following_url":"https://api.github.com/users/cyzhao/following{/other_user}","gists_url":"https://api.github.com/users/cyzhao/gists{/gist_id}","starred_url":"https://api.github.com/users/cyzhao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cyzhao/subscriptions","organizations_url":"https://api.github.com/users/cyzhao/orgs","repos_url":"https://api.github.com/users/cyzhao/repos","events_url":"https://api.github.com/users/cyzhao/events{/privacy}","received_events_url":"https://api.github.com/users/cyzhao/received_events","type":"User","site_admin":false},"body":"What I envision is to have a protogen Gradle plugin that scans classes annotated with ProtoMessage and generates proto definitions and mappers automatically, it should be configured to run before generateProto task (from protobuf-gradle-plugin), we don't have to do this now, but at least we should probably get rid of ConductorProtoGen and have a main class in vmg.protogen that uses Reflections to get classes annotated with @ProtoMessage within a package (passed in as an argument) to process.","created_at":"2018-07-08T17:29:18Z","updated_at":"2018-07-08T17:29:19Z","html_url":"https://github.com/Netflix/conductor/pull/636#discussion_r200847447","pull_request_url":"https://api.github.com/repos/Netflix/conductor/pulls/636","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Netflix/conductor/pulls/comments/200847447"},"html":{"href":"https://github.com/Netflix/conductor/pull/636#discussion_r200847447"},"pull_request":{"href":"https://api.github.com/repos/Netflix/conductor/pulls/636"}}},"pull_request":{"url":"https://api.github.com/repos/Netflix/conductor/pulls/636","id":198730063,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk4NzMwMDYz","html_url":"https://github.com/Netflix/conductor/pull/636","diff_url":"https://github.com/Netflix/conductor/pull/636.diff","patch_url":"https://github.com/Netflix/conductor/pull/636.patch","issue_url":"https://api.github.com/repos/Netflix/conductor/issues/636","number":636,"state":"open","locked":false,"title":"grpc: Add type-safe ProtoBuf objects to all Tasks","user":{"login":"vmg","id":42793,"node_id":"MDQ6VXNlcjQyNzkz","avatar_url":"https://avatars1.githubusercontent.com/u/42793?v=4","gravatar_id":"","url":"https://api.github.com/users/vmg","html_url":"https://github.com/vmg","followers_url":"https://api.github.com/users/vmg/followers","following_url":"https://api.github.com/users/vmg/following{/other_user}","gists_url":"https://api.github.com/users/vmg/gists{/gist_id}","starred_url":"https://api.github.com/users/vmg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vmg/subscriptions","organizations_url":"https://api.github.com/users/vmg/orgs","repos_url":"https://api.github.com/users/vmg/repos","events_url":"https://api.github.com/users/vmg/events{/privacy}","received_events_url":"https://api.github.com/users/vmg/received_events","type":"User","site_admin":true},"body":"This WIP PR attempts two things:\r\n\r\n1. As requested earlier, the ProtoGen code has been moved into its own OSS repository (https://github.com/vmg/protogen) and removed from this repository.\r\n\r\n2. During the move, the ProtoGen code has been updated and now supports serialization of external PB types in the API.\r\n\r\nPoint 2 is particularly important since it allows us to add `messageInput` and `messageOutput` fields to all tasks and task definitions. Some notes on these fields:\r\n\r\n- The goal of these fields is providing a type-safe way to pass input and input metadata through tasks that use the GRPC API.\r\n\r\n- To accomplish this, we're giving these fields the `Any` ProtoBuf type. In PB, an `Any` message can store any arbitrary message type in a type-safe way, without the server needing to know the exact serialization format of the message.\r\n\r\n- The new `messageInput` and `messageOutput` fields are also exported through the REST/JSON API. Commit f2bb020 includes extensive documentation on how is this accomplished exactly.\r\n\r\n- We have chosen **not** to replace the input and output arguments, which right now are maps from `String` to `Object`: these fields are being used extensively by Conductor to pass around metadata for the tasks, and it is not feasible to deprecate them. We think it makes sense to keep these fields as-is and add the option to pass a ProtoBuf message via a separate field.","created_at":"2018-07-02T16:27:21Z","updated_at":"2018-07-08T17:29:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e598fce8314671058a2419e33ea6b3f2603eda26","assignee":null,"assignees":[],"requested_reviewers":[{"login":"kishorebanala","id":8702675,"node_id":"MDQ6VXNlcjg3MDI2NzU=","avatar_url":"https://avatars0.githubusercontent.com/u/8702675?v=4","gravatar_id":"","url":"https://api.github.com/users/kishorebanala","html_url":"https://github.com/kishorebanala","followers_url":"https://api.github.com/users/kishorebanala/followers","following_url":"https://api.github.com/users/kishorebanala/following{/other_user}","gists_url":"https://api.github.com/users/kishorebanala/gists{/gist_id}","starred_url":"https://api.github.com/users/kishorebanala/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kishorebanala/subscriptions","organizations_url":"https://api.github.com/users/kishorebanala/orgs","repos_url":"https://api.github.com/users/kishorebanala/repos","events_url":"https://api.github.com/users/kishorebanala/events{/privacy}","received_events_url":"https://api.github.com/users/kishorebanala/received_events","type":"User","site_admin":false},{"login":"apanicker-nflx","id":34087882,"node_id":"MDQ6VXNlcjM0MDg3ODgy","avatar_url":"https://avatars1.githubusercontent.com/u/34087882?v=4","gravatar_id":"","url":"https://api.github.com/users/apanicker-nflx","html_url":"https://github.com/apanicker-nflx","followers_url":"https://api.github.com/users/apanicker-nflx/followers","following_url":"https://api.github.com/users/apanicker-nflx/following{/other_user}","gists_url":"https://api.github.com/users/apanicker-nflx/gists{/gist_id}","starred_url":"https://api.github.com/users/apanicker-nflx/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apanicker-nflx/subscriptions","organizations_url":"https://api.github.com/users/apanicker-nflx/orgs","repos_url":"https://api.github.com/users/apanicker-nflx/repos","events_url":"https://api.github.com/users/apanicker-nflx/events{/privacy}","received_events_url":"https://api.github.com/users/apanicker-nflx/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Netflix/conductor/pulls/636/commits","review_comments_url":"https://api.github.com/repos/Netflix/conductor/pulls/636/comments","review_comment_url":"https://api.github.com/repos/Netflix/conductor/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Netflix/conductor/issues/636/comments","statuses_url":"https://api.github.com/repos/Netflix/conductor/statuses/73e020e8f466fcd037a6dafeb5a03ebd03c026c2","head":{"label":"vmg:vmg/grpc-io","ref":"vmg/grpc-io","sha":"73e020e8f466fcd037a6dafeb5a03ebd03c026c2","user":{"login":"vmg","id":42793,"node_id":"MDQ6VXNlcjQyNzkz","avatar_url":"https://avatars1.githubusercontent.com/u/42793?v=4","gravatar_id":"","url":"https://api.github.com/users/vmg","html_url":"https://github.com/vmg","followers_url":"https://api.github.com/users/vmg/followers","following_url":"https://api.github.com/users/vmg/following{/other_user}","gists_url":"https://api.github.com/users/vmg/gists{/gist_id}","starred_url":"https://api.github.com/users/vmg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vmg/subscriptions","organizations_url":"https://api.github.com/users/vmg/orgs","repos_url":"https://api.github.com/users/vmg/repos","events_url":"https://api.github.com/users/vmg/events{/privacy}","received_events_url":"https://api.github.com/users/vmg/received_events","type":"User","site_admin":true},"repo":{"id":138010244,"node_id":"MDEwOlJlcG9zaXRvcnkxMzgwMTAyNDQ=","name":"conductor","full_name":"vmg/conductor","owner":{"login":"vmg","id":42793,"node_id":"MDQ6VXNlcjQyNzkz","avatar_url":"https://avatars1.githubusercontent.com/u/42793?v=4","gravatar_id":"","url":"https://api.github.com/users/vmg","html_url":"https://github.com/vmg","followers_url":"https://api.github.com/users/vmg/followers","following_url":"https://api.github.com/users/vmg/following{/other_user}","gists_url":"https://api.github.com/users/vmg/gists{/gist_id}","starred_url":"https://api.github.com/users/vmg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vmg/subscriptions","organizations_url":"https://api.github.com/users/vmg/orgs","repos_url":"https://api.github.com/users/vmg/repos","events_url":"https://api.github.com/users/vmg/events{/privacy}","received_events_url":"https://api.github.com/users/vmg/received_events","type":"User","site_admin":true},"private":false,"html_url":"https://github.com/vmg/conductor","description":"Conductor is a microservices orchestration engine - https://netflix.github.io/conductor/ ","fork":true,"url":"https://api.github.com/repos/vmg/conductor","forks_url":"https://api.github.com/repos/vmg/conductor/forks","keys_url":"https://api.github.com/repos/vmg/conductor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vmg/conductor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vmg/conductor/teams","hooks_url":"https://api.github.com/repos/vmg/conductor/hooks","issue_events_url":"https://api.github.com/repos/vmg/conductor/issues/events{/number}","events_url":"https://api.github.com/repos/vmg/conductor/events","assignees_url":"https://api.github.com/repos/vmg/conductor/assignees{/user}","branches_url":"https://api.github.com/repos/vmg/conductor/branches{/branch}","tags_url":"https://api.github.com/repos/vmg/conductor/tags","blobs_url":"https://api.github.com/repos/vmg/conductor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vmg/conductor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vmg/conductor/git/refs{/sha}","trees_url":"https://api.github.com/repos/vmg/conductor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vmg/conductor/statuses/{sha}","languages_url":"https://api.github.com/repos/vmg/conductor/languages","stargazers_url":"https://api.github.com/repos/vmg/conductor/stargazers","contributors_url":"https://api.github.com/repos/vmg/conductor/contributors","subscribers_url":"https://api.github.com/repos/vmg/conductor/subscribers","subscription_url":"https://api.github.com/repos/vmg/conductor/subscription","commits_url":"https://api.github.com/repos/vmg/conductor/commits{/sha}","git_commits_url":"https://api.github.com/repos/vmg/conductor/git/commits{/sha}","comments_url":"https://api.github.com/repos/vmg/conductor/comments{/number}","issue_comment_url":"https://api.github.com/repos/vmg/conductor/issues/comments{/number}","contents_url":"https://api.github.com/repos/vmg/conductor/contents/{+path}","compare_url":"https://api.github.com/repos/vmg/conductor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vmg/conductor/merges","archive_url":"https://api.github.com/repos/vmg/conductor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vmg/conductor/downloads","issues_url":"https://api.github.com/repos/vmg/conductor/issues{/number}","pulls_url":"https://api.github.com/repos/vmg/conductor/pulls{/number}","milestones_url":"https://api.github.com/repos/vmg/conductor/milestones{/number}","notifications_url":"https://api.github.com/repos/vmg/conductor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vmg/conductor/labels{/name}","releases_url":"https://api.github.com/repos/vmg/conductor/releases{/id}","deployments_url":"https://api.github.com/repos/vmg/conductor/deployments","created_at":"2018-06-20T09:28:59Z","updated_at":"2018-06-20T09:29:02Z","pushed_at":"2018-07-04T10:24:04Z","git_url":"git://github.com/vmg/conductor.git","ssh_url":"git@github.com:vmg/conductor.git","clone_url":"https://github.com/vmg/conductor.git","svn_url":"https://github.com/vmg/conductor","homepage":"","size":5600,"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":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Netflix:2.0","ref":"2.0","sha":"da30b01035907f104315f18ee4440ea3dba536b2","user":{"login":"Netflix","id":913567,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxMzU2Nw==","avatar_url":"https://avatars3.githubusercontent.com/u/913567?v=4","gravatar_id":"","url":"https://api.github.com/users/Netflix","html_url":"https://github.com/Netflix","followers_url":"https://api.github.com/users/Netflix/followers","following_url":"https://api.github.com/users/Netflix/following{/other_user}","gists_url":"https://api.github.com/users/Netflix/gists{/gist_id}","starred_url":"https://api.github.com/users/Netflix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Netflix/subscriptions","organizations_url":"https://api.github.com/users/Netflix/orgs","repos_url":"https://api.github.com/users/Netflix/repos","events_url":"https://api.github.com/users/Netflix/events{/privacy}","received_events_url":"https://api.github.com/users/Netflix/received_events","type":"Organization","site_admin":false},"repo":{"id":75882172,"node_id":"MDEwOlJlcG9zaXRvcnk3NTg4MjE3Mg==","name":"conductor","full_name":"Netflix/conductor","owner":{"login":"Netflix","id":913567,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxMzU2Nw==","avatar_url":"https://avatars3.githubusercontent.com/u/913567?v=4","gravatar_id":"","url":"https://api.github.com/users/Netflix","html_url":"https://github.com/Netflix","followers_url":"https://api.github.com/users/Netflix/followers","following_url":"https://api.github.com/users/Netflix/following{/other_user}","gists_url":"https://api.github.com/users/Netflix/gists{/gist_id}","starred_url":"https://api.github.com/users/Netflix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Netflix/subscriptions","organizations_url":"https://api.github.com/users/Netflix/orgs","repos_url":"https://api.github.com/users/Netflix/repos","events_url":"https://api.github.com/users/Netflix/events{/privacy}","received_events_url":"https://api.github.com/users/Netflix/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Netflix/conductor","description":"Conductor is a microservices orchestration engine - https://netflix.github.io/conductor/ ","fork":false,"url":"https://api.github.com/repos/Netflix/conductor","forks_url":"https://api.github.com/repos/Netflix/conductor/forks","keys_url":"https://api.github.com/repos/Netflix/conductor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Netflix/conductor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Netflix/conductor/teams","hooks_url":"https://api.github.com/repos/Netflix/conductor/hooks","issue_events_url":"https://api.github.com/repos/Netflix/conductor/issues/events{/number}","events_url":"https://api.github.com/repos/Netflix/conductor/events","assignees_url":"https://api.github.com/repos/Netflix/conductor/assignees{/user}","branches_url":"https://api.github.com/repos/Netflix/conductor/branches{/branch}","tags_url":"https://api.github.com/repos/Netflix/conductor/tags","blobs_url":"https://api.github.com/repos/Netflix/conductor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Netflix/conductor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Netflix/conductor/git/refs{/sha}","trees_url":"https://api.github.com/repos/Netflix/conductor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Netflix/conductor/statuses/{sha}","languages_url":"https://api.github.com/repos/Netflix/conductor/languages","stargazers_url":"https://api.github.com/repos/Netflix/conductor/stargazers","contributors_url":"https://api.github.com/repos/Netflix/conductor/contributors","subscribers_url":"https://api.github.com/repos/Netflix/conductor/subscribers","subscription_url":"https://api.github.com/repos/Netflix/conductor/subscription","commits_url":"https://api.github.com/repos/Netflix/conductor/commits{/sha}","git_commits_url":"https://api.github.com/repos/Netflix/conductor/git/commits{/sha}","comments_url":"https://api.github.com/repos/Netflix/conductor/comments{/number}","issue_comment_url":"https://api.github.com/repos/Netflix/conductor/issues/comments{/number}","contents_url":"https://api.github.com/repos/Netflix/conductor/contents/{+path}","compare_url":"https://api.github.com/repos/Netflix/conductor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Netflix/conductor/merges","archive_url":"https://api.github.com/repos/Netflix/conductor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Netflix/conductor/downloads","issues_url":"https://api.github.com/repos/Netflix/conductor/issues{/number}","pulls_url":"https://api.github.com/repos/Netflix/conductor/pulls{/number}","milestones_url":"https://api.github.com/repos/Netflix/conductor/milestones{/number}","notifications_url":"https://api.github.com/repos/Netflix/conductor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Netflix/conductor/labels{/name}","releases_url":"https://api.github.com/repos/Netflix/conductor/releases{/id}","deployments_url":"https://api.github.com/repos/Netflix/conductor/deployments","created_at":"2016-12-07T22:48:42Z","updated_at":"2018-07-07T08:28:33Z","pushed_at":"2018-07-04T18:47:41Z","git_url":"git://github.com/Netflix/conductor.git","ssh_url":"git@github.com:Netflix/conductor.git","clone_url":"https://github.com/Netflix/conductor.git","svn_url":"https://github.com/Netflix/conductor","homepage":"","size":5506,"stargazers_count":1234,"watchers_count":1234,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":302,"mirror_url":null,"archived":false,"open_issues_count":141,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":302,"open_issues":141,"watchers":1234,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Netflix/conductor/pulls/636"},"html":{"href":"https://github.com/Netflix/conductor/pull/636"},"issue":{"href":"https://api.github.com/repos/Netflix/conductor/issues/636"},"comments":{"href":"https://api.github.com/repos/Netflix/conductor/issues/636/comments"},"review_comments":{"href":"https://api.github.com/repos/Netflix/conductor/pulls/636/comments"},"review_comment":{"href":"https://api.github.com/repos/Netflix/conductor/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Netflix/conductor/pulls/636/commits"},"statuses":{"href":"https://api.github.com/repos/Netflix/conductor/statuses/73e020e8f466fcd037a6dafeb5a03ebd03c026c2"}},"author_association":"NONE"}}
{"actor":{"display_login":"cyzhao"}}