{"action":"created","comment":{"url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/comments/48791998","id":48791998,"diff_hunk":"@@ -0,0 +1,257 @@\n+/*\n+ * ******************************************************************************\n+ *   Copyright 2014-2015 Spectra Logic Corporation. All Rights Reserved.\n+ *   Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use\n+ *   this file except in compliance with the License. A copy of the License is located at\n+ *\n+ *   http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ *   or in the \"license\" file accompanying this file.\n+ *   This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n+ *   CONDITIONS OF ANY KIND, either express or implied. See the License for the\n+ *   specific language governing permissions and limitations under the License.\n+ * ****************************************************************************\n+ */\n+\n+package com.spectralogic.ds3autogen.utils;\n+\n+import com.google.common.collect.ImmutableList;\n+import com.google.common.collect.ImmutableMap;\n+import com.google.common.collect.ImmutableSet;\n+import com.spectralogic.ds3autogen.api.models.*;\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+import static com.spectralogic.ds3autogen.utils.ConverterUtil.hasContent;\n+import static com.spectralogic.ds3autogen.utils.ConverterUtil.isEmpty;\n+import static com.spectralogic.ds3autogen.utils.Helper.stripPath;\n+\n+/**\n+ * Converts Ds3ResponseTypes that contain component types into new types that\n+ * encapsulate the array of the original Ds3ResponseType. These new encapsulating\n+ * types are also added to the Types list within the Ds3ApiContract. This is used\n+ * to ensure that generated code can easily parse response payloads.\n+ */\n+public final class ResponseTypeConverter {\n+\n+    private static final Logger LOG = LoggerFactory.getLogger(ResponseTypeConverter.class);\n+\n+    private static final String NAMESPACE_ARRAY_RESPONSE_TYPES = \"List\";\n+\n+    private ResponseTypeConverter() { }\n+\n+    /**\n+     * Converts a Ds3ApiSpec to use updated response types. This includes\n+     * updating all response types that have component types to new types\n+     * without component types.\n+     * These new types are then added to the Spec's Ds3Types list.\n+     */\n+    public static Ds3ApiSpec convertResponseTypes(final Ds3ApiSpec ds3ApiSpec) {\n+        return new Ds3ApiSpec(\n+                createAllUpdatedDs3RequestResponseTypes(\n+                        ds3ApiSpec.getRequests()),\n+                createEncapsulatingModelResponseTypes(\n+                        ds3ApiSpec.getRequests(),\n+                        ds3ApiSpec.getTypes()));\n+    }\n+\n+    /**\n+     * Updates all Ds3ResponseTypes that have component types within the\n+     * list of Ds3Requests\n+     */\n+    protected static ImmutableList<Ds3Request> createAllUpdatedDs3RequestResponseTypes(\n+            final ImmutableList<Ds3Request> requests) {\n+        if (isEmpty(requests)) {\n+            LOG.info(\"No requests to update response types\");\n+            return ImmutableList.of();\n+        }\n+\n+        final ImmutableList.Builder<Ds3Request> builder = ImmutableList.builder();\n+        for (final Ds3Request request : requests) {\n+            builder.add(toUpdatedDs3RequestResponseTypes(request));\n+        }\n+        return builder.build();\n+    }\n+\n+    /**\n+     * Updates all Ds3ResponseTypes that have component types within a Ds3Request\n+     */\n+    protected static Ds3Request toUpdatedDs3RequestResponseTypes(final Ds3Request request) {\n+        return new Ds3Request(\n+                request.getName(),\n+                request.getHttpVerb(),\n+                request.getClassification(),\n+                request.getBucketRequirement(),\n+                request.getObjectRequirement(),\n+                request.getAction(),\n+                request.getResource(),\n+                request.getResourceType(),\n+                request.getOperation(),\n+                toUpdatedDs3ResponseCodeList(\n+                        request.getDs3ResponseCodes()),\n+                request.getOptionalQueryParams(),\n+                request.getRequiredQueryParams());\n+    }\n+\n+    /**\n+     * Updates all Ds3ResponseTypes that have component types within the\n+     * list of Ds3ResponseCodes\n+     */\n+    protected static ImmutableList<Ds3ResponseCode> toUpdatedDs3ResponseCodeList(\n+            final ImmutableList<Ds3ResponseCode> responseCodes) {\n+        if (isEmpty(responseCodes)) {\n+            LOG.info(\"No response codes to update response types\");\n+            return ImmutableList.of();\n+        }\n+\n+        final ImmutableList.Builder<Ds3ResponseCode> builder = ImmutableList.builder();\n+        for (final Ds3ResponseCode responseCode : responseCodes) {\n+            builder.add(new Ds3ResponseCode(\n+                            responseCode.getCode(),\n+                            toUpdatedDs3ResponseTypesList(\n+                                    responseCode.getDs3ResponseTypes())));\n+        }\n+        return builder.build();\n+    }\n+\n+    /**\n+     * Updates all Ds3ResponseTypes that have component types\n+     */\n+    protected static ImmutableList<Ds3ResponseType> toUpdatedDs3ResponseTypesList(\n+            final ImmutableList<Ds3ResponseType> responseTypes) {\n+        if (isEmpty(responseTypes)) {\n+            LOG.info(\"No response types to update\");\n+            return ImmutableList.of();\n+        }\n+\n+        final ImmutableList.Builder<Ds3ResponseType> builder = ImmutableList.builder();\n+        for (final Ds3ResponseType responseType : responseTypes) {\n+            builder.add(toUpdatedDs3ResponseType(responseType));\n+        }\n+        return builder.build();\n+    }\n+\n+    /**\n+     * Updates a Ds3ResponseType so that it will not have a component type. If\n+     * there is currently a component type, then the type is replaced with a\n+     * namespaced version of the component type, and the component type is set\n+     * to null.\n+     */\n+    protected static Ds3ResponseType toUpdatedDs3ResponseType(\n+            final Ds3ResponseType responseType) {\n+        if (isEmpty(responseType.getComponentType())) {\n+            return responseType;\n+        }\n+\n+        return new Ds3ResponseType(\n+                responseType.getComponentType() + NAMESPACE_ARRAY_RESPONSE_TYPES,\n+                null);\n+    }\n+\n+    /**\n+     * Creates new types for generating encapsulating models. This occurs when a response\n+     * handler has a return type with a component type. This is done to ensure that all\n+     * response types can be properly parsed within the generated code.\n+     * @param requests A Ds3Request\n+     * @param types A list of Ds3Types\n+     * @return The list of Ds3Types with the additionally generated types to handle the\n+     * response payloads that return arrays\n+     */\n+    protected static ImmutableMap<String, Ds3Type> createEncapsulatingModelResponseTypes(\n+            final ImmutableList<Ds3Request> requests,\n+            final ImmutableMap<String, Ds3Type> types) {\n+        if (isEmpty(requests)) {\n+            LOG.info(\"No requests to generate encapsulating models for\");\n+            return types;\n+        }\n+        final ImmutableSet<String> componentTypes = getResponseComponentTypesFromRequests(requests);\n+        if (isEmpty(componentTypes)) {\n+            LOG.info(\"Requests do not contain any responses with component types\");\n+            return types;\n+        }\n+        final ImmutableMap.Builder<String, Ds3Type> builder = ImmutableMap.builder();\n+        if (hasContent(types)) {\n+            builder.putAll(types);\n+        }\n+        for (final String componentType : componentTypes) {\n+            final Ds3Type ds3Type = toDs3Type(componentType);\n+            builder.put(ds3Type.getName(), ds3Type);\n+        }\n+        return builder.build();\n+    }\n+\n+    /**\n+     * Converts a response Component Type into a simple Ds3Type that contains a\n+     * list of the given component type, and where the new Ds3Type is namespaced.\n+     */\n+    protected static Ds3Type toDs3Type(final String componentType) {\n+        if (isEmpty(componentType)) {\n+            throw new IllegalArgumentException(\"Cannot generate Ds3Type from empty response component type\");\n+        }\n+        return new Ds3Type(\n+                componentType + NAMESPACE_ARRAY_RESPONSE_TYPES,\n+                ImmutableList.of(\n+                        new Ds3Element(\n+                                stripPath(componentType),\n+                                \"array\",\n+                                componentType,\n+                                null)),","path":"ds3-autogen-utils/src/main/java/com/spectralogic/ds3autogen/utils/ResponseTypeConverter.java","position":198,"original_position":198,"commit_id":"8b074d271e45695d855af18bd4889e3b4735057c","original_commit_id":"8b074d271e45695d855af18bd4889e3b4735057c","user":{"login":"rpmoore","id":1901294,"avatar_url":"https://avatars.githubusercontent.com/u/1901294?v=3","gravatar_id":"","url":"https://api.github.com/users/rpmoore","html_url":"https://github.com/rpmoore","followers_url":"https://api.github.com/users/rpmoore/followers","following_url":"https://api.github.com/users/rpmoore/following{/other_user}","gists_url":"https://api.github.com/users/rpmoore/gists{/gist_id}","starred_url":"https://api.github.com/users/rpmoore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rpmoore/subscriptions","organizations_url":"https://api.github.com/users/rpmoore/orgs","repos_url":"https://api.github.com/users/rpmoore/repos","events_url":"https://api.github.com/users/rpmoore/events{/privacy}","received_events_url":"https://api.github.com/users/rpmoore/received_events","type":"User","site_admin":false},"body":"`Ds3Element` should have an optional constructor that does not require this extra null param","created_at":"2016-01-04T22:40:35Z","updated_at":"2016-01-04T22:40:35Z","html_url":"https://github.com/SpectraLogic/ds3_autogen/pull/92#discussion_r48791998","pull_request_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/92","_links":{"self":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/comments/48791998"},"html":{"href":"https://github.com/SpectraLogic/ds3_autogen/pull/92#discussion_r48791998"},"pull_request":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/92"}}},"pull_request":{"url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/92","id":55023623,"html_url":"https://github.com/SpectraLogic/ds3_autogen/pull/92","diff_url":"https://github.com/SpectraLogic/ds3_autogen/pull/92.diff","patch_url":"https://github.com/SpectraLogic/ds3_autogen/pull/92.patch","issue_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/issues/92","number":92,"state":"open","locked":false,"title":"Created utility class to convert component response types into new types for easier xml parsing of payloads","user":{"login":"RachelTucker","id":14060133,"avatar_url":"https://avatars.githubusercontent.com/u/14060133?v=3","gravatar_id":"","url":"https://api.github.com/users/RachelTucker","html_url":"https://github.com/RachelTucker","followers_url":"https://api.github.com/users/RachelTucker/followers","following_url":"https://api.github.com/users/RachelTucker/following{/other_user}","gists_url":"https://api.github.com/users/RachelTucker/gists{/gist_id}","starred_url":"https://api.github.com/users/RachelTucker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RachelTucker/subscriptions","organizations_url":"https://api.github.com/users/RachelTucker/orgs","repos_url":"https://api.github.com/users/RachelTucker/repos","events_url":"https://api.github.com/users/RachelTucker/events{/privacy}","received_events_url":"https://api.github.com/users/RachelTucker/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-01-04T21:21:45Z","updated_at":"2016-01-04T22:40:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"98998a5ab51c9e2ce6db686bc6a602fb12ed5464","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/92/commits","review_comments_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/92/comments","review_comment_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/issues/92/comments","statuses_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/statuses/8b074d271e45695d855af18bd4889e3b4735057c","head":{"label":"RachelTucker:modify_spec_response_types","ref":"modify_spec_response_types","sha":"8b074d271e45695d855af18bd4889e3b4735057c","user":{"login":"RachelTucker","id":14060133,"avatar_url":"https://avatars.githubusercontent.com/u/14060133?v=3","gravatar_id":"","url":"https://api.github.com/users/RachelTucker","html_url":"https://github.com/RachelTucker","followers_url":"https://api.github.com/users/RachelTucker/followers","following_url":"https://api.github.com/users/RachelTucker/following{/other_user}","gists_url":"https://api.github.com/users/RachelTucker/gists{/gist_id}","starred_url":"https://api.github.com/users/RachelTucker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RachelTucker/subscriptions","organizations_url":"https://api.github.com/users/RachelTucker/orgs","repos_url":"https://api.github.com/users/RachelTucker/repos","events_url":"https://api.github.com/users/RachelTucker/events{/privacy}","received_events_url":"https://api.github.com/users/RachelTucker/received_events","type":"User","site_admin":false},"repo":{"id":45499432,"name":"ds3_autogen","full_name":"RachelTucker/ds3_autogen","owner":{"login":"RachelTucker","id":14060133,"avatar_url":"https://avatars.githubusercontent.com/u/14060133?v=3","gravatar_id":"","url":"https://api.github.com/users/RachelTucker","html_url":"https://github.com/RachelTucker","followers_url":"https://api.github.com/users/RachelTucker/followers","following_url":"https://api.github.com/users/RachelTucker/following{/other_user}","gists_url":"https://api.github.com/users/RachelTucker/gists{/gist_id}","starred_url":"https://api.github.com/users/RachelTucker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RachelTucker/subscriptions","organizations_url":"https://api.github.com/users/RachelTucker/orgs","repos_url":"https://api.github.com/users/RachelTucker/repos","events_url":"https://api.github.com/users/RachelTucker/events{/privacy}","received_events_url":"https://api.github.com/users/RachelTucker/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/RachelTucker/ds3_autogen","description":"","fork":true,"url":"https://api.github.com/repos/RachelTucker/ds3_autogen","forks_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/forks","keys_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/teams","hooks_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/hooks","issue_events_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/issues/events{/number}","events_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/events","assignees_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/assignees{/user}","branches_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/branches{/branch}","tags_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/tags","blobs_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/git/refs{/sha}","trees_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/statuses/{sha}","languages_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/languages","stargazers_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/stargazers","contributors_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/contributors","subscribers_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/subscribers","subscription_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/subscription","commits_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/commits{/sha}","git_commits_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/git/commits{/sha}","comments_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/comments{/number}","issue_comment_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/issues/comments{/number}","contents_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/contents/{+path}","compare_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/merges","archive_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/downloads","issues_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/issues{/number}","pulls_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/pulls{/number}","milestones_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/milestones{/number}","notifications_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/labels{/name}","releases_url":"https://api.github.com/repos/RachelTucker/ds3_autogen/releases{/id}","created_at":"2015-11-03T22:18:14Z","updated_at":"2015-11-03T22:18:15Z","pushed_at":"2016-01-04T21:17:34Z","git_url":"git://github.com/RachelTucker/ds3_autogen.git","ssh_url":"git@github.com:RachelTucker/ds3_autogen.git","clone_url":"https://github.com/RachelTucker/ds3_autogen.git","svn_url":"https://github.com/RachelTucker/ds3_autogen","homepage":null,"size":835,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"SpectraLogic:master","ref":"master","sha":"eb267b448cf51f3f689ed67b6eefeca716526221","user":{"login":"SpectraLogic","id":7060807,"avatar_url":"https://avatars.githubusercontent.com/u/7060807?v=3","gravatar_id":"","url":"https://api.github.com/users/SpectraLogic","html_url":"https://github.com/SpectraLogic","followers_url":"https://api.github.com/users/SpectraLogic/followers","following_url":"https://api.github.com/users/SpectraLogic/following{/other_user}","gists_url":"https://api.github.com/users/SpectraLogic/gists{/gist_id}","starred_url":"https://api.github.com/users/SpectraLogic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SpectraLogic/subscriptions","organizations_url":"https://api.github.com/users/SpectraLogic/orgs","repos_url":"https://api.github.com/users/SpectraLogic/repos","events_url":"https://api.github.com/users/SpectraLogic/events{/privacy}","received_events_url":"https://api.github.com/users/SpectraLogic/received_events","type":"Organization","site_admin":false},"repo":{"id":43916943,"name":"ds3_autogen","full_name":"SpectraLogic/ds3_autogen","owner":{"login":"SpectraLogic","id":7060807,"avatar_url":"https://avatars.githubusercontent.com/u/7060807?v=3","gravatar_id":"","url":"https://api.github.com/users/SpectraLogic","html_url":"https://github.com/SpectraLogic","followers_url":"https://api.github.com/users/SpectraLogic/followers","following_url":"https://api.github.com/users/SpectraLogic/following{/other_user}","gists_url":"https://api.github.com/users/SpectraLogic/gists{/gist_id}","starred_url":"https://api.github.com/users/SpectraLogic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SpectraLogic/subscriptions","organizations_url":"https://api.github.com/users/SpectraLogic/orgs","repos_url":"https://api.github.com/users/SpectraLogic/repos","events_url":"https://api.github.com/users/SpectraLogic/events{/privacy}","received_events_url":"https://api.github.com/users/SpectraLogic/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SpectraLogic/ds3_autogen","description":"","fork":false,"url":"https://api.github.com/repos/SpectraLogic/ds3_autogen","forks_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/forks","keys_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/teams","hooks_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/hooks","issue_events_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/issues/events{/number}","events_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/events","assignees_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/assignees{/user}","branches_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/branches{/branch}","tags_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/tags","blobs_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/git/refs{/sha}","trees_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/statuses/{sha}","languages_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/languages","stargazers_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/stargazers","contributors_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/contributors","subscribers_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/subscribers","subscription_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/subscription","commits_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/commits{/sha}","git_commits_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/git/commits{/sha}","comments_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/comments{/number}","issue_comment_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/issues/comments{/number}","contents_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/contents/{+path}","compare_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/merges","archive_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/downloads","issues_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/issues{/number}","pulls_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls{/number}","milestones_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/milestones{/number}","notifications_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/labels{/name}","releases_url":"https://api.github.com/repos/SpectraLogic/ds3_autogen/releases{/id}","created_at":"2015-10-08T21:21:28Z","updated_at":"2015-11-03T22:00:56Z","pushed_at":"2016-01-04T21:21:46Z","git_url":"git://github.com/SpectraLogic/ds3_autogen.git","ssh_url":"git@github.com:SpectraLogic/ds3_autogen.git","clone_url":"https://github.com/SpectraLogic/ds3_autogen.git","svn_url":"https://github.com/SpectraLogic/ds3_autogen","homepage":null,"size":810,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":1,"forks":4,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/92"},"html":{"href":"https://github.com/SpectraLogic/ds3_autogen/pull/92"},"issue":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/issues/92"},"comments":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/issues/92/comments"},"review_comments":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/92/comments"},"review_comment":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/pulls/92/commits"},"statuses":{"href":"https://api.github.com/repos/SpectraLogic/ds3_autogen/statuses/8b074d271e45695d855af18bd4889e3b4735057c"}}}}