{"action":"closed","number":535,"pull_request":{"url":"https://api.github.com/repos/embulk/embulk/pulls/535","id":102840091,"html_url":"https://github.com/embulk/embulk/pull/535","diff_url":"https://github.com/embulk/embulk/pull/535.diff","patch_url":"https://github.com/embulk/embulk/pull/535.patch","issue_url":"https://api.github.com/repos/embulk/embulk/issues/535","number":535,"state":"closed","locked":false,"title":"Avoid NPE is thrown by PageBuilder#set{String,Timestamp,Json}","user":{"login":"muga","id":127959,"avatar_url":"https://avatars.githubusercontent.com/u/127959?v=3","gravatar_id":"","url":"https://api.github.com/users/muga","html_url":"https://github.com/muga","followers_url":"https://api.github.com/users/muga/followers","following_url":"https://api.github.com/users/muga/following{/other_user}","gists_url":"https://api.github.com/users/muga/gists{/gist_id}","starred_url":"https://api.github.com/users/muga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muga/subscriptions","organizations_url":"https://api.github.com/users/muga/orgs","repos_url":"https://api.github.com/users/muga/repos","events_url":"https://api.github.com/users/muga/events{/privacy}","received_events_url":"https://api.github.com/users/muga/received_events","type":"User","site_admin":false},"body":"The problem is that PageBuilder#set{String,Timestamp,Json} throw NPE if null object is given.\r\nBasically plugins should handle null object appropriately. But, I think that the #set{String,Timestamp,Json} should take one of the following:\r\n\r\na. Accept null object and call #setNull. \r\nb. Throw an appropriate exception instead of NPE.\r\n\r\nThis PR takes a. \r\n\r\n```\r\n2017-01-23 11:51:23.083 +0000 [WARN] (main): null \r\norg.embulk.exec.PartialExecutionException: java.lang.NullPointerException \r\nat org.embulk.exec.BulkLoader$LoaderState.buildPartialExecuteException(BulkLoader.java:373) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.exec.BulkLoader.doRun(BulkLoader.java:591) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.exec.BulkLoader.access$000(BulkLoader.java:33) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.exec.BulkLoader$1.run(BulkLoader.java:389) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.exec.BulkLoader$1.run(BulkLoader.java:385) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.spi.Exec.doWith(Exec.java:25) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.exec.BulkLoader.run(BulkLoader.java:385) ~[embulk-core-0.8.15.jar:na] \r\n... ...\r\nCaused by: java.lang.NullPointerException: null \r\nat org.embulk.spi.PageBuilder.setString(PageBuilder.java:133) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.spi.PageBuilder.setString(PageBuilder.java:121) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.input.jdbc.getter.StringColumnGetter.stringColumn(StringColumnGetter.java:81) ~[na:na] \r\nat org.embulk.spi.Column.visit(Column.java:58) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.input.jdbc.getter.AbstractColumnGetter.getAndSet(AbstractColumnGetter.java:36) ~[na:na] \r\nat org.embulk.input.jdbc.AbstractJdbcInputPlugin.fetch(AbstractJdbcInputPlugin.java:534) ~[na:na] \r\nat org.embulk.input.jdbc.AbstractJdbcInputPlugin.run(AbstractJdbcInputPlugin.java:432) ~[na:na] \r\nat org.embulk.spi.util.Executors.process(Executors.java:67) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.spi.util.Executors.process(Executors.java:42) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.exec.LocalExecutorPlugin$DirectExecutor$1.call(LocalExecutorPlugin.java:184) ~[embulk-core-0.8.15.jar:na] \r\nat org.embulk.exec.LocalExecutorPlugin$DirectExecutor$1.call(LocalExecutorPlugin.java:180) ~[embulk-core-0.8.15.jar:na] \r\nat java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_80] \r\nat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_80] \r\nat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_80] \r\nat java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_80]\r\n```","created_at":"2017-01-24T02:06:50Z","updated_at":"2017-01-24T22:50:45Z","closed_at":"2017-01-24T22:50:45Z","merged_at":"2017-01-24T22:50:45Z","merge_commit_sha":"81e15a62e374c70f74e1ad3dc59535072106a35a","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/embulk/embulk/pulls/535/commits","review_comments_url":"https://api.github.com/repos/embulk/embulk/pulls/535/comments","review_comment_url":"https://api.github.com/repos/embulk/embulk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/embulk/embulk/issues/535/comments","statuses_url":"https://api.github.com/repos/embulk/embulk/statuses/c40575231b9c2de1f4d8ffdd1f9d9f33e70f36ab","head":{"label":"muga:page_default_null_handling","ref":"page_default_null_handling","sha":"c40575231b9c2de1f4d8ffdd1f9d9f33e70f36ab","user":{"login":"muga","id":127959,"avatar_url":"https://avatars.githubusercontent.com/u/127959?v=3","gravatar_id":"","url":"https://api.github.com/users/muga","html_url":"https://github.com/muga","followers_url":"https://api.github.com/users/muga/followers","following_url":"https://api.github.com/users/muga/following{/other_user}","gists_url":"https://api.github.com/users/muga/gists{/gist_id}","starred_url":"https://api.github.com/users/muga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muga/subscriptions","organizations_url":"https://api.github.com/users/muga/orgs","repos_url":"https://api.github.com/users/muga/repos","events_url":"https://api.github.com/users/muga/events{/privacy}","received_events_url":"https://api.github.com/users/muga/received_events","type":"User","site_admin":false},"repo":{"id":34023194,"name":"embulk","full_name":"muga/embulk","owner":{"login":"muga","id":127959,"avatar_url":"https://avatars.githubusercontent.com/u/127959?v=3","gravatar_id":"","url":"https://api.github.com/users/muga","html_url":"https://github.com/muga","followers_url":"https://api.github.com/users/muga/followers","following_url":"https://api.github.com/users/muga/following{/other_user}","gists_url":"https://api.github.com/users/muga/gists{/gist_id}","starred_url":"https://api.github.com/users/muga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muga/subscriptions","organizations_url":"https://api.github.com/users/muga/orgs","repos_url":"https://api.github.com/users/muga/repos","events_url":"https://api.github.com/users/muga/events{/privacy}","received_events_url":"https://api.github.com/users/muga/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/muga/embulk","description":"Embulk: Pluggable Bulk Data Loader. http://www.embulk.org","fork":true,"url":"https://api.github.com/repos/muga/embulk","forks_url":"https://api.github.com/repos/muga/embulk/forks","keys_url":"https://api.github.com/repos/muga/embulk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/muga/embulk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/muga/embulk/teams","hooks_url":"https://api.github.com/repos/muga/embulk/hooks","issue_events_url":"https://api.github.com/repos/muga/embulk/issues/events{/number}","events_url":"https://api.github.com/repos/muga/embulk/events","assignees_url":"https://api.github.com/repos/muga/embulk/assignees{/user}","branches_url":"https://api.github.com/repos/muga/embulk/branches{/branch}","tags_url":"https://api.github.com/repos/muga/embulk/tags","blobs_url":"https://api.github.com/repos/muga/embulk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/muga/embulk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/muga/embulk/git/refs{/sha}","trees_url":"https://api.github.com/repos/muga/embulk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/muga/embulk/statuses/{sha}","languages_url":"https://api.github.com/repos/muga/embulk/languages","stargazers_url":"https://api.github.com/repos/muga/embulk/stargazers","contributors_url":"https://api.github.com/repos/muga/embulk/contributors","subscribers_url":"https://api.github.com/repos/muga/embulk/subscribers","subscription_url":"https://api.github.com/repos/muga/embulk/subscription","commits_url":"https://api.github.com/repos/muga/embulk/commits{/sha}","git_commits_url":"https://api.github.com/repos/muga/embulk/git/commits{/sha}","comments_url":"https://api.github.com/repos/muga/embulk/comments{/number}","issue_comment_url":"https://api.github.com/repos/muga/embulk/issues/comments{/number}","contents_url":"https://api.github.com/repos/muga/embulk/contents/{+path}","compare_url":"https://api.github.com/repos/muga/embulk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/muga/embulk/merges","archive_url":"https://api.github.com/repos/muga/embulk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/muga/embulk/downloads","issues_url":"https://api.github.com/repos/muga/embulk/issues{/number}","pulls_url":"https://api.github.com/repos/muga/embulk/pulls{/number}","milestones_url":"https://api.github.com/repos/muga/embulk/milestones{/number}","notifications_url":"https://api.github.com/repos/muga/embulk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/muga/embulk/labels{/name}","releases_url":"https://api.github.com/repos/muga/embulk/releases{/id}","deployments_url":"https://api.github.com/repos/muga/embulk/deployments","created_at":"2015-04-15T23:10:33Z","updated_at":"2016-07-02T07:03:53Z","pushed_at":"2017-01-24T08:35:41Z","git_url":"git://github.com/muga/embulk.git","ssh_url":"git@github.com:muga/embulk.git","clone_url":"https://github.com/muga/embulk.git","svn_url":"https://github.com/muga/embulk","homepage":"","size":3077,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"embulk:master","ref":"master","sha":"97ec9964fa4872f4b6d3ea2970a9ee039ff9067d","user":{"login":"embulk","id":10171516,"avatar_url":"https://avatars.githubusercontent.com/u/10171516?v=3","gravatar_id":"","url":"https://api.github.com/users/embulk","html_url":"https://github.com/embulk","followers_url":"https://api.github.com/users/embulk/followers","following_url":"https://api.github.com/users/embulk/following{/other_user}","gists_url":"https://api.github.com/users/embulk/gists{/gist_id}","starred_url":"https://api.github.com/users/embulk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/embulk/subscriptions","organizations_url":"https://api.github.com/users/embulk/orgs","repos_url":"https://api.github.com/users/embulk/repos","events_url":"https://api.github.com/users/embulk/events{/privacy}","received_events_url":"https://api.github.com/users/embulk/received_events","type":"Organization","site_admin":false},"repo":{"id":24084730,"name":"embulk","full_name":"embulk/embulk","owner":{"login":"embulk","id":10171516,"avatar_url":"https://avatars.githubusercontent.com/u/10171516?v=3","gravatar_id":"","url":"https://api.github.com/users/embulk","html_url":"https://github.com/embulk","followers_url":"https://api.github.com/users/embulk/followers","following_url":"https://api.github.com/users/embulk/following{/other_user}","gists_url":"https://api.github.com/users/embulk/gists{/gist_id}","starred_url":"https://api.github.com/users/embulk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/embulk/subscriptions","organizations_url":"https://api.github.com/users/embulk/orgs","repos_url":"https://api.github.com/users/embulk/repos","events_url":"https://api.github.com/users/embulk/events{/privacy}","received_events_url":"https://api.github.com/users/embulk/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/embulk/embulk","description":"Embulk: Pluggable Bulk Data Loader. http://www.embulk.org","fork":false,"url":"https://api.github.com/repos/embulk/embulk","forks_url":"https://api.github.com/repos/embulk/embulk/forks","keys_url":"https://api.github.com/repos/embulk/embulk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/embulk/embulk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/embulk/embulk/teams","hooks_url":"https://api.github.com/repos/embulk/embulk/hooks","issue_events_url":"https://api.github.com/repos/embulk/embulk/issues/events{/number}","events_url":"https://api.github.com/repos/embulk/embulk/events","assignees_url":"https://api.github.com/repos/embulk/embulk/assignees{/user}","branches_url":"https://api.github.com/repos/embulk/embulk/branches{/branch}","tags_url":"https://api.github.com/repos/embulk/embulk/tags","blobs_url":"https://api.github.com/repos/embulk/embulk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/embulk/embulk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/embulk/embulk/git/refs{/sha}","trees_url":"https://api.github.com/repos/embulk/embulk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/embulk/embulk/statuses/{sha}","languages_url":"https://api.github.com/repos/embulk/embulk/languages","stargazers_url":"https://api.github.com/repos/embulk/embulk/stargazers","contributors_url":"https://api.github.com/repos/embulk/embulk/contributors","subscribers_url":"https://api.github.com/repos/embulk/embulk/subscribers","subscription_url":"https://api.github.com/repos/embulk/embulk/subscription","commits_url":"https://api.github.com/repos/embulk/embulk/commits{/sha}","git_commits_url":"https://api.github.com/repos/embulk/embulk/git/commits{/sha}","comments_url":"https://api.github.com/repos/embulk/embulk/comments{/number}","issue_comment_url":"https://api.github.com/repos/embulk/embulk/issues/comments{/number}","contents_url":"https://api.github.com/repos/embulk/embulk/contents/{+path}","compare_url":"https://api.github.com/repos/embulk/embulk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/embulk/embulk/merges","archive_url":"https://api.github.com/repos/embulk/embulk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/embulk/embulk/downloads","issues_url":"https://api.github.com/repos/embulk/embulk/issues{/number}","pulls_url":"https://api.github.com/repos/embulk/embulk/pulls{/number}","milestones_url":"https://api.github.com/repos/embulk/embulk/milestones{/number}","notifications_url":"https://api.github.com/repos/embulk/embulk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/embulk/embulk/labels{/name}","releases_url":"https://api.github.com/repos/embulk/embulk/releases{/id}","deployments_url":"https://api.github.com/repos/embulk/embulk/deployments","created_at":"2014-09-16T03:58:52Z","updated_at":"2017-01-24T00:53:20Z","pushed_at":"2017-01-24T22:50:45Z","git_url":"git://github.com/embulk/embulk.git","ssh_url":"git@github.com:embulk/embulk.git","clone_url":"https://github.com/embulk/embulk.git","svn_url":"https://github.com/embulk/embulk","homepage":"","size":3125,"stargazers_count":802,"watchers_count":802,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":98,"mirror_url":null,"open_issues_count":84,"forks":98,"open_issues":84,"watchers":802,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/embulk/embulk/pulls/535"},"html":{"href":"https://github.com/embulk/embulk/pull/535"},"issue":{"href":"https://api.github.com/repos/embulk/embulk/issues/535"},"comments":{"href":"https://api.github.com/repos/embulk/embulk/issues/535/comments"},"review_comments":{"href":"https://api.github.com/repos/embulk/embulk/pulls/535/comments"},"review_comment":{"href":"https://api.github.com/repos/embulk/embulk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/embulk/embulk/pulls/535/commits"},"statuses":{"href":"https://api.github.com/repos/embulk/embulk/statuses/c40575231b9c2de1f4d8ffdd1f9d9f33e70f36ab"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"muga","id":127959,"avatar_url":"https://avatars.githubusercontent.com/u/127959?v=3","gravatar_id":"","url":"https://api.github.com/users/muga","html_url":"https://github.com/muga","followers_url":"https://api.github.com/users/muga/followers","following_url":"https://api.github.com/users/muga/following{/other_user}","gists_url":"https://api.github.com/users/muga/gists{/gist_id}","starred_url":"https://api.github.com/users/muga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/muga/subscriptions","organizations_url":"https://api.github.com/users/muga/orgs","repos_url":"https://api.github.com/users/muga/repos","events_url":"https://api.github.com/users/muga/events{/privacy}","received_events_url":"https://api.github.com/users/muga/received_events","type":"User","site_admin":false},"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":15,"deletions":0,"changed_files":1}}
{"actor":{"display_login":"muga"}}