{"action":"created","comment":{"url":"https://api.github.com/repos/stubhub/bigdime/pulls/comments/61511108","id":61511108,"diff_hunk":"@@ -0,0 +1,297 @@\n+/**\n+ * Copyright (C) 2015 Stubhub.\n+ */\n+package io.bigdime.handler.json;\n+\n+import java.io.IOException;\n+import java.nio.charset.Charset;\n+import java.util.List;\n+import java.util.Map;\n+import java.util.Map.Entry;\n+\n+import org.codehaus.jackson.JsonNode;\n+import org.codehaus.jackson.map.ObjectMapper;\n+import org.joda.time.DateTime;\n+import org.joda.time.DateTimeZone;\n+import org.joda.time.format.DateTimeFormat;\n+import org.joda.time.format.DateTimeFormatter;\n+import org.springframework.beans.factory.annotation.Autowired;\n+import org.springframework.context.annotation.Scope;\n+import org.springframework.stereotype.Component;\n+\n+import com.google.common.base.Preconditions;\n+\n+import io.bigdime.alert.LoggerFactory;\n+import io.bigdime.core.ActionEvent;\n+import io.bigdime.core.ActionEvent.Status;\n+import io.bigdime.core.AdaptorConfigurationException;\n+import io.bigdime.core.HandlerException;\n+import io.bigdime.core.InvalidValueConfigurationException;\n+import io.bigdime.core.commons.AdaptorLogger;\n+import io.bigdime.core.commons.JsonHelper;\n+import io.bigdime.core.commons.PropertyHelper;\n+import io.bigdime.core.commons.TimeManager;\n+import io.bigdime.core.config.AdaptorConfig;\n+import io.bigdime.core.config.AdaptorConfigConstants;\n+import io.bigdime.core.constants.ActionEventHeaderConstants;\n+import io.bigdime.core.handler.AbstractHandler;\n+import io.bigdime.core.handler.HandlerJournal;\n+import io.bigdime.core.handler.SimpleJournal;\n+import io.bigdime.core.runtimeinfo.RuntimeInfo;\n+import io.bigdime.core.runtimeinfo.RuntimeInfoStore;\n+import io.bigdime.core.runtimeinfo.RuntimeInfoStoreException;\n+import io.bigdime.handler.kafka.KafkaInputDescriptor;\n+\n+/**\n+ * A handler that receives the Json document, and read relevant fields , optionally,\n+ * submits to channel.\n+ * \n+ * user's want to use this handler can optionally set these values(timestamp/partition_name) to the adaptor.json\n+ * {partition_name : \"account\"}\n+ * { timestamp  : \"timestamp\"}\n+ * these property values used on the input message,retrieve the corresponding value from the Json\n+ * and add the values to the action header for downstream to consume.\n+ * \n+ * @author mnamburi\n+ *\n+ */\n+@Component\n+@Scope(\"prototype\")\n+public class JsonMapperHandler extends AbstractHandler {\n+\tprivate static final AdaptorLogger logger = new AdaptorLogger(LoggerFactory.getLogger(JsonMapperHandler.class));\n+\tprivate static final String rowSeparatedBy = \"\\n\";\n+\n+\tprivate static final String TIME_STAMP = \"timestamp\";\n+\tprivate static final String PARTITION_NAME = \"partition_name\";\n+\n+\tprivate String timestamp;\n+\tprivate String partition_name;\t\n+\tprivate ObjectMapper objectMapper;\n+\t\n+\tprivate String partition_dt = null;\n+\tprivate String partition_hour = null;\n+\t\n+\t@Autowired\n+\tprivate JsonHelper jsonHelper;\n+\t\n+\t/**\n+\t * Each instance of handler reads from exactly one topic:partition.\n+\t */\n+\t@Autowired\n+\tprivate RuntimeInfoStore<RuntimeInfo> runtimeInfoStore;\n+\t\n+\tprivate static final String DF = \"yyyyMMdd\";\n+\tprivate static final String HOUR_FORMAT = \"HH\";\n+\tprivate static  final String TIMESTAMP = \"DT\";\n+\tprivate static  final String HOUR = \"HOUR\";\n+\tprivate static final DateTimeZone timeZone = DateTimeZone.forID(\"UTC\");\n+\tprivate static final DateTimeFormatter hourFormatter = DateTimeFormat.forPattern(HOUR_FORMAT).withZone(timeZone);\n+\tprivate static final DateTimeFormatter formatter = DateTimeFormat.forPattern(DF).withZone(timeZone);\n+\t\n+\tprivate TimeManager timeManager = TimeManager.getInstance();\n+\tprivate KafkaInputDescriptor inputDescriptor;\n+\tprivate String handlerPhase;\n+\t\n+\t@Override\n+\tpublic void build() throws AdaptorConfigurationException {\n+\t\tsuper.build();\n+\t\thandlerPhase = \"building Json MapperHandler\";\n+\t\ttimestamp = PropertyHelper.getStringProperty(getPropertyMap(), TIME_STAMP);\n+\t\tpartition_name = PropertyHelper.getStringProperty(getPropertyMap(), PARTITION_NAME);\n+\t\tobjectMapper = new ObjectMapper();\n+\t\t\n+\t\t@SuppressWarnings(\"unchecked\")\n+\t\tEntry<Object, String> srcDescInputs = (Entry<Object, String>) getPropertyMap().get(AdaptorConfigConstants.SourceConfigConstants.SRC_DESC);\n+\t\t\n+\t\t@SuppressWarnings(\"unchecked\")\n+\t\tMap<String,Object>  inputMetadata = (Map<String,Object>) srcDescInputs.getKey();\n+\t\t\n+\t\tinputDescriptor = new KafkaInputDescriptor();\n+\t\ttry {\n+\t\t\tinputDescriptor.parseDescriptor(inputMetadata);\n+\t\t} catch (IllegalArgumentException ex) {\n+\t\t\tthrow new InvalidValueConfigurationException(\n+\t\t\t\t\t \"incorrect value specified in src-desc \"+ ex.getMessage());\n+\t\t}\t\n+\n+\t\ttry {\n+\t\t\tassginPartitionsFromRunTimeInfo(inputDescriptor.getEntityName(), String.valueOf(inputDescriptor.getPartition()));\n+\t\t} catch (RuntimeInfoStoreException e) {\n+\t\t\tthrow new AdaptorConfigurationException(e);\n+\t\t}\t\t\n+\t\tlogger.debug(\"building handler\", handlerPhase+\"timestamp={} partition_name={}\",timestamp,partition_name);\n+\t}\n+\t\n+\tpublic KafkaInputDescriptor getInputDescriptor(){\n+\t\treturn inputDescriptor;\n+\t}\n+\n+\t/**\n+\t * get run time information from the metastore\n+\t * if the data is not available in the metastore, return the -1 says the is need to be processed from the earliest offset information.\n+\t * otherwise process the data where is is left off.\n+\t * @param entityName\n+\t * @param descriptor\n+\t * @param offsetPropertyName\n+\t * @return\n+\t */\n+\tprotected void assginPartitionsFromRunTimeInfo(final String entityName, final String descriptor)\n+\t\t\t\t\tthrows RuntimeInfoStoreException {\n+\t\t\tRuntimeInfo runtimeInfo = runtimeInfoStore.get(AdaptorConfig.getInstance().getName(), entityName,descriptor);\n+\t\t\tif (runtimeInfo != null && runtimeInfo.getProperties() != null) {\n+\t\t\t\tpartition_dt = runtimeInfo.getProperties().get(TIMESTAMP);\t\t\t\t\n+\t\t\t\tpartition_hour = runtimeInfo.getProperties().get(HOUR);\n+\t\t\t\tlogger.debug(\"proessing handler\", \"MessageOffsetFromRuntimeInfo from runtime account={} date={} hour={}\",\n+\t\t\t\t\t\tpartition_dt,partition_hour);\n+\t\t\t}\n+\t}\n+\t\n+\t/**\n+\t * Picks up the events from handler context and processes them. If there is\n+\t * no data in the list set on context, an {@link IllegalArgumentException}\n+\t * is thrown.\n+\t * \n+\t * @formatter:off\n+\t * if (anything in journal)\n+\t * \tprocess from journal\n+\t * else \n+\t * \tprocess from context\n+\t * \n+\t * \n+\t * @return {@link Status#READY} if there was only one event in the input\n+\t *         list. Returns {@link Status#CALLBACK} if there were more than one\n+\t *         events available in the list.\n+\t * @throws HandlerException\n+\t * \n+\t * @formatter:on\n+\t */\n+\t@Override\n+\tpublic Status process() throws HandlerException {\n+\t\tlogger.debug(\"processing handler\", \"processing avro handler\");","path":"bigdime-data-handlers/src/main/java/io/bigdime/handler/json/JsonMapperHandler.java","position":170,"original_position":170,"commit_id":"2c36885b49bcb1b4915b5b6b1bee1175da45a85f","original_commit_id":"2c36885b49bcb1b4915b5b6b1bee1175da45a85f","user":{"login":"a-ninja","id":5307299,"avatar_url":"https://avatars.githubusercontent.com/u/5307299?v=3","gravatar_id":"","url":"https://api.github.com/users/a-ninja","html_url":"https://github.com/a-ninja","followers_url":"https://api.github.com/users/a-ninja/followers","following_url":"https://api.github.com/users/a-ninja/following{/other_user}","gists_url":"https://api.github.com/users/a-ninja/gists{/gist_id}","starred_url":"https://api.github.com/users/a-ninja/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/a-ninja/subscriptions","organizations_url":"https://api.github.com/users/a-ninja/orgs","repos_url":"https://api.github.com/users/a-ninja/repos","events_url":"https://api.github.com/users/a-ninja/events{/privacy}","received_events_url":"https://api.github.com/users/a-ninja/received_events","type":"User","site_admin":false},"body":"typo? avro?","created_at":"2016-04-28T22:11:14Z","updated_at":"2016-04-28T22:11:14Z","html_url":"https://github.com/stubhub/bigdime/pull/51#discussion_r61511108","pull_request_url":"https://api.github.com/repos/stubhub/bigdime/pulls/51","_links":{"self":{"href":"https://api.github.com/repos/stubhub/bigdime/pulls/comments/61511108"},"html":{"href":"https://github.com/stubhub/bigdime/pull/51#discussion_r61511108"},"pull_request":{"href":"https://api.github.com/repos/stubhub/bigdime/pulls/51"}}},"pull_request":{"url":"https://api.github.com/repos/stubhub/bigdime/pulls/51","id":67671724,"html_url":"https://github.com/stubhub/bigdime/pull/51","diff_url":"https://github.com/stubhub/bigdime/pull/51.diff","patch_url":"https://github.com/stubhub/bigdime/pull/51.patch","issue_url":"https://api.github.com/repos/stubhub/bigdime/issues/51","number":51,"state":"open","locked":false,"title":"Json handler implementation and bug fixes","user":{"login":"mnamburi","id":16087329,"avatar_url":"https://avatars.githubusercontent.com/u/16087329?v=3","gravatar_id":"","url":"https://api.github.com/users/mnamburi","html_url":"https://github.com/mnamburi","followers_url":"https://api.github.com/users/mnamburi/followers","following_url":"https://api.github.com/users/mnamburi/following{/other_user}","gists_url":"https://api.github.com/users/mnamburi/gists{/gist_id}","starred_url":"https://api.github.com/users/mnamburi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mnamburi/subscriptions","organizations_url":"https://api.github.com/users/mnamburi/orgs","repos_url":"https://api.github.com/users/mnamburi/repos","events_url":"https://api.github.com/users/mnamburi/events{/privacy}","received_events_url":"https://api.github.com/users/mnamburi/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-04-25T06:38:43Z","updated_at":"2016-04-28T22:11:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1131f77d0e5e880a7f6568ac0b1c41da37469e8e","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/stubhub/bigdime/pulls/51/commits","review_comments_url":"https://api.github.com/repos/stubhub/bigdime/pulls/51/comments","review_comment_url":"https://api.github.com/repos/stubhub/bigdime/pulls/comments{/number}","comments_url":"https://api.github.com/repos/stubhub/bigdime/issues/51/comments","statuses_url":"https://api.github.com/repos/stubhub/bigdime/statuses/2c36885b49bcb1b4915b5b6b1bee1175da45a85f","head":{"label":"mnamburi:develop","ref":"develop","sha":"2c36885b49bcb1b4915b5b6b1bee1175da45a85f","user":{"login":"mnamburi","id":16087329,"avatar_url":"https://avatars.githubusercontent.com/u/16087329?v=3","gravatar_id":"","url":"https://api.github.com/users/mnamburi","html_url":"https://github.com/mnamburi","followers_url":"https://api.github.com/users/mnamburi/followers","following_url":"https://api.github.com/users/mnamburi/following{/other_user}","gists_url":"https://api.github.com/users/mnamburi/gists{/gist_id}","starred_url":"https://api.github.com/users/mnamburi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mnamburi/subscriptions","organizations_url":"https://api.github.com/users/mnamburi/orgs","repos_url":"https://api.github.com/users/mnamburi/repos","events_url":"https://api.github.com/users/mnamburi/events{/privacy}","received_events_url":"https://api.github.com/users/mnamburi/received_events","type":"User","site_admin":false},"repo":{"id":52466052,"name":"bigdime","full_name":"mnamburi/bigdime","owner":{"login":"mnamburi","id":16087329,"avatar_url":"https://avatars.githubusercontent.com/u/16087329?v=3","gravatar_id":"","url":"https://api.github.com/users/mnamburi","html_url":"https://github.com/mnamburi","followers_url":"https://api.github.com/users/mnamburi/followers","following_url":"https://api.github.com/users/mnamburi/following{/other_user}","gists_url":"https://api.github.com/users/mnamburi/gists{/gist_id}","starred_url":"https://api.github.com/users/mnamburi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mnamburi/subscriptions","organizations_url":"https://api.github.com/users/mnamburi/orgs","repos_url":"https://api.github.com/users/mnamburi/repos","events_url":"https://api.github.com/users/mnamburi/events{/privacy}","received_events_url":"https://api.github.com/users/mnamburi/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mnamburi/bigdime","description":"As a Big Data Ingestion Ecosystem, BigDime enables all types and formats of high volume data into the Hadoop Big Data environment. Loaded with several features and capabilities right out of the box, such as Data Ingestion, Monitoring, Alerting, Metadata Management, Data Validation Service and High Availability,  BigDime aspires to close all functional gaps discovered throughout Big Data Ingestion challenges that most data ambitious organizations experience.","fork":true,"url":"https://api.github.com/repos/mnamburi/bigdime","forks_url":"https://api.github.com/repos/mnamburi/bigdime/forks","keys_url":"https://api.github.com/repos/mnamburi/bigdime/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mnamburi/bigdime/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mnamburi/bigdime/teams","hooks_url":"https://api.github.com/repos/mnamburi/bigdime/hooks","issue_events_url":"https://api.github.com/repos/mnamburi/bigdime/issues/events{/number}","events_url":"https://api.github.com/repos/mnamburi/bigdime/events","assignees_url":"https://api.github.com/repos/mnamburi/bigdime/assignees{/user}","branches_url":"https://api.github.com/repos/mnamburi/bigdime/branches{/branch}","tags_url":"https://api.github.com/repos/mnamburi/bigdime/tags","blobs_url":"https://api.github.com/repos/mnamburi/bigdime/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mnamburi/bigdime/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mnamburi/bigdime/git/refs{/sha}","trees_url":"https://api.github.com/repos/mnamburi/bigdime/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mnamburi/bigdime/statuses/{sha}","languages_url":"https://api.github.com/repos/mnamburi/bigdime/languages","stargazers_url":"https://api.github.com/repos/mnamburi/bigdime/stargazers","contributors_url":"https://api.github.com/repos/mnamburi/bigdime/contributors","subscribers_url":"https://api.github.com/repos/mnamburi/bigdime/subscribers","subscription_url":"https://api.github.com/repos/mnamburi/bigdime/subscription","commits_url":"https://api.github.com/repos/mnamburi/bigdime/commits{/sha}","git_commits_url":"https://api.github.com/repos/mnamburi/bigdime/git/commits{/sha}","comments_url":"https://api.github.com/repos/mnamburi/bigdime/comments{/number}","issue_comment_url":"https://api.github.com/repos/mnamburi/bigdime/issues/comments{/number}","contents_url":"https://api.github.com/repos/mnamburi/bigdime/contents/{+path}","compare_url":"https://api.github.com/repos/mnamburi/bigdime/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mnamburi/bigdime/merges","archive_url":"https://api.github.com/repos/mnamburi/bigdime/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mnamburi/bigdime/downloads","issues_url":"https://api.github.com/repos/mnamburi/bigdime/issues{/number}","pulls_url":"https://api.github.com/repos/mnamburi/bigdime/pulls{/number}","milestones_url":"https://api.github.com/repos/mnamburi/bigdime/milestones{/number}","notifications_url":"https://api.github.com/repos/mnamburi/bigdime/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mnamburi/bigdime/labels{/name}","releases_url":"https://api.github.com/repos/mnamburi/bigdime/releases{/id}","deployments_url":"https://api.github.com/repos/mnamburi/bigdime/deployments","created_at":"2016-02-24T18:48:32Z","updated_at":"2016-02-24T18:48:35Z","pushed_at":"2016-04-28T21:51:10Z","git_url":"git://github.com/mnamburi/bigdime.git","ssh_url":"git@github.com:mnamburi/bigdime.git","clone_url":"https://github.com/mnamburi/bigdime.git","svn_url":"https://github.com/mnamburi/bigdime","homepage":"http://www.bigdime.io ","size":5722,"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":"develop"}},"base":{"label":"stubhub:develop","ref":"develop","sha":"04709fa789b5eef3498821a5c3efe73b30750d4c","user":{"login":"stubhub","id":8224322,"avatar_url":"https://avatars.githubusercontent.com/u/8224322?v=3","gravatar_id":"","url":"https://api.github.com/users/stubhub","html_url":"https://github.com/stubhub","followers_url":"https://api.github.com/users/stubhub/followers","following_url":"https://api.github.com/users/stubhub/following{/other_user}","gists_url":"https://api.github.com/users/stubhub/gists{/gist_id}","starred_url":"https://api.github.com/users/stubhub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stubhub/subscriptions","organizations_url":"https://api.github.com/users/stubhub/orgs","repos_url":"https://api.github.com/users/stubhub/repos","events_url":"https://api.github.com/users/stubhub/events{/privacy}","received_events_url":"https://api.github.com/users/stubhub/received_events","type":"Organization","site_admin":false},"repo":{"id":48773470,"name":"bigdime","full_name":"stubhub/bigdime","owner":{"login":"stubhub","id":8224322,"avatar_url":"https://avatars.githubusercontent.com/u/8224322?v=3","gravatar_id":"","url":"https://api.github.com/users/stubhub","html_url":"https://github.com/stubhub","followers_url":"https://api.github.com/users/stubhub/followers","following_url":"https://api.github.com/users/stubhub/following{/other_user}","gists_url":"https://api.github.com/users/stubhub/gists{/gist_id}","starred_url":"https://api.github.com/users/stubhub/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stubhub/subscriptions","organizations_url":"https://api.github.com/users/stubhub/orgs","repos_url":"https://api.github.com/users/stubhub/repos","events_url":"https://api.github.com/users/stubhub/events{/privacy}","received_events_url":"https://api.github.com/users/stubhub/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/stubhub/bigdime","description":"As a Big Data Ingestion Ecosystem, BigDime enables all types and formats of high volume data into the Hadoop Big Data environment. Loaded with several features and capabilities right out of the box, such as Data Ingestion, Monitoring, Alerting, Metadata Management, Data Validation Service and High Availability,  BigDime aspires to close all functional gaps discovered throughout Big Data Ingestion challenges that most data ambitious organizations experience.","fork":false,"url":"https://api.github.com/repos/stubhub/bigdime","forks_url":"https://api.github.com/repos/stubhub/bigdime/forks","keys_url":"https://api.github.com/repos/stubhub/bigdime/keys{/key_id}","collaborators_url":"https://api.github.com/repos/stubhub/bigdime/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/stubhub/bigdime/teams","hooks_url":"https://api.github.com/repos/stubhub/bigdime/hooks","issue_events_url":"https://api.github.com/repos/stubhub/bigdime/issues/events{/number}","events_url":"https://api.github.com/repos/stubhub/bigdime/events","assignees_url":"https://api.github.com/repos/stubhub/bigdime/assignees{/user}","branches_url":"https://api.github.com/repos/stubhub/bigdime/branches{/branch}","tags_url":"https://api.github.com/repos/stubhub/bigdime/tags","blobs_url":"https://api.github.com/repos/stubhub/bigdime/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/stubhub/bigdime/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/stubhub/bigdime/git/refs{/sha}","trees_url":"https://api.github.com/repos/stubhub/bigdime/git/trees{/sha}","statuses_url":"https://api.github.com/repos/stubhub/bigdime/statuses/{sha}","languages_url":"https://api.github.com/repos/stubhub/bigdime/languages","stargazers_url":"https://api.github.com/repos/stubhub/bigdime/stargazers","contributors_url":"https://api.github.com/repos/stubhub/bigdime/contributors","subscribers_url":"https://api.github.com/repos/stubhub/bigdime/subscribers","subscription_url":"https://api.github.com/repos/stubhub/bigdime/subscription","commits_url":"https://api.github.com/repos/stubhub/bigdime/commits{/sha}","git_commits_url":"https://api.github.com/repos/stubhub/bigdime/git/commits{/sha}","comments_url":"https://api.github.com/repos/stubhub/bigdime/comments{/number}","issue_comment_url":"https://api.github.com/repos/stubhub/bigdime/issues/comments{/number}","contents_url":"https://api.github.com/repos/stubhub/bigdime/contents/{+path}","compare_url":"https://api.github.com/repos/stubhub/bigdime/compare/{base}...{head}","merges_url":"https://api.github.com/repos/stubhub/bigdime/merges","archive_url":"https://api.github.com/repos/stubhub/bigdime/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/stubhub/bigdime/downloads","issues_url":"https://api.github.com/repos/stubhub/bigdime/issues{/number}","pulls_url":"https://api.github.com/repos/stubhub/bigdime/pulls{/number}","milestones_url":"https://api.github.com/repos/stubhub/bigdime/milestones{/number}","notifications_url":"https://api.github.com/repos/stubhub/bigdime/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/stubhub/bigdime/labels{/name}","releases_url":"https://api.github.com/repos/stubhub/bigdime/releases{/id}","deployments_url":"https://api.github.com/repos/stubhub/bigdime/deployments","created_at":"2015-12-30T00:41:00Z","updated_at":"2016-04-12T18:18:11Z","pushed_at":"2016-04-28T21:51:11Z","git_url":"git://github.com/stubhub/bigdime.git","ssh_url":"git@github.com:stubhub/bigdime.git","clone_url":"https://github.com/stubhub/bigdime.git","svn_url":"https://github.com/stubhub/bigdime","homepage":"http://www.bigdime.io ","size":6301,"stargazers_count":2,"watchers_count":2,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"open_issues_count":8,"forks":8,"open_issues":8,"watchers":2,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/stubhub/bigdime/pulls/51"},"html":{"href":"https://github.com/stubhub/bigdime/pull/51"},"issue":{"href":"https://api.github.com/repos/stubhub/bigdime/issues/51"},"comments":{"href":"https://api.github.com/repos/stubhub/bigdime/issues/51/comments"},"review_comments":{"href":"https://api.github.com/repos/stubhub/bigdime/pulls/51/comments"},"review_comment":{"href":"https://api.github.com/repos/stubhub/bigdime/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/stubhub/bigdime/pulls/51/commits"},"statuses":{"href":"https://api.github.com/repos/stubhub/bigdime/statuses/2c36885b49bcb1b4915b5b6b1bee1175da45a85f"}}}}