{"action":"created","comment":{"url":"https://api.github.com/repos/terasolunaorg/guideline/pulls/comments/71056376","id":71056376,"diff_hunk":"@@ -2678,6 +2678,443 @@ Bean Validationは標準で用意されているチェックルール以外に\n     Hibernate Validatorでは、OR条件を実現するための\\ ``@ConstraintComposition``\\ アノテーションが用意されている。\n     詳細は、\\ `Hibernate Validatorのドキュメント <http://docs.jboss.org/hibernate/validator/5.2/reference/en-US/html/ch11.html#section-boolean-constraint-composition>`_\\ を参照されたい。\n \n+\n+|\n+\n+.. _Validation_for_string_object_in_collection:\n+\n+コレクション型のStringに対する入力チェック\n+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n+\n+ここでは、コレクション型のStringに対する入力チェックについて説明する。\n+\n+共通ライブラリでは、入力値がコードリスト内に定義されたKey値であるかどうかチェックするアノテーション、\n+\\ ``org.terasoluna.gfw.common.codelist.ExistInCodeList``\\ を提供している。\n+\n+しかし、\\ ``@ExistInCodeList``\\ の入力チェックでサポートしている型は、\\ ``String``\\ または\\ ``Character``\\ のみである。\n+そのままでは、\\ ``String``\\ の\\ ``List``\\ には\\ ``@ExistInCodeList``\\ を付加することはできない。\n+\n+Controller及びJSPで特別な実装を行うことなく、\n+複数選択可能な画面項目（チェックボックスや複数選択ドロップダウンなど）に\\ ``@ExistInCodeList``\\ アノテーションを対応させるための実装例を示す。\n+\n+* :ref:`Validation_exist_in_codelist_javase8`\\\n+    Java SE8とHibernate Validatorを利用し、\\ ``String``\\ の\\ ``List``\\ に付加できる独自のアノテーションを実装する方式。\n+    **後者と比べて簡単に実現できるので、Java SE8が使用できる環境ではこちらの方式を推奨する。**\n+\n+* :ref:`Validation_exist_in_codelist_converter`\\\n+    Java Beanクラスでラップしたプロパティに対して \\ ``@ExistInCodeList``\\ アノテーションを設定する方式。\n+    Java SE7以下ユーザ向け。Java SE8が使用できる環境では :ref:`Validation_exist_in_codelist_javase8`\\を推奨する。\n+\n+.. tip::\n+\n+    Java Beanで\\ ``String``\\ をラップすることで、\n+    Java Beanの\\ ``String``\\ プロパティに\\ ``@ExistInCodeList``\\ を付加することで出来るようになるが、\n+    その場合、Controller及びJSPでJava Beanの\\ ``List``\\ に対応した実装を行う必要がある。\n+\n+    Java Beanで\\ ``String``\\ をラップした実装例を以下に示す。\n+\n+    * JSP\n+\n+      \\ ``<form:checkbox>``\\ だと表現できないため、\\ ``<c:forEach>``\\ + \\ ``<form:checkbox>``\\ で実装する必要がある。\n+\n+      .. code-block:: jsp\n+\n+        <form:form modelAttribute=\"sampleForm\">\n+            <c:forEach var=\"roleEntry\" items=\"${CL_ROLE}\" varStatus=\"status\">\n+                <form:checkbox path=\"roles[${status.index}].value\"\n+                            value=\"${roleEntry.key}\" label=\"${roleEntry.value}\" />\n+            </c:forEach>\n+            <form:button>Submit</form:button>\n+        </form:form>\n+\n+    この方法で実装すると、チェックボックスの選択の有無に関係なくコードリストの要素数だけJava Beanオブジェクトがリストに追加される。\n+    Java Beanオブジェクトの\\ ``value``\\プロパティの値は、\n+    チェックボックスにチェックすると対応するコード値が、チェックしないと\\ ``null``\\ が設定される。\n+    チェックボックスでチェックした値を取得するためには、ロジックで\\ ``null``\\ 値以外を取得するようにフィルタリングする必要がある。\n+\n+    **上記理由に加え、JSPが煩雑になることから** \\ ``<c:forEach>``\\ **は使用せずに本説記載の方法を利用することを推奨する。**\n+\n+|\n+\n+\n+.. _Validation_exist_in_codelist_javase8:\n+\n+Java SE8とHibernate Validator 5.2+による実装\n+\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n+\n+Java SE8に対応したHibernate Validator 5.2+を導入し、\n+Java SE8から追加された\\ ``java.lang.annotation.ElementType.TYPE_USE``\\ を使用することで実装が可能である。\n+\n+共通ライブラリから標準で提供される\\ ``@ExistInCodeList``\\は、Java SE7互換のため\\ ``TYPE_USE``\\に対応していない。\n+\n+\\ ``TYPE_USE``\\に対応するためには、独自にアノテーションを作成する必要がある。\n+\n+主な手順は以下の通り。\n+\n+* 「TYPE_USE」を使用し、型使用箇所に付加できる\\ ``@ExistInCodeList``\\ アノテーションを実装する。\n+\n+* チェック対象にアノテーションを設定する。\n+\n+複数項目設定可能なRole(\\ ``String``\\ の\\ ``List``\\ )に対する入力チェックを例に用いて説明する。\n+\n+* 型使用箇所に付加できる\\ ``@ExistInCodeListForCollection``\\ の実装例\n+\n+  .. code-block:: java\n+    :emphasize-lines: 18,23,31\n+\n+    package com.example.common.validation;\n+\n+    import static java.lang.annotation.ElementType.ANNOTATION_TYPE;\n+    import static java.lang.annotation.ElementType.FIELD;\n+    import static java.lang.annotation.ElementType.METHOD;\n+    import static java.lang.annotation.ElementType.PARAMETER;\n+    import static java.lang.annotation.ElementType.TYPE_USE;\n+    import static java.lang.annotation.RetentionPolicy.RUNTIME;\n+    import java.lang.annotation.Documented;\n+    import java.lang.annotation.Retention;\n+    import java.lang.annotation.Target;\n+    import javax.validation.Constraint;\n+    import javax.validation.Payload;\n+    import org.terasoluna.gfw.common.codelist.validator.ExistInCodeListValidatorForCharSequence;\n+    import org.terasoluna.gfw.common.codelist.validator.ExistInCodeListValidatorForCharacter;\n+\n+    @Documented\n+    @Target({ METHOD, FIELD, ANNOTATION_TYPE, PARAMETER, TYPE_USE }) // (1)\n+    @Retention(RUNTIME)\n+    @Constraint(validatedBy = { ExistInCodeListValidatorForCharSequence.class,\n+            ExistInCodeListValidatorForCharacter.class })\n+    public @interface ExistInCodeListForCollection {\n+        String message() default \"{com.example.common.validation.ExistInCodeListForCollection.message}\"; // (2)\n+\n+        String codeListId();\n+\n+        Class<?>[] groups() default {};\n+\n+        Class<? extends Payload>[] payload() default {};\n+\n+        @Target({ METHOD, FIELD, ANNOTATION_TYPE, PARAMETER, TYPE_USE }) // (3)\n+        @Retention(RUNTIME)\n+        @Documented\n+        @interface List {\n+            ExistInCodeListForCollection[] value();\n+        }\n+    }\n+\n+\n+  .. tabularcolumns:: |p{0.10\\linewidth}|p{0.90\\linewidth}|\n+  .. list-table::\n+     :header-rows: 1\n+     :widths: 10 90\n+\n+     * - 項番\n+       - 説明\n+     * - | (1)\n+       - | \\ ``TYPE_USE``\\ を設定し、このアノテーションが型使用箇所で付加できるようにする。\n+     * - | (2)\n+       - | エラーメッセージのデフォルト値を定義する。\n+     * - | (3)\n+       - | \\ ``TYPE_USE``\\ を設定し、このアノテーションが型使用箇所で付加できるようにする。\n+\n+\n+|\n+\n+* JSP\n+\n+  .. code-block:: jsp\n+\n+    <form:form modelAttribute=\"sampleForm\">\n+        <!-- (1) -->\n+        <form:checkboxes path=\"roles\" items=\"${CL_ROLE}\"/>\n+        <form:errors path=\"roles*\"/>\n+        <form:button>Submit</form:button>\n+    </form:form>\n+\n+\n+  .. tabularcolumns:: |p{0.10\\linewidth}|p{0.90\\linewidth}|\n+  .. list-table::\n+     :header-rows: 1\n+     :widths: 10 90\n+\n+     * - 項番\n+       - 説明\n+     * - | (1)\n+       - |  入力チェックを行わない場合と同様に\\ ``<form:checkboxes>``\\ を使用することができる。\n+\n+\n+|\n+\n+* フォームクラス\n+\n+  .. code-block:: java\n+    :emphasize-lines: 9\n+\n+    package com.example.common.validation;\n+\n+    import java.util.List;\n+\n+    import javax.validation.constraints.NotNull;\n+\n+    public class SampleForm {\n+        private List<@ExistInCodeListForCollection(codeListId = \"CL_XXX\") String> roles; // (1)\n+\n+        public List<String> getRoles() {\n+            return roles;\n+        }\n+\n+        public void setRoles(List<String> roles) {\n+            this.roles = roles;\n+        }\n+    }\n+\n+\n+  .. tabularcolumns:: |p{0.10\\linewidth}|p{0.90\\linewidth}|\n+  .. list-table::\n+     :header-rows: 1\n+     :widths: 10 90\n+\n+     * - 項番\n+       - 説明\n+     * - | (1)\n+       - | 入力チェックを行いたいプロパティに対して\\ ``@ExistInCodeListForCollection``\\ アノテーションを設定し、\\ ``codeListId``\\ にチェック元となるコードリストを指定する。\n+\n+.. tip::\n+\n+  \\ ``java.lang.annotation.ElementType.TYPE_USE``\\ を使用することで、宣言に限らず型全般（ローカル変数の型等）にアノテーションを付加できるようになる。\n+  \\ ``java.lang.annotation.ElementType.TYPE_USE``\\ **はJava SE8から追加された機能なので、Java SE7以下では利用できない。**","path":"source/ArchitectureInDetail/WebApplicationDetail/Validation.rst","position":205,"original_position":206,"commit_id":"b797984b9db9b74caf9cb22a04f5928db800777e","original_commit_id":"b797984b9db9b74caf9cb22a04f5928db800777e","user":{"login":"kazuki43zoo","id":5616270,"avatar_url":"https://avatars.githubusercontent.com/u/5616270?v=3","gravatar_id":"","url":"https://api.github.com/users/kazuki43zoo","html_url":"https://github.com/kazuki43zoo","followers_url":"https://api.github.com/users/kazuki43zoo/followers","following_url":"https://api.github.com/users/kazuki43zoo/following{/other_user}","gists_url":"https://api.github.com/users/kazuki43zoo/gists{/gist_id}","starred_url":"https://api.github.com/users/kazuki43zoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kazuki43zoo/subscriptions","organizations_url":"https://api.github.com/users/kazuki43zoo/orgs","repos_url":"https://api.github.com/users/kazuki43zoo/repos","events_url":"https://api.github.com/users/kazuki43zoo/events{/privacy}","received_events_url":"https://api.github.com/users/kazuki43zoo/received_events","type":"User","site_admin":false},"body":"- [ ] 冒頭でJava SE 8以上でサポートされている旨を説明しているので、このタイミングJava SE 7以下の話題を出す必要はないと思います。","created_at":"2016-07-16T00:21:28Z","updated_at":"2016-07-16T00:21:28Z","html_url":"https://github.com/terasolunaorg/guideline/pull/1939#discussion_r71056376","pull_request_url":"https://api.github.com/repos/terasolunaorg/guideline/pulls/1939","_links":{"self":{"href":"https://api.github.com/repos/terasolunaorg/guideline/pulls/comments/71056376"},"html":{"href":"https://github.com/terasolunaorg/guideline/pull/1939#discussion_r71056376"},"pull_request":{"href":"https://api.github.com/repos/terasolunaorg/guideline/pulls/1939"}}},"pull_request":{"url":"https://api.github.com/repos/terasolunaorg/guideline/pulls/1939","id":74020903,"html_url":"https://github.com/terasolunaorg/guideline/pull/1939","diff_url":"https://github.com/terasolunaorg/guideline/pull/1939.diff","patch_url":"https://github.com/terasolunaorg/guideline/pull/1939.patch","issue_url":"https://api.github.com/repos/terasolunaorg/guideline/issues/1939","number":1939,"state":"open","locked":false,"title":"add the support the validation for  String objects in a collection #407","user":{"login":"btyamadasun","id":18542545,"avatar_url":"https://avatars.githubusercontent.com/u/18542545?v=3","gravatar_id":"","url":"https://api.github.com/users/btyamadasun","html_url":"https://github.com/btyamadasun","followers_url":"https://api.github.com/users/btyamadasun/followers","following_url":"https://api.github.com/users/btyamadasun/following{/other_user}","gists_url":"https://api.github.com/users/btyamadasun/gists{/gist_id}","starred_url":"https://api.github.com/users/btyamadasun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/btyamadasun/subscriptions","organizations_url":"https://api.github.com/users/btyamadasun/orgs","repos_url":"https://api.github.com/users/btyamadasun/repos","events_url":"https://api.github.com/users/btyamadasun/events{/privacy}","received_events_url":"https://api.github.com/users/btyamadasun/received_events","type":"User","site_admin":false},"body":"Please review #407 .","created_at":"2016-06-16T04:32:26Z","updated_at":"2016-07-16T00:21:28Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4c4aebe47f093ca045aa170ec1b178c693f9d1bc","assignee":{"login":"btyamadasun","id":18542545,"avatar_url":"https://avatars.githubusercontent.com/u/18542545?v=3","gravatar_id":"","url":"https://api.github.com/users/btyamadasun","html_url":"https://github.com/btyamadasun","followers_url":"https://api.github.com/users/btyamadasun/followers","following_url":"https://api.github.com/users/btyamadasun/following{/other_user}","gists_url":"https://api.github.com/users/btyamadasun/gists{/gist_id}","starred_url":"https://api.github.com/users/btyamadasun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/btyamadasun/subscriptions","organizations_url":"https://api.github.com/users/btyamadasun/orgs","repos_url":"https://api.github.com/users/btyamadasun/repos","events_url":"https://api.github.com/users/btyamadasun/events{/privacy}","received_events_url":"https://api.github.com/users/btyamadasun/received_events","type":"User","site_admin":false},"assignees":[{"login":"btyamadasun","id":18542545,"avatar_url":"https://avatars.githubusercontent.com/u/18542545?v=3","gravatar_id":"","url":"https://api.github.com/users/btyamadasun","html_url":"https://github.com/btyamadasun","followers_url":"https://api.github.com/users/btyamadasun/followers","following_url":"https://api.github.com/users/btyamadasun/following{/other_user}","gists_url":"https://api.github.com/users/btyamadasun/gists{/gist_id}","starred_url":"https://api.github.com/users/btyamadasun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/btyamadasun/subscriptions","organizations_url":"https://api.github.com/users/btyamadasun/orgs","repos_url":"https://api.github.com/users/btyamadasun/repos","events_url":"https://api.github.com/users/btyamadasun/events{/privacy}","received_events_url":"https://api.github.com/users/btyamadasun/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/terasolunaorg/guideline/pulls/1939/commits","review_comments_url":"https://api.github.com/repos/terasolunaorg/guideline/pulls/1939/comments","review_comment_url":"https://api.github.com/repos/terasolunaorg/guideline/pulls/comments{/number}","comments_url":"https://api.github.com/repos/terasolunaorg/guideline/issues/1939/comments","statuses_url":"https://api.github.com/repos/terasolunaorg/guideline/statuses/b797984b9db9b74caf9cb22a04f5928db800777e","head":{"label":"terasolunaorg:issues/407_supportValidationForStringObjectInCollection","ref":"issues/407_supportValidationForStringObjectInCollection","sha":"b797984b9db9b74caf9cb22a04f5928db800777e","user":{"login":"terasolunaorg","id":2259156,"avatar_url":"https://avatars.githubusercontent.com/u/2259156?v=3","gravatar_id":"","url":"https://api.github.com/users/terasolunaorg","html_url":"https://github.com/terasolunaorg","followers_url":"https://api.github.com/users/terasolunaorg/followers","following_url":"https://api.github.com/users/terasolunaorg/following{/other_user}","gists_url":"https://api.github.com/users/terasolunaorg/gists{/gist_id}","starred_url":"https://api.github.com/users/terasolunaorg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/terasolunaorg/subscriptions","organizations_url":"https://api.github.com/users/terasolunaorg/orgs","repos_url":"https://api.github.com/users/terasolunaorg/repos","events_url":"https://api.github.com/users/terasolunaorg/events{/privacy}","received_events_url":"https://api.github.com/users/terasolunaorg/received_events","type":"Organization","site_admin":false},"repo":{"id":15253684,"name":"guideline","full_name":"terasolunaorg/guideline","owner":{"login":"terasolunaorg","id":2259156,"avatar_url":"https://avatars.githubusercontent.com/u/2259156?v=3","gravatar_id":"","url":"https://api.github.com/users/terasolunaorg","html_url":"https://github.com/terasolunaorg","followers_url":"https://api.github.com/users/terasolunaorg/followers","following_url":"https://api.github.com/users/terasolunaorg/following{/other_user}","gists_url":"https://api.github.com/users/terasolunaorg/gists{/gist_id}","starred_url":"https://api.github.com/users/terasolunaorg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/terasolunaorg/subscriptions","organizations_url":"https://api.github.com/users/terasolunaorg/orgs","repos_url":"https://api.github.com/users/terasolunaorg/repos","events_url":"https://api.github.com/users/terasolunaorg/events{/privacy}","received_events_url":"https://api.github.com/users/terasolunaorg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/terasolunaorg/guideline","description":"TERASOLUNA Server Framework for Java (5.x)  Development Guideline","fork":false,"url":"https://api.github.com/repos/terasolunaorg/guideline","forks_url":"https://api.github.com/repos/terasolunaorg/guideline/forks","keys_url":"https://api.github.com/repos/terasolunaorg/guideline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/terasolunaorg/guideline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/terasolunaorg/guideline/teams","hooks_url":"https://api.github.com/repos/terasolunaorg/guideline/hooks","issue_events_url":"https://api.github.com/repos/terasolunaorg/guideline/issues/events{/number}","events_url":"https://api.github.com/repos/terasolunaorg/guideline/events","assignees_url":"https://api.github.com/repos/terasolunaorg/guideline/assignees{/user}","branches_url":"https://api.github.com/repos/terasolunaorg/guideline/branches{/branch}","tags_url":"https://api.github.com/repos/terasolunaorg/guideline/tags","blobs_url":"https://api.github.com/repos/terasolunaorg/guideline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/terasolunaorg/guideline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/terasolunaorg/guideline/git/refs{/sha}","trees_url":"https://api.github.com/repos/terasolunaorg/guideline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/terasolunaorg/guideline/statuses/{sha}","languages_url":"https://api.github.com/repos/terasolunaorg/guideline/languages","stargazers_url":"https://api.github.com/repos/terasolunaorg/guideline/stargazers","contributors_url":"https://api.github.com/repos/terasolunaorg/guideline/contributors","subscribers_url":"https://api.github.com/repos/terasolunaorg/guideline/subscribers","subscription_url":"https://api.github.com/repos/terasolunaorg/guideline/subscription","commits_url":"https://api.github.com/repos/terasolunaorg/guideline/commits{/sha}","git_commits_url":"https://api.github.com/repos/terasolunaorg/guideline/git/commits{/sha}","comments_url":"https://api.github.com/repos/terasolunaorg/guideline/comments{/number}","issue_comment_url":"https://api.github.com/repos/terasolunaorg/guideline/issues/comments{/number}","contents_url":"https://api.github.com/repos/terasolunaorg/guideline/contents/{+path}","compare_url":"https://api.github.com/repos/terasolunaorg/guideline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/terasolunaorg/guideline/merges","archive_url":"https://api.github.com/repos/terasolunaorg/guideline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/terasolunaorg/guideline/downloads","issues_url":"https://api.github.com/repos/terasolunaorg/guideline/issues{/number}","pulls_url":"https://api.github.com/repos/terasolunaorg/guideline/pulls{/number}","milestones_url":"https://api.github.com/repos/terasolunaorg/guideline/milestones{/number}","notifications_url":"https://api.github.com/repos/terasolunaorg/guideline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/terasolunaorg/guideline/labels{/name}","releases_url":"https://api.github.com/repos/terasolunaorg/guideline/releases{/id}","deployments_url":"https://api.github.com/repos/terasolunaorg/guideline/deployments","created_at":"2013-12-17T12:19:55Z","updated_at":"2016-07-11T00:36:27Z","pushed_at":"2016-07-15T04:35:09Z","git_url":"git://github.com/terasolunaorg/guideline.git","ssh_url":"git@github.com:terasolunaorg/guideline.git","clone_url":"https://github.com/terasolunaorg/guideline.git","svn_url":"https://github.com/terasolunaorg/guideline","homepage":"http://terasolunaorg.github.io/guideline/","size":71610,"stargazers_count":58,"watchers_count":58,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"open_issues_count":141,"forks":11,"open_issues":141,"watchers":58,"default_branch":"master"}},"base":{"label":"terasolunaorg:master","ref":"master","sha":"280c415dcb9cc2f4fa0358a7785ad278dea73a33","user":{"login":"terasolunaorg","id":2259156,"avatar_url":"https://avatars.githubusercontent.com/u/2259156?v=3","gravatar_id":"","url":"https://api.github.com/users/terasolunaorg","html_url":"https://github.com/terasolunaorg","followers_url":"https://api.github.com/users/terasolunaorg/followers","following_url":"https://api.github.com/users/terasolunaorg/following{/other_user}","gists_url":"https://api.github.com/users/terasolunaorg/gists{/gist_id}","starred_url":"https://api.github.com/users/terasolunaorg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/terasolunaorg/subscriptions","organizations_url":"https://api.github.com/users/terasolunaorg/orgs","repos_url":"https://api.github.com/users/terasolunaorg/repos","events_url":"https://api.github.com/users/terasolunaorg/events{/privacy}","received_events_url":"https://api.github.com/users/terasolunaorg/received_events","type":"Organization","site_admin":false},"repo":{"id":15253684,"name":"guideline","full_name":"terasolunaorg/guideline","owner":{"login":"terasolunaorg","id":2259156,"avatar_url":"https://avatars.githubusercontent.com/u/2259156?v=3","gravatar_id":"","url":"https://api.github.com/users/terasolunaorg","html_url":"https://github.com/terasolunaorg","followers_url":"https://api.github.com/users/terasolunaorg/followers","following_url":"https://api.github.com/users/terasolunaorg/following{/other_user}","gists_url":"https://api.github.com/users/terasolunaorg/gists{/gist_id}","starred_url":"https://api.github.com/users/terasolunaorg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/terasolunaorg/subscriptions","organizations_url":"https://api.github.com/users/terasolunaorg/orgs","repos_url":"https://api.github.com/users/terasolunaorg/repos","events_url":"https://api.github.com/users/terasolunaorg/events{/privacy}","received_events_url":"https://api.github.com/users/terasolunaorg/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/terasolunaorg/guideline","description":"TERASOLUNA Server Framework for Java (5.x)  Development Guideline","fork":false,"url":"https://api.github.com/repos/terasolunaorg/guideline","forks_url":"https://api.github.com/repos/terasolunaorg/guideline/forks","keys_url":"https://api.github.com/repos/terasolunaorg/guideline/keys{/key_id}","collaborators_url":"https://api.github.com/repos/terasolunaorg/guideline/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/terasolunaorg/guideline/teams","hooks_url":"https://api.github.com/repos/terasolunaorg/guideline/hooks","issue_events_url":"https://api.github.com/repos/terasolunaorg/guideline/issues/events{/number}","events_url":"https://api.github.com/repos/terasolunaorg/guideline/events","assignees_url":"https://api.github.com/repos/terasolunaorg/guideline/assignees{/user}","branches_url":"https://api.github.com/repos/terasolunaorg/guideline/branches{/branch}","tags_url":"https://api.github.com/repos/terasolunaorg/guideline/tags","blobs_url":"https://api.github.com/repos/terasolunaorg/guideline/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/terasolunaorg/guideline/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/terasolunaorg/guideline/git/refs{/sha}","trees_url":"https://api.github.com/repos/terasolunaorg/guideline/git/trees{/sha}","statuses_url":"https://api.github.com/repos/terasolunaorg/guideline/statuses/{sha}","languages_url":"https://api.github.com/repos/terasolunaorg/guideline/languages","stargazers_url":"https://api.github.com/repos/terasolunaorg/guideline/stargazers","contributors_url":"https://api.github.com/repos/terasolunaorg/guideline/contributors","subscribers_url":"https://api.github.com/repos/terasolunaorg/guideline/subscribers","subscription_url":"https://api.github.com/repos/terasolunaorg/guideline/subscription","commits_url":"https://api.github.com/repos/terasolunaorg/guideline/commits{/sha}","git_commits_url":"https://api.github.com/repos/terasolunaorg/guideline/git/commits{/sha}","comments_url":"https://api.github.com/repos/terasolunaorg/guideline/comments{/number}","issue_comment_url":"https://api.github.com/repos/terasolunaorg/guideline/issues/comments{/number}","contents_url":"https://api.github.com/repos/terasolunaorg/guideline/contents/{+path}","compare_url":"https://api.github.com/repos/terasolunaorg/guideline/compare/{base}...{head}","merges_url":"https://api.github.com/repos/terasolunaorg/guideline/merges","archive_url":"https://api.github.com/repos/terasolunaorg/guideline/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/terasolunaorg/guideline/downloads","issues_url":"https://api.github.com/repos/terasolunaorg/guideline/issues{/number}","pulls_url":"https://api.github.com/repos/terasolunaorg/guideline/pulls{/number}","milestones_url":"https://api.github.com/repos/terasolunaorg/guideline/milestones{/number}","notifications_url":"https://api.github.com/repos/terasolunaorg/guideline/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/terasolunaorg/guideline/labels{/name}","releases_url":"https://api.github.com/repos/terasolunaorg/guideline/releases{/id}","deployments_url":"https://api.github.com/repos/terasolunaorg/guideline/deployments","created_at":"2013-12-17T12:19:55Z","updated_at":"2016-07-11T00:36:27Z","pushed_at":"2016-07-15T04:35:09Z","git_url":"git://github.com/terasolunaorg/guideline.git","ssh_url":"git@github.com:terasolunaorg/guideline.git","clone_url":"https://github.com/terasolunaorg/guideline.git","svn_url":"https://github.com/terasolunaorg/guideline","homepage":"http://terasolunaorg.github.io/guideline/","size":71610,"stargazers_count":58,"watchers_count":58,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"open_issues_count":141,"forks":11,"open_issues":141,"watchers":58,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/terasolunaorg/guideline/pulls/1939"},"html":{"href":"https://github.com/terasolunaorg/guideline/pull/1939"},"issue":{"href":"https://api.github.com/repos/terasolunaorg/guideline/issues/1939"},"comments":{"href":"https://api.github.com/repos/terasolunaorg/guideline/issues/1939/comments"},"review_comments":{"href":"https://api.github.com/repos/terasolunaorg/guideline/pulls/1939/comments"},"review_comment":{"href":"https://api.github.com/repos/terasolunaorg/guideline/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/terasolunaorg/guideline/pulls/1939/commits"},"statuses":{"href":"https://api.github.com/repos/terasolunaorg/guideline/statuses/b797984b9db9b74caf9cb22a04f5928db800777e"}}}}
{"actor":{"display_login":"kazuki43zoo"}}