{"action":"created","comment":{"url":"https://api.github.com/repos/wso2/carbon-kernel/pulls/comments/202566893","pull_request_review_id":137292155,"id":202566893,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMjU2Njg5Mw==","diff_hunk":"@@ -2639,6 +2632,442 @@ public int getTenantId() throws UserStoreException {\n         return values.toArray(new String[values.size()]);\n     }\n \n+    protected PaginatedSearchResult doGetUserList(Condition condition, String profileName, int limit, int offset,\n+                                                  String sortBy, String sortOrder) throws UserStoreException {\n+\n+        String[] users = null;\n+        PaginatedSearchResult result = new PaginatedSearchResult();\n+        //Since we support only AND operation get expressions as a list.\n+        List<ExpressionCondition> expressionConditions = getExpressionConditions(condition);\n+        boolean[] filterCategory = getFilterCategory(expressionConditions);\n+        Object[] searchParameters = getSearchParameters(filterCategory, limit, offset);\n+        //memberPropertyFound[0] for 'memberOf' property found or not\n+        //memberPropertyFound[1] for 'member' property found or not\n+        boolean[] memberPropertyFound = (boolean[]) searchParameters[0];\n+        String searchBases = (String) searchParameters[1];\n+        SearchControls searchControls = (SearchControls) searchParameters[2];\n+        List<String> returnedAttributes = Arrays.asList(searchControls.getReturningAttributes());\n+        String searchFilter = searchFilterBuilder(filterCategory[0], expressionConditions,\n+                memberPropertyFound[0], memberPropertyFound[1]);\n+        DirContext dirContext = this.connectionSource.getContext();\n+        if (log.isDebugEnabled()) {\n+            try {\n+                log.debug(\"Searching for user(s) with SearchFilter: \" + searchFilter + \" in SearchBase: \" + dirContext.getNameInNamespace());\n+            } catch (NamingException e) {\n+                log.debug(\"Error while getting DN of search base\", e);\n+            }\n+            if (returnedAttributes == null) {\n+                log.debug(\"No attributes requested\");\n+            } else {\n+                for (String attribute : returnedAttributes) {\n+                    log.debug(\"Requesting attribute :\" + attribute);\n+                }\n+            }\n+        }\n+\n+        String[] searchBaseAraay = searchBases.split(\"#\");\n+        NamingEnumeration<SearchResult> answer = null;\n+        try {\n+            for (String searchBase : searchBaseAraay) {\n+                answer = dirContext.search(escapeDNForSearch(searchBase), searchFilter, searchControls);\n+                if (answer.hasMore() && filterCategory[0]) {//checking for Group filtering\n+                    users = getUserListFromGroupFilteringResult(answer, returnedAttributes).toArray(new String[0]);\n+                    if (filterCategory[0] && filterCategory[1]) { // group filter and username filter found\n+                        users = getMatchUsersFromMemberList(expressionConditions, Arrays.asList(users)).toArray(new String[0]);\n+                    }\n+                } else if (answer.hasMore()) {\n+                    users = getUserListFromNonGroupFilterResult(answer, returnedAttributes).toArray(new String[0]);\n+                }\n+            }\n+        } catch (PartialResultException e) {\n+            // can be due to referrals in AD. so just ignore error\n+            String errorMessage = \"Error occurred while searching for user(s) for filter: \" + searchFilter;\n+            if (isIgnorePartialResultException()) {\n+                if (log.isDebugEnabled()) {\n+                    log.debug(errorMessage, e);\n+                }\n+            } else {\n+                throw new UserStoreException(errorMessage, e);\n+            }\n+        } catch (NamingException e) {\n+            String errorMessage = \"Error occurred while searching for user(s) for filter: \" + searchFilter;\n+            if (log.isDebugEnabled()) {\n+                log.debug(errorMessage, e);\n+            }\n+            throw new UserStoreException(errorMessage, e);\n+        } finally {\n+            // close directory context, close naming enumeration and free up the resources.\n+            JNDIUtil.closeContext(dirContext);\n+            JNDIUtil.closeNamingEnumeration(answer);\n+        }\n+        result.setUsers(users);\n+        return result;\n+    }\n+\n+    private boolean[] getFilterCategory(List<ExpressionCondition> expressionConditions) {\n+        //isFilterings[0] for Group filter\n+        //isFilterings[1] for Username filter\n+        //isFilterings[2] for claim filter\n+        boolean[] isFilterings = {false, false, false};\n+        for (ExpressionCondition expressionCondition : expressionConditions) {\n+            if (ExpressionAttribute.ROLE.toString().equals(expressionCondition.getAttributeName())) {\n+                isFilterings[0] = true;\n+            } else if (ExpressionAttribute.USERNAME.toString().equals(expressionCondition.getAttributeName())) {\n+                isFilterings[1] = true;\n+            } else {\n+                isFilterings[2] = true;\n+            }\n+        }\n+        return isFilterings;\n+    }\n+\n+    private List<ExpressionCondition> getExpressionConditions(Condition condition) {\n+\n+        List<ExpressionCondition> expressionConditions = new ArrayList<>();\n+        getExpressionConditionsAsList(condition, expressionConditions);\n+        return expressionConditions;\n+    }\n+\n+    private void getExpressionConditionsAsList(Condition condition, List<ExpressionCondition> expressionConditions) {\n+\n+        if (condition instanceof ExpressionCondition) {\n+            expressionConditions.add((ExpressionCondition) condition);\n+        } else if (condition instanceof OperationalCondition) {\n+            Condition leftCondition = ((OperationalCondition) condition).getLeftCondition();\n+            getExpressionConditionsAsList(leftCondition, expressionConditions);\n+            Condition rightCondition = ((OperationalCondition) condition).getRightCondition();\n+            getExpressionConditionsAsList(rightCondition, expressionConditions);\n+        }\n+    }\n+\n+    private Object[] getSearchParameters(boolean[] filterCategory, int limit, int offset) throws UserStoreException {\n+        // ismemberPropertyFound[0] for memberOf attribute\n+        // ismemberPropertyFound[1] for member attribute\n+        boolean[] ismemberPropertyFound = {false, false};","path":"core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/ldap/ReadOnlyLDAPUserStoreManager.java","position":167,"original_position":167,"commit_id":"e2378c7f5d1a6304173de4c3aacac669f0f7768c","original_commit_id":"e2378c7f5d1a6304173de4c3aacac669f0f7768c","user":{"login":"thanujalk","id":1498339,"node_id":"MDQ6VXNlcjE0OTgzMzk=","avatar_url":"https://avatars1.githubusercontent.com/u/1498339?v=4","gravatar_id":"","url":"https://api.github.com/users/thanujalk","html_url":"https://github.com/thanujalk","followers_url":"https://api.github.com/users/thanujalk/followers","following_url":"https://api.github.com/users/thanujalk/following{/other_user}","gists_url":"https://api.github.com/users/thanujalk/gists{/gist_id}","starred_url":"https://api.github.com/users/thanujalk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thanujalk/subscriptions","organizations_url":"https://api.github.com/users/thanujalk/orgs","repos_url":"https://api.github.com/users/thanujalk/repos","events_url":"https://api.github.com/users/thanujalk/events{/privacy}","received_events_url":"https://api.github.com/users/thanujalk/received_events","type":"User","site_admin":false},"body":"Use camel case for variable name","created_at":"2018-07-16T03:12:43Z","updated_at":"2018-07-16T03:15:09Z","html_url":"https://github.com/wso2/carbon-kernel/pull/1817#discussion_r202566893","pull_request_url":"https://api.github.com/repos/wso2/carbon-kernel/pulls/1817","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/wso2/carbon-kernel/pulls/comments/202566893"},"html":{"href":"https://github.com/wso2/carbon-kernel/pull/1817#discussion_r202566893"},"pull_request":{"href":"https://api.github.com/repos/wso2/carbon-kernel/pulls/1817"}}},"pull_request":{"url":"https://api.github.com/repos/wso2/carbon-kernel/pulls/1817","id":201459043,"node_id":"MDExOlB1bGxSZXF1ZXN0MjAxNDU5MDQz","html_url":"https://github.com/wso2/carbon-kernel/pull/1817","diff_url":"https://github.com/wso2/carbon-kernel/pull/1817.diff","patch_url":"https://github.com/wso2/carbon-kernel/pull/1817.patch","issue_url":"https://api.github.com/repos/wso2/carbon-kernel/issues/1817","number":1817,"state":"open","locked":false,"title":"Introducing Logical Operator for SCIM2 Filters in WSO2 Identity Server","user":{"login":"sarubi","id":20983809,"node_id":"MDQ6VXNlcjIwOTgzODA5","avatar_url":"https://avatars0.githubusercontent.com/u/20983809?v=4","gravatar_id":"","url":"https://api.github.com/users/sarubi","html_url":"https://github.com/sarubi","followers_url":"https://api.github.com/users/sarubi/followers","following_url":"https://api.github.com/users/sarubi/following{/other_user}","gists_url":"https://api.github.com/users/sarubi/gists{/gist_id}","starred_url":"https://api.github.com/users/sarubi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarubi/subscriptions","organizations_url":"https://api.github.com/users/sarubi/orgs","repos_url":"https://api.github.com/users/sarubi/repos","events_url":"https://api.github.com/users/sarubi/events{/privacy}","received_events_url":"https://api.github.com/users/sarubi/received_events","type":"User","site_admin":false},"body":"## Purpose\r\nImprove the WSO2 Identity Server SCIM2 filters to support multi-attribute search filters with logical operations. \r\n\r\n## Goals\r\nIntroducing logical operators for SCIM2 filters in WSO2 Identity Server. Here we going to support 'AND' logical operator for following SCIM2 filters such as eq, sw, ew, co. The user can query user details using multi-attribute search filters.  \r\n\r\n## Approach\r\n> Describe how you are implementing the solutions. Include an animated GIF or screenshot if the change affects the UI (email documentation@wso2.com to review all UI text). Include a link to a Markdown file or Google doc if the feature write-up is too long to paste here.\r\n\r\n## User stories\r\n> Summary of user stories addressed by this change>\r\n\r\n## Release note\r\n> Brief description of the new feature or bug fix as it will appear in the release notes\r\n\r\n## Documentation\r\n[https://docs.google.com/document/d/1rsJgQ7g8dAJL0pW1biLe6iRXHbZKmJsTCEJncVHJ5hQ/edit?usp=sharing](url)\r\n\r\n## Training\r\n> Link to the PR for changes to the training content in https://github.com/wso2/WSO2-Training, if applicable\r\n\r\n## Certification\r\n> Type “Sent” when you have provided new/updated certification questions, plus four answers for each question (correct answer highlighted in bold), based on this change. Certification questions/answers should be sent to certification@wso2.com and NOT pasted in this PR. If there is no impact on certification exams, type “N/A” and explain why.\r\n\r\n## Marketing\r\n> Link to drafts of marketing content that will describe and promote this feature, including product page changes, technical articles, blog posts, videos, etc., if applicable\r\n\r\n## Automation tests\r\n - Unit tests \r\n   > Code coverage information\r\n - Integration tests\r\n   > Details about the test cases and coverage\r\n\r\n## Security checks\r\n - Followed secure coding standards in http://wso2.com/technical-reports/wso2-secure-engineering-guidelines? yes/no\r\n - Ran FindSecurityBugs plugin and verified report? yes/no\r\n - Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets? yes/no\r\n\r\n## Samples\r\n> Provide high-level details about the samples related to this feature\r\n\r\n## Related PRs\r\n> List any other related PRs\r\n\r\n## Migrations (if applicable)\r\n> Describe migration steps and platforms on which migration has been tested\r\n\r\n## Test environment\r\n> List all JDK versions, operating systems, databases, and browser/versions on which this feature/fix was tested\r\n \r\n## Learning\r\n> Describe the research phase and any blog posts, patterns, libraries, or add-ons you used to solve the problem.","created_at":"2018-07-14T16:36:38Z","updated_at":"2018-07-16T03:15:09Z","closed_at":null,"merged_at":null,"merge_commit_sha":"16c89a4db854f519beebe46ed8117d36fad85007","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/wso2/carbon-kernel/pulls/1817/commits","review_comments_url":"https://api.github.com/repos/wso2/carbon-kernel/pulls/1817/comments","review_comment_url":"https://api.github.com/repos/wso2/carbon-kernel/pulls/comments{/number}","comments_url":"https://api.github.com/repos/wso2/carbon-kernel/issues/1817/comments","statuses_url":"https://api.github.com/repos/wso2/carbon-kernel/statuses/e2378c7f5d1a6304173de4c3aacac669f0f7768c","head":{"label":"sarubi:4.4.x","ref":"4.4.x","sha":"e2378c7f5d1a6304173de4c3aacac669f0f7768c","user":{"login":"sarubi","id":20983809,"node_id":"MDQ6VXNlcjIwOTgzODA5","avatar_url":"https://avatars0.githubusercontent.com/u/20983809?v=4","gravatar_id":"","url":"https://api.github.com/users/sarubi","html_url":"https://github.com/sarubi","followers_url":"https://api.github.com/users/sarubi/followers","following_url":"https://api.github.com/users/sarubi/following{/other_user}","gists_url":"https://api.github.com/users/sarubi/gists{/gist_id}","starred_url":"https://api.github.com/users/sarubi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarubi/subscriptions","organizations_url":"https://api.github.com/users/sarubi/orgs","repos_url":"https://api.github.com/users/sarubi/repos","events_url":"https://api.github.com/users/sarubi/events{/privacy}","received_events_url":"https://api.github.com/users/sarubi/received_events","type":"User","site_admin":false},"repo":{"id":139711019,"node_id":"MDEwOlJlcG9zaXRvcnkxMzk3MTEwMTk=","name":"carbon-kernel","full_name":"sarubi/carbon-kernel","owner":{"login":"sarubi","id":20983809,"node_id":"MDQ6VXNlcjIwOTgzODA5","avatar_url":"https://avatars0.githubusercontent.com/u/20983809?v=4","gravatar_id":"","url":"https://api.github.com/users/sarubi","html_url":"https://github.com/sarubi","followers_url":"https://api.github.com/users/sarubi/followers","following_url":"https://api.github.com/users/sarubi/following{/other_user}","gists_url":"https://api.github.com/users/sarubi/gists{/gist_id}","starred_url":"https://api.github.com/users/sarubi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sarubi/subscriptions","organizations_url":"https://api.github.com/users/sarubi/orgs","repos_url":"https://api.github.com/users/sarubi/repos","events_url":"https://api.github.com/users/sarubi/events{/privacy}","received_events_url":"https://api.github.com/users/sarubi/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sarubi/carbon-kernel","description":null,"fork":true,"url":"https://api.github.com/repos/sarubi/carbon-kernel","forks_url":"https://api.github.com/repos/sarubi/carbon-kernel/forks","keys_url":"https://api.github.com/repos/sarubi/carbon-kernel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sarubi/carbon-kernel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sarubi/carbon-kernel/teams","hooks_url":"https://api.github.com/repos/sarubi/carbon-kernel/hooks","issue_events_url":"https://api.github.com/repos/sarubi/carbon-kernel/issues/events{/number}","events_url":"https://api.github.com/repos/sarubi/carbon-kernel/events","assignees_url":"https://api.github.com/repos/sarubi/carbon-kernel/assignees{/user}","branches_url":"https://api.github.com/repos/sarubi/carbon-kernel/branches{/branch}","tags_url":"https://api.github.com/repos/sarubi/carbon-kernel/tags","blobs_url":"https://api.github.com/repos/sarubi/carbon-kernel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sarubi/carbon-kernel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sarubi/carbon-kernel/git/refs{/sha}","trees_url":"https://api.github.com/repos/sarubi/carbon-kernel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sarubi/carbon-kernel/statuses/{sha}","languages_url":"https://api.github.com/repos/sarubi/carbon-kernel/languages","stargazers_url":"https://api.github.com/repos/sarubi/carbon-kernel/stargazers","contributors_url":"https://api.github.com/repos/sarubi/carbon-kernel/contributors","subscribers_url":"https://api.github.com/repos/sarubi/carbon-kernel/subscribers","subscription_url":"https://api.github.com/repos/sarubi/carbon-kernel/subscription","commits_url":"https://api.github.com/repos/sarubi/carbon-kernel/commits{/sha}","git_commits_url":"https://api.github.com/repos/sarubi/carbon-kernel/git/commits{/sha}","comments_url":"https://api.github.com/repos/sarubi/carbon-kernel/comments{/number}","issue_comment_url":"https://api.github.com/repos/sarubi/carbon-kernel/issues/comments{/number}","contents_url":"https://api.github.com/repos/sarubi/carbon-kernel/contents/{+path}","compare_url":"https://api.github.com/repos/sarubi/carbon-kernel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sarubi/carbon-kernel/merges","archive_url":"https://api.github.com/repos/sarubi/carbon-kernel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sarubi/carbon-kernel/downloads","issues_url":"https://api.github.com/repos/sarubi/carbon-kernel/issues{/number}","pulls_url":"https://api.github.com/repos/sarubi/carbon-kernel/pulls{/number}","milestones_url":"https://api.github.com/repos/sarubi/carbon-kernel/milestones{/number}","notifications_url":"https://api.github.com/repos/sarubi/carbon-kernel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sarubi/carbon-kernel/labels{/name}","releases_url":"https://api.github.com/repos/sarubi/carbon-kernel/releases{/id}","deployments_url":"https://api.github.com/repos/sarubi/carbon-kernel/deployments","created_at":"2018-07-04T11:08:32Z","updated_at":"2018-07-04T11:08:36Z","pushed_at":"2018-07-14T16:11:24Z","git_url":"git://github.com/sarubi/carbon-kernel.git","ssh_url":"git@github.com:sarubi/carbon-kernel.git","clone_url":"https://github.com/sarubi/carbon-kernel.git","svn_url":"https://github.com/sarubi/carbon-kernel","homepage":null,"size":48690,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"wso2:4.4.x","ref":"4.4.x","sha":"a0f24a1994773fa46b7314b7dd8926104a2c4924","user":{"login":"wso2","id":533043,"node_id":"MDEyOk9yZ2FuaXphdGlvbjUzMzA0Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/533043?v=4","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":16162184,"node_id":"MDEwOlJlcG9zaXRvcnkxNjE2MjE4NA==","name":"carbon-kernel","full_name":"wso2/carbon-kernel","owner":{"login":"wso2","id":533043,"node_id":"MDEyOk9yZ2FuaXphdGlvbjUzMzA0Mw==","avatar_url":"https://avatars3.githubusercontent.com/u/533043?v=4","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-kernel","description":null,"fork":false,"url":"https://api.github.com/repos/wso2/carbon-kernel","forks_url":"https://api.github.com/repos/wso2/carbon-kernel/forks","keys_url":"https://api.github.com/repos/wso2/carbon-kernel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wso2/carbon-kernel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wso2/carbon-kernel/teams","hooks_url":"https://api.github.com/repos/wso2/carbon-kernel/hooks","issue_events_url":"https://api.github.com/repos/wso2/carbon-kernel/issues/events{/number}","events_url":"https://api.github.com/repos/wso2/carbon-kernel/events","assignees_url":"https://api.github.com/repos/wso2/carbon-kernel/assignees{/user}","branches_url":"https://api.github.com/repos/wso2/carbon-kernel/branches{/branch}","tags_url":"https://api.github.com/repos/wso2/carbon-kernel/tags","blobs_url":"https://api.github.com/repos/wso2/carbon-kernel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wso2/carbon-kernel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wso2/carbon-kernel/git/refs{/sha}","trees_url":"https://api.github.com/repos/wso2/carbon-kernel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wso2/carbon-kernel/statuses/{sha}","languages_url":"https://api.github.com/repos/wso2/carbon-kernel/languages","stargazers_url":"https://api.github.com/repos/wso2/carbon-kernel/stargazers","contributors_url":"https://api.github.com/repos/wso2/carbon-kernel/contributors","subscribers_url":"https://api.github.com/repos/wso2/carbon-kernel/subscribers","subscription_url":"https://api.github.com/repos/wso2/carbon-kernel/subscription","commits_url":"https://api.github.com/repos/wso2/carbon-kernel/commits{/sha}","git_commits_url":"https://api.github.com/repos/wso2/carbon-kernel/git/commits{/sha}","comments_url":"https://api.github.com/repos/wso2/carbon-kernel/comments{/number}","issue_comment_url":"https://api.github.com/repos/wso2/carbon-kernel/issues/comments{/number}","contents_url":"https://api.github.com/repos/wso2/carbon-kernel/contents/{+path}","compare_url":"https://api.github.com/repos/wso2/carbon-kernel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wso2/carbon-kernel/merges","archive_url":"https://api.github.com/repos/wso2/carbon-kernel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wso2/carbon-kernel/downloads","issues_url":"https://api.github.com/repos/wso2/carbon-kernel/issues{/number}","pulls_url":"https://api.github.com/repos/wso2/carbon-kernel/pulls{/number}","milestones_url":"https://api.github.com/repos/wso2/carbon-kernel/milestones{/number}","notifications_url":"https://api.github.com/repos/wso2/carbon-kernel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wso2/carbon-kernel/labels{/name}","releases_url":"https://api.github.com/repos/wso2/carbon-kernel/releases{/id}","deployments_url":"https://api.github.com/repos/wso2/carbon-kernel/deployments","created_at":"2014-01-23T04:23:41Z","updated_at":"2018-05-31T15:28:45Z","pushed_at":"2018-07-14T16:36:39Z","git_url":"git://github.com/wso2/carbon-kernel.git","ssh_url":"git@github.com:wso2/carbon-kernel.git","clone_url":"https://github.com/wso2/carbon-kernel.git","svn_url":"https://github.com/wso2/carbon-kernel","homepage":null,"size":48735,"stargazers_count":53,"watchers_count":53,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":395,"mirror_url":null,"archived":false,"open_issues_count":75,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":395,"open_issues":75,"watchers":53,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/wso2/carbon-kernel/pulls/1817"},"html":{"href":"https://github.com/wso2/carbon-kernel/pull/1817"},"issue":{"href":"https://api.github.com/repos/wso2/carbon-kernel/issues/1817"},"comments":{"href":"https://api.github.com/repos/wso2/carbon-kernel/issues/1817/comments"},"review_comments":{"href":"https://api.github.com/repos/wso2/carbon-kernel/pulls/1817/comments"},"review_comment":{"href":"https://api.github.com/repos/wso2/carbon-kernel/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/wso2/carbon-kernel/pulls/1817/commits"},"statuses":{"href":"https://api.github.com/repos/wso2/carbon-kernel/statuses/e2378c7f5d1a6304173de4c3aacac669f0f7768c"}},"author_association":"NONE"}}
{"actor":{"display_login":"thanujalk"}}