{"action":"created","comment":{"url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/comments/71565505","id":71565505,"diff_hunk":"@@ -0,0 +1,235 @@\n+/*\n+ * Copyright 2016 the original author or authors.\n+ *\n+ *  Licensed under the Apache License, Version 2.0 (the \"License\");\n+ *  you may not use this file except in compliance with the License.\n+ *  You may obtain a copy of the License at\n+ *\n+ *       http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ *  Unless required by applicable law or agreed to in writing, software\n+ *  distributed under the License is distributed on an \"AS IS\" BASIS,\n+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ *  See the License for the specific language governing permissions and\n+ *  limitations under the License.\n+ */\n+\n+package org.springframework.cloud.task.jdbchdfs.common;\n+\n+\n+import java.util.HashMap;\n+import java.util.Map;\n+import javax.sql.DataSource;\n+\n+import org.apache.hadoop.conf.Configuration;\n+\n+import org.springframework.batch.core.Job;\n+import org.springframework.batch.core.Step;\n+import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;\n+import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;\n+import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;\n+import org.springframework.batch.core.configuration.annotation.StepScope;\n+import org.springframework.batch.core.explore.JobExplorer;\n+import org.springframework.batch.core.explore.support.JobExplorerFactoryBean;\n+import org.springframework.batch.core.job.builder.JobBuilder;\n+import org.springframework.batch.core.listener.ExecutionContextPromotionListener;\n+import org.springframework.batch.core.partition.PartitionHandler;\n+import org.springframework.batch.core.repository.JobRepository;\n+import org.springframework.beans.factory.annotation.Autowired;\n+import org.springframework.beans.factory.annotation.Value;\n+import org.springframework.boot.context.properties.EnableConfigurationProperties;\n+import org.springframework.cloud.deployer.resource.maven.MavenResource;\n+import org.springframework.cloud.deployer.spi.task.TaskLauncher;\n+import org.springframework.cloud.task.batch.partition.DeployerPartitionHandler;\n+import org.springframework.cloud.task.batch.partition.DeployerStepExecutionHandler;\n+import org.springframework.cloud.task.configuration.EnableTask;\n+import org.springframework.context.ConfigurableApplicationContext;\n+import org.springframework.context.annotation.Bean;\n+import org.springframework.context.annotation.Profile;\n+import org.springframework.util.StringUtils;\n+\n+/**\n+ * Establishes the beans required to migrate the data from jdbc to hdfs.\n+ *\n+ * @author Glenn Renfro\n+ */\n+\n+@EnableTask\n+@EnableBatchProcessing\n+@org.springframework.context.annotation.Configuration\n+@EnableConfigurationProperties({JdbcHdfsTaskProperties.class})\n+public class JdbcHdfsConfiguration {\n+\n+\tpublic static final String[] PROMOTION_LISTENER_KEYS = {\"batch.incremental.maxId\"};\n+\n+\t@Autowired\n+\tprivate Configuration hadoopConfiguration;\n+\n+\t@Autowired\n+\tprivate JdbcHdfsTaskProperties props;\n+\n+\t@Autowired\n+\tpublic JobBuilderFactory jobBuilderFactory;\n+\n+\t@Autowired\n+\tpublic StepBuilderFactory stepBuilderFactory;\n+\n+\t@Autowired\n+\tpublic DataSource dataSource;\n+\n+\t@Autowired\n+\tpublic JobRepository jobRepository;\n+\n+\t@Autowired(required = false)\n+\tprivate ConfigurableApplicationContext context;\n+\n+\t@Value(\"${jdbc.hdfs.task.resource:org.springframework.cloud.task.app:\"\n+\t\t\t+ \"jdbc-hdfs-local-task:1.0.0.BUILD-SNAPSHOT}\")\n+\tprivate String taskResource;\n+\n+\t@Bean\n+\t@StepScope\n+\tpublic NamedColumnJdbcItemReader namedColumnJdbcItemReader(\n+\t\t\t@Value(\"#{stepExecutionContext['partClause']}\") String partClause) throws Exception {\n+\t\tNamedColumnJdbcItemReaderFactory namedColumnJdbcItemReaderFactory = new NamedColumnJdbcItemReaderFactory();\n+\t\tnamedColumnJdbcItemReaderFactory.setDataSource(dataSource);\n+\t\tnamedColumnJdbcItemReaderFactory.setPartitionClause(partClause);\n+\t\tnamedColumnJdbcItemReaderFactory.setTableName(props.getTableName());\n+\t\tnamedColumnJdbcItemReaderFactory.setColumnNames(props.getColumnNames());\n+\t\tnamedColumnJdbcItemReaderFactory.setSql(props.getSql());\n+\t\tnamedColumnJdbcItemReaderFactory.setFetchSize(props.getCommitInterval());\n+\t\tnamedColumnJdbcItemReaderFactory.setDelimiter(props.getDelimiter());\n+\t\tnamedColumnJdbcItemReaderFactory.afterPropertiesSet();\n+\t\treturn namedColumnJdbcItemReaderFactory.getObject();\n+\t}\n+\n+\t@Bean\n+\tpublic JobExplorerFactoryBean jobExplorer() {\n+\t\tJobExplorerFactoryBean jobExplorerFactoryBean = new JobExplorerFactoryBean();\n+\t\tjobExplorerFactoryBean.setDataSource(this.dataSource);\n+\t\treturn jobExplorerFactoryBean;\n+\t}\n+\n+\t@Bean\n+\tpublic DeployerPartitionHandler partitionHandler(TaskLauncher taskLauncher, JobExplorer jobExplorer) throws Exception {\n+\t\tMavenResource resource = MavenResource.parse(taskResource);\n+\n+\t\tDeployerPartitionHandler partitionHandler = new DeployerPartitionHandler(taskLauncher, jobExplorer, resource, \"workerStep\");\n+\n+\t\tMap<String, String> environmentProperties = new HashMap<>();\n+\t\tenvironmentProperties.put(\"spring.profiles.active\", \"worker\");\n+\n+\t\tpartitionHandler.setEnvironmentProperties(environmentProperties);\n+\t\tpartitionHandler.setMaxWorkers(2);\n+\n+\t\treturn partitionHandler;\n+\t}\n+\n+\t@Bean\n+\t@StepScope\n+\tpublic IncrementalColumnRangePartitioner partitioner(JobExplorer jobExplorer, @Value(\"#{stepExecutionContext['overrideCheckColumnValue']}\") Long overrideValue) {\n+\t\tIncrementalColumnRangePartitioner partitioner = new IncrementalColumnRangePartitioner();\n+\t\tpartitioner.setTable(props.getTableName());\n+\t\tpartitioner.setColumn(props.getPartitionColumn());\n+\t\tpartitioner.setJobExplorer(jobExplorer);\n+\t\tpartitioner.setCheckColumn(props.getCheckColumn());\n+\t\tpartitioner.setOverrideValue(overrideValue);\n+\t\tpartitioner.setDataSource(dataSource);\n+\t\tpartitioner.setPartitions(props.getPartitions());\n+\t\treturn partitioner;\n+\t}\n+\n+\t@Bean\n+\t@Profile(\"worker\")\n+\tpublic DeployerStepExecutionHandler stepExecutionHandler(JobExplorer jobExplorer) {\n+\t\tDeployerStepExecutionHandler handler = new DeployerStepExecutionHandler(this.context, jobExplorer, this.jobRepository);\n+\n+\t\treturn handler;\n+\t}\n+\n+\t@Bean\n+\t@StepScope\n+\tpublic HdfsTextItemWriter writer(@Value(\"#{stepExecutionContext['partSuffix']}\") String suffix) throws Exception {\n+\n+\t\tif (StringUtils.hasText(props.getFsUri())) {\n+\t\t\thadoopConfiguration.set(\"fs.defaultFS\", props.getFsUri());\n+\t\t}\n+\t\tif (StringUtils.hasText(props.getRmManagerPrinciple())) {\n+\t\t\thadoopConfiguration.set(\"rm-manager-principal\", props.getRmManagerPrinciple());\n+\t\t}\n+\t\tif (StringUtils.hasText(props.getNameNodePrinciple())) {\n+\t\t\thadoopConfiguration.set(\"namenode-principal\", props.getNameNodePrinciple());\n+\t\t}\n+\t\tif (StringUtils.hasText(props.getUserPrinciple())) {\n+\t\t\thadoopConfiguration.set(\"user-principal\", props.getUserPrinciple());\n+\t\t}\n+\t\tif (StringUtils.hasText(props.getUserKeyTab())) {\n+\t\t\thadoopConfiguration.set(\"user-keytab\", props.getUserKeyTab());\n+\t\t}\n+\t\tif (StringUtils.hasText(props.getSecurityMethod())) {\n+\t\t\thadoopConfiguration.set(\"security-method\", props.getSecurityMethod());\n+\t\t}\n+\t\tif (StringUtils.hasText(props.getPropertiesLocation())) {\n+\t\t\thadoopConfiguration.set(\"properties-location\", props.getPropertiesLocation());\n+\t\t}\n+\t\tif (StringUtils.hasText(props.getRegisterUrlHandler())) {\n+\t\t\thadoopConfiguration.set(\"register-url-handler\", props.getRegisterUrlHandler());\n+\t\t}","path":"spring-cloud-task-jdbchdfs-common/src/main/java/org/springframework/cloud/task/jdbchdfs/common/JdbcHdfsConfiguration.java","position":177,"original_position":177,"commit_id":"b8868a87bb02a1c46111924eb73d099944a97fbd","original_commit_id":"b8868a87bb02a1c46111924eb73d099944a97fbd","user":{"login":"mminella","id":630743,"avatar_url":"https://avatars.githubusercontent.com/u/630743?v=3","gravatar_id":"","url":"https://api.github.com/users/mminella","html_url":"https://github.com/mminella","followers_url":"https://api.github.com/users/mminella/followers","following_url":"https://api.github.com/users/mminella/following{/other_user}","gists_url":"https://api.github.com/users/mminella/gists{/gist_id}","starred_url":"https://api.github.com/users/mminella/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mminella/subscriptions","organizations_url":"https://api.github.com/users/mminella/orgs","repos_url":"https://api.github.com/users/mminella/repos","events_url":"https://api.github.com/users/mminella/events{/privacy}","received_events_url":"https://api.github.com/users/mminella/received_events","type":"User","site_admin":false},"body":"Are these keys defined as constants anywhere?  Should we create them as constants?","created_at":"2016-07-20T17:06:43Z","updated_at":"2016-07-20T17:06:43Z","html_url":"https://github.com/spring-cloud/spring-cloud-task-app-starters/pull/39#discussion_r71565505","pull_request_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/39","_links":{"self":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/comments/71565505"},"html":{"href":"https://github.com/spring-cloud/spring-cloud-task-app-starters/pull/39#discussion_r71565505"},"pull_request":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/39"}}},"pull_request":{"url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/39","id":74804238,"html_url":"https://github.com/spring-cloud/spring-cloud-task-app-starters/pull/39","diff_url":"https://github.com/spring-cloud/spring-cloud-task-app-starters/pull/39.diff","patch_url":"https://github.com/spring-cloud/spring-cloud-task-app-starters/pull/39.patch","issue_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/issues/39","number":39,"state":"open","locked":false,"title":"Add JdbcHdfs Task App Starter","user":{"login":"cppwfs","id":695673,"avatar_url":"https://avatars.githubusercontent.com/u/695673?v=3","gravatar_id":"","url":"https://api.github.com/users/cppwfs","html_url":"https://github.com/cppwfs","followers_url":"https://api.github.com/users/cppwfs/followers","following_url":"https://api.github.com/users/cppwfs/following{/other_user}","gists_url":"https://api.github.com/users/cppwfs/gists{/gist_id}","starred_url":"https://api.github.com/users/cppwfs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cppwfs/subscriptions","organizations_url":"https://api.github.com/users/cppwfs/orgs","repos_url":"https://api.github.com/users/cppwfs/repos","events_url":"https://api.github.com/users/cppwfs/events{/privacy}","received_events_url":"https://api.github.com/users/cppwfs/received_events","type":"User","site_admin":false},"body":"resolves #10","created_at":"2016-06-22T15:23:31Z","updated_at":"2016-07-20T17:06:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"16d0dc3c8f5a50ce792e076def72310858b1aab0","assignee":{"login":"mminella","id":630743,"avatar_url":"https://avatars.githubusercontent.com/u/630743?v=3","gravatar_id":"","url":"https://api.github.com/users/mminella","html_url":"https://github.com/mminella","followers_url":"https://api.github.com/users/mminella/followers","following_url":"https://api.github.com/users/mminella/following{/other_user}","gists_url":"https://api.github.com/users/mminella/gists{/gist_id}","starred_url":"https://api.github.com/users/mminella/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mminella/subscriptions","organizations_url":"https://api.github.com/users/mminella/orgs","repos_url":"https://api.github.com/users/mminella/repos","events_url":"https://api.github.com/users/mminella/events{/privacy}","received_events_url":"https://api.github.com/users/mminella/received_events","type":"User","site_admin":false},"assignees":[{"login":"trisberg","id":78614,"avatar_url":"https://avatars.githubusercontent.com/u/78614?v=3","gravatar_id":"","url":"https://api.github.com/users/trisberg","html_url":"https://github.com/trisberg","followers_url":"https://api.github.com/users/trisberg/followers","following_url":"https://api.github.com/users/trisberg/following{/other_user}","gists_url":"https://api.github.com/users/trisberg/gists{/gist_id}","starred_url":"https://api.github.com/users/trisberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/trisberg/subscriptions","organizations_url":"https://api.github.com/users/trisberg/orgs","repos_url":"https://api.github.com/users/trisberg/repos","events_url":"https://api.github.com/users/trisberg/events{/privacy}","received_events_url":"https://api.github.com/users/trisberg/received_events","type":"User","site_admin":false},{"login":"mminella","id":630743,"avatar_url":"https://avatars.githubusercontent.com/u/630743?v=3","gravatar_id":"","url":"https://api.github.com/users/mminella","html_url":"https://github.com/mminella","followers_url":"https://api.github.com/users/mminella/followers","following_url":"https://api.github.com/users/mminella/following{/other_user}","gists_url":"https://api.github.com/users/mminella/gists{/gist_id}","starred_url":"https://api.github.com/users/mminella/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mminella/subscriptions","organizations_url":"https://api.github.com/users/mminella/orgs","repos_url":"https://api.github.com/users/mminella/repos","events_url":"https://api.github.com/users/mminella/events{/privacy}","received_events_url":"https://api.github.com/users/mminella/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/39/commits","review_comments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/39/comments","review_comment_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/issues/39/comments","statuses_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/statuses/b8868a87bb02a1c46111924eb73d099944a97fbd","head":{"label":"cppwfs:GH-10","ref":"GH-10","sha":"b8868a87bb02a1c46111924eb73d099944a97fbd","user":{"login":"cppwfs","id":695673,"avatar_url":"https://avatars.githubusercontent.com/u/695673?v=3","gravatar_id":"","url":"https://api.github.com/users/cppwfs","html_url":"https://github.com/cppwfs","followers_url":"https://api.github.com/users/cppwfs/followers","following_url":"https://api.github.com/users/cppwfs/following{/other_user}","gists_url":"https://api.github.com/users/cppwfs/gists{/gist_id}","starred_url":"https://api.github.com/users/cppwfs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cppwfs/subscriptions","organizations_url":"https://api.github.com/users/cppwfs/orgs","repos_url":"https://api.github.com/users/cppwfs/repos","events_url":"https://api.github.com/users/cppwfs/events{/privacy}","received_events_url":"https://api.github.com/users/cppwfs/received_events","type":"User","site_admin":false},"repo":{"id":56155559,"name":"spring-cloud-task-app-starters","full_name":"cppwfs/spring-cloud-task-app-starters","owner":{"login":"cppwfs","id":695673,"avatar_url":"https://avatars.githubusercontent.com/u/695673?v=3","gravatar_id":"","url":"https://api.github.com/users/cppwfs","html_url":"https://github.com/cppwfs","followers_url":"https://api.github.com/users/cppwfs/followers","following_url":"https://api.github.com/users/cppwfs/following{/other_user}","gists_url":"https://api.github.com/users/cppwfs/gists{/gist_id}","starred_url":"https://api.github.com/users/cppwfs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cppwfs/subscriptions","organizations_url":"https://api.github.com/users/cppwfs/orgs","repos_url":"https://api.github.com/users/cppwfs/repos","events_url":"https://api.github.com/users/cppwfs/events{/privacy}","received_events_url":"https://api.github.com/users/cppwfs/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cppwfs/spring-cloud-task-app-starters","description":"Starters for Spring Cloud Task Apps","fork":true,"url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters","forks_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/forks","keys_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/teams","hooks_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/hooks","issue_events_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/issues/events{/number}","events_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/events","assignees_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/assignees{/user}","branches_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/branches{/branch}","tags_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/tags","blobs_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/git/refs{/sha}","trees_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/statuses/{sha}","languages_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/languages","stargazers_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/stargazers","contributors_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/contributors","subscribers_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/subscribers","subscription_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/subscription","commits_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/commits{/sha}","git_commits_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/git/commits{/sha}","comments_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/comments{/number}","issue_comment_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/issues/comments{/number}","contents_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/contents/{+path}","compare_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/merges","archive_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/downloads","issues_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/issues{/number}","pulls_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/pulls{/number}","milestones_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/milestones{/number}","notifications_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/labels{/name}","releases_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/releases{/id}","deployments_url":"https://api.github.com/repos/cppwfs/spring-cloud-task-app-starters/deployments","created_at":"2016-04-13T13:45:43Z","updated_at":"2016-04-13T13:45:44Z","pushed_at":"2016-07-13T16:04:14Z","git_url":"git://github.com/cppwfs/spring-cloud-task-app-starters.git","ssh_url":"git@github.com:cppwfs/spring-cloud-task-app-starters.git","clone_url":"https://github.com/cppwfs/spring-cloud-task-app-starters.git","svn_url":"https://github.com/cppwfs/spring-cloud-task-app-starters","homepage":null,"size":304,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"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":"spring-cloud:master","ref":"master","sha":"9f3d6c7a5dc13f5b5fff38a0f23cce2f24d6fe0f","user":{"login":"spring-cloud","id":7815877,"avatar_url":"https://avatars.githubusercontent.com/u/7815877?v=3","gravatar_id":"","url":"https://api.github.com/users/spring-cloud","html_url":"https://github.com/spring-cloud","followers_url":"https://api.github.com/users/spring-cloud/followers","following_url":"https://api.github.com/users/spring-cloud/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud/orgs","repos_url":"https://api.github.com/users/spring-cloud/repos","events_url":"https://api.github.com/users/spring-cloud/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud/received_events","type":"Organization","site_admin":false},"repo":{"id":54916415,"name":"spring-cloud-task-app-starters","full_name":"spring-cloud/spring-cloud-task-app-starters","owner":{"login":"spring-cloud","id":7815877,"avatar_url":"https://avatars.githubusercontent.com/u/7815877?v=3","gravatar_id":"","url":"https://api.github.com/users/spring-cloud","html_url":"https://github.com/spring-cloud","followers_url":"https://api.github.com/users/spring-cloud/followers","following_url":"https://api.github.com/users/spring-cloud/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud/orgs","repos_url":"https://api.github.com/users/spring-cloud/repos","events_url":"https://api.github.com/users/spring-cloud/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spring-cloud/spring-cloud-task-app-starters","description":"Starters for Spring Cloud Task Apps","fork":false,"url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters","forks_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/forks","keys_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/teams","hooks_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/hooks","issue_events_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/issues/events{/number}","events_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/events","assignees_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/assignees{/user}","branches_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/branches{/branch}","tags_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/tags","blobs_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/git/refs{/sha}","trees_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/statuses/{sha}","languages_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/languages","stargazers_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/stargazers","contributors_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/contributors","subscribers_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/subscribers","subscription_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/subscription","commits_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/commits{/sha}","git_commits_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/git/commits{/sha}","comments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/comments{/number}","issue_comment_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/issues/comments{/number}","contents_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/contents/{+path}","compare_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/merges","archive_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/downloads","issues_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/issues{/number}","pulls_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls{/number}","milestones_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/milestones{/number}","notifications_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/labels{/name}","releases_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/releases{/id}","deployments_url":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/deployments","created_at":"2016-03-28T19:03:50Z","updated_at":"2016-07-03T15:35:04Z","pushed_at":"2016-07-20T07:57:19Z","git_url":"git://github.com/spring-cloud/spring-cloud-task-app-starters.git","ssh_url":"git@github.com:spring-cloud/spring-cloud-task-app-starters.git","clone_url":"https://github.com/spring-cloud/spring-cloud-task-app-starters.git","svn_url":"https://github.com/spring-cloud/spring-cloud-task-app-starters","homepage":"http://cloud.spring.io/spring-cloud-task-app-starters/","size":988,"stargazers_count":5,"watchers_count":5,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":10,"mirror_url":null,"open_issues_count":13,"forks":10,"open_issues":13,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/39"},"html":{"href":"https://github.com/spring-cloud/spring-cloud-task-app-starters/pull/39"},"issue":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/issues/39"},"comments":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/issues/39/comments"},"review_comments":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/39/comments"},"review_comment":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/pulls/39/commits"},"statuses":{"href":"https://api.github.com/repos/spring-cloud/spring-cloud-task-app-starters/statuses/b8868a87bb02a1c46111924eb73d099944a97fbd"}}}}
{"actor":{"display_login":"mminella"}}