{"action":"created","comment":{"url":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/comments/41830932","id":41830932,"diff_hunk":"@@ -0,0 +1,741 @@\n+= Vert.x Codegen\n+\n+Vert.x Codegen is an annotation processing tool for processing Vert.x API and create API in different JVM lauguages.\n+\n+Vert.x polyglot langs use code generation for creating https://en.wikipedia.org/wiki/Shim_(computing)[shim] for APIs,\n+that is thin wrappers in front of the API type.\n+\n+A shim is the adaptation of a Vert.x API in a JVM language. A shim uses code generation to generate\n+the shim in its language from a Vert.x API, code generation is based on Java annotation processing.\n+\n+== Vert.x API\n+\n+A Vert.x API is a collection of Java types annotated with Codegen annotations that respect a set of constraints to\n+ensure easy portability of the API to most languages and enable an asynchronous programming model. Such collection\n+of API types are grouped in modules.\n+\n+=== Modules\n+\n+Modules are declared by annotating a Java package with a `link:../../apidocs/io/vertx/codegen/annotations/ModuleGen.html[@ModuleGen]`\n+annotation.\n+\n+[source,java]\n+----\n+ModuleGen(name = \"acme\", groupPackage=\"com.acme\")\n+package com.acme.myservice;\n+\n+import io.vertx.codegen.annotations.ModuleGen;\n+----\n+\n+The module _name_ is a namespace for shims that don't support package like naming, like JavaScript `acme-js`\n+or Ruby `acme`, whereas the _group package_ is determines the created package, for instance\n+for Groovy `com.acme.groovy.myservice`. The group package must be a prefix of the annotated module.\n+\n+Vert.x modules uses the reserved name _vertx-XYZ_ and the reserved group package _io.vertx_.\n+\n+An API module contains various Vert.x types annotated with `link:../../apidocs/io/vertx/codegen/annotations/VertxGen.html[@VertxGen]`\n+or `link:../../apidocs/io/vertx/codegen/annotations/DataObject.html[@DataObject]`.\n+\n+NOTE: using Maven coordinates for name and group package is encouraged: the name corresponding to the\n+Maven _artifactId_ and the group package corresponding to the `groupId`.\n+\n+=== Data objects\n+\n+_Data objects_ are Java class whose only purpose are to be data containers of various value types. A data object\n+is mapped in some languages to Json.\n+\n+In its simplest form, a data object is a Java class following these rules:\n+\n+1. the class is annotated with `link:../../apidocs/io/vertx/codegen/annotations/DataObject.html[@DataObject]`\n+2. provide a zero argument constructor\n+3. provide a constructor with the `io.vertx.core.json.JsonObject` argument\n+4. provide a copy constructor with the exact same type\n+\n+A data object can be also be an interface annotated with `@DataObject`, this is useful when multiple inheritance\n+is needed. For instance Vert.x Core defines the `KeyCertOptions` and `TrustOptions` data object interfaces and the\n+`JksOptions` is a data object class that implements both of them because a Java keystore provides support for both.\n+\n+Data object can also inherit other data objects, when it does so it inherits naturally its properties.\n+\n+==== Data object properties\n+\n+DataObject properties are declared via _setters_:\n+\n+.a setter\n+[source,java]\n+----\n+public WebServerOptions setHost(String host) {\n+  this.host = host;\n+  return this;\n+}\n+----\n+\n+Here is the list of supported property single valued types:\n+\n+1. any primitive or boxed primitive type\n+2. `java.lang.String`\n+3. `io.vertx.core.json.JsonObject` and `io.vertx.core.json.JsonArray`\n+4. the specific `io.vertx.core.buffer.Buffer` type providing support for byte array\n+5. Java enums\n+6. another data object\n+\n+In addition a data object can also have multi valued properties as a `java.util.List<V>` or a\n+`java.util.Map<String, V>` where the `<V>` is a supported single valued type or `java.lang.Object`\n+that stands for anything converted by `io.vertx.core.json.JsonObject` and `io.vertx.core.json.JsonArray`.\n+\n+List multi valued properties can be declared via a _setter_ :\n+\n+.a multi valued setter\n+[source,java]\n+----\n+public WebServerOptions setCertificates(List<String> certificates) {\n+  this.certificates = certificates;\n+  return this;\n+}\n+----\n+\n+Or an _adder_ :\n+\n+.a multi valued adder\n+[source,java]\n+----\n+public WebServerOptions addCertificate(String certificate) {\n+  this.certificates.add(certificate);\n+  return this;\n+}\n+----\n+\n+Map multi valued properties can be declared via a _setter_.\n+\n+NOTE: these examples uses a _fluent_ return types for providing a better API, this is not mandatory but\n+encouraged\n+\n+==== Json conversion\n+\n+Vert.x requires data object to be convertible from json with the json argument constructor. Altough there\n+is no strict rules of mapping between the data object properties and the json structure, it is a good thing\n+to follow a common mapping for users using json data objects (like in JavaScript shim).\n+\n+Json properties should be named after properties according to JavaBean conversion rules:\n+\n+- a single valued property follows the JavaBean convention\n+- a multi valued property declared with a list setter follows the same convention\n+- a multi valued property declared with an adder must use a singular form and the json property name gets a trailing _s_\n+\n+In all case, property names are _normalized_, i.e:\n+\n+- _red_ -> _red_\n+- _Red_ -> _red_\n+- _URL_ -> _url_\n+- _URLFactory_ -> _urlFactory_\n+\n+==== Jsonifiable data object\n+\n+When a data object declares a `public JsonObject toJson()` method it can be converted to the json format\n+and is said _jsonifiable_. Vert.x API types have restriction in the declared method return types, a jsonifiable\n+data object can be used in Vert.x API method return types or handlers because it can be converted to a json\n+format, otherwise it is not permitted.\n+\n+==== Data object converter\n+\n+Vert.x requires only the conversion from json, but the conversion to json can be useful when the API uses\n+data objects as return types. The implementation of the data object / json conversion can be tedious and\n+error prone.\n+\n+The data object / json conversion can be automated based on the rules given above. Vert.x Core allows to\n+generate auxilliary classes that implement the conversion logic. The generated converters handle the\n+type mapping as well as the json naming convention.\n+\n+Converters are generated when the data object is annotated with `@DataObject(generateConverter=true)`. The\n+generation happens for the data object properties, not for the ancestor properties, unless `inheritConverter`\n+is set: `@DataObject(generateConverter=true,inheritConverter=true)`.\n+\n+The converter is named by appending the `Converter` suffix to the data object class name, e.g,\n+`ContactDetails` -> `ContactDetailsConverter`. The generated converter has two static methods:\n+\n+- `public static void fromJson(JsonObject json, ContactDetails obj)`\n+- `public static void toJson(ContactDetails obj, JsonObject json)`\n+\n+The former should be used in the json constructor, the later in the `toJson` method.\n+\n+=== Building types\n+\n+A few types used throughout Vert.x API are not annotated with `@VertxGen` yet are used for building\n+the API:\n+\n+- `io.vertx.core.Handler`\n+- `io.vertx.core.AsyncResult`\n+- `io.vertx.core.json.JsonObject`\n+- `io.vertx.core.json.JsonArray`\n+- `java.lang.Object`\n+- `java.lang.Throwable`\n+- `java.lang.Void`\n+- `java.lang.String`\n+- `java.util.List`\n+- `java.util.Set`\n+- `java.util.Map`\n+- primitive and boxed primitives\n+\n+These types are usually handled natively by shims, for instance the `Handler` type is a function in JavaScript,\n+a block in Ruby, the same `Handler` in Groovy, a function in Ceylon, etc...\n+\n+=== Generated types\n+\n+An API type is a Java interface annotated with `link:../../apidocs/io/vertx/codegen/annotations/VertxGen.html[@VertxGen]`.\n+\n+Vert.x provides a async / non blocking / polyglot programming model, code generated API shall follow some\n+rules to make this possible:\n+\n+1. the API must be described as a set of Java interfaces, classes are not permitted\n+2. nested interfaces are not permitted\n+3. All interfaces to have generation performed on them must be annotated with the `io.vertx.codegen.annotations.VertxGen` annotation\n+4. fluent methods (methods which return a reference to this) must be annotated with the `io.vertx.codegen.annotations.Fluent` annotation\n+5. methods where the return value must be cached in the API shim must be annotated with the `io.vertx.codegen.annotations.CacheReturn` annotation\n+6. only certain types are allowed as parameter or return value types for any API methods\n+7. custom enums should be annotated with `@VertxGen`, although this is not mandatory to allow the usage of existing Java enums\n+\n+An API type can be generic or declare generic methods, type parameters must be unbounded, e.g\n+`<N extends Number>` is forbidden.\n+\n+In the perspective of codegen, Java types can be categories as follow:\n+\n+. _basic_ type : any primitive/boxed type or `java.lang.String`\n+. _json_ type : `io.vertx.core.json.JsonObject` or `io.vertx.core.json.JsonArray`\n+. _api_ type : any type annotated with `io.vertx.codegen.annotations.VertxGen`\n+. _data object_ type : any type annotated with `io.vertx.codegen.annotations.DataObject`\n+. _enum_ type : any Java enum\n+. _collection_ type : `java.util.List<V>`, `java.util.Set<V>` or `java.util.Map<String, V>`\n+\n+Parameterized types are supported but wildcards are not, that is the following type arguments declarations\n+are forbidden:\n+\n+- `Foo<?>`\n+- `Foo<? extends Number>`\n+- `Foo<? super Number>`\n+\n+Parameterized types are only supported for _api_ generic types and _collection_ types.\n+\n+Type variables are allowed and carry a special meaning: a type variable is a dynamic form of a _basic_ type and\n+_json_ type.\n+\n+==== Inheritance\n+\n+_api_ type can extend other _api_ types.\n+\n+An _api_ type can either be *concrete* or *abstract*, such information is importan for languages not\n+supporting multiple class inheritance like Groovy:\n+\n+- _api_ types annotated with `link:../../apidocs/io/vertx/codegen/annotations/VertxGen.html[@VertxGen]``(concrete = false)` are meant to be\n+extended by *concrete* interfaces an can inherit from *abstract* interfaces only.\n+- _api_ types annotated with `link:../../apidocs/io/vertx/codegen/annotations/VertxGen.html[@VertxGen]` or `link:../../apidocs/io/vertx/codegen/annotations/VertxGen.html[@VertxGen]``(concrete = true)`\n+are implemented directly by Vertx and can inherit at most one other *concrete* interface and any *abstract* interface\n+\n+==== Method return type\n+\n+The following return types are allowed:\n+\n+. `void` type\n+. any _basic_ type\n+. any _api_ type or parameterized _api_ type having type variable parameters\n+. any _json_ type\n+. the `java.lang.Throwable` type\n+. any _enum_ type\n+. any _data object_ type\n+. an unbounded type variable","path":"src/main/asciidoc/java/index.adoc","position":244,"original_position":244,"commit_id":"1b5d141a39d5faf8a7baf86d969305fd1be48c83","original_commit_id":"1b5d141a39d5faf8a7baf86d969305fd1be48c83","user":{"login":"cescoffier","id":402301,"avatar_url":"https://avatars.githubusercontent.com/u/402301?v=3","gravatar_id":"","url":"https://api.github.com/users/cescoffier","html_url":"https://github.com/cescoffier","followers_url":"https://api.github.com/users/cescoffier/followers","following_url":"https://api.github.com/users/cescoffier/following{/other_user}","gists_url":"https://api.github.com/users/cescoffier/gists{/gist_id}","starred_url":"https://api.github.com/users/cescoffier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cescoffier/subscriptions","organizations_url":"https://api.github.com/users/cescoffier/orgs","repos_url":"https://api.github.com/users/cescoffier/repos","events_url":"https://api.github.com/users/cescoffier/events{/privacy}","received_events_url":"https://api.github.com/users/cescoffier/received_events","type":"User","site_admin":false},"body":"to explain","created_at":"2015-10-13T06:32:26Z","updated_at":"2015-10-13T06:32:26Z","html_url":"https://github.com/vert-x3/vertx-codegen/pull/61#discussion_r41830932","pull_request_url":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/61","_links":{"self":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/comments/41830932"},"html":{"href":"https://github.com/vert-x3/vertx-codegen/pull/61#discussion_r41830932"},"pull_request":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/61"}}},"pull_request":{"url":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/61","id":47436927,"html_url":"https://github.com/vert-x3/vertx-codegen/pull/61","diff_url":"https://github.com/vert-x3/vertx-codegen/pull/61.diff","patch_url":"https://github.com/vert-x3/vertx-codegen/pull/61.patch","issue_url":"https://api.github.com/repos/vert-x3/vertx-codegen/issues/61","number":61,"state":"open","locked":false,"title":"New doc","user":{"login":"vietj","id":225674,"avatar_url":"https://avatars.githubusercontent.com/u/225674?v=3","gravatar_id":"","url":"https://api.github.com/users/vietj","html_url":"https://github.com/vietj","followers_url":"https://api.github.com/users/vietj/followers","following_url":"https://api.github.com/users/vietj/following{/other_user}","gists_url":"https://api.github.com/users/vietj/gists{/gist_id}","starred_url":"https://api.github.com/users/vietj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vietj/subscriptions","organizations_url":"https://api.github.com/users/vietj/orgs","repos_url":"https://api.github.com/users/vietj/repos","events_url":"https://api.github.com/users/vietj/events{/privacy}","received_events_url":"https://api.github.com/users/vietj/received_events","type":"User","site_admin":false},"body":"Fix inconsistencies throughout API + new documentation start\r\n\r\n","created_at":"2015-10-12T16:06:22Z","updated_at":"2015-10-13T06:32:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d8483dfd96cc4ae7363465146407ec5ea19e081b","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/61/commits","review_comments_url":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/61/comments","review_comment_url":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/comments{/number}","comments_url":"https://api.github.com/repos/vert-x3/vertx-codegen/issues/61/comments","statuses_url":"https://api.github.com/repos/vert-x3/vertx-codegen/statuses/1b5d141a39d5faf8a7baf86d969305fd1be48c83","head":{"label":"vert-x3:new-doc","ref":"new-doc","sha":"1b5d141a39d5faf8a7baf86d969305fd1be48c83","user":{"login":"vert-x3","id":8124623,"avatar_url":"https://avatars.githubusercontent.com/u/8124623?v=3","gravatar_id":"","url":"https://api.github.com/users/vert-x3","html_url":"https://github.com/vert-x3","followers_url":"https://api.github.com/users/vert-x3/followers","following_url":"https://api.github.com/users/vert-x3/following{/other_user}","gists_url":"https://api.github.com/users/vert-x3/gists{/gist_id}","starred_url":"https://api.github.com/users/vert-x3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vert-x3/subscriptions","organizations_url":"https://api.github.com/users/vert-x3/orgs","repos_url":"https://api.github.com/users/vert-x3/repos","events_url":"https://api.github.com/users/vert-x3/events{/privacy}","received_events_url":"https://api.github.com/users/vert-x3/received_events","type":"Organization","site_admin":false},"repo":{"id":20025149,"name":"vertx-codegen","full_name":"vert-x3/vertx-codegen","owner":{"login":"vert-x3","id":8124623,"avatar_url":"https://avatars.githubusercontent.com/u/8124623?v=3","gravatar_id":"","url":"https://api.github.com/users/vert-x3","html_url":"https://github.com/vert-x3","followers_url":"https://api.github.com/users/vert-x3/followers","following_url":"https://api.github.com/users/vert-x3/following{/other_user}","gists_url":"https://api.github.com/users/vert-x3/gists{/gist_id}","starred_url":"https://api.github.com/users/vert-x3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vert-x3/subscriptions","organizations_url":"https://api.github.com/users/vert-x3/orgs","repos_url":"https://api.github.com/users/vert-x3/repos","events_url":"https://api.github.com/users/vert-x3/events{/privacy}","received_events_url":"https://api.github.com/users/vert-x3/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/vert-x3/vertx-codegen","description":"","fork":false,"url":"https://api.github.com/repos/vert-x3/vertx-codegen","forks_url":"https://api.github.com/repos/vert-x3/vertx-codegen/forks","keys_url":"https://api.github.com/repos/vert-x3/vertx-codegen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vert-x3/vertx-codegen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vert-x3/vertx-codegen/teams","hooks_url":"https://api.github.com/repos/vert-x3/vertx-codegen/hooks","issue_events_url":"https://api.github.com/repos/vert-x3/vertx-codegen/issues/events{/number}","events_url":"https://api.github.com/repos/vert-x3/vertx-codegen/events","assignees_url":"https://api.github.com/repos/vert-x3/vertx-codegen/assignees{/user}","branches_url":"https://api.github.com/repos/vert-x3/vertx-codegen/branches{/branch}","tags_url":"https://api.github.com/repos/vert-x3/vertx-codegen/tags","blobs_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/refs{/sha}","trees_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vert-x3/vertx-codegen/statuses/{sha}","languages_url":"https://api.github.com/repos/vert-x3/vertx-codegen/languages","stargazers_url":"https://api.github.com/repos/vert-x3/vertx-codegen/stargazers","contributors_url":"https://api.github.com/repos/vert-x3/vertx-codegen/contributors","subscribers_url":"https://api.github.com/repos/vert-x3/vertx-codegen/subscribers","subscription_url":"https://api.github.com/repos/vert-x3/vertx-codegen/subscription","commits_url":"https://api.github.com/repos/vert-x3/vertx-codegen/commits{/sha}","git_commits_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/commits{/sha}","comments_url":"https://api.github.com/repos/vert-x3/vertx-codegen/comments{/number}","issue_comment_url":"https://api.github.com/repos/vert-x3/vertx-codegen/issues/comments{/number}","contents_url":"https://api.github.com/repos/vert-x3/vertx-codegen/contents/{+path}","compare_url":"https://api.github.com/repos/vert-x3/vertx-codegen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vert-x3/vertx-codegen/merges","archive_url":"https://api.github.com/repos/vert-x3/vertx-codegen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vert-x3/vertx-codegen/downloads","issues_url":"https://api.github.com/repos/vert-x3/vertx-codegen/issues{/number}","pulls_url":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls{/number}","milestones_url":"https://api.github.com/repos/vert-x3/vertx-codegen/milestones{/number}","notifications_url":"https://api.github.com/repos/vert-x3/vertx-codegen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vert-x3/vertx-codegen/labels{/name}","releases_url":"https://api.github.com/repos/vert-x3/vertx-codegen/releases{/id}","created_at":"2014-05-21T14:53:16Z","updated_at":"2015-09-15T07:41:07Z","pushed_at":"2015-10-12T16:06:23Z","git_url":"git://github.com/vert-x3/vertx-codegen.git","ssh_url":"git@github.com:vert-x3/vertx-codegen.git","clone_url":"https://github.com/vert-x3/vertx-codegen.git","svn_url":"https://github.com/vert-x3/vertx-codegen","homepage":null,"size":3030,"stargazers_count":7,"watchers_count":7,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":18,"mirror_url":null,"open_issues_count":5,"forks":18,"open_issues":5,"watchers":7,"default_branch":"master"}},"base":{"label":"vert-x3:master","ref":"master","sha":"4e4b1e4287a8b83db1ceaa21db51acca22edbbee","user":{"login":"vert-x3","id":8124623,"avatar_url":"https://avatars.githubusercontent.com/u/8124623?v=3","gravatar_id":"","url":"https://api.github.com/users/vert-x3","html_url":"https://github.com/vert-x3","followers_url":"https://api.github.com/users/vert-x3/followers","following_url":"https://api.github.com/users/vert-x3/following{/other_user}","gists_url":"https://api.github.com/users/vert-x3/gists{/gist_id}","starred_url":"https://api.github.com/users/vert-x3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vert-x3/subscriptions","organizations_url":"https://api.github.com/users/vert-x3/orgs","repos_url":"https://api.github.com/users/vert-x3/repos","events_url":"https://api.github.com/users/vert-x3/events{/privacy}","received_events_url":"https://api.github.com/users/vert-x3/received_events","type":"Organization","site_admin":false},"repo":{"id":20025149,"name":"vertx-codegen","full_name":"vert-x3/vertx-codegen","owner":{"login":"vert-x3","id":8124623,"avatar_url":"https://avatars.githubusercontent.com/u/8124623?v=3","gravatar_id":"","url":"https://api.github.com/users/vert-x3","html_url":"https://github.com/vert-x3","followers_url":"https://api.github.com/users/vert-x3/followers","following_url":"https://api.github.com/users/vert-x3/following{/other_user}","gists_url":"https://api.github.com/users/vert-x3/gists{/gist_id}","starred_url":"https://api.github.com/users/vert-x3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vert-x3/subscriptions","organizations_url":"https://api.github.com/users/vert-x3/orgs","repos_url":"https://api.github.com/users/vert-x3/repos","events_url":"https://api.github.com/users/vert-x3/events{/privacy}","received_events_url":"https://api.github.com/users/vert-x3/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/vert-x3/vertx-codegen","description":"","fork":false,"url":"https://api.github.com/repos/vert-x3/vertx-codegen","forks_url":"https://api.github.com/repos/vert-x3/vertx-codegen/forks","keys_url":"https://api.github.com/repos/vert-x3/vertx-codegen/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vert-x3/vertx-codegen/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vert-x3/vertx-codegen/teams","hooks_url":"https://api.github.com/repos/vert-x3/vertx-codegen/hooks","issue_events_url":"https://api.github.com/repos/vert-x3/vertx-codegen/issues/events{/number}","events_url":"https://api.github.com/repos/vert-x3/vertx-codegen/events","assignees_url":"https://api.github.com/repos/vert-x3/vertx-codegen/assignees{/user}","branches_url":"https://api.github.com/repos/vert-x3/vertx-codegen/branches{/branch}","tags_url":"https://api.github.com/repos/vert-x3/vertx-codegen/tags","blobs_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/refs{/sha}","trees_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vert-x3/vertx-codegen/statuses/{sha}","languages_url":"https://api.github.com/repos/vert-x3/vertx-codegen/languages","stargazers_url":"https://api.github.com/repos/vert-x3/vertx-codegen/stargazers","contributors_url":"https://api.github.com/repos/vert-x3/vertx-codegen/contributors","subscribers_url":"https://api.github.com/repos/vert-x3/vertx-codegen/subscribers","subscription_url":"https://api.github.com/repos/vert-x3/vertx-codegen/subscription","commits_url":"https://api.github.com/repos/vert-x3/vertx-codegen/commits{/sha}","git_commits_url":"https://api.github.com/repos/vert-x3/vertx-codegen/git/commits{/sha}","comments_url":"https://api.github.com/repos/vert-x3/vertx-codegen/comments{/number}","issue_comment_url":"https://api.github.com/repos/vert-x3/vertx-codegen/issues/comments{/number}","contents_url":"https://api.github.com/repos/vert-x3/vertx-codegen/contents/{+path}","compare_url":"https://api.github.com/repos/vert-x3/vertx-codegen/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vert-x3/vertx-codegen/merges","archive_url":"https://api.github.com/repos/vert-x3/vertx-codegen/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vert-x3/vertx-codegen/downloads","issues_url":"https://api.github.com/repos/vert-x3/vertx-codegen/issues{/number}","pulls_url":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls{/number}","milestones_url":"https://api.github.com/repos/vert-x3/vertx-codegen/milestones{/number}","notifications_url":"https://api.github.com/repos/vert-x3/vertx-codegen/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vert-x3/vertx-codegen/labels{/name}","releases_url":"https://api.github.com/repos/vert-x3/vertx-codegen/releases{/id}","created_at":"2014-05-21T14:53:16Z","updated_at":"2015-09-15T07:41:07Z","pushed_at":"2015-10-12T16:06:23Z","git_url":"git://github.com/vert-x3/vertx-codegen.git","ssh_url":"git@github.com:vert-x3/vertx-codegen.git","clone_url":"https://github.com/vert-x3/vertx-codegen.git","svn_url":"https://github.com/vert-x3/vertx-codegen","homepage":null,"size":3030,"stargazers_count":7,"watchers_count":7,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":18,"mirror_url":null,"open_issues_count":5,"forks":18,"open_issues":5,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/61"},"html":{"href":"https://github.com/vert-x3/vertx-codegen/pull/61"},"issue":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/issues/61"},"comments":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/issues/61/comments"},"review_comments":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/61/comments"},"review_comment":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/pulls/61/commits"},"statuses":{"href":"https://api.github.com/repos/vert-x3/vertx-codegen/statuses/1b5d141a39d5faf8a7baf86d969305fd1be48c83"}}}}