{"action":"created","comment":{"url":"https://api.github.com/repos/wso2/carbon-governance/pulls/comments/25675568","id":25675568,"diff_hunk":"@@ -0,0 +1,240 @@\n+/*\n+ * Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.\n+ *\n+ * WSO2 Inc. licenses this file to you under the Apache License,\n+ * Version 2.0 (the \"License\"); you may not use this file except\n+ * 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,\n+ * software distributed under the License is distributed on an\n+ * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n+ * KIND, either express or implied.  See the License for the\n+ * specific language governing permissions and limitations\n+ * under the License.\n+ */\n+\n+package org.wso2.carbon.governance.lcm.tasks.data;\n+\n+import org.wso2.carbon.governance.api.exception.GovernanceException;\n+import org.wso2.carbon.governance.lcm.tasks.LCNotification;\n+import org.wso2.carbon.governance.lcm.tasks.dao.LifecycleNotificationDAO;\n+import org.wso2.carbon.registry.core.Registry;\n+import org.wso2.carbon.registry.core.exceptions.RegistryException;\n+import org.wso2.carbon.registry.core.jdbc.dataaccess.JDBCDatabaseTransaction;\n+\n+import java.sql.PreparedStatement;\n+import java.sql.ResultSet;\n+import java.sql.SQLException;\n+import java.text.DateFormat;\n+import java.text.SimpleDateFormat;\n+import java.util.ArrayList;\n+import java.util.Calendar;\n+\n+/**\n+ * This class is the JDBC implementation of LifecycleNotificationDAO which is used to add schedulers and read schedules.\n+ */\n+public class JDBCLifecycleNotificationDAOImpl implements LifecycleNotificationDAO {\n+\n+    /**\n+     * MySQL SELECT used in queries.\n+     */\n+    private final String sqlSelect = \"SELECT \";\n+\n+    /**\n+     * MySQL FROM used in queries.\n+     */\n+    private final String sqlFrom = \" FROM \";\n+\n+    /**\n+     * MySQL INSERT INTO used in queries.\n+     */\n+    private final String sqlInsertInto = \"INSERT INTO \";\n+\n+    /**\n+     * MySQL VALUES used in queries.\n+     */\n+    private final String sqlValues = \" VALUES \";\n+\n+    /**\n+     * MySQL WHERE used in queries.\n+     */\n+    private final String sqlWhere = \" WHERE \";\n+\n+    /**\n+     * Equals sign used in MySQL queries.\n+     */\n+    private final String equals = \" = \";\n+\n+    /**\n+     * Comma used in MySQL queries.\n+     */\n+    private final String comma = \",\";\n+\n+    /**\n+     * Question mark sign used in MySQL queries.\n+     */\n+    private final String questionMark = \"?\";\n+\n+    /**\n+     * Date format used in MySQL queries.\n+     */\n+    private final String dateFormat = \"yyyy-M-d\";\n+\n+    /**\n+     * This method is used get scheduler bran list filtering by notification method.\n+     *\n+     * @param registry              core registry.\n+     * @return                      Array list of scheduler data objects.\n+     * @throws GovernanceException  Throws when an error occurs reading data and committing transaction.\n+     */\n+    @Override\n+    public ArrayList<LCNotification> getValidNotifications(Registry registry)\n+            throws GovernanceException {\n+\n+        String sql = getValidNotificationQuery();\n+\n+        ArrayList<LCNotification> schedulerBeans = new ArrayList<LCNotification>();\n+        try {\n+            registry.beginTransaction();\n+        } catch (RegistryException e) {\n+            throw new GovernanceException(\"Error while reading data from registry while invoking beginTransaction for\"\n+                    + \" query: \" + sql, e);\n+        }\n+        try {\n+            JDBCDatabaseTransaction.ManagedRegistryConnection connection =\n+                    JDBCDatabaseTransaction.getConnection();\n+\n+            PreparedStatement preparedStatement = connection.prepareStatement(sql);\n+            preparedStatement.setString(1, getCurrentDate());\n+\n+            ResultSet resultSet = preparedStatement.executeQuery();\n+            while (resultSet.next()) {\n+                LCNotification schedulerBean = new LCNotification();\n+                schedulerBean.setRegPath(resultSet.getString(LifecycleNotificationDAO.REG_PATH));\n+                schedulerBean.setLcName(resultSet.getString(LifecycleNotificationDAO.REG_LC_NAME));\n+                schedulerBean.setLcCheckpointId(resultSet.getString(LifecycleNotificationDAO.REG_LC_CHECKPOINT_ID));\n+                schedulerBean.setNotificationDate(resultSet.getString(LifecycleNotificationDAO\n+                        .REG_LC_NOTIFICATION_DATE));\n+                schedulerBean.setTenantId(resultSet.getInt(LifecycleNotificationDAO.REG_TENANT_ID));\n+                schedulerBeans.add(schedulerBean);\n+            }\n+            try {\n+                registry.commitTransaction();\n+            } catch (RegistryException e) {\n+                throw new GovernanceException(\"Error while committing transaction of getting scheduler objects from \"\n+                        + \"query: \" + sql, e);\n+            }\n+            return schedulerBeans;\n+        } catch (SQLException sqlException) {\n+            try {\n+                registry.rollbackTransaction();\n+            } catch (RegistryException registryException) {\n+                throw new GovernanceException(\"Error while committing transaction for query: \" + sql,\n+                        registryException);\n+            }\n+            throw new GovernanceException(\"SQL error while getting schedulers from query: \" + sql, sqlException);\n+        }\n+    }\n+\n+    /**\n+     * This method builds the SQL query to select schedulers from database.\n+     * Ex: \"SELECT REG_PATH,REG_LC_NAME,REG_LC_CHECKPOINT_ID,REG_TENANT_ID FROM REG_CHECKPOINT_SCHEDULER WHERE\n+     * REG_LC_NOTIFICATION_DATE = ?\".\n+     *\n+     * @return  SQL query to select schedulers from database.\n+     */\n+    private String getValidNotificationQuery() {\n+\n+        StringBuilder queryBuilder = new StringBuilder();\n+        queryBuilder.append(sqlSelect);\n+        queryBuilder.append(LifecycleNotificationDAO.REG_PATH);\n+        queryBuilder.append(comma);\n+        queryBuilder.append(LifecycleNotificationDAO.REG_LC_NAME);\n+        queryBuilder.append(comma);\n+        queryBuilder.append(LifecycleNotificationDAO.REG_LC_CHECKPOINT_ID);\n+        queryBuilder.append(comma);\n+        queryBuilder.append(LifecycleNotificationDAO.REG_TENANT_ID);\n+        queryBuilder.append(comma);\n+        queryBuilder.append(LifecycleNotificationDAO.REG_LC_NOTIFICATION_DATE);\n+        queryBuilder.append(sqlFrom);\n+        queryBuilder.append(LifecycleNotificationDAO.TABLE_NAME);\n+        queryBuilder.append(sqlWhere);\n+        queryBuilder.append(LifecycleNotificationDAO.REG_LC_NOTIFICATION_DATE);\n+        queryBuilder.append(equals);\n+        queryBuilder.append(questionMark);\n+        return queryBuilder.toString();\n+    }\n+\n+    /**\n+     * This method to used add schedulers.\n+     *\n+     * @param registry              core registry.\n+     * @param schedulerBean         checkpoint notification scheduler bean.\n+     * @return                      true is scheduler added successfully.\n+     * @throws GovernanceException  Throws when:\n+     *                              <ul>\n+     *                                  <li>If reading data from registry while invoking beginTransaction occurs an\n+     *                                  error.</li>\n+     *                                  <li>If committing transaction of adding checkpoint notification occurs an\n+     *                                  error.</li>\n+     *                              </ul>\n+     */\n+    @Override\n+    public boolean addScheduler(Registry registry, LCNotification schedulerBean)\n+            throws GovernanceException {\n+\n+        String sql = sqlInsertInto + LifecycleNotificationDAO.TABLE_NAME + \"(\" +\n+                LifecycleNotificationDAO.REG_PATH + \",\" + LifecycleNotificationDAO.REG_LC_NAME + \",\"\n+                + LifecycleNotificationDAO.REG_LC_CHECKPOINT_ID + \",\" + LifecycleNotificationDAO.REG_UUID + \",\" +\n+                LifecycleNotificationDAO.REG_TENANT_ID + \",\" + LifecycleNotificationDAO\n+                .REG_LC_NOTIFICATION_DATE + \")\" + sqlValues + \"(?,?,?,?,?,?)\";\n+        try {\n+            registry.beginTransaction();\n+        } catch (RegistryException e) {\n+            throw new GovernanceException(\"Error while reading data from registry while invoking beginTransaction for\"\n+                    + \" query: \" + sql, e);\n+        }\n+\n+        JDBCDatabaseTransaction.ManagedRegistryConnection connection =\n+                JDBCDatabaseTransaction.getConnection();\n+        try {\n+            PreparedStatement preparedStatement = connection.prepareStatement(sql);\n+            preparedStatement.setString(1, schedulerBean.getRegPath());\n+            preparedStatement.setString(2, schedulerBean.getLcName());\n+            preparedStatement.setString(3, schedulerBean.getLcCheckpointId());\n+            preparedStatement.setString(4, schedulerBean.getUUID());\n+            preparedStatement.setInt(5, schedulerBean.getTenantId());\n+            preparedStatement.setString(6, schedulerBean.getNotificationDate());\n+            boolean result = preparedStatement.execute();\n+            try {\n+                registry.commitTransaction();\n+                return result;\n+            } catch (RegistryException e) {\n+                throw new GovernanceException(\"Error while committing transaction of adding checkpoint notification \"\n+                        + \"scheduler query: \" + sql, e);\n+            }\n+        } catch (SQLException e1) {\n+            try {\n+                registry.rollbackTransaction();\n+            } catch (RegistryException e2) {\n+                throw new GovernanceException(\"Error while transaction rollback for query: \" + sql, e2);\n+            }\n+            throw new GovernanceException(\"SQL error while creating scheduler data entry using query: \" + sql, e1);","path":"components/governance/org.wso2.carbon.governance.lcm/src/main/java/org/wso2/carbon/governance/lcm/tasks/data/JDBCLifecycleNotificationDAOImpl.java","position":null,"original_position":225,"commit_id":"1f816e59f98e726e691eec3d53129e5d81a6a809","original_commit_id":"f1a8f5207e2dca603afaa9723e255a3579960928","user":{"login":"daneshk","id":8402398,"avatar_url":"https://avatars.githubusercontent.com/u/8402398?v=3","gravatar_id":"","url":"https://api.github.com/users/daneshk","html_url":"https://github.com/daneshk","followers_url":"https://api.github.com/users/daneshk/followers","following_url":"https://api.github.com/users/daneshk/following{/other_user}","gists_url":"https://api.github.com/users/daneshk/gists{/gist_id}","starred_url":"https://api.github.com/users/daneshk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/daneshk/subscriptions","organizations_url":"https://api.github.com/users/daneshk/orgs","repos_url":"https://api.github.com/users/daneshk/repos","events_url":"https://api.github.com/users/daneshk/events{/privacy}","received_events_url":"https://api.github.com/users/daneshk/received_events","type":"User","site_admin":false},"body":"Please use proper naming instead of e1, e2","created_at":"2015-03-03T10:12:30Z","updated_at":"2015-03-03T10:12:30Z","html_url":"https://github.com/wso2/carbon-governance/pull/25#discussion_r25675568","pull_request_url":"https://api.github.com/repos/wso2/carbon-governance/pulls/25","_links":{"self":{"href":"https://api.github.com/repos/wso2/carbon-governance/pulls/comments/25675568"},"html":{"href":"https://github.com/wso2/carbon-governance/pull/25#discussion_r25675568"},"pull_request":{"href":"https://api.github.com/repos/wso2/carbon-governance/pulls/25"}}},"pull_request":{"url":"https://api.github.com/repos/wso2/carbon-governance/pulls/25","id":29898989,"html_url":"https://github.com/wso2/carbon-governance/pull/25","diff_url":"https://github.com/wso2/carbon-governance/pull/25.diff","patch_url":"https://github.com/wso2/carbon-governance/pull/25.patch","issue_url":"https://api.github.com/repos/wso2/carbon-governance/issues/25","number":25,"state":"open","locked":false,"title":"Time in lifecycle current state","user":{"login":"prasa7","id":805274,"avatar_url":"https://avatars.githubusercontent.com/u/805274?v=3","gravatar_id":"","url":"https://api.github.com/users/prasa7","html_url":"https://github.com/prasa7","followers_url":"https://api.github.com/users/prasa7/followers","following_url":"https://api.github.com/users/prasa7/following{/other_user}","gists_url":"https://api.github.com/users/prasa7/gists{/gist_id}","starred_url":"https://api.github.com/users/prasa7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prasa7/subscriptions","organizations_url":"https://api.github.com/users/prasa7/orgs","repos_url":"https://api.github.com/users/prasa7/repos","events_url":"https://api.github.com/users/prasa7/events{/privacy}","received_events_url":"https://api.github.com/users/prasa7/received_events","type":"User","site_admin":false},"body":"Time in lifecycle current state implemented.\r\nSending notifications using a schedule task implemented for lifecycle checkpoints notifications.","created_at":"2015-02-24T13:59:16Z","updated_at":"2015-03-03T10:12:30Z","closed_at":null,"merged_at":null,"merge_commit_sha":"72eeecb9e847bbc1eabdcfb14ab90a6a86dfb76b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/wso2/carbon-governance/pulls/25/commits","review_comments_url":"https://api.github.com/repos/wso2/carbon-governance/pulls/25/comments","review_comment_url":"https://api.github.com/repos/wso2/carbon-governance/pulls/comments{/number}","comments_url":"https://api.github.com/repos/wso2/carbon-governance/issues/25/comments","statuses_url":"https://api.github.com/repos/wso2/carbon-governance/statuses/1f816e59f98e726e691eec3d53129e5d81a6a809","head":{"label":"prasa7:time-dev","ref":"time-dev","sha":"1f816e59f98e726e691eec3d53129e5d81a6a809","user":{"login":"prasa7","id":805274,"avatar_url":"https://avatars.githubusercontent.com/u/805274?v=3","gravatar_id":"","url":"https://api.github.com/users/prasa7","html_url":"https://github.com/prasa7","followers_url":"https://api.github.com/users/prasa7/followers","following_url":"https://api.github.com/users/prasa7/following{/other_user}","gists_url":"https://api.github.com/users/prasa7/gists{/gist_id}","starred_url":"https://api.github.com/users/prasa7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prasa7/subscriptions","organizations_url":"https://api.github.com/users/prasa7/orgs","repos_url":"https://api.github.com/users/prasa7/repos","events_url":"https://api.github.com/users/prasa7/events{/privacy}","received_events_url":"https://api.github.com/users/prasa7/received_events","type":"User","site_admin":false},"repo":{"id":29125400,"name":"carbon-governance","full_name":"prasa7/carbon-governance","owner":{"login":"prasa7","id":805274,"avatar_url":"https://avatars.githubusercontent.com/u/805274?v=3","gravatar_id":"","url":"https://api.github.com/users/prasa7","html_url":"https://github.com/prasa7","followers_url":"https://api.github.com/users/prasa7/followers","following_url":"https://api.github.com/users/prasa7/following{/other_user}","gists_url":"https://api.github.com/users/prasa7/gists{/gist_id}","starred_url":"https://api.github.com/users/prasa7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prasa7/subscriptions","organizations_url":"https://api.github.com/users/prasa7/orgs","repos_url":"https://api.github.com/users/prasa7/repos","events_url":"https://api.github.com/users/prasa7/events{/privacy}","received_events_url":"https://api.github.com/users/prasa7/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/prasa7/carbon-governance","description":"","fork":true,"url":"https://api.github.com/repos/prasa7/carbon-governance","forks_url":"https://api.github.com/repos/prasa7/carbon-governance/forks","keys_url":"https://api.github.com/repos/prasa7/carbon-governance/keys{/key_id}","collaborators_url":"https://api.github.com/repos/prasa7/carbon-governance/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/prasa7/carbon-governance/teams","hooks_url":"https://api.github.com/repos/prasa7/carbon-governance/hooks","issue_events_url":"https://api.github.com/repos/prasa7/carbon-governance/issues/events{/number}","events_url":"https://api.github.com/repos/prasa7/carbon-governance/events","assignees_url":"https://api.github.com/repos/prasa7/carbon-governance/assignees{/user}","branches_url":"https://api.github.com/repos/prasa7/carbon-governance/branches{/branch}","tags_url":"https://api.github.com/repos/prasa7/carbon-governance/tags","blobs_url":"https://api.github.com/repos/prasa7/carbon-governance/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/prasa7/carbon-governance/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/prasa7/carbon-governance/git/refs{/sha}","trees_url":"https://api.github.com/repos/prasa7/carbon-governance/git/trees{/sha}","statuses_url":"https://api.github.com/repos/prasa7/carbon-governance/statuses/{sha}","languages_url":"https://api.github.com/repos/prasa7/carbon-governance/languages","stargazers_url":"https://api.github.com/repos/prasa7/carbon-governance/stargazers","contributors_url":"https://api.github.com/repos/prasa7/carbon-governance/contributors","subscribers_url":"https://api.github.com/repos/prasa7/carbon-governance/subscribers","subscription_url":"https://api.github.com/repos/prasa7/carbon-governance/subscription","commits_url":"https://api.github.com/repos/prasa7/carbon-governance/commits{/sha}","git_commits_url":"https://api.github.com/repos/prasa7/carbon-governance/git/commits{/sha}","comments_url":"https://api.github.com/repos/prasa7/carbon-governance/comments{/number}","issue_comment_url":"https://api.github.com/repos/prasa7/carbon-governance/issues/comments{/number}","contents_url":"https://api.github.com/repos/prasa7/carbon-governance/contents/{+path}","compare_url":"https://api.github.com/repos/prasa7/carbon-governance/compare/{base}...{head}","merges_url":"https://api.github.com/repos/prasa7/carbon-governance/merges","archive_url":"https://api.github.com/repos/prasa7/carbon-governance/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/prasa7/carbon-governance/downloads","issues_url":"https://api.github.com/repos/prasa7/carbon-governance/issues{/number}","pulls_url":"https://api.github.com/repos/prasa7/carbon-governance/pulls{/number}","milestones_url":"https://api.github.com/repos/prasa7/carbon-governance/milestones{/number}","notifications_url":"https://api.github.com/repos/prasa7/carbon-governance/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/prasa7/carbon-governance/labels{/name}","releases_url":"https://api.github.com/repos/prasa7/carbon-governance/releases{/id}","created_at":"2015-01-12T08:15:05Z","updated_at":"2015-02-04T07:30:00Z","pushed_at":"2015-03-03T10:06:07Z","git_url":"git://github.com/prasa7/carbon-governance.git","ssh_url":"git@github.com:prasa7/carbon-governance.git","clone_url":"https://github.com/prasa7/carbon-governance.git","svn_url":"https://github.com/prasa7/carbon-governance","homepage":null,"size":2608,"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":"wso2:master","ref":"master","sha":"f66c16095035ad6de19f66352012c26110192b66","user":{"login":"wso2","id":533043,"avatar_url":"https://avatars.githubusercontent.com/u/533043?v=3","gravatar_id":"","url":"https://api.github.com/users/wso2","html_url":"https://github.com/wso2","followers_url":"https://api.github.com/users/wso2/followers","following_url":"https://api.github.com/users/wso2/following{/other_user}","gists_url":"https://api.github.com/users/wso2/gists{/gist_id}","starred_url":"https://api.github.com/users/wso2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wso2/subscriptions","organizations_url":"https://api.github.com/users/wso2/orgs","repos_url":"https://api.github.com/users/wso2/repos","events_url":"https://api.github.com/users/wso2/events{/privacy}","received_events_url":"https://api.github.com/users/wso2/received_events","type":"Organization","site_admin":false},"repo":{"id":16097563,"name":"carbon-governance","full_name":"wso2/carbon-governance","owner":{"login":"wso2","id":533043,"avatar_url":"https://avatars.githubusercontent.com/u/533043?v=3","gravatar_id":"","url":"https://api.github.com/users/wso2","html_url":"https://github.com/wso2","followers_url":"https://api.github.com/users/wso2/followers","following_url":"https://api.github.com/users/wso2/following{/other_user}","gists_url":"https://api.github.com/users/wso2/gists{/gist_id}","starred_url":"https://api.github.com/users/wso2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wso2/subscriptions","organizations_url":"https://api.github.com/users/wso2/orgs","repos_url":"https://api.github.com/users/wso2/repos","events_url":"https://api.github.com/users/wso2/events{/privacy}","received_events_url":"https://api.github.com/users/wso2/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/wso2/carbon-governance","description":"","fork":false,"url":"https://api.github.com/repos/wso2/carbon-governance","forks_url":"https://api.github.com/repos/wso2/carbon-governance/forks","keys_url":"https://api.github.com/repos/wso2/carbon-governance/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wso2/carbon-governance/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wso2/carbon-governance/teams","hooks_url":"https://api.github.com/repos/wso2/carbon-governance/hooks","issue_events_url":"https://api.github.com/repos/wso2/carbon-governance/issues/events{/number}","events_url":"https://api.github.com/repos/wso2/carbon-governance/events","assignees_url":"https://api.github.com/repos/wso2/carbon-governance/assignees{/user}","branches_url":"https://api.github.com/repos/wso2/carbon-governance/branches{/branch}","tags_url":"https://api.github.com/repos/wso2/carbon-governance/tags","blobs_url":"https://api.github.com/repos/wso2/carbon-governance/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wso2/carbon-governance/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wso2/carbon-governance/git/refs{/sha}","trees_url":"https://api.github.com/repos/wso2/carbon-governance/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wso2/carbon-governance/statuses/{sha}","languages_url":"https://api.github.com/repos/wso2/carbon-governance/languages","stargazers_url":"https://api.github.com/repos/wso2/carbon-governance/stargazers","contributors_url":"https://api.github.com/repos/wso2/carbon-governance/contributors","subscribers_url":"https://api.github.com/repos/wso2/carbon-governance/subscribers","subscription_url":"https://api.github.com/repos/wso2/carbon-governance/subscription","commits_url":"https://api.github.com/repos/wso2/carbon-governance/commits{/sha}","git_commits_url":"https://api.github.com/repos/wso2/carbon-governance/git/commits{/sha}","comments_url":"https://api.github.com/repos/wso2/carbon-governance/comments{/number}","issue_comment_url":"https://api.github.com/repos/wso2/carbon-governance/issues/comments{/number}","contents_url":"https://api.github.com/repos/wso2/carbon-governance/contents/{+path}","compare_url":"https://api.github.com/repos/wso2/carbon-governance/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wso2/carbon-governance/merges","archive_url":"https://api.github.com/repos/wso2/carbon-governance/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wso2/carbon-governance/downloads","issues_url":"https://api.github.com/repos/wso2/carbon-governance/issues{/number}","pulls_url":"https://api.github.com/repos/wso2/carbon-governance/pulls{/number}","milestones_url":"https://api.github.com/repos/wso2/carbon-governance/milestones{/number}","notifications_url":"https://api.github.com/repos/wso2/carbon-governance/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wso2/carbon-governance/labels{/name}","releases_url":"https://api.github.com/repos/wso2/carbon-governance/releases{/id}","created_at":"2014-01-21T09:06:44Z","updated_at":"2015-02-02T11:51:53Z","pushed_at":"2015-02-16T08:53:25Z","git_url":"git://github.com/wso2/carbon-governance.git","ssh_url":"git@github.com:wso2/carbon-governance.git","clone_url":"https://github.com/wso2/carbon-governance.git","svn_url":"https://github.com/wso2/carbon-governance","homepage":null,"size":3069,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":24,"mirror_url":null,"open_issues_count":4,"forks":24,"open_issues":4,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/wso2/carbon-governance/pulls/25"},"html":{"href":"https://github.com/wso2/carbon-governance/pull/25"},"issue":{"href":"https://api.github.com/repos/wso2/carbon-governance/issues/25"},"comments":{"href":"https://api.github.com/repos/wso2/carbon-governance/issues/25/comments"},"review_comments":{"href":"https://api.github.com/repos/wso2/carbon-governance/pulls/25/comments"},"review_comment":{"href":"https://api.github.com/repos/wso2/carbon-governance/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/wso2/carbon-governance/pulls/25/commits"},"statuses":{"href":"https://api.github.com/repos/wso2/carbon-governance/statuses/1f816e59f98e726e691eec3d53129e5d81a6a809"}}}}