{"action":"created","comment":{"url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/comments/62039804","id":62039804,"diff_hunk":"@@ -0,0 +1,262 @@\n+package uk.gov.justice.services.adapters.rest.generator;\n+\n+import static com.squareup.javapoet.MethodSpec.methodBuilder;\n+import static com.squareup.javapoet.TypeSpec.interfaceBuilder;\n+import static java.lang.String.format;\n+import static javax.lang.model.element.Modifier.ABSTRACT;\n+import static javax.lang.model.element.Modifier.PUBLIC;\n+import static org.apache.commons.lang.StringUtils.defaultIfBlank;\n+import static org.apache.commons.lang.StringUtils.strip;\n+import static org.raml.model.ActionType.GET;\n+import static org.raml.model.ActionType.POST;\n+import static uk.gov.justice.services.adapters.rest.generator.Actions.responseMimeTypesOf;\n+import static uk.gov.justice.services.adapters.rest.generator.Generators.byMimeTypeOrder;\n+import static uk.gov.justice.services.adapters.rest.generator.Names.DEFAULT_ANNOTATION_PARAMETER;\n+import static uk.gov.justice.services.adapters.rest.generator.Names.GENERIC_PAYLOAD_ARGUMENT_NAME;\n+import static uk.gov.justice.services.adapters.rest.generator.Names.buildResourceMethodName;\n+import static uk.gov.justice.services.adapters.rest.generator.Names.buildResourceMethodNameWithNoMimeType;\n+import static uk.gov.justice.services.adapters.rest.generator.Names.resourceInterfaceNameOf;\n+\n+import java.util.ArrayList;\n+import java.util.Collection;\n+import java.util.Collections;\n+import java.util.List;\n+import java.util.Map;\n+import java.util.Set;\n+import java.util.stream.Collectors;\n+\n+import javax.json.JsonObject;\n+import javax.ws.rs.Consumes;\n+import javax.ws.rs.Path;\n+import javax.ws.rs.PathParam;\n+import javax.ws.rs.Produces;\n+import javax.ws.rs.QueryParam;\n+import javax.ws.rs.core.Response;\n+\n+import com.squareup.javapoet.AnnotationSpec;\n+import com.squareup.javapoet.CodeBlock;\n+import com.squareup.javapoet.MethodSpec;\n+import com.squareup.javapoet.ParameterSpec;\n+import com.squareup.javapoet.TypeSpec;\n+import org.raml.model.Action;\n+import org.raml.model.ActionType;\n+import org.raml.model.MimeType;\n+import org.raml.model.Resource;\n+import org.raml.model.parameter.QueryParameter;\n+import org.raml.model.parameter.UriParameter;\n+\n+/**\n+ * Internal code generation class for generating the JAX-RS interface.\n+ */\n+class JaxRsInterfaceGenerator {\n+\n+    private static final String ANNOTATION_FORMAT = \"$S\";\n+\n+    /**\n+     * Generate a JaxRs interface for each resource.\n+     *\n+     * @param resources the collection of {@link Resource} to generate as implementation classes\n+     * @return a list of {@link TypeSpec} that represent the implementation classes\n+     */\n+    List<TypeSpec> generateFor(final Collection<Resource> resources) {\n+        return resources.stream()\n+                .map(this::createInterfaceFor)\n+                .collect(Collectors.toList());\n+    }\n+\n+    /**\n+     * Create an interface for the specified {@link Resource}\n+     *\n+     * @param resource the resource to generate as an implementation class\n+     * @return a {@link TypeSpec} that represents the implementation class\n+     */\n+    private TypeSpec createInterfaceFor(final Resource resource) {\n+        final TypeSpec.Builder interfaceSpecBuilder = interfaceSpecFor(resource);\n+\n+        resource.getActions().values().forEach(action ->\n+                interfaceSpecBuilder.addMethods(forEach(action)));\n+\n+        return interfaceSpecBuilder.build();\n+    }\n+\n+    /**\n+     * Process the body or bodies for each action.\n+     *\n+     * @param action the action to forEach\n+     * @return the list of {@link MethodSpec} that represents each method for the action\n+     */\n+    private List<MethodSpec> forEach(final Action action) {\n+        final Collection<MimeType> responseMimeTypes = responseMimeTypesOf(action);\n+        final boolean actionHasNoBody = !action.hasBody();\n+\n+        if (actionHasNoBody) {\n+            return processNoActionBody(action, responseMimeTypes);\n+        } else {\n+            return processOneOrMoreActionBodies(action, responseMimeTypes);\n+        }\n+    }\n+\n+    /**\n+     * Process an action with no body.\n+     *\n+     * @param action the action to process\n+     * @return the list of {@link MethodSpec} that represents each method for the action\n+     */\n+    private List<MethodSpec> processNoActionBody(final Action action,\n+                                                 final Collection<MimeType> responseMimeTypes) {\n+        final String resourceMethodName = buildResourceMethodNameWithNoMimeType(action);\n+        final MethodSpec resourceMethod = generateResourceMethod(action, resourceMethodName, responseMimeTypes).build();\n+        return Collections.singletonList(resourceMethod);\n+    }\n+\n+    /**\n+     * Process an action with one or more bodies.\n+     *\n+     * @param action the action to process\n+     * @return the list of {@link MethodSpec} that represents each method for the action\n+     */\n+    private List<MethodSpec> processOneOrMoreActionBodies(final Action action,\n+                                                          final Collection<MimeType> responseMimeTypes) {\n+        return action.getBody().values().stream()\n+                .sorted(byMimeTypeOrder())\n+                .map(bodyMimeType -> {\n+                    final String resourceMethodName = buildResourceMethodName(action, bodyMimeType);\n+                    final MethodSpec.Builder methodBuilder = generateResourceMethod(action, resourceMethodName, responseMimeTypes);\n+                    return addToMethodWithMimeType(methodBuilder, bodyMimeType).build();\n+                }).collect(Collectors.toList());\n+    }\n+\n+    /**\n+     * Creates a {@link TypeSpec.Builder} from an initial template of an interface\n+     *\n+     * @param resource the resource to generate as an interface\n+     * @return a {@link TypeSpec.Builder} that represents the interface\n+     */\n+    private TypeSpec.Builder interfaceSpecFor(final Resource resource) {\n+        return interfaceBuilder(resourceInterfaceNameOf(resource))\n+                .addModifiers(PUBLIC)\n+                .addAnnotation(AnnotationSpec.builder(Path.class)\n+                        .addMember(DEFAULT_ANNOTATION_PARAMETER, ANNOTATION_FORMAT, pathAnnotationFor(resource))\n+                        .build());\n+    }\n+\n+    /**\n+     * Generate path annotation for a resource.\n+     *\n+     * @param resource generate for this resource\n+     * @return the path annotation string\n+     */\n+    private String pathAnnotationFor(final Resource resource) {\n+        return defaultIfBlank(strip(resource.getRelativeUri(), \"/\"), \"/\");\n+    }\n+\n+    /**\n+     * Add MimeType specific annotation and parameter to method.\n+     *\n+     * @param methodBuilder add annotation and parameter to this method builder\n+     * @return the method builder\n+     */\n+    private MethodSpec.Builder addToMethodWithMimeType(final MethodSpec.Builder methodBuilder,\n+                                                       final MimeType bodyMimeType) {\n+        return methodBuilder\n+                .addAnnotation(AnnotationSpec.builder(Consumes.class)\n+                        .addMember(DEFAULT_ANNOTATION_PARAMETER, ANNOTATION_FORMAT, bodyMimeType.getType())\n+                        .build())\n+                .addParameter(ParameterSpec\n+                        .builder(JsonObject.class, GENERIC_PAYLOAD_ARGUMENT_NAME)\n+                        .build());\n+    }\n+\n+    /**\n+     * Generate a method for each {@link Action}.\n+     *\n+     * @param action             the action to generate as a method\n+     * @param resourceMethodName the resource method name to generate\n+     * @return a {@link MethodSpec} that represents the generated method\n+     * @throws IllegalStateException if action type is not GET or POST\n+     */\n+    private MethodSpec.Builder generateResourceMethod(final Action action,\n+                                                      final String resourceMethodName,\n+                                                      final Collection<MimeType> responseMimeTypes) {\n+\n+        final ActionType actionType = action.getType();\n+        final Map<String, QueryParameter> queryParams = action.getQueryParameters();\n+        final Map<String, UriParameter> pathParams = action.getResource().getUriParameters();\n+        final AnnotationSpec actionTypeAnnotation;\n+\n+        if (actionType == GET) {\n+            actionTypeAnnotation = AnnotationSpec.builder(javax.ws.rs.GET.class).build();","path":"adapters/rest-adapter-generator/src/main/java/uk/gov/justice/services/adapters/rest/generator/JaxRsInterfaceGenerator.java","position":188,"original_position":188,"commit_id":"3103f94066d2a73515f9683f11097cf011c50a99","original_commit_id":"3103f94066d2a73515f9683f11097cf011c50a99","user":{"login":"matt-rich","id":17124628,"avatar_url":"https://avatars.githubusercontent.com/u/17124628?v=3","gravatar_id":"","url":"https://api.github.com/users/matt-rich","html_url":"https://github.com/matt-rich","followers_url":"https://api.github.com/users/matt-rich/followers","following_url":"https://api.github.com/users/matt-rich/following{/other_user}","gists_url":"https://api.github.com/users/matt-rich/gists{/gist_id}","starred_url":"https://api.github.com/users/matt-rich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/matt-rich/subscriptions","organizations_url":"https://api.github.com/users/matt-rich/orgs","repos_url":"https://api.github.com/users/matt-rich/repos","events_url":"https://api.github.com/users/matt-rich/events{/privacy}","received_events_url":"https://api.github.com/users/matt-rich/received_events","type":"User","site_admin":false},"body":"we should static import these GET, POST","created_at":"2016-05-04T13:38:59Z","updated_at":"2016-05-04T13:38:59Z","html_url":"https://github.com/CJSCommonPlatform/microservice_framework/pull/49#discussion_r62039804","pull_request_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/49","_links":{"self":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/comments/62039804"},"html":{"href":"https://github.com/CJSCommonPlatform/microservice_framework/pull/49#discussion_r62039804"},"pull_request":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/49"}}},"pull_request":{"url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/49","id":68855770,"html_url":"https://github.com/CJSCommonPlatform/microservice_framework/pull/49","diff_url":"https://github.com/CJSCommonPlatform/microservice_framework/pull/49.diff","patch_url":"https://github.com/CJSCommonPlatform/microservice_framework/pull/49.patch","issue_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues/49","number":49,"state":"open","locked":false,"title":"Convert Rest Adapter Generator to use Poet","user":{"login":"mapingo","id":11291215,"avatar_url":"https://avatars.githubusercontent.com/u/11291215?v=3","gravatar_id":"","url":"https://api.github.com/users/mapingo","html_url":"https://github.com/mapingo","followers_url":"https://api.github.com/users/mapingo/followers","following_url":"https://api.github.com/users/mapingo/following{/other_user}","gists_url":"https://api.github.com/users/mapingo/gists{/gist_id}","starred_url":"https://api.github.com/users/mapingo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mapingo/subscriptions","organizations_url":"https://api.github.com/users/mapingo/orgs","repos_url":"https://api.github.com/users/mapingo/repos","events_url":"https://api.github.com/users/mapingo/events{/privacy}","received_events_url":"https://api.github.com/users/mapingo/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-05-04T12:45:56Z","updated_at":"2016-05-04T13:38:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f3467ac48f74e5e4dc77d60333f0910482ec6176","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/49/commits","review_comments_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/49/comments","review_comment_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues/49/comments","statuses_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/statuses/3103f94066d2a73515f9683f11097cf011c50a99","head":{"label":"CJSCommonPlatform:convert-generator-poet","ref":"convert-generator-poet","sha":"3103f94066d2a73515f9683f11097cf011c50a99","user":{"login":"CJSCommonPlatform","id":16131145,"avatar_url":"https://avatars.githubusercontent.com/u/16131145?v=3","gravatar_id":"","url":"https://api.github.com/users/CJSCommonPlatform","html_url":"https://github.com/CJSCommonPlatform","followers_url":"https://api.github.com/users/CJSCommonPlatform/followers","following_url":"https://api.github.com/users/CJSCommonPlatform/following{/other_user}","gists_url":"https://api.github.com/users/CJSCommonPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/CJSCommonPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CJSCommonPlatform/subscriptions","organizations_url":"https://api.github.com/users/CJSCommonPlatform/orgs","repos_url":"https://api.github.com/users/CJSCommonPlatform/repos","events_url":"https://api.github.com/users/CJSCommonPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/CJSCommonPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":51292541,"name":"microservice_framework","full_name":"CJSCommonPlatform/microservice_framework","owner":{"login":"CJSCommonPlatform","id":16131145,"avatar_url":"https://avatars.githubusercontent.com/u/16131145?v=3","gravatar_id":"","url":"https://api.github.com/users/CJSCommonPlatform","html_url":"https://github.com/CJSCommonPlatform","followers_url":"https://api.github.com/users/CJSCommonPlatform/followers","following_url":"https://api.github.com/users/CJSCommonPlatform/following{/other_user}","gists_url":"https://api.github.com/users/CJSCommonPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/CJSCommonPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CJSCommonPlatform/subscriptions","organizations_url":"https://api.github.com/users/CJSCommonPlatform/orgs","repos_url":"https://api.github.com/users/CJSCommonPlatform/repos","events_url":"https://api.github.com/users/CJSCommonPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/CJSCommonPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CJSCommonPlatform/microservice_framework","description":"","fork":false,"url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework","forks_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/forks","keys_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/teams","hooks_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/hooks","issue_events_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues/events{/number}","events_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/events","assignees_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/assignees{/user}","branches_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/branches{/branch}","tags_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/tags","blobs_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/statuses/{sha}","languages_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/languages","stargazers_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/stargazers","contributors_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/contributors","subscribers_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/subscribers","subscription_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/subscription","commits_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues/comments{/number}","contents_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/contents/{+path}","compare_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/merges","archive_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/downloads","issues_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues{/number}","pulls_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls{/number}","milestones_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/milestones{/number}","notifications_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/labels{/name}","releases_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/releases{/id}","deployments_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/deployments","created_at":"2016-02-08T10:51:31Z","updated_at":"2016-03-08T16:38:42Z","pushed_at":"2016-05-04T12:45:57Z","git_url":"git://github.com/CJSCommonPlatform/microservice_framework.git","ssh_url":"git@github.com:CJSCommonPlatform/microservice_framework.git","clone_url":"https://github.com/CJSCommonPlatform/microservice_framework.git","svn_url":"https://github.com/CJSCommonPlatform/microservice_framework","homepage":null,"size":958,"stargazers_count":4,"watchers_count":4,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":4,"default_branch":"master"}},"base":{"label":"CJSCommonPlatform:master","ref":"master","sha":"7162c772aeaff07c9f81bf0125f995cc82de6000","user":{"login":"CJSCommonPlatform","id":16131145,"avatar_url":"https://avatars.githubusercontent.com/u/16131145?v=3","gravatar_id":"","url":"https://api.github.com/users/CJSCommonPlatform","html_url":"https://github.com/CJSCommonPlatform","followers_url":"https://api.github.com/users/CJSCommonPlatform/followers","following_url":"https://api.github.com/users/CJSCommonPlatform/following{/other_user}","gists_url":"https://api.github.com/users/CJSCommonPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/CJSCommonPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CJSCommonPlatform/subscriptions","organizations_url":"https://api.github.com/users/CJSCommonPlatform/orgs","repos_url":"https://api.github.com/users/CJSCommonPlatform/repos","events_url":"https://api.github.com/users/CJSCommonPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/CJSCommonPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":51292541,"name":"microservice_framework","full_name":"CJSCommonPlatform/microservice_framework","owner":{"login":"CJSCommonPlatform","id":16131145,"avatar_url":"https://avatars.githubusercontent.com/u/16131145?v=3","gravatar_id":"","url":"https://api.github.com/users/CJSCommonPlatform","html_url":"https://github.com/CJSCommonPlatform","followers_url":"https://api.github.com/users/CJSCommonPlatform/followers","following_url":"https://api.github.com/users/CJSCommonPlatform/following{/other_user}","gists_url":"https://api.github.com/users/CJSCommonPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/CJSCommonPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CJSCommonPlatform/subscriptions","organizations_url":"https://api.github.com/users/CJSCommonPlatform/orgs","repos_url":"https://api.github.com/users/CJSCommonPlatform/repos","events_url":"https://api.github.com/users/CJSCommonPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/CJSCommonPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CJSCommonPlatform/microservice_framework","description":"","fork":false,"url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework","forks_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/forks","keys_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/teams","hooks_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/hooks","issue_events_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues/events{/number}","events_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/events","assignees_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/assignees{/user}","branches_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/branches{/branch}","tags_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/tags","blobs_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/statuses/{sha}","languages_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/languages","stargazers_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/stargazers","contributors_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/contributors","subscribers_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/subscribers","subscription_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/subscription","commits_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues/comments{/number}","contents_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/contents/{+path}","compare_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/merges","archive_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/downloads","issues_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues{/number}","pulls_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls{/number}","milestones_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/milestones{/number}","notifications_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/labels{/name}","releases_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/releases{/id}","deployments_url":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/deployments","created_at":"2016-02-08T10:51:31Z","updated_at":"2016-03-08T16:38:42Z","pushed_at":"2016-05-04T12:45:57Z","git_url":"git://github.com/CJSCommonPlatform/microservice_framework.git","ssh_url":"git@github.com:CJSCommonPlatform/microservice_framework.git","clone_url":"https://github.com/CJSCommonPlatform/microservice_framework.git","svn_url":"https://github.com/CJSCommonPlatform/microservice_framework","homepage":null,"size":958,"stargazers_count":4,"watchers_count":4,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/49"},"html":{"href":"https://github.com/CJSCommonPlatform/microservice_framework/pull/49"},"issue":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues/49"},"comments":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/issues/49/comments"},"review_comments":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/49/comments"},"review_comment":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/pulls/49/commits"},"statuses":{"href":"https://api.github.com/repos/CJSCommonPlatform/microservice_framework/statuses/3103f94066d2a73515f9683f11097cf011c50a99"}}}}