{"action":"created","comment":{"url":"https://api.github.com/repos/apache/incubator-dubbo/pulls/comments/209409417","pull_request_review_id":145428184,"id":209409417,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwOTQwOTQxNw==","diff_hunk":"@@ -169,87 +169,127 @@ public URL(String protocol, String username, String password, String host, int p\n         this.parameters = Collections.unmodifiableMap(parameters);\r\n     }\r\n \r\n-    /**\r\n-     * Parse url string\r\n-     *\r\n-     * @param url URL string\r\n-     * @return URL instance\r\n-     * @see URL\r\n-     */\r\n-    public static URL valueOf(String url) {\r\n-        if (url == null || (url = url.trim()).length() == 0) {\r\n-            throw new IllegalArgumentException(\"url == null\");\r\n-        }\r\n+\r\n+    private static class URLParser{\r\n+        String url = null;\r\n         String protocol = null;\r\n         String username = null;\r\n         String password = null;\r\n         String host = null;\r\n         int port = 0;\r\n         String path = null;\r\n         Map<String, String> parameters = null;\r\n-        int i = url.indexOf(\"?\"); // seperator between body and parameters \r\n-        if (i >= 0) {\r\n-            String[] parts = url.substring(i + 1).split(\"\\\\&\");\r\n-            parameters = new HashMap<String, String>();\r\n-            for (String part : parts) {\r\n-                part = part.trim();\r\n-                if (part.length() > 0) {\r\n-                    int j = part.indexOf('=');\r\n-                    if (j >= 0) {\r\n-                        parameters.put(part.substring(0, j), part.substring(j + 1));\r\n-                    } else {\r\n-                        parameters.put(part, part);\r\n+\r\n+        public URLParser(String url) {\r\n+            this.url = url;\r\n+            this.parse();\r\n+        }\r\n+\r\n+        private void parseParameters(){\r\n+            int i = url.indexOf(\"?\"); // separator between body and parameters\r\n+            if (i >= 0) {\r\n+                String[] parts = url.substring(i + 1).split(\"\\\\&\");\r\n+                Map<String, String> parameters = new HashMap<String, String>();\r\n+                for (String part : parts) {\r\n+                    part = part.trim();\r\n+                    if (part.length() > 0) {\r\n+                        int j = part.indexOf('=');\r\n+                        if (j >= 0) {\r\n+                            parameters.put(part.substring(0, j), part.substring(j + 1));\r\n+                        } else {\r\n+                            parameters.put(part, part);\r\n+                        }\r\n                     }\r\n                 }\r\n+                url = url.substring(0, i);\r\n+                this.parameters = parameters;\r\n             }\r\n-            url = url.substring(0, i);\r\n         }\r\n-        i = url.indexOf(\"://\");\r\n-        if (i >= 0) {\r\n-            if (i == 0) throw new IllegalStateException(\"url missing protocol: \\\"\" + url + \"\\\"\");\r\n-            protocol = url.substring(0, i);\r\n-            url = url.substring(i + 3);\r\n-        } else {\r\n-            // case: file:/path/to/file.txt\r\n-            i = url.indexOf(\":/\");\r\n+\r\n+        private void parseProtocol(){\r\n+            int i = url.indexOf(\"://\");\r\n             if (i >= 0) {\r\n                 if (i == 0) throw new IllegalStateException(\"url missing protocol: \\\"\" + url + \"\\\"\");\r\n                 protocol = url.substring(0, i);\r\n-                url = url.substring(i + 1);\r\n+                url = url.substring(i + 3);\r\n+            } else {\r\n+                // case: file:/path/to/file.txt\r\n+                i = url.indexOf(\":/\");\r\n+                if (i >= 0) {\r\n+                    if (i == 0) throw new IllegalStateException(\"url missing protocol: \\\"\" + url + \"\\\"\");\r\n+                    protocol = url.substring(0, i);\r\n+                    url = url.substring(i + 1);\r\n+                }\r\n             }\r\n         }\r\n \r\n-        i = url.indexOf(\"/\");\r\n-        if (i >= 0) {\r\n-            path = url.substring(i + 1);\r\n-            url = url.substring(0, i);\r\n-        }\r\n-        i = url.lastIndexOf(\"@\");\r\n-        if (i >= 0) {\r\n-            username = url.substring(0, i);\r\n-            int j = username.indexOf(\":\");\r\n-            if (j >= 0) {\r\n-                password = username.substring(j + 1);\r\n-                username = username.substring(0, j);\r\n-            }\r\n-            url = url.substring(i + 1);\r\n-        }\r\n-        i = url.lastIndexOf(\":\");\r\n-        if (i >= 0 && i < url.length() - 1) {\r\n-            if (url.lastIndexOf(\"%\") > i) {\r\n-                // ipv6 address with scope id\r\n-                // e.g. fe80:0:0:0:894:aeec:f37d:23e1%en0\r\n-                // see https://howdoesinternetwork.com/2013/ipv6-zone-id\r\n-                // ignore\r\n-            } else {\r\n-                port = Integer.parseInt(url.substring(i+1));\r\n+        private void parseUsernameAndPassword(){\r\n+            int i = url.indexOf(\"/\");\r\n+            if (i >= 0) {\r\n+                path = url.substring(i + 1);\r\n                 url = url.substring(0, i);\r\n             }\r\n+            i = url.lastIndexOf(\"@\");\r\n+            if (i >= 0) {\r\n+                username = url.substring(0, i);\r\n+                int j = username.indexOf(\":\");\r\n+                if (j >= 0) {\r\n+                    password = username.substring(j + 1);\r\n+                    username = username.substring(0, j);\r\n+                }\r\n+                url = url.substring(i + 1);\r\n+            }\r\n+        }\r\n+\r\n+        private void parsePort(){\r\n+            int i = url.lastIndexOf(\":\");\r\n+            if (i >= 0 && i < url.length() - 1) {\r\n+                if (url.lastIndexOf(\"%\") > i) {\r\n+                    // ipv6 address with scope id\r\n+                    // e.g. fe80:0:0:0:894:aeec:f37d:23e1%en0\r\n+                    // see https://howdoesinternetwork.com/2013/ipv6-zone-id\r\n+                    // ignore\r\n+                } else {\r\n+                    port = Integer.parseInt(url.substring(i+1));\r\n+                    url = url.substring(0, i);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        private void parseHost(){\r\n+            if (url.length() > 0) host = url;\r\n+        }\r\n+\r\n+        private void parse(){\r\n+            this.parseParameters();\r\n+            this.parseProtocol();\r\n+            this.parseUsernameAndPassword();\r\n+            this.parsePort();\r\n+            this.parseHost();\r\n+        }\r\n+\r\n+        private URL build(){\r\n+            return new URL(protocol, username, password, host, port, path, parameters);\r\n         }\r\n-        if (url.length() > 0) host = url;\r\n-        return new URL(protocol, username, password, host, port, path, parameters);\r\n     }\r\n \r\n+\r\n+\r\n+    /**\r\n+     * Parse url string\r\n+     *\r\n+     * @param url URL string\r\n+     * @return URL instance\r\n+     * @see URL\r\n+     */\r\n+    public static URL valueOf(String url) {\r\n+        if (url == null || (url = url.trim()).length() == 0) {\r\n+            throw new IllegalArgumentException(\"url == null\");\r","path":"dubbo-common/src/main/java/org/apache/dubbo/common/URL.java","position":178,"original_position":178,"commit_id":"a282d66fe5ceab2229124a014149247df6fff56f","original_commit_id":"a282d66fe5ceab2229124a014149247df6fff56f","user":{"login":"lllichen","id":11263332,"node_id":"MDQ6VXNlcjExMjYzMzMy","avatar_url":"https://avatars0.githubusercontent.com/u/11263332?v=4","gravatar_id":"","url":"https://api.github.com/users/lllichen","html_url":"https://github.com/lllichen","followers_url":"https://api.github.com/users/lllichen/followers","following_url":"https://api.github.com/users/lllichen/following{/other_user}","gists_url":"https://api.github.com/users/lllichen/gists{/gist_id}","starred_url":"https://api.github.com/users/lllichen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lllichen/subscriptions","organizations_url":"https://api.github.com/users/lllichen/orgs","repos_url":"https://api.github.com/users/lllichen/repos","events_url":"https://api.github.com/users/lllichen/events{/privacy}","received_events_url":"https://api.github.com/users/lllichen/received_events","type":"User","site_admin":false},"body":"got it","created_at":"2018-08-11T00:13:13Z","updated_at":"2018-08-11T00:13:13Z","html_url":"https://github.com/apache/incubator-dubbo/pull/2221#discussion_r209409417","pull_request_url":"https://api.github.com/repos/apache/incubator-dubbo/pulls/2221","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-dubbo/pulls/comments/209409417"},"html":{"href":"https://github.com/apache/incubator-dubbo/pull/2221#discussion_r209409417"},"pull_request":{"href":"https://api.github.com/repos/apache/incubator-dubbo/pulls/2221"}},"in_reply_to_id":209271069},"pull_request":{"url":"https://api.github.com/repos/apache/incubator-dubbo/pulls/2221","id":207239331,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA3MjM5MzMx","html_url":"https://github.com/apache/incubator-dubbo/pull/2221","diff_url":"https://github.com/apache/incubator-dubbo/pull/2221.diff","patch_url":"https://github.com/apache/incubator-dubbo/pull/2221.patch","issue_url":"https://api.github.com/repos/apache/incubator-dubbo/issues/2221","number":2221,"state":"open","locked":false,"title":"optimize code for more understandable","user":{"login":"lllichen","id":11263332,"node_id":"MDQ6VXNlcjExMjYzMzMy","avatar_url":"https://avatars0.githubusercontent.com/u/11263332?v=4","gravatar_id":"","url":"https://api.github.com/users/lllichen","html_url":"https://github.com/lllichen","followers_url":"https://api.github.com/users/lllichen/followers","following_url":"https://api.github.com/users/lllichen/following{/other_user}","gists_url":"https://api.github.com/users/lllichen/gists{/gist_id}","starred_url":"https://api.github.com/users/lllichen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lllichen/subscriptions","organizations_url":"https://api.github.com/users/lllichen/orgs","repos_url":"https://api.github.com/users/lllichen/repos","events_url":"https://api.github.com/users/lllichen/events{/privacy}","received_events_url":"https://api.github.com/users/lllichen/received_events","type":"User","site_admin":false},"body":"## What is the purpose of the change\r\n\r\noptimize code for more understandable\r\n\r\n## Brief changelog\r\n\r\nadd inner class for url parse\r\n\r\n## Verifying this change\r\n\r\nXXXXX\r\n\r\nFollow this checklist to help us incorporate your contribution quickly and easily:\r\n\r\n- [x] Make sure there is a [GITHUB_issue](https://github.com/apache/incubator-dubbo/issues) filed for the change (usually before you start working on it). Trivial changes like typos do not require a GITHUB issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.\r\n- [ ] Format the pull request title like `[Dubbo-XXX] Fix UnknownException when host config not exist #XXX`. Each commit in the pull request should have a meaningful subject line and body.\r\n- [x] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.\r\n- [x] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add integration-test in [test module](https://github.com/apache/incubator-dubbo/tree/master/dubbo-test).\r\n- [x] Run `mvn clean install -DskipTests` & `mvn clean test-compile failsafe:integration-test` to make sure unit-test and integration-test pass.\r\n- [x] If this contribution is large, please follow the [Software Donation Guide](https://github.com/apache/incubator-dubbo/wiki/Software-donation-guide).\r\n","created_at":"2018-08-09T08:33:43Z","updated_at":"2018-08-11T00:13:13Z","closed_at":null,"merged_at":null,"merge_commit_sha":"737751ef7a5c873fde5e6da999adc5a0029cea7c","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/apache/incubator-dubbo/pulls/2221/commits","review_comments_url":"https://api.github.com/repos/apache/incubator-dubbo/pulls/2221/comments","review_comment_url":"https://api.github.com/repos/apache/incubator-dubbo/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apache/incubator-dubbo/issues/2221/comments","statuses_url":"https://api.github.com/repos/apache/incubator-dubbo/statuses/a282d66fe5ceab2229124a014149247df6fff56f","head":{"label":"lllichen:fixCode","ref":"fixCode","sha":"a282d66fe5ceab2229124a014149247df6fff56f","user":{"login":"lllichen","id":11263332,"node_id":"MDQ6VXNlcjExMjYzMzMy","avatar_url":"https://avatars0.githubusercontent.com/u/11263332?v=4","gravatar_id":"","url":"https://api.github.com/users/lllichen","html_url":"https://github.com/lllichen","followers_url":"https://api.github.com/users/lllichen/followers","following_url":"https://api.github.com/users/lllichen/following{/other_user}","gists_url":"https://api.github.com/users/lllichen/gists{/gist_id}","starred_url":"https://api.github.com/users/lllichen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lllichen/subscriptions","organizations_url":"https://api.github.com/users/lllichen/orgs","repos_url":"https://api.github.com/users/lllichen/repos","events_url":"https://api.github.com/users/lllichen/events{/privacy}","received_events_url":"https://api.github.com/users/lllichen/received_events","type":"User","site_admin":false},"repo":{"id":101048239,"node_id":"MDEwOlJlcG9zaXRvcnkxMDEwNDgyMzk=","name":"dubbo","full_name":"lllichen/dubbo","owner":{"login":"lllichen","id":11263332,"node_id":"MDQ6VXNlcjExMjYzMzMy","avatar_url":"https://avatars0.githubusercontent.com/u/11263332?v=4","gravatar_id":"","url":"https://api.github.com/users/lllichen","html_url":"https://github.com/lllichen","followers_url":"https://api.github.com/users/lllichen/followers","following_url":"https://api.github.com/users/lllichen/following{/other_user}","gists_url":"https://api.github.com/users/lllichen/gists{/gist_id}","starred_url":"https://api.github.com/users/lllichen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lllichen/subscriptions","organizations_url":"https://api.github.com/users/lllichen/orgs","repos_url":"https://api.github.com/users/lllichen/repos","events_url":"https://api.github.com/users/lllichen/events{/privacy}","received_events_url":"https://api.github.com/users/lllichen/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lllichen/dubbo","description":":loudspeaker: Dubbo is a distributed, high performance RPC framework empowering applications with service import/export capabilities.","fork":true,"url":"https://api.github.com/repos/lllichen/dubbo","forks_url":"https://api.github.com/repos/lllichen/dubbo/forks","keys_url":"https://api.github.com/repos/lllichen/dubbo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lllichen/dubbo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lllichen/dubbo/teams","hooks_url":"https://api.github.com/repos/lllichen/dubbo/hooks","issue_events_url":"https://api.github.com/repos/lllichen/dubbo/issues/events{/number}","events_url":"https://api.github.com/repos/lllichen/dubbo/events","assignees_url":"https://api.github.com/repos/lllichen/dubbo/assignees{/user}","branches_url":"https://api.github.com/repos/lllichen/dubbo/branches{/branch}","tags_url":"https://api.github.com/repos/lllichen/dubbo/tags","blobs_url":"https://api.github.com/repos/lllichen/dubbo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lllichen/dubbo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lllichen/dubbo/git/refs{/sha}","trees_url":"https://api.github.com/repos/lllichen/dubbo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lllichen/dubbo/statuses/{sha}","languages_url":"https://api.github.com/repos/lllichen/dubbo/languages","stargazers_url":"https://api.github.com/repos/lllichen/dubbo/stargazers","contributors_url":"https://api.github.com/repos/lllichen/dubbo/contributors","subscribers_url":"https://api.github.com/repos/lllichen/dubbo/subscribers","subscription_url":"https://api.github.com/repos/lllichen/dubbo/subscription","commits_url":"https://api.github.com/repos/lllichen/dubbo/commits{/sha}","git_commits_url":"https://api.github.com/repos/lllichen/dubbo/git/commits{/sha}","comments_url":"https://api.github.com/repos/lllichen/dubbo/comments{/number}","issue_comment_url":"https://api.github.com/repos/lllichen/dubbo/issues/comments{/number}","contents_url":"https://api.github.com/repos/lllichen/dubbo/contents/{+path}","compare_url":"https://api.github.com/repos/lllichen/dubbo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lllichen/dubbo/merges","archive_url":"https://api.github.com/repos/lllichen/dubbo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lllichen/dubbo/downloads","issues_url":"https://api.github.com/repos/lllichen/dubbo/issues{/number}","pulls_url":"https://api.github.com/repos/lllichen/dubbo/pulls{/number}","milestones_url":"https://api.github.com/repos/lllichen/dubbo/milestones{/number}","notifications_url":"https://api.github.com/repos/lllichen/dubbo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lllichen/dubbo/labels{/name}","releases_url":"https://api.github.com/repos/lllichen/dubbo/releases{/id}","deployments_url":"https://api.github.com/repos/lllichen/dubbo/deployments","created_at":"2017-08-22T09:52:19Z","updated_at":"2018-08-10T08:12:33Z","pushed_at":"2018-08-10T08:12:21Z","git_url":"git://github.com/lllichen/dubbo.git","ssh_url":"git@github.com:lllichen/dubbo.git","clone_url":"https://github.com/lllichen/dubbo.git","svn_url":"https://github.com/lllichen/dubbo","homepage":"http://dubbo.io","size":11522,"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":"apache:master","ref":"master","sha":"895a4dd690f8190a972e9d4ae370bf5b1c8700c7","user":{"login":"apache","id":47359,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ3MzU5","avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"repo":{"id":4710920,"node_id":"MDEwOlJlcG9zaXRvcnk0NzEwOTIw","name":"incubator-dubbo","full_name":"apache/incubator-dubbo","owner":{"login":"apache","id":47359,"node_id":"MDEyOk9yZ2FuaXphdGlvbjQ3MzU5","avatar_url":"https://avatars0.githubusercontent.com/u/47359?v=4","gravatar_id":"","url":"https://api.github.com/users/apache","html_url":"https://github.com/apache","followers_url":"https://api.github.com/users/apache/followers","following_url":"https://api.github.com/users/apache/following{/other_user}","gists_url":"https://api.github.com/users/apache/gists{/gist_id}","starred_url":"https://api.github.com/users/apache/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apache/subscriptions","organizations_url":"https://api.github.com/users/apache/orgs","repos_url":"https://api.github.com/users/apache/repos","events_url":"https://api.github.com/users/apache/events{/privacy}","received_events_url":"https://api.github.com/users/apache/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apache/incubator-dubbo","description":"Apache Dubbo (incubating) is a high-performance, java based, open source RPC framework.","fork":false,"url":"https://api.github.com/repos/apache/incubator-dubbo","forks_url":"https://api.github.com/repos/apache/incubator-dubbo/forks","keys_url":"https://api.github.com/repos/apache/incubator-dubbo/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apache/incubator-dubbo/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apache/incubator-dubbo/teams","hooks_url":"https://api.github.com/repos/apache/incubator-dubbo/hooks","issue_events_url":"https://api.github.com/repos/apache/incubator-dubbo/issues/events{/number}","events_url":"https://api.github.com/repos/apache/incubator-dubbo/events","assignees_url":"https://api.github.com/repos/apache/incubator-dubbo/assignees{/user}","branches_url":"https://api.github.com/repos/apache/incubator-dubbo/branches{/branch}","tags_url":"https://api.github.com/repos/apache/incubator-dubbo/tags","blobs_url":"https://api.github.com/repos/apache/incubator-dubbo/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apache/incubator-dubbo/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apache/incubator-dubbo/git/refs{/sha}","trees_url":"https://api.github.com/repos/apache/incubator-dubbo/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apache/incubator-dubbo/statuses/{sha}","languages_url":"https://api.github.com/repos/apache/incubator-dubbo/languages","stargazers_url":"https://api.github.com/repos/apache/incubator-dubbo/stargazers","contributors_url":"https://api.github.com/repos/apache/incubator-dubbo/contributors","subscribers_url":"https://api.github.com/repos/apache/incubator-dubbo/subscribers","subscription_url":"https://api.github.com/repos/apache/incubator-dubbo/subscription","commits_url":"https://api.github.com/repos/apache/incubator-dubbo/commits{/sha}","git_commits_url":"https://api.github.com/repos/apache/incubator-dubbo/git/commits{/sha}","comments_url":"https://api.github.com/repos/apache/incubator-dubbo/comments{/number}","issue_comment_url":"https://api.github.com/repos/apache/incubator-dubbo/issues/comments{/number}","contents_url":"https://api.github.com/repos/apache/incubator-dubbo/contents/{+path}","compare_url":"https://api.github.com/repos/apache/incubator-dubbo/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apache/incubator-dubbo/merges","archive_url":"https://api.github.com/repos/apache/incubator-dubbo/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apache/incubator-dubbo/downloads","issues_url":"https://api.github.com/repos/apache/incubator-dubbo/issues{/number}","pulls_url":"https://api.github.com/repos/apache/incubator-dubbo/pulls{/number}","milestones_url":"https://api.github.com/repos/apache/incubator-dubbo/milestones{/number}","notifications_url":"https://api.github.com/repos/apache/incubator-dubbo/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apache/incubator-dubbo/labels{/name}","releases_url":"https://api.github.com/repos/apache/incubator-dubbo/releases{/id}","deployments_url":"https://api.github.com/repos/apache/incubator-dubbo/deployments","created_at":"2012-06-19T07:56:02Z","updated_at":"2018-08-10T13:11:03Z","pushed_at":"2018-08-10T09:24:34Z","git_url":"git://github.com/apache/incubator-dubbo.git","ssh_url":"git@github.com:apache/incubator-dubbo.git","clone_url":"https://github.com/apache/incubator-dubbo.git","svn_url":"https://github.com/apache/incubator-dubbo","homepage":"http://dubbo.incubator.apache.org","size":11584,"stargazers_count":20771,"watchers_count":20771,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":14317,"mirror_url":null,"archived":false,"open_issues_count":290,"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":14317,"open_issues":290,"watchers":20771,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apache/incubator-dubbo/pulls/2221"},"html":{"href":"https://github.com/apache/incubator-dubbo/pull/2221"},"issue":{"href":"https://api.github.com/repos/apache/incubator-dubbo/issues/2221"},"comments":{"href":"https://api.github.com/repos/apache/incubator-dubbo/issues/2221/comments"},"review_comments":{"href":"https://api.github.com/repos/apache/incubator-dubbo/pulls/2221/comments"},"review_comment":{"href":"https://api.github.com/repos/apache/incubator-dubbo/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apache/incubator-dubbo/pulls/2221/commits"},"statuses":{"href":"https://api.github.com/repos/apache/incubator-dubbo/statuses/a282d66fe5ceab2229124a014149247df6fff56f"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"lllichen"}}