{"action":"created","comment":{"url":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/comments/25304873","id":25304873,"diff_hunk":"@@ -19,500 +21,147 @@\n  * better understand and modify the underlying server.\r\n  */\r\n class MethodWrapper {\r\n-  private static final String LANG_PATH = \"java.lang.\";\r\n-\r\n-  private String methodPath;\r\n-  private Method method;\r\n-\r\n-\r\n-  /**\r\n-   * Create a MethodWrapper.\r\n-   *\r\n-   * Paths should come in <code>/relative/path/to/match</code>. To use a\r\n-   * variable in a path, it should come in\r\n-   * <code>/path/with/{VariableType}</code> form, where VariableType is a\r\n-   * class inside of the `java.lang` package, and has a constructor that takes\r\n-   * in a String. A better explaination is in {@link HTTPHandler#addGET}\r\n-   *\r\n-   * @param path          Path the be matched for this method to be used.\r\n-   * @param methodName    Name of the method to be called.\r\n-   * @param callingClass  Class the method belongs to.\r\n-   *\r\n-   * @throws HTTPException  If there is no callingClass.methodName method. If\r\n-   *                        the wrong number of variable parameters are used in\r\n-   *                        the path. If the variable parameters are in the\r\n-   *                        wrong order in the path.\r\n-   *\r\n-   * @see HTTPHandler#addGET\r\n-   */\r\n-  public MethodWrapper(String path, String methodName, \r\n-            Class<? extends HTTPHandler> callingClass) throws HTTPException {\r\n-    List<Method> potentialMethods = \r\n-        MethodWrapper.getMethodsByName(callingClass, methodName);\r\n- \r\n-    if (potentialMethods.size() == 0) {\r\n-      throw new HTTPException(\"No methods with the name `\" + methodName + \"` in \"\r\n-        + callingClass.getName());\r\n-    }\r\n-     \r\n-    path = cleanPath(path);\r\n-    \r\n-    try {\r\n-      // Get a list of the parameter types\r\n-      List<Class<? extends Object>> parameterTypes = new ArrayList<>();\r\n-      boolean isVargs = false;\r\n-      \r\n-      // all requests must have an HTTPResponse\r\n-      //parameterTypes.add(HTTPResponse.class);\r\n-      \r\n-      String[] paths = path.split(\"/\");\r\n-      StringBuilder pathBuilder = new StringBuilder();\r\n-\r\n-      /*  Recreate the path.\r\n-          This is done so that a path may include or exclude a `/` at the end\r\n-          of it. It also makes sure that non-dynamic parts of the path are\r\n-          lower case'd.\r\n-       */\r\n-      for (int i = 0; i < paths.length; i++) {\r\n-        /*  if, for some reason, there's something like a `//` in the path,\r\n-            or if it's the first one (because of the proceeding /), part is\r\n-            empty, which means we have nothing to do here.\r\n-         */\r\n-        if (paths[i].isEmpty()) {\r\n-          continue;\r\n-        }\r\n-\r\n-        if (isDynamic(paths[i])) {\r\n-          String paramClass = null;\r\n-\r\n-          if(!isArray(paths[i])) {\r\n-            paramClass = LANG_PATH + getParamType(paths[i]);\r\n-          }\r\n-          // If we have an array, we have to handle it slightly different.\r\n-          else {\r\n-            // Make sure they are not trying to add an array in the middle of\r\n-            // the parameter's list.\r\n-            if(i != paths.length - 1)\r\n-              throw new HTTPException(\"An array must be the last parameter.\");\r\n-\r\n-            isVargs = true;\r\n-            \r\n-            String arrayType = LANG_PATH + getParamType(paths[i].substring(0, paths[i].indexOf('.')) + \"}\");\r\n-\r\n-            // This is how an array is represented in reflection.\r\n-            paramClass = \"[L\" + arrayType + \";\";\r\n-          }\r\n-\r\n-          parameterTypes.add(Class.forName(paramClass));        \r\n-        }\r\n-        else {\r\n-          paths[i].toLowerCase();\r\n-        }\r\n-\r\n-        pathBuilder.append('/');\r\n-        pathBuilder.append(paths[i]);\r\n-      }\r\n-\r\n+    private static final String LANG_PATH = \"java.lang.\";\r\n+\r\n+    private List<String> routePath = new ArrayList<>();\r\n+    private Route route;\r\n+    private boolean usesVarargs = false;\r\n+\r\n+    /**\r\n+     * Create a MethodWrapper.\r\n+     *\r\n+     * Paths should come in <code>/relative/path/to/match</code>. To use a\r\n+     * variable in a path, it should come in\r\n+     * <code>/path/with/{VariableType}</code> form, where VariableType is a\r\n+     * class inside of the `java.lang` package, and has a constructor that takes\r\n+     * in a String. A better explaination is in {@link HTTPHandler#addGET}\r\n+     *\r\n+     * @param path          Path the be matched for this method to be used.\r\n+     * @param route         Route, with the `handle` method to be called.\r\n+     *\r\n+     * @throws HTTPException   If the passed in path is invalid.\r\n+     * @see HTTPHandler#addGET\r\n+     */\r\n+    public MethodWrapper(String path, Route route) throws HTTPException {\r\n+        String[] paths = cleanPath(path).split(\"/\");\r\n+\r\n+        for (int i = 0; i < paths.length; i++) {\r\n+            if (paths[i].isEmpty()) {\r\n+                continue;\r\n+            }\r\n \r\n-      methodPath = pathBuilder.toString();\r\n-      methodPath = cleanPath(methodPath);\r\n-      //System.out.println(\"path: \" + path + \"\\nmethodPath: \" + methodPath);\r\n-      \r\n-      // find our method\r\n-      outer:\r\n-      for (Method m : new ArrayList<Method>(potentialMethods)) {\r\n-        // if our method needs vargs, make sure this one does\r\n-        if (isVargs && !m.isVarArgs()) {\r\n-          potentialMethods.remove(m);\r\n-          continue;\r\n-        }\r\n-        \r\n-        // determine if this method takes all parameters of this path\r\n-        Class<? extends Object>[] reqParams = m.getParameterTypes();\r\n-        \r\n-        // does it have enough parameters?\r\n-        if (reqParams.length < parameterTypes.size() + 1 || \r\n-            reqParams.length > parameterTypes.size() + 3) {\r\n-          potentialMethods.remove(m);\r\n-          continue;\r\n-        }\r\n-        \r\n-        // going backwards, make sure all parameters match\r\n-        for (int i = 1; i <= parameterTypes.size(); i++) {\r\n-          // i goes up because inParams and parameterTypes will have different\r\n-          // lengths.\r\n-          \r\n-          Class<? extends Object> inClass = parameterTypes.get(parameterTypes.size() - i);\r\n-          Class<? extends Object> reqClass = reqParams[reqParams.length - i];\r\n-          \r\n-          if (!inClass.equals(reqClass)) {\r\n-            potentialMethods.remove(m);\r\n-            continue outer;\r\n-          }\r\n-        }\r\n-        \r\n-        if (reqParams.length > parameterTypes.size() + 1) {\r\n-          // is second param HTTPRequest?\r\n-          if (reqParams[1].equals(HTTPRequest.class)) {\r\n-            if (reqParams.length == parameterTypes.size() + 3 &&\r\n-                !reqParams[2].equals(Map.class)) {\r\n-              potentialMethods.remove(m);\r\n-              continue;\r\n+            routePath.add(paths[i]);\r\n+            if (paths[i].equals(\"{*}\")) {\r\n+                // confirm this is the last segment\r\n+                if (i != paths.length - 1) {\r\n+                    while (++i < paths.length && paths[i].isEmpty());\r\n+                    if (i != paths.length - 1) {\r\n+                        throw new HTTPException(\"{*} must be the final section of your path!\");\r","path":"src/main/java/httpserver/MethodWrapper.java","position":198,"original_position":198,"commit_id":"65c25cfb9b80c093ad865665159259554eb96c25","original_commit_id":"65c25cfb9b80c093ad865665159259554eb96c25","user":{"login":"dkuntz2","id":403961,"avatar_url":"https://avatars.githubusercontent.com/u/403961?v=3","gravatar_id":"","url":"https://api.github.com/users/dkuntz2","html_url":"https://github.com/dkuntz2","followers_url":"https://api.github.com/users/dkuntz2/followers","following_url":"https://api.github.com/users/dkuntz2/following{/other_user}","gists_url":"https://api.github.com/users/dkuntz2/gists{/gist_id}","starred_url":"https://api.github.com/users/dkuntz2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dkuntz2/subscriptions","organizations_url":"https://api.github.com/users/dkuntz2/orgs","repos_url":"https://api.github.com/users/dkuntz2/repos","events_url":"https://api.github.com/users/dkuntz2/events{/privacy}","received_events_url":"https://api.github.com/users/dkuntz2/received_events","type":"User","site_admin":false},"body":"Confirm this exception is thrown with a test somewhere!","created_at":"2015-02-24T23:34:15Z","updated_at":"2015-02-24T23:34:15Z","html_url":"https://github.com/storytellersoftware/java-httpserver/pull/1#discussion_r25304873","pull_request_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/comments/25304873"},"html":{"href":"https://github.com/storytellersoftware/java-httpserver/pull/1#discussion_r25304873"},"pull_request":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/1","id":29946170,"html_url":"https://github.com/storytellersoftware/java-httpserver/pull/1","diff_url":"https://github.com/storytellersoftware/java-httpserver/pull/1.diff","patch_url":"https://github.com/storytellersoftware/java-httpserver/pull/1.patch","issue_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues/1","number":1,"state":"open","locked":false,"title":"Rewrite main server to be more conventional.","user":{"login":"dkuntz2","id":403961,"avatar_url":"https://avatars.githubusercontent.com/u/403961?v=3","gravatar_id":"","url":"https://api.github.com/users/dkuntz2","html_url":"https://github.com/dkuntz2","followers_url":"https://api.github.com/users/dkuntz2/followers","following_url":"https://api.github.com/users/dkuntz2/following{/other_user}","gists_url":"https://api.github.com/users/dkuntz2/gists{/gist_id}","starred_url":"https://api.github.com/users/dkuntz2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dkuntz2/subscriptions","organizations_url":"https://api.github.com/users/dkuntz2/orgs","repos_url":"https://api.github.com/users/dkuntz2/repos","events_url":"https://api.github.com/users/dkuntz2/events{/privacy}","received_events_url":"https://api.github.com/users/dkuntz2/received_events","type":"User","site_admin":false},"body":"Instead of using just a ton of reflection and things otherwise\r\nconsidered \"not best practices\", the main server now follows java\r\nconventions a whole lot more.\r\n\r\nWhat still needs to be done is a rewrite of most of the javadocs,\r\nbecause basically all of the internals changed, and they're not up to\r\ndate.\r\n\r\nThis commit was maybe a bit too large...","created_at":"2015-02-24T23:16:10Z","updated_at":"2015-02-24T23:34:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0a1a3d40d2b6fe6c442d5dbfc143bca802a63ba1","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/1/commits","review_comments_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/1/comments","review_comment_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/comments{/number}","comments_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues/1/comments","statuses_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/statuses/65c25cfb9b80c093ad865665159259554eb96c25","head":{"label":"storytellersoftware:less-reflection","ref":"less-reflection","sha":"65c25cfb9b80c093ad865665159259554eb96c25","user":{"login":"storytellersoftware","id":9436603,"avatar_url":"https://avatars.githubusercontent.com/u/9436603?v=3","gravatar_id":"","url":"https://api.github.com/users/storytellersoftware","html_url":"https://github.com/storytellersoftware","followers_url":"https://api.github.com/users/storytellersoftware/followers","following_url":"https://api.github.com/users/storytellersoftware/following{/other_user}","gists_url":"https://api.github.com/users/storytellersoftware/gists{/gist_id}","starred_url":"https://api.github.com/users/storytellersoftware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/storytellersoftware/subscriptions","organizations_url":"https://api.github.com/users/storytellersoftware/orgs","repos_url":"https://api.github.com/users/storytellersoftware/repos","events_url":"https://api.github.com/users/storytellersoftware/events{/privacy}","received_events_url":"https://api.github.com/users/storytellersoftware/received_events","type":"Organization","site_admin":false},"repo":{"id":26187930,"name":"java-httpserver","full_name":"storytellersoftware/java-httpserver","owner":{"login":"storytellersoftware","id":9436603,"avatar_url":"https://avatars.githubusercontent.com/u/9436603?v=3","gravatar_id":"","url":"https://api.github.com/users/storytellersoftware","html_url":"https://github.com/storytellersoftware","followers_url":"https://api.github.com/users/storytellersoftware/followers","following_url":"https://api.github.com/users/storytellersoftware/following{/other_user}","gists_url":"https://api.github.com/users/storytellersoftware/gists{/gist_id}","starred_url":"https://api.github.com/users/storytellersoftware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/storytellersoftware/subscriptions","organizations_url":"https://api.github.com/users/storytellersoftware/orgs","repos_url":"https://api.github.com/users/storytellersoftware/repos","events_url":"https://api.github.com/users/storytellersoftware/events{/privacy}","received_events_url":"https://api.github.com/users/storytellersoftware/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/storytellersoftware/java-httpserver","description":"","fork":false,"url":"https://api.github.com/repos/storytellersoftware/java-httpserver","forks_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/forks","keys_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/keys{/key_id}","collaborators_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/teams","hooks_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/hooks","issue_events_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues/events{/number}","events_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/events","assignees_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/assignees{/user}","branches_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/branches{/branch}","tags_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/tags","blobs_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/refs{/sha}","trees_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/trees{/sha}","statuses_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/statuses/{sha}","languages_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/languages","stargazers_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/stargazers","contributors_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/contributors","subscribers_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/subscribers","subscription_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/subscription","commits_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/commits{/sha}","git_commits_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/commits{/sha}","comments_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/comments{/number}","issue_comment_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues/comments{/number}","contents_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/contents/{+path}","compare_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/compare/{base}...{head}","merges_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/merges","archive_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/downloads","issues_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues{/number}","pulls_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls{/number}","milestones_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/milestones{/number}","notifications_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/labels{/name}","releases_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/releases{/id}","created_at":"2014-11-04T20:45:53Z","updated_at":"2015-02-24T23:15:43Z","pushed_at":"2015-02-24T23:15:43Z","git_url":"git://github.com/storytellersoftware/java-httpserver.git","ssh_url":"git@github.com:storytellersoftware/java-httpserver.git","clone_url":"https://github.com/storytellersoftware/java-httpserver.git","svn_url":"https://github.com/storytellersoftware/java-httpserver","homepage":null,"size":5856,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"storytellersoftware:master","ref":"master","sha":"c34a95cf6dfc7a0ef5952f75ae5ada93f0f122cc","user":{"login":"storytellersoftware","id":9436603,"avatar_url":"https://avatars.githubusercontent.com/u/9436603?v=3","gravatar_id":"","url":"https://api.github.com/users/storytellersoftware","html_url":"https://github.com/storytellersoftware","followers_url":"https://api.github.com/users/storytellersoftware/followers","following_url":"https://api.github.com/users/storytellersoftware/following{/other_user}","gists_url":"https://api.github.com/users/storytellersoftware/gists{/gist_id}","starred_url":"https://api.github.com/users/storytellersoftware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/storytellersoftware/subscriptions","organizations_url":"https://api.github.com/users/storytellersoftware/orgs","repos_url":"https://api.github.com/users/storytellersoftware/repos","events_url":"https://api.github.com/users/storytellersoftware/events{/privacy}","received_events_url":"https://api.github.com/users/storytellersoftware/received_events","type":"Organization","site_admin":false},"repo":{"id":26187930,"name":"java-httpserver","full_name":"storytellersoftware/java-httpserver","owner":{"login":"storytellersoftware","id":9436603,"avatar_url":"https://avatars.githubusercontent.com/u/9436603?v=3","gravatar_id":"","url":"https://api.github.com/users/storytellersoftware","html_url":"https://github.com/storytellersoftware","followers_url":"https://api.github.com/users/storytellersoftware/followers","following_url":"https://api.github.com/users/storytellersoftware/following{/other_user}","gists_url":"https://api.github.com/users/storytellersoftware/gists{/gist_id}","starred_url":"https://api.github.com/users/storytellersoftware/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/storytellersoftware/subscriptions","organizations_url":"https://api.github.com/users/storytellersoftware/orgs","repos_url":"https://api.github.com/users/storytellersoftware/repos","events_url":"https://api.github.com/users/storytellersoftware/events{/privacy}","received_events_url":"https://api.github.com/users/storytellersoftware/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/storytellersoftware/java-httpserver","description":"","fork":false,"url":"https://api.github.com/repos/storytellersoftware/java-httpserver","forks_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/forks","keys_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/keys{/key_id}","collaborators_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/teams","hooks_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/hooks","issue_events_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues/events{/number}","events_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/events","assignees_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/assignees{/user}","branches_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/branches{/branch}","tags_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/tags","blobs_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/refs{/sha}","trees_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/trees{/sha}","statuses_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/statuses/{sha}","languages_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/languages","stargazers_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/stargazers","contributors_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/contributors","subscribers_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/subscribers","subscription_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/subscription","commits_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/commits{/sha}","git_commits_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/git/commits{/sha}","comments_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/comments{/number}","issue_comment_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues/comments{/number}","contents_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/contents/{+path}","compare_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/compare/{base}...{head}","merges_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/merges","archive_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/downloads","issues_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues{/number}","pulls_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls{/number}","milestones_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/milestones{/number}","notifications_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/labels{/name}","releases_url":"https://api.github.com/repos/storytellersoftware/java-httpserver/releases{/id}","created_at":"2014-11-04T20:45:53Z","updated_at":"2015-02-24T23:15:43Z","pushed_at":"2015-02-24T23:15:43Z","git_url":"git://github.com/storytellersoftware/java-httpserver.git","ssh_url":"git@github.com:storytellersoftware/java-httpserver.git","clone_url":"https://github.com/storytellersoftware/java-httpserver.git","svn_url":"https://github.com/storytellersoftware/java-httpserver","homepage":null,"size":5856,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/1"},"html":{"href":"https://github.com/storytellersoftware/java-httpserver/pull/1"},"issue":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues/1"},"comments":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/storytellersoftware/java-httpserver/statuses/65c25cfb9b80c093ad865665159259554eb96c25"}}}}