{"action":"created","comment":{"url":"https://api.github.com/repos/yahoo/squidb/pulls/comments/73169756","id":73169756,"diff_hunk":"@@ -125,22 +159,139 @@ private boolean isIntegerPrimaryKey(VariableElement field, DeclaredTypeName fiel\n                 TypeConstants.isIntegerType(fieldType);\n     }\n \n-    private void registerBasicPropertyGenerators() {\n-        registerHandledTypes(BasicStringPropertyGenerator.handledColumnTypes(), getStringPropertyGenerator());\n-        registerHandledTypes(BasicLongPropertyGenerator.handledColumnTypes(), getLongPropertyGenerator());\n-        registerHandledTypes(BasicIntegerPropertyGenerator.handledColumnTypes(), getIntegerPropertyGenerator());\n-        registerHandledTypes(BasicDoublePropertyGenerator.handledColumnTypes(), getDoublePropertyGenerator());\n-        registerHandledTypes(BasicBooleanPropertyGenerator.handledColumnTypes(), getBooleanPropertyGenerator());\n-        registerHandledTypes(BasicBlobPropertyGenerator.handledColumnTypes(), getBlobPropertyGenerator());\n+    @Override\n+    public void afterProcessVariableElements() {\n+        RowidPropertyGenerator rowidPropertyGenerator;\n+        if (modelSpec.hasMetadata(METADATA_KEY_ROWID_ALIAS_PROPERTY_GENERATOR)) {\n+            rowidPropertyGenerator = modelSpec.getMetadata(METADATA_KEY_ROWID_ALIAS_PROPERTY_GENERATOR);\n+        } else {\n+            if (shouldGenerateROWIDProperty()) {\n+                rowidPropertyGenerator = new RowidPropertyGenerator(modelSpec, \"rowid\",\n+                        DEFAULT_ROWID_PROPERTY_NAME, utils);\n+            } else {\n+                utils.getMessager().printMessage(Kind.WARNING, \"Model class \" + modelSpec.getGeneratedClassName() +\n+                        \" is currently generating an integer primary key ID property to act as an alias to the table's \"\n+                        + \"rowid. Future versions of SquiDB will remove this default property for the sake of better \"\n+                        + \"support for arbitrary primary keys. If you are using the ID property, you should update \"\n+                        + \"your model spec by explicitly declaring a field, named id with column name '_id' and \"\n+                        + \"annotated with @PrimaryKey\", modelSpec.getModelSpecElement());\n+                rowidPropertyGenerator = new RowidPropertyGenerator(modelSpec, \"_id\",\n+                        DEFAULT_ID_PROPERTY_NAME, utils) {\n+                    @Override\n+                    protected String getColumnDefinition() {\n+                        return \"PRIMARY KEY AUTOINCREMENT\";\n+                    }\n+                };\n+            }\n+            modelSpec.putMetadata(METADATA_KEY_ROWID_ALIAS_PROPERTY_GENERATOR, rowidPropertyGenerator);\n+        }\n+        modelSpec.getPropertyGenerators().add(0, rowidPropertyGenerator);\n+\n+        // Sanity check to make sure there is exactly 1 RowidPropertyGenerator\n+        RowidPropertyGenerator foundRowidPropertyGenerator = null;\n+        for (PropertyGenerator generator : modelSpec.getPropertyGenerators()) {\n+            if (generator instanceof RowidPropertyGenerator) {\n+                if (foundRowidPropertyGenerator != null) {\n+                    utils.getMessager().printMessage(Kind.ERROR, \"Found redundant rowid property generator for property\"\n+                            + generator.getPropertyName() + \". Rowid property generator \" +\n+                            foundRowidPropertyGenerator.getPropertyName() + \" already exists\");\n+                } else {\n+                    foundRowidPropertyGenerator = (RowidPropertyGenerator) generator;\n+                }\n+            }\n+        }\n     }\n \n-    private void registerHandledTypes(List<DeclaredTypeName> handledTypes,\n-            Class<? extends BasicPropertyGenerator> generatorClass) {\n-        for (DeclaredTypeName type : handledTypes) {\n-            generatorMap.put(type, generatorClass);\n+    private boolean shouldGenerateROWIDProperty() {\n+        TableModelSpecWrapper tableModelSpec = (TableModelSpecWrapper) modelSpec;\n+        return tableModelSpec.isVirtualTable() ||\n+                tableModelSpec.hasMetadata(METADATA_KEY_HAS_PRIMARY_KEY) ||\n+                tableModelSpec.getSpecAnnotation().noRowIdAlias();\n+    }\n+\n+    @Override\n+    public void afterEmitPropertyDeclaration(JavaFileWriter writer, PropertyGenerator propertyGenerator)\n+            throws IOException {\n+        if (propertyGenerator instanceof RowidPropertyGenerator) {\n+            if (((TableModelSpecWrapper) modelSpec).isVirtualTable()) {\n+                writer.writeAnnotation(CoreTypes.DEPRECATED);\n+                writer.writeFieldDeclaration(TypeConstants.LONG_PROPERTY,\n+                        DEFAULT_ID_PROPERTY_NAME,\n+                        Expressions.fromString(DEFAULT_ROWID_PROPERTY_NAME),\n+                        TypeConstants.PUBLIC_STATIC_FINAL);\n+            }\n+            writeRowidSupportMethods(writer, propertyGenerator.getPropertyName());\n+        }\n+    }\n+\n+    private void writeRowidSupportMethods(JavaFileWriter writer, String propertyName)\n+            throws IOException {\n+        // Write TABLE.setRowIdProperty call\n+        writer.beginInitializerBlock(true, true);\n+        writer.writeStatement(Expressions.callMethodOn(TableModelFileWriter.TABLE_NAME,\n+                \"setRowIdProperty\", propertyName));\n+        writer.finishInitializerBlock(true, true);\n+        writer.writeNewline();\n+\n+        // Write getRowIdProperty() method\n+        writer.writeAnnotation(CoreTypes.OVERRIDE);\n+        MethodDeclarationParameters params = new MethodDeclarationParameters()\n+                .setModifiers(Modifier.PUBLIC)\n+                .setReturnType(TypeConstants.LONG_PROPERTY)\n+                .setMethodName(\"getRowIdProperty\");\n+        writer.beginMethodDefinition(params);\n+        writer.writeStringStatement(\"return \" + propertyName);\n+        writer.finishMethodDefinition();\n+    }\n+\n+    @Override\n+    public void beforeEmitGetter(JavaFileWriter writer, PropertyGenerator propertyGenerator,\n+            MethodDeclarationParameters getterParams) throws IOException {\n+        addAccessorDocumentationForRowids(writer, propertyGenerator, true);\n+    }\n+\n+    @Override\n+    public void beforeEmitSetter(JavaFileWriter writer, PropertyGenerator propertyGenerator,\n+            MethodDeclarationParameters setterParams) throws IOException {\n+        addAccessorDocumentationForRowids(writer, propertyGenerator, false);\n+    }\n+\n+    private void addAccessorDocumentationForRowids(JavaFileWriter writer, PropertyGenerator propertyGenerator,\n+            boolean getter) throws IOException {\n+        if (propertyGenerator instanceof RowidPropertyGenerator) {\n+            if (DEFAULT_ROWID_PROPERTY_NAME.equals(propertyGenerator.getPropertyName())) {\n+                writer.writeAnnotation(CoreTypes.OVERRIDE);\n+            } else {\n+                writer.writeJavadoc(\" This \" + (getter ? \"getter\" : \"setter\") + \" is an alias for \" +\n+                        (getter ? \"get\" : \"set\") + \"RowId(), as the underlying column is an INTEGER PRIMARY KEY\");\n+            }\n+        }\n+    }\n+\n+    @Override\n+    public void emitMethods(JavaFileWriter writer) throws IOException {\n+        // If rowid property generator hasn't already done it, need to generate\n+        // overridden setRowId with appropriate return type\n+        if (!pluginEnv.hasSquidbOption(PluginEnvironment.OPTIONS_DISABLE_DEFAULT_GETTERS_AND_SETTERS)) {\n+            RowidPropertyGenerator rowidPropertyGenerator = modelSpec\n+                    .getMetadata(METADATA_KEY_ROWID_ALIAS_PROPERTY_GENERATOR);\n+            if (rowidPropertyGenerator != null && !\"setRowId\".equals(rowidPropertyGenerator.setterMethodName())) {\n+                MethodDeclarationParameters params = new MethodDeclarationParameters()\n+                        .setModifiers(Modifier.PUBLIC)\n+                        .setMethodName(\"setRowId\")\n+                        .setArgumentTypes(CoreTypes.PRIMITIVE_LONG)\n+                        .setArgumentNames(\"rowid\")\n+                        .setReturnType(modelSpec.getGeneratedClassName());\n+                writer.writeAnnotation(CoreTypes.OVERRIDE)\n+                        .beginMethodDefinition(params)\n+                        .writeStringStatement(\"super.setRowId(rowid)\")\n+                        .writeStringStatement(\"return this\")\n+                        .finishMethodDefinition();\n+            }\n         }\n     }\n \n+    // Users can subclass TableModelSpecFieldPlugin and override these methods to handle the core types differently","path":"squidb-processor/src/com/yahoo/squidb/processor/plugins/defaults/properties/TableModelSpecFieldPlugin.java","position":313,"original_position":313,"commit_id":"c7bc63765e958ab8ae5ce16125b414a9bd861cd4","original_commit_id":"c7bc63765e958ab8ae5ce16125b414a9bd861cd4","user":{"login":"jdkoren","id":771156,"avatar_url":"https://avatars.githubusercontent.com/u/771156?v=3","gravatar_id":"","url":"https://api.github.com/users/jdkoren","html_url":"https://github.com/jdkoren","followers_url":"https://api.github.com/users/jdkoren/followers","following_url":"https://api.github.com/users/jdkoren/following{/other_user}","gists_url":"https://api.github.com/users/jdkoren/gists{/gist_id}","starred_url":"https://api.github.com/users/jdkoren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdkoren/subscriptions","organizations_url":"https://api.github.com/users/jdkoren/orgs","repos_url":"https://api.github.com/users/jdkoren/repos","events_url":"https://api.github.com/users/jdkoren/events{/privacy}","received_events_url":"https://api.github.com/users/jdkoren/received_events","type":"User","site_admin":false},"body":"We should probably write some javadoc for these methods in case someone wants to do this","created_at":"2016-08-02T14:50:23Z","updated_at":"2016-08-02T14:50:23Z","html_url":"https://github.com/yahoo/squidb/pull/202#discussion_r73169756","pull_request_url":"https://api.github.com/repos/yahoo/squidb/pulls/202","_links":{"self":{"href":"https://api.github.com/repos/yahoo/squidb/pulls/comments/73169756"},"html":{"href":"https://github.com/yahoo/squidb/pull/202#discussion_r73169756"},"pull_request":{"href":"https://api.github.com/repos/yahoo/squidb/pulls/202"}}},"pull_request":{"url":"https://api.github.com/repos/yahoo/squidb/pulls/202","id":79431616,"html_url":"https://github.com/yahoo/squidb/pull/202","diff_url":"https://github.com/yahoo/squidb/pull/202.diff","patch_url":"https://github.com/yahoo/squidb/pull/202.patch","issue_url":"https://api.github.com/repos/yahoo/squidb/issues/202","number":202,"state":"open","locked":false,"title":"More integer primary key enhancements","user":{"login":"sbosley","id":622224,"avatar_url":"https://avatars.githubusercontent.com/u/622224?v=3","gravatar_id":"","url":"https://api.github.com/users/sbosley","html_url":"https://github.com/sbosley","followers_url":"https://api.github.com/users/sbosley/followers","following_url":"https://api.github.com/users/sbosley/following{/other_user}","gists_url":"https://api.github.com/users/sbosley/gists{/gist_id}","starred_url":"https://api.github.com/users/sbosley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbosley/subscriptions","organizations_url":"https://api.github.com/users/sbosley/orgs","repos_url":"https://api.github.com/users/sbosley/repos","events_url":"https://api.github.com/users/sbosley/events{/privacy}","received_events_url":"https://api.github.com/users/sbosley/received_events","type":"User","site_admin":false},"body":"The core goal of this change is mainly to generate named aliases of the getters and setters for INTEGER PRIMARY KEY properties. (Before the only way to access these properties was with getRowId() and setRowId(), which could be confusing). These aliases use the property name, but delegate to getRowId() and setRowId() under the hood for consistent behavior.\r\n\r\nMuch of this refactor is just code reorganization. It removes the burden of tracking the ROWID property or INTEGER PRIMARY KEY rowid alias from TableModelFileWriter and moves this responsibility into the TableModelFieldSpec plugin, which is a more natural place for it and makes it easier to achieve the getter/setter behavior. This allows us to remove a lot of special case handling and duplicated code from the file writer classes.","created_at":"2016-07-29T22:06:07Z","updated_at":"2016-08-02T14:50:23Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0ad997b5e0b1f62876b20a4fd1d926025e773ba6","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/yahoo/squidb/pulls/202/commits","review_comments_url":"https://api.github.com/repos/yahoo/squidb/pulls/202/comments","review_comment_url":"https://api.github.com/repos/yahoo/squidb/pulls/comments{/number}","comments_url":"https://api.github.com/repos/yahoo/squidb/issues/202/comments","statuses_url":"https://api.github.com/repos/yahoo/squidb/statuses/c7bc63765e958ab8ae5ce16125b414a9bd861cd4","head":{"label":"yahoo:integer_primary_key_refactor","ref":"integer_primary_key_refactor","sha":"c7bc63765e958ab8ae5ce16125b414a9bd861cd4","user":{"login":"yahoo","id":16574,"avatar_url":"https://avatars.githubusercontent.com/u/16574?v=3","gravatar_id":"","url":"https://api.github.com/users/yahoo","html_url":"https://github.com/yahoo","followers_url":"https://api.github.com/users/yahoo/followers","following_url":"https://api.github.com/users/yahoo/following{/other_user}","gists_url":"https://api.github.com/users/yahoo/gists{/gist_id}","starred_url":"https://api.github.com/users/yahoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yahoo/subscriptions","organizations_url":"https://api.github.com/users/yahoo/orgs","repos_url":"https://api.github.com/users/yahoo/repos","events_url":"https://api.github.com/users/yahoo/events{/privacy}","received_events_url":"https://api.github.com/users/yahoo/received_events","type":"Organization","site_admin":false},"repo":{"id":34006895,"name":"squidb","full_name":"yahoo/squidb","owner":{"login":"yahoo","id":16574,"avatar_url":"https://avatars.githubusercontent.com/u/16574?v=3","gravatar_id":"","url":"https://api.github.com/users/yahoo","html_url":"https://github.com/yahoo","followers_url":"https://api.github.com/users/yahoo/followers","following_url":"https://api.github.com/users/yahoo/following{/other_user}","gists_url":"https://api.github.com/users/yahoo/gists{/gist_id}","starred_url":"https://api.github.com/users/yahoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yahoo/subscriptions","organizations_url":"https://api.github.com/users/yahoo/orgs","repos_url":"https://api.github.com/users/yahoo/repos","events_url":"https://api.github.com/users/yahoo/events{/privacy}","received_events_url":"https://api.github.com/users/yahoo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yahoo/squidb","description":"SquiDB is a SQLite database library for Android and iOS","fork":false,"url":"https://api.github.com/repos/yahoo/squidb","forks_url":"https://api.github.com/repos/yahoo/squidb/forks","keys_url":"https://api.github.com/repos/yahoo/squidb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yahoo/squidb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yahoo/squidb/teams","hooks_url":"https://api.github.com/repos/yahoo/squidb/hooks","issue_events_url":"https://api.github.com/repos/yahoo/squidb/issues/events{/number}","events_url":"https://api.github.com/repos/yahoo/squidb/events","assignees_url":"https://api.github.com/repos/yahoo/squidb/assignees{/user}","branches_url":"https://api.github.com/repos/yahoo/squidb/branches{/branch}","tags_url":"https://api.github.com/repos/yahoo/squidb/tags","blobs_url":"https://api.github.com/repos/yahoo/squidb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yahoo/squidb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yahoo/squidb/git/refs{/sha}","trees_url":"https://api.github.com/repos/yahoo/squidb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yahoo/squidb/statuses/{sha}","languages_url":"https://api.github.com/repos/yahoo/squidb/languages","stargazers_url":"https://api.github.com/repos/yahoo/squidb/stargazers","contributors_url":"https://api.github.com/repos/yahoo/squidb/contributors","subscribers_url":"https://api.github.com/repos/yahoo/squidb/subscribers","subscription_url":"https://api.github.com/repos/yahoo/squidb/subscription","commits_url":"https://api.github.com/repos/yahoo/squidb/commits{/sha}","git_commits_url":"https://api.github.com/repos/yahoo/squidb/git/commits{/sha}","comments_url":"https://api.github.com/repos/yahoo/squidb/comments{/number}","issue_comment_url":"https://api.github.com/repos/yahoo/squidb/issues/comments{/number}","contents_url":"https://api.github.com/repos/yahoo/squidb/contents/{+path}","compare_url":"https://api.github.com/repos/yahoo/squidb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yahoo/squidb/merges","archive_url":"https://api.github.com/repos/yahoo/squidb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yahoo/squidb/downloads","issues_url":"https://api.github.com/repos/yahoo/squidb/issues{/number}","pulls_url":"https://api.github.com/repos/yahoo/squidb/pulls{/number}","milestones_url":"https://api.github.com/repos/yahoo/squidb/milestones{/number}","notifications_url":"https://api.github.com/repos/yahoo/squidb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yahoo/squidb/labels{/name}","releases_url":"https://api.github.com/repos/yahoo/squidb/releases{/id}","deployments_url":"https://api.github.com/repos/yahoo/squidb/deployments","created_at":"2015-04-15T16:54:33Z","updated_at":"2016-08-02T14:31:15Z","pushed_at":"2016-08-02T04:13:17Z","git_url":"git://github.com/yahoo/squidb.git","ssh_url":"git@github.com:yahoo/squidb.git","clone_url":"https://github.com/yahoo/squidb.git","svn_url":"https://github.com/yahoo/squidb","homepage":"https://github.com/yahoo/squidb/wiki","size":46853,"stargazers_count":1188,"watchers_count":1188,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":123,"mirror_url":null,"open_issues_count":10,"forks":123,"open_issues":10,"watchers":1188,"default_branch":"master"}},"base":{"label":"yahoo:master","ref":"master","sha":"7c7c65ce89e2991d505b4a33aac434382c145f9d","user":{"login":"yahoo","id":16574,"avatar_url":"https://avatars.githubusercontent.com/u/16574?v=3","gravatar_id":"","url":"https://api.github.com/users/yahoo","html_url":"https://github.com/yahoo","followers_url":"https://api.github.com/users/yahoo/followers","following_url":"https://api.github.com/users/yahoo/following{/other_user}","gists_url":"https://api.github.com/users/yahoo/gists{/gist_id}","starred_url":"https://api.github.com/users/yahoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yahoo/subscriptions","organizations_url":"https://api.github.com/users/yahoo/orgs","repos_url":"https://api.github.com/users/yahoo/repos","events_url":"https://api.github.com/users/yahoo/events{/privacy}","received_events_url":"https://api.github.com/users/yahoo/received_events","type":"Organization","site_admin":false},"repo":{"id":34006895,"name":"squidb","full_name":"yahoo/squidb","owner":{"login":"yahoo","id":16574,"avatar_url":"https://avatars.githubusercontent.com/u/16574?v=3","gravatar_id":"","url":"https://api.github.com/users/yahoo","html_url":"https://github.com/yahoo","followers_url":"https://api.github.com/users/yahoo/followers","following_url":"https://api.github.com/users/yahoo/following{/other_user}","gists_url":"https://api.github.com/users/yahoo/gists{/gist_id}","starred_url":"https://api.github.com/users/yahoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yahoo/subscriptions","organizations_url":"https://api.github.com/users/yahoo/orgs","repos_url":"https://api.github.com/users/yahoo/repos","events_url":"https://api.github.com/users/yahoo/events{/privacy}","received_events_url":"https://api.github.com/users/yahoo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/yahoo/squidb","description":"SquiDB is a SQLite database library for Android and iOS","fork":false,"url":"https://api.github.com/repos/yahoo/squidb","forks_url":"https://api.github.com/repos/yahoo/squidb/forks","keys_url":"https://api.github.com/repos/yahoo/squidb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/yahoo/squidb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/yahoo/squidb/teams","hooks_url":"https://api.github.com/repos/yahoo/squidb/hooks","issue_events_url":"https://api.github.com/repos/yahoo/squidb/issues/events{/number}","events_url":"https://api.github.com/repos/yahoo/squidb/events","assignees_url":"https://api.github.com/repos/yahoo/squidb/assignees{/user}","branches_url":"https://api.github.com/repos/yahoo/squidb/branches{/branch}","tags_url":"https://api.github.com/repos/yahoo/squidb/tags","blobs_url":"https://api.github.com/repos/yahoo/squidb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/yahoo/squidb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/yahoo/squidb/git/refs{/sha}","trees_url":"https://api.github.com/repos/yahoo/squidb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/yahoo/squidb/statuses/{sha}","languages_url":"https://api.github.com/repos/yahoo/squidb/languages","stargazers_url":"https://api.github.com/repos/yahoo/squidb/stargazers","contributors_url":"https://api.github.com/repos/yahoo/squidb/contributors","subscribers_url":"https://api.github.com/repos/yahoo/squidb/subscribers","subscription_url":"https://api.github.com/repos/yahoo/squidb/subscription","commits_url":"https://api.github.com/repos/yahoo/squidb/commits{/sha}","git_commits_url":"https://api.github.com/repos/yahoo/squidb/git/commits{/sha}","comments_url":"https://api.github.com/repos/yahoo/squidb/comments{/number}","issue_comment_url":"https://api.github.com/repos/yahoo/squidb/issues/comments{/number}","contents_url":"https://api.github.com/repos/yahoo/squidb/contents/{+path}","compare_url":"https://api.github.com/repos/yahoo/squidb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/yahoo/squidb/merges","archive_url":"https://api.github.com/repos/yahoo/squidb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/yahoo/squidb/downloads","issues_url":"https://api.github.com/repos/yahoo/squidb/issues{/number}","pulls_url":"https://api.github.com/repos/yahoo/squidb/pulls{/number}","milestones_url":"https://api.github.com/repos/yahoo/squidb/milestones{/number}","notifications_url":"https://api.github.com/repos/yahoo/squidb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/yahoo/squidb/labels{/name}","releases_url":"https://api.github.com/repos/yahoo/squidb/releases{/id}","deployments_url":"https://api.github.com/repos/yahoo/squidb/deployments","created_at":"2015-04-15T16:54:33Z","updated_at":"2016-08-02T14:31:15Z","pushed_at":"2016-08-02T04:13:17Z","git_url":"git://github.com/yahoo/squidb.git","ssh_url":"git@github.com:yahoo/squidb.git","clone_url":"https://github.com/yahoo/squidb.git","svn_url":"https://github.com/yahoo/squidb","homepage":"https://github.com/yahoo/squidb/wiki","size":46853,"stargazers_count":1188,"watchers_count":1188,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":123,"mirror_url":null,"open_issues_count":10,"forks":123,"open_issues":10,"watchers":1188,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/yahoo/squidb/pulls/202"},"html":{"href":"https://github.com/yahoo/squidb/pull/202"},"issue":{"href":"https://api.github.com/repos/yahoo/squidb/issues/202"},"comments":{"href":"https://api.github.com/repos/yahoo/squidb/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/yahoo/squidb/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/yahoo/squidb/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/yahoo/squidb/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/yahoo/squidb/statuses/c7bc63765e958ab8ae5ce16125b414a9bd861cd4"}}}}
{"actor":{"display_login":"jdkoren"}}