{"action":"created","comment":{"url":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/comments/94292675","pull_request_review_id":14820391,"id":94292675,"diff_hunk":"@@ -288,28 +309,163 @@ public void execute_select_jumpsToCorrectPerson() throws Exception {\n     public void execute_deleteInvalidArgsFormat_errorMessageShown() throws Exception {\n         String expectedMessage = String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE);\n         assertIncorrectIndexFormatBehaviorForCommand(\"delete\", expectedMessage);\n+\n+        // no indices around range indicator\n+        assertCommandBehavior(\"delete -\", expectedMessage);\n+\n+        // range indicator only partially surrounded\n+        assertCommandBehavior(\"delete 5-\", expectedMessage);\n+        assertCommandBehavior(\"delete -5\", expectedMessage);\n+\n+        // excessive range indicators\n+        assertCommandBehavior(\"delete - - --- -\", expectedMessage);\n     }\n \n     @Test\n     public void execute_deleteIndexNotFound_errorMessageShown() throws Exception {\n-        assertIndexNotFoundBehaviorForCommand(\"delete\");\n+        assertIndexNotFoundBehaviorForCommand(\"delete 5\", 3);\n+        assertIndexNotFoundBehaviorForCommand(\"delete 3-5\", 4);\n+        assertIndexNotFoundBehaviorForCommand(\"delete 5-3\", 4);\n     }\n \n     @Test\n-    public void execute_delete_removesCorrectPerson() throws Exception {\n+    public void execute_deleteNonRanged_removesCorrectly() throws Exception {\n         TestDataHelper helper = new TestDataHelper();\n-        List<Person> threePersons = helper.generatePersonList(3);\n+        DeleteHelper deleteHelper = new DeleteHelper();\n \n-        AddressBook expectedAB = helper.generateAddressBook(threePersons);\n-        expectedAB.removePerson(threePersons.get(1));\n-        helper.addToModel(model, threePersons);\n+        List<Person> testPersons = helper.generatePersonList(10);\n+        AddressBook expectedAB = helper.generateAddressBook(testPersons);\n+        helper.addToModel(model, testPersons);\n+\n+        // deleting first person\n+        String expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 0);\n+        assertCommandBehavior(\"delete 1\",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n+\n+        // deleting last person\n+        int lastIndex = testPersons.size();\n+        expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, lastIndex - 1);\n+        assertCommandBehavior(\"delete \" + lastIndex,\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n+\n+        // deleting multiple persons\n+        expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 0, 3, 4);\n+        assertCommandBehavior(\"delete 1 5 4\",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n+\n+    }\n+\n+    @Test\n+    public void execute_deleteRanged_removesCorrectly() throws Exception {\n+        TestDataHelper helper = new TestDataHelper();\n+        DeleteHelper deleteHelper = new DeleteHelper();\n+\n+        List<Person> testPersons = helper.generatePersonList(20);\n+        AddressBook expectedAB = helper.generateAddressBook(testPersons);\n+        helper.addToModel(model, testPersons);\n+\n+        // deleting range in ascending order\n+        String expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 0, 1, 2);\n+        assertCommandBehavior(\"delete 1-3\",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n \n-        assertCommandBehavior(\"delete 2\",\n-                String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, threePersons.get(1)),\n+        // deleting range in descending order\n+        expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 1, 2, 3);\n+        assertCommandBehavior(\"delete 4-2\",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n+\n+        // deleting multiple ranges\n+        int lastIndex = testPersons.size();\n+        int secondLastIndex = testPersons.size() - 1;\n+        expectedFeedback =\n+                deleteHelper.deleteAtIndices(expectedAB, testPersons, 0, 1, 3, 4, secondLastIndex - 1, lastIndex - 1);\n+        assertCommandBehavior(\"delete 1-2 4-5 \" + secondLastIndex + \"-\" + lastIndex,\n+                expectedFeedback,\n                 expectedAB,\n                 expectedAB.getPersonList());\n     }\n \n+    @Test\n+    public void execute_deleteRangedAndNonRanged_removesCorrectly() throws Exception {\n+        TestDataHelper helper = new TestDataHelper();\n+        DeleteHelper deleteHelper = new DeleteHelper();\n+\n+        List<Person> testPersons = helper.generatePersonList(30);\n+        AddressBook expectedAB = helper.generateAddressBook(testPersons);\n+        helper.addToModel(model, testPersons);\n+\n+        // deleting subsets in consecutive order\n+        String expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 0, 1, 4, 6, 8, 9, 10, 11);\n+        assertCommandBehavior(\"delete 1 2 5 7 9-12\",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n+\n+        // deleting from unordered subsets\n+        expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12);\n+        assertCommandBehavior(\"delete 7-9 1 5-6 4 2 3 11-13\",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n+    }\n+\n+    @Test\n+    public void execute_deleteDuplicateIndices_removesCorrectly() throws Exception {\n+        TestDataHelper helper = new TestDataHelper();\n+        DeleteHelper deleteHelper = new DeleteHelper();\n+\n+        List<Person> testPersons = helper.generatePersonList(5);\n+        AddressBook expectedAB = helper.generateAddressBook(testPersons);\n+        helper.addToModel(model, testPersons);\n+\n+        String expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 4);\n+        assertCommandBehavior(\"delete 5 5 5 5 5 5 5\",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n+    }\n+\n+    @Test\n+    public void execute_deleteOverlappingRanges_removesCorrectly() throws Exception {\n+        TestDataHelper helper = new TestDataHelper();\n+        DeleteHelper deleteHelper = new DeleteHelper();\n+\n+        List<Person> testPersons = helper.generatePersonList(5);\n+        AddressBook expectedAB = helper.generateAddressBook(testPersons);\n+        helper.addToModel(model, testPersons);\n+\n+        String expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 0, 1, 2);\n+        assertCommandBehavior(\"delete 1-3 2-3 1-1 2-2 3-3\",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());\n+    }\n+\n+    @Test\n+    public void execute_deleteExcessiveWhiteSpace_removesCorrectly() throws Exception {\n+        TestDataHelper helper = new TestDataHelper();\n+        DeleteHelper deleteHelper = new DeleteHelper();\n+\n+        List<Person> testPersons = helper.generatePersonList(5);\n+        AddressBook expectedAB = helper.generateAddressBook(testPersons);\n+        helper.addToModel(model, testPersons);\n+\n+        String expectedFeedback = deleteHelper.deleteAtIndices(expectedAB, testPersons, 2, 3, 4);\n+        assertCommandBehavior(\"delete       3          4      5    \",\n+                expectedFeedback,\n+                expectedAB,\n+                expectedAB.getPersonList());","path":"src/test/java/seedu/address/logic/LogicManagerTest.java","position":276,"original_position":276,"commit_id":"01dd220d00378d06ce0850b4b1fb105915c78fa8","original_commit_id":"01dd220d00378d06ce0850b4b1fb105915c78fa8","user":{"login":"damithc","id":1673303,"avatar_url":"https://avatars.githubusercontent.com/u/1673303?v=3","gravatar_id":"","url":"https://api.github.com/users/damithc","html_url":"https://github.com/damithc","followers_url":"https://api.github.com/users/damithc/followers","following_url":"https://api.github.com/users/damithc/following{/other_user}","gists_url":"https://api.github.com/users/damithc/gists{/gist_id}","starred_url":"https://api.github.com/users/damithc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/damithc/subscriptions","organizations_url":"https://api.github.com/users/damithc/orgs","repos_url":"https://api.github.com/users/damithc/repos","events_url":"https://api.github.com/users/damithc/events{/privacy}","received_events_url":"https://api.github.com/users/damithc/received_events","type":"User","site_admin":false},"body":"Instead of these two statements, it's cleaner and more readable to see something like this:\r\n```java\r\nassertDeleteSuccess(\"delete       3          4      5    \", 2, 3, 4);\r\n```\r\nIt clearly says `assert that \"delete       3          4      5    \" results in the deletion of items 2, 3, 4` without any other noise.\r\n","created_at":"2017-01-02T04:03:11Z","updated_at":"2017-01-02T04:08:38Z","html_url":"https://github.com/se-edu/addressbook-level4/pull/202#discussion_r94292675","pull_request_url":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/202","_links":{"self":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/comments/94292675"},"html":{"href":"https://github.com/se-edu/addressbook-level4/pull/202#discussion_r94292675"},"pull_request":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/202"}}},"pull_request":{"url":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/202","id":97205708,"html_url":"https://github.com/se-edu/addressbook-level4/pull/202","diff_url":"https://github.com/se-edu/addressbook-level4/pull/202.diff","patch_url":"https://github.com/se-edu/addressbook-level4/pull/202.patch","issue_url":"https://api.github.com/repos/se-edu/addressbook-level4/issues/202","number":202,"state":"open","locked":false,"title":"Users can delete multiple persons in one shot","user":{"login":"cheec","id":19281995,"avatar_url":"https://avatars.githubusercontent.com/u/19281995?v=3","gravatar_id":"","url":"https://api.github.com/users/cheec","html_url":"https://github.com/cheec","followers_url":"https://api.github.com/users/cheec/followers","following_url":"https://api.github.com/users/cheec/following{/other_user}","gists_url":"https://api.github.com/users/cheec/gists{/gist_id}","starred_url":"https://api.github.com/users/cheec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cheec/subscriptions","organizations_url":"https://api.github.com/users/cheec/orgs","repos_url":"https://api.github.com/users/cheec/repos","events_url":"https://api.github.com/users/cheec/events{/privacy}","received_events_url":"https://api.github.com/users/cheec/received_events","type":"User","site_admin":false},"body":"Fixes #140 \r\nImplement multiple deleting \r\n* Users can now delete multiple persons in a single command\r\n* Users must seperate multiple indices with at least a single whitespace\r\n* Users can also specify a range indicator '-' for range deleting\r\n* Overlapping ranges are also handled appropriately\r\n* Indices specified in ranges do not need to be in ascending order\r\n* Indices cannot exceed list size\r\n\r\nExamples: \r\n* `delete 5 1 7 10-16` deletes persons 1, 5, 7, 10 to 16\r\n* `delete 1 1 1 1 1` deletes person 1\r\n* `delete 5-1 1-5 1 2 3 4 5` deletes persons 1 to 5\r\n* `delete 1-3 2-5 1-10` deletes persons 1 to 10\r\n* `delete 6-1` delete persons 1 to 6\r\n\r\nThis PR contains major changes pertinent to:\r\n* `Parser` - add new helper methods to parse arguments above\r\n* `DeleteCommand` - implement above functionality\r\n* `DeleteCommandTest` - add some GUI tests\r\n* `LogicManagerTest` - delete command tests added/updated\r\n* `StringUtilTest` - added tests for new helper method `StringUtil::toIndexedListString` \r\n* `ListUtil` - create utility class holding methods relevant to lists\r\n* `CollectionUtil` - fixed and refactored the otherwise not functioning `CollectionUtil::assertNoNullElements`\r\n    * I'm guessing no one found this out because of the lack of `CollectionUtil` tests, time to open a new issue I think ;^)\r\n* Docs - update UG to match new functionality \r\n\r\n![ss](https://cloud.githubusercontent.com/assets/19281995/21054825/1abf3f4e-be6a-11e6-98bc-c0c0179187b6.png)\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.io/reviews/se-edu/addressbook-level4/202)\n<!-- Reviewable:end -->\n","created_at":"2016-12-08T21:37:21Z","updated_at":"2017-01-02T04:08:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c2afe0f61e805fdf1208be19323f270b3b7a3029","assignee":{"login":"YijinL","id":7914712,"avatar_url":"https://avatars.githubusercontent.com/u/7914712?v=3","gravatar_id":"","url":"https://api.github.com/users/YijinL","html_url":"https://github.com/YijinL","followers_url":"https://api.github.com/users/YijinL/followers","following_url":"https://api.github.com/users/YijinL/following{/other_user}","gists_url":"https://api.github.com/users/YijinL/gists{/gist_id}","starred_url":"https://api.github.com/users/YijinL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YijinL/subscriptions","organizations_url":"https://api.github.com/users/YijinL/orgs","repos_url":"https://api.github.com/users/YijinL/repos","events_url":"https://api.github.com/users/YijinL/events{/privacy}","received_events_url":"https://api.github.com/users/YijinL/received_events","type":"User","site_admin":false},"assignees":[{"login":"YijinL","id":7914712,"avatar_url":"https://avatars.githubusercontent.com/u/7914712?v=3","gravatar_id":"","url":"https://api.github.com/users/YijinL","html_url":"https://github.com/YijinL","followers_url":"https://api.github.com/users/YijinL/followers","following_url":"https://api.github.com/users/YijinL/following{/other_user}","gists_url":"https://api.github.com/users/YijinL/gists{/gist_id}","starred_url":"https://api.github.com/users/YijinL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YijinL/subscriptions","organizations_url":"https://api.github.com/users/YijinL/orgs","repos_url":"https://api.github.com/users/YijinL/repos","events_url":"https://api.github.com/users/YijinL/events{/privacy}","received_events_url":"https://api.github.com/users/YijinL/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/202/commits","review_comments_url":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/202/comments","review_comment_url":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/comments{/number}","comments_url":"https://api.github.com/repos/se-edu/addressbook-level4/issues/202/comments","statuses_url":"https://api.github.com/repos/se-edu/addressbook-level4/statuses/01dd220d00378d06ce0850b4b1fb105915c78fa8","head":{"label":"cheec:140-delete-multiple","ref":"140-delete-multiple","sha":"01dd220d00378d06ce0850b4b1fb105915c78fa8","user":{"login":"cheec","id":19281995,"avatar_url":"https://avatars.githubusercontent.com/u/19281995?v=3","gravatar_id":"","url":"https://api.github.com/users/cheec","html_url":"https://github.com/cheec","followers_url":"https://api.github.com/users/cheec/followers","following_url":"https://api.github.com/users/cheec/following{/other_user}","gists_url":"https://api.github.com/users/cheec/gists{/gist_id}","starred_url":"https://api.github.com/users/cheec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cheec/subscriptions","organizations_url":"https://api.github.com/users/cheec/orgs","repos_url":"https://api.github.com/users/cheec/repos","events_url":"https://api.github.com/users/cheec/events{/privacy}","received_events_url":"https://api.github.com/users/cheec/received_events","type":"User","site_admin":false},"repo":{"id":75926715,"name":"addressbook-level4","full_name":"cheec/addressbook-level4","owner":{"login":"cheec","id":19281995,"avatar_url":"https://avatars.githubusercontent.com/u/19281995?v=3","gravatar_id":"","url":"https://api.github.com/users/cheec","html_url":"https://github.com/cheec","followers_url":"https://api.github.com/users/cheec/followers","following_url":"https://api.github.com/users/cheec/following{/other_user}","gists_url":"https://api.github.com/users/cheec/gists{/gist_id}","starred_url":"https://api.github.com/users/cheec/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cheec/subscriptions","organizations_url":"https://api.github.com/users/cheec/orgs","repos_url":"https://api.github.com/users/cheec/repos","events_url":"https://api.github.com/users/cheec/events{/privacy}","received_events_url":"https://api.github.com/users/cheec/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cheec/addressbook-level4","description":"Address Book sample application (Level 4)","fork":true,"url":"https://api.github.com/repos/cheec/addressbook-level4","forks_url":"https://api.github.com/repos/cheec/addressbook-level4/forks","keys_url":"https://api.github.com/repos/cheec/addressbook-level4/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cheec/addressbook-level4/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cheec/addressbook-level4/teams","hooks_url":"https://api.github.com/repos/cheec/addressbook-level4/hooks","issue_events_url":"https://api.github.com/repos/cheec/addressbook-level4/issues/events{/number}","events_url":"https://api.github.com/repos/cheec/addressbook-level4/events","assignees_url":"https://api.github.com/repos/cheec/addressbook-level4/assignees{/user}","branches_url":"https://api.github.com/repos/cheec/addressbook-level4/branches{/branch}","tags_url":"https://api.github.com/repos/cheec/addressbook-level4/tags","blobs_url":"https://api.github.com/repos/cheec/addressbook-level4/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cheec/addressbook-level4/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cheec/addressbook-level4/git/refs{/sha}","trees_url":"https://api.github.com/repos/cheec/addressbook-level4/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cheec/addressbook-level4/statuses/{sha}","languages_url":"https://api.github.com/repos/cheec/addressbook-level4/languages","stargazers_url":"https://api.github.com/repos/cheec/addressbook-level4/stargazers","contributors_url":"https://api.github.com/repos/cheec/addressbook-level4/contributors","subscribers_url":"https://api.github.com/repos/cheec/addressbook-level4/subscribers","subscription_url":"https://api.github.com/repos/cheec/addressbook-level4/subscription","commits_url":"https://api.github.com/repos/cheec/addressbook-level4/commits{/sha}","git_commits_url":"https://api.github.com/repos/cheec/addressbook-level4/git/commits{/sha}","comments_url":"https://api.github.com/repos/cheec/addressbook-level4/comments{/number}","issue_comment_url":"https://api.github.com/repos/cheec/addressbook-level4/issues/comments{/number}","contents_url":"https://api.github.com/repos/cheec/addressbook-level4/contents/{+path}","compare_url":"https://api.github.com/repos/cheec/addressbook-level4/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cheec/addressbook-level4/merges","archive_url":"https://api.github.com/repos/cheec/addressbook-level4/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cheec/addressbook-level4/downloads","issues_url":"https://api.github.com/repos/cheec/addressbook-level4/issues{/number}","pulls_url":"https://api.github.com/repos/cheec/addressbook-level4/pulls{/number}","milestones_url":"https://api.github.com/repos/cheec/addressbook-level4/milestones{/number}","notifications_url":"https://api.github.com/repos/cheec/addressbook-level4/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cheec/addressbook-level4/labels{/name}","releases_url":"https://api.github.com/repos/cheec/addressbook-level4/releases{/id}","deployments_url":"https://api.github.com/repos/cheec/addressbook-level4/deployments","created_at":"2016-12-08T10:13:27Z","updated_at":"2016-12-08T10:13:29Z","pushed_at":"2017-01-02T02:36:44Z","git_url":"git://github.com/cheec/addressbook-level4.git","ssh_url":"git@github.com:cheec/addressbook-level4.git","clone_url":"https://github.com/cheec/addressbook-level4.git","svn_url":"https://github.com/cheec/addressbook-level4","homepage":null,"size":2693,"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":"se-edu:master","ref":"master","sha":"d782898510a12b3b03b07848cb7a647f3076e241","user":{"login":"se-edu","id":20763652,"avatar_url":"https://avatars.githubusercontent.com/u/20763652?v=3","gravatar_id":"","url":"https://api.github.com/users/se-edu","html_url":"https://github.com/se-edu","followers_url":"https://api.github.com/users/se-edu/followers","following_url":"https://api.github.com/users/se-edu/following{/other_user}","gists_url":"https://api.github.com/users/se-edu/gists{/gist_id}","starred_url":"https://api.github.com/users/se-edu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/se-edu/subscriptions","organizations_url":"https://api.github.com/users/se-edu/orgs","repos_url":"https://api.github.com/users/se-edu/repos","events_url":"https://api.github.com/users/se-edu/events{/privacy}","received_events_url":"https://api.github.com/users/se-edu/received_events","type":"Organization","site_admin":false},"repo":{"id":65120941,"name":"addressbook-level4","full_name":"se-edu/addressbook-level4","owner":{"login":"se-edu","id":20763652,"avatar_url":"https://avatars.githubusercontent.com/u/20763652?v=3","gravatar_id":"","url":"https://api.github.com/users/se-edu","html_url":"https://github.com/se-edu","followers_url":"https://api.github.com/users/se-edu/followers","following_url":"https://api.github.com/users/se-edu/following{/other_user}","gists_url":"https://api.github.com/users/se-edu/gists{/gist_id}","starred_url":"https://api.github.com/users/se-edu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/se-edu/subscriptions","organizations_url":"https://api.github.com/users/se-edu/orgs","repos_url":"https://api.github.com/users/se-edu/repos","events_url":"https://api.github.com/users/se-edu/events{/privacy}","received_events_url":"https://api.github.com/users/se-edu/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/se-edu/addressbook-level4","description":"Address Book sample application (Level 4)","fork":false,"url":"https://api.github.com/repos/se-edu/addressbook-level4","forks_url":"https://api.github.com/repos/se-edu/addressbook-level4/forks","keys_url":"https://api.github.com/repos/se-edu/addressbook-level4/keys{/key_id}","collaborators_url":"https://api.github.com/repos/se-edu/addressbook-level4/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/se-edu/addressbook-level4/teams","hooks_url":"https://api.github.com/repos/se-edu/addressbook-level4/hooks","issue_events_url":"https://api.github.com/repos/se-edu/addressbook-level4/issues/events{/number}","events_url":"https://api.github.com/repos/se-edu/addressbook-level4/events","assignees_url":"https://api.github.com/repos/se-edu/addressbook-level4/assignees{/user}","branches_url":"https://api.github.com/repos/se-edu/addressbook-level4/branches{/branch}","tags_url":"https://api.github.com/repos/se-edu/addressbook-level4/tags","blobs_url":"https://api.github.com/repos/se-edu/addressbook-level4/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/se-edu/addressbook-level4/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/se-edu/addressbook-level4/git/refs{/sha}","trees_url":"https://api.github.com/repos/se-edu/addressbook-level4/git/trees{/sha}","statuses_url":"https://api.github.com/repos/se-edu/addressbook-level4/statuses/{sha}","languages_url":"https://api.github.com/repos/se-edu/addressbook-level4/languages","stargazers_url":"https://api.github.com/repos/se-edu/addressbook-level4/stargazers","contributors_url":"https://api.github.com/repos/se-edu/addressbook-level4/contributors","subscribers_url":"https://api.github.com/repos/se-edu/addressbook-level4/subscribers","subscription_url":"https://api.github.com/repos/se-edu/addressbook-level4/subscription","commits_url":"https://api.github.com/repos/se-edu/addressbook-level4/commits{/sha}","git_commits_url":"https://api.github.com/repos/se-edu/addressbook-level4/git/commits{/sha}","comments_url":"https://api.github.com/repos/se-edu/addressbook-level4/comments{/number}","issue_comment_url":"https://api.github.com/repos/se-edu/addressbook-level4/issues/comments{/number}","contents_url":"https://api.github.com/repos/se-edu/addressbook-level4/contents/{+path}","compare_url":"https://api.github.com/repos/se-edu/addressbook-level4/compare/{base}...{head}","merges_url":"https://api.github.com/repos/se-edu/addressbook-level4/merges","archive_url":"https://api.github.com/repos/se-edu/addressbook-level4/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/se-edu/addressbook-level4/downloads","issues_url":"https://api.github.com/repos/se-edu/addressbook-level4/issues{/number}","pulls_url":"https://api.github.com/repos/se-edu/addressbook-level4/pulls{/number}","milestones_url":"https://api.github.com/repos/se-edu/addressbook-level4/milestones{/number}","notifications_url":"https://api.github.com/repos/se-edu/addressbook-level4/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/se-edu/addressbook-level4/labels{/name}","releases_url":"https://api.github.com/repos/se-edu/addressbook-level4/releases{/id}","deployments_url":"https://api.github.com/repos/se-edu/addressbook-level4/deployments","created_at":"2016-08-07T07:17:26Z","updated_at":"2016-12-22T16:28:30Z","pushed_at":"2017-01-02T02:36:45Z","git_url":"git://github.com/se-edu/addressbook-level4.git","ssh_url":"git@github.com:se-edu/addressbook-level4.git","clone_url":"https://github.com/se-edu/addressbook-level4.git","svn_url":"https://github.com/se-edu/addressbook-level4","homepage":null,"size":2777,"stargazers_count":2,"watchers_count":2,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":194,"mirror_url":null,"open_issues_count":46,"forks":194,"open_issues":46,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/202"},"html":{"href":"https://github.com/se-edu/addressbook-level4/pull/202"},"issue":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/issues/202"},"comments":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/issues/202/comments"},"review_comments":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/202/comments"},"review_comment":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/pulls/202/commits"},"statuses":{"href":"https://api.github.com/repos/se-edu/addressbook-level4/statuses/01dd220d00378d06ce0850b4b1fb105915c78fa8"}}}}
{"actor":{"display_login":"damithc"}}