{"action":"created","comment":{"url":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/comments/81126792","pull_request_review_id":2129081,"id":81126792,"diff_hunk":"@@ -1,147 +1,242 @@\n package org.zalando.jackson.datatype.money;\n \n+import com.fasterxml.jackson.core.JsonProcessingException;\n+import com.fasterxml.jackson.databind.DeserializationFeature;\n import com.fasterxml.jackson.databind.JsonNode;\n+import com.fasterxml.jackson.databind.Module;\n import com.fasterxml.jackson.databind.ObjectMapper;\n+import com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException;\n+import com.fasterxml.jackson.databind.module.SimpleModule;\n import org.javamoney.moneta.FastMoney;\n import org.javamoney.moneta.Money;\n import org.javamoney.moneta.RoundedMoney;\n+import org.junit.Rule;\n import org.junit.Test;\n+import org.junit.rules.ExpectedException;\n+import org.junit.runner.RunWith;\n+import org.junit.runners.Parameterized;\n+import org.junit.runners.Parameterized.Parameters;\n \n+import javax.annotation.Nullable;\n+import javax.money.CurrencyUnit;\n import javax.money.MonetaryAmount;\n import java.io.IOException;\n import java.math.BigDecimal;\n+import java.util.Arrays;\n \n import static org.hamcrest.Matchers.comparesEqualTo;\n import static org.hamcrest.Matchers.instanceOf;\n import static org.hamcrest.Matchers.is;\n import static org.hamcrest.Matchers.notNullValue;\n+import static org.hamcrest.Matchers.startsWith;\n import static org.junit.Assert.assertThat;\n+import static org.zalando.jackson.datatype.money.FieldNames.defaults;\n \n-public final class MonetaryAmountDeserializerTest {\n+@RunWith(Parameterized.class)\n+public final class MonetaryAmountDeserializerTest<M extends MonetaryAmount> {\n \n-    @Test\n-    public void shouldDeserializeMoneyByDefault() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().findAndRegisterModules();\n+    @Rule\n+    public final ExpectedException exception = ExpectedException.none();\n \n-        final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\"}\";\n-        final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n+    private final Class<M> type;\n+    private final MonetaryAmountFactory<M> factory;\n \n-        assertThat(amount, is(instanceOf(Money.class)));\n+    public MonetaryAmountDeserializerTest(final Class<M> type, @Nullable final MonetaryAmountFactory<M> factory) {\n+        this.type = type;\n+        this.factory = factory;\n     }\n \n-    @Test\n-    public void shouldDeserializeMoneyCorrectly() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().findAndRegisterModules();\n+    @Parameters(name = \"{0}\")\n+    public static Iterable<Object[]> data() {\n+        return Arrays.asList(new Object[][]{\n+                {MonetaryAmount.class, null},\n+                {FastMoney.class, new FastMoneyFactory()},\n+                {Money.class, new MoneyFactory()},\n+                {RoundedMoney.class, new RoundedMoneyFactory()},\n+        });\n+    }\n \n-        final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\"}\";\n-        final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n+    private ObjectMapper unit() {\n+        return unit(module());\n+    }\n \n-        final BigDecimal actual = amount.getNumber().numberValueExact(BigDecimal.class);\n-        final BigDecimal expected = new BigDecimal(\"29.95\");\n+    private ObjectMapper unit(final Module module) {\n+        return new ObjectMapper().registerModule(module);\n+    }\n \n-        assertThat(actual, comparesEqualTo(expected));\n+    private MoneyModule module() {\n+        return factory == null ? new MoneyModule() : new MoneyModule().withAmountFactory(factory);\n     }\n \n     @Test\n-    public void shouldDeserializeFastMoney() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().registerModule(new MoneyModule(new FastMoneyFactory()));\n+    public void shouldDeserializeMoneyByDefault() throws IOException {\n+        final ObjectMapper unit = new ObjectMapper().findAndRegisterModules();\n \n         final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\"}\";\n         final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n \n-        assertThat(amount, is(instanceOf(FastMoney.class)));\n+        assertThat(amount, is(instanceOf(Money.class)));\n     }\n \n     @Test\n-    public void shouldDeserializeFastMoneyCorrectly() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().registerModule(new MoneyModule(new FastMoneyFactory()));\n+    public void defaultConstructorShouldUseMoney() throws IOException {\n+        @SuppressWarnings(\"deprecation\")\n+        final ObjectMapper unit = unit(new SimpleModule()\n+                .addDeserializer(CurrencyUnit.class, new CurrencyUnitDeserializer())\n+                .addDeserializer(MonetaryAmount.class, new MonetaryAmountDeserializer<>(new MoneyFactory())));\n \n         final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\"}\";\n         final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n \n-        final BigDecimal actual = amount.getNumber().numberValueExact(BigDecimal.class);\n-        final BigDecimal expected = new BigDecimal(\"29.95\");\n-\n-        assertThat(actual, comparesEqualTo(expected));\n+        assertThat(amount, is(instanceOf(Money.class)));\n     }\n \n     @Test\n-    public void shouldDeserializeRoundedMoney() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().registerModule(new MoneyModule(new RoundedMoneyFactory()));\n+    public void shouldDeserializeToCorrectType() throws IOException {\n+        final ObjectMapper unit = unit();\n \n         final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\"}\";\n-        final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n+        final MonetaryAmount amount = unit.readValue(content, type);\n \n-        assertThat(amount, is(instanceOf(RoundedMoney.class)));\n+        assertThat(amount, is(instanceOf(type)));\n     }\n \n     @Test\n-    public void shouldDeserializeRoundedMoneyCorrectly() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().registerModule(new MoneyModule(new RoundedMoneyFactory()));\n+    public void shouldDeserializeCorrectly() throws IOException {\n+        final ObjectMapper unit = unit();\n \n         final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\"}\";\n-        final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n-\n-        final BigDecimal actual = amount.getNumber().numberValueExact(BigDecimal.class);\n-        final BigDecimal expected = new BigDecimal(\"29.95\");\n+        final MonetaryAmount amount = unit.readValue(content, type);\n \n-        assertThat(actual, comparesEqualTo(expected));\n+        assertThat(amount.getNumber().numberValueExact(BigDecimal.class), comparesEqualTo(new BigDecimal(\"29.95\")));\n+        assertThat(amount.getCurrency().getCurrencyCode(), is(\"EUR\"));\n     }\n-    \n+\n     @Test\n     public void shouldDeserializeCorrectlyWhenPropertiesAreInDifferentOrder() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().findAndRegisterModules();\n+        final ObjectMapper unit = unit();\n \n         final String content = \"{\\\"currency\\\":\\\"EUR\\\",\\\"amount\\\":29.95}\";\n-        final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n+        final MonetaryAmount amount = unit.readValue(content, type);\n+\n+        assertThat(amount.getNumber().numberValueExact(BigDecimal.class), comparesEqualTo(new BigDecimal(\"29.95\")));\n+        assertThat(amount.getCurrency().getCurrencyCode(), is(\"EUR\"));\n+    }\n+\n+    @Test\n+    public void shouldDeserializeWithCustomNames() throws IOException {\n+        final ObjectMapper unit = unit(module()\n+                .withFieldNames(defaults()\n+                        .withAmount(\"value\")\n+                        .withCurrency(\"unit\")));\n \n-        final BigDecimal actual = amount.getNumber().numberValueExact(BigDecimal.class);\n-        assertThat(actual, comparesEqualTo(new BigDecimal(\"29.95\")));\n+        final String content = \"{\\\"value\\\":29.95,\\\"unit\\\":\\\"EUR\\\"}\";\n+        final MonetaryAmount amount = unit.readValue(content, type);\n+\n+        assertThat(amount.getNumber().numberValueExact(BigDecimal.class), comparesEqualTo(new BigDecimal(\"29.95\")));\n+        assertThat(amount.getCurrency().getCurrencyCode(), is(\"EUR\"));\n     }\n \n     @Test\n     public void shouldIgnoreFormattedValue() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().findAndRegisterModules();\n-        \n+        final ObjectMapper unit = unit();\n+\n         final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\",\\\"formatted\\\":\\\"30.00 EUR\\\"}\";\n-        final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n+        final MonetaryAmount amount = unit.readValue(content, type);\n \n-        assertThat(amount, is(notNullValue()));\n+        assertThat(amount.getNumber().numberValueExact(BigDecimal.class), comparesEqualTo(new BigDecimal(\"29.95\")));\n+        assertThat(amount.getCurrency().getCurrencyCode(), is(\"EUR\"));\n     }\n-    \n+\n     @Test\n     public void shouldUpdateExistingValueUsingTreeTraversingParser() throws IOException {\n-        final ObjectMapper unit = new ObjectMapper().findAndRegisterModules();\n-        \n-        final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\",\\\"formatted\\\":\\\"30.00 EUR\\\"}\";\n-        final MonetaryAmount amount = unit.readValue(content, MonetaryAmount.class);\n+        final ObjectMapper unit = unit();\n+\n+        final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\"}\";\n+        final MonetaryAmount amount = unit.readValue(content, type);\n \n         assertThat(amount, is(notNullValue()));\n-        \n+\n         // we need a json node to get a TreeTraversingParser with codec of type ObjectReader\n-        JsonNode ownerNode = unit.readTree(\"{ \\\"value\\\" : {\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\",\\\"formatted\\\":\\\"30.00 EUR\\\"} }\");\n-        \n-        \n+        final JsonNode ownerNode =\n+                unit.readTree(\"{\\\"value\\\":{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\",\\\"formatted\\\":\\\"30.00EUR\\\"}}\");\n+\n         final Owner owner = new Owner();\n         owner.setValue(amount);\n-        \n+\n         // try to update\n-        Owner result = unit.readerForUpdating(owner).readValue(ownerNode);\n+        final Owner result = unit.readerForUpdating(owner).readValue(ownerNode);\n         assertThat(result, is(notNullValue()));\n         assertThat(result.getValue(), is(amount));\n     }\n-    \n+\n     private static class Owner {\n-        \n+\n         private MonetaryAmount value;\n \n         public MonetaryAmount getValue() {\n             return value;\n         }\n \n-        public void setValue(MonetaryAmount value) {\n+        public void setValue(final MonetaryAmount value) {\n             this.value = value;\n         }\n+\n+    }\n+\n+    @Test\n+    public void shouldFailToDeserializeWithoutAmount() throws IOException {\n+        final ObjectMapper unit = unit();\n+\n+        final String content = \"{\\\"currency\\\":\\\"EUR\\\"}\";\n+\n+        exception.expect(JsonProcessingException.class);\n+        exception.expectMessage(\"Missing property: 'amount'\");\n+\n+        unit.readValue(content, type);\n+    }\n+\n+    @Test\n+    public void shouldFailToDeserializeWithoutCurrency() throws IOException {\n+        final ObjectMapper unit = unit();\n+\n+        final String content = \"{\\\"amount\\\":29.95}\";\n+\n+        exception.expect(JsonProcessingException.class);\n+        exception.expectMessage(\"Missing property: 'currency'\");\n+\n+        unit.readValue(content, type);\n+    }\n+\n+    @Test\n+    public void shouldNotFailToDeserializeWithFormatted() throws IOException {\n+        final ObjectMapper unit = unit();\n+\n+        final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\",\\\"formatted\\\":\\\"30.00 EUR\\\"}\";\n+\n+        unit.readValue(content, type);\n+    }\n+\n+    @Test\n+    public void shouldFailToDeserializeWithAdditionalProperties() throws IOException {\n+        final ObjectMapper unit = unit();\n+\n+        final String content = \"{\\\"amount\\\":29.95,\\\"currency\\\":\\\"EUR\\\",\\\"version\\\":\\\"1\\\"}\";\n+\n+        exception.expect(UnrecognizedPropertyException.class);\n+        exception.expectMessage(startsWith(\n+                \"Unrecognized field \\\"version\\\" (class javax.money.MonetaryAmount), \" +\n+                        \"not marked as ignorable (3 known properties: \\\"amount\\\", \\\"currency\\\", \\\"formatted\\\"])\"));\n+\n+        unit.readValue(content, type);\n+    }\n+\n+    @Test\n+    public void shouldNotFailToDeserializeWithAdditionalProperties() throws IOException {","path":"src/test/java/org/zalando/jackson/datatype/money/MonetaryAmountDeserializerTest.java","position":293,"original_position":293,"commit_id":"e379e0edf5d90c7f396914aa50e8bd23a27e48f6","original_commit_id":"e379e0edf5d90c7f396914aa50e8bd23a27e48f6","user":{"login":"whiskeysierra","id":429981,"avatar_url":"https://avatars.githubusercontent.com/u/429981?v=3","gravatar_id":"","url":"https://api.github.com/users/whiskeysierra","html_url":"https://github.com/whiskeysierra","followers_url":"https://api.github.com/users/whiskeysierra/followers","following_url":"https://api.github.com/users/whiskeysierra/following{/other_user}","gists_url":"https://api.github.com/users/whiskeysierra/gists{/gist_id}","starred_url":"https://api.github.com/users/whiskeysierra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whiskeysierra/subscriptions","organizations_url":"https://api.github.com/users/whiskeysierra/orgs","repos_url":"https://api.github.com/users/whiskeysierra/repos","events_url":"https://api.github.com/users/whiskeysierra/events{/privacy}","received_events_url":"https://api.github.com/users/whiskeysierra/received_events","type":"User","site_admin":false},"body":"I have a complex object in that test already. In fact I used this very test to verify the need for `skipChildren`.","created_at":"2016-09-29T12:44:45Z","updated_at":"2016-09-29T12:44:45Z","html_url":"https://github.com/zalando/jackson-datatype-money/pull/41#discussion_r81126792","pull_request_url":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/41","_links":{"self":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/comments/81126792"},"html":{"href":"https://github.com/zalando/jackson-datatype-money/pull/41#discussion_r81126792"},"pull_request":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/41"}}},"pull_request":{"url":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/41","id":87126655,"html_url":"https://github.com/zalando/jackson-datatype-money/pull/41","diff_url":"https://github.com/zalando/jackson-datatype-money/pull/41.diff","patch_url":"https://github.com/zalando/jackson-datatype-money/pull/41.patch","issue_url":"https://api.github.com/repos/zalando/jackson-datatype-money/issues/41","number":41,"state":"open","locked":false,"title":"Added support for configurable field names","user":{"login":"whiskeysierra","id":429981,"avatar_url":"https://avatars.githubusercontent.com/u/429981?v=3","gravatar_id":"","url":"https://api.github.com/users/whiskeysierra","html_url":"https://github.com/whiskeysierra","followers_url":"https://api.github.com/users/whiskeysierra/followers","following_url":"https://api.github.com/users/whiskeysierra/following{/other_user}","gists_url":"https://api.github.com/users/whiskeysierra/gists{/gist_id}","starred_url":"https://api.github.com/users/whiskeysierra/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whiskeysierra/subscriptions","organizations_url":"https://api.github.com/users/whiskeysierra/orgs","repos_url":"https://api.github.com/users/whiskeysierra/repos","events_url":"https://api.github.com/users/whiskeysierra/events{/privacy}","received_events_url":"https://api.github.com/users/whiskeysierra/received_events","type":"User","site_admin":false},"body":"Fixes #40","created_at":"2016-09-28T14:05:03Z","updated_at":"2016-09-29T12:44:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a518ff2cc87d0d0e91b8c60dffc3b289154914e2","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/41/commits","review_comments_url":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/41/comments","review_comment_url":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/comments{/number}","comments_url":"https://api.github.com/repos/zalando/jackson-datatype-money/issues/41/comments","statuses_url":"https://api.github.com/repos/zalando/jackson-datatype-money/statuses/e379e0edf5d90c7f396914aa50e8bd23a27e48f6","head":{"label":"zalando:feature/configurable-name","ref":"feature/configurable-name","sha":"e379e0edf5d90c7f396914aa50e8bd23a27e48f6","user":{"login":"zalando","id":1564818,"avatar_url":"https://avatars.githubusercontent.com/u/1564818?v=3","gravatar_id":"","url":"https://api.github.com/users/zalando","html_url":"https://github.com/zalando","followers_url":"https://api.github.com/users/zalando/followers","following_url":"https://api.github.com/users/zalando/following{/other_user}","gists_url":"https://api.github.com/users/zalando/gists{/gist_id}","starred_url":"https://api.github.com/users/zalando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalando/subscriptions","organizations_url":"https://api.github.com/users/zalando/orgs","repos_url":"https://api.github.com/users/zalando/repos","events_url":"https://api.github.com/users/zalando/events{/privacy}","received_events_url":"https://api.github.com/users/zalando/received_events","type":"Organization","site_admin":false},"repo":{"id":36893398,"name":"jackson-datatype-money","full_name":"zalando/jackson-datatype-money","owner":{"login":"zalando","id":1564818,"avatar_url":"https://avatars.githubusercontent.com/u/1564818?v=3","gravatar_id":"","url":"https://api.github.com/users/zalando","html_url":"https://github.com/zalando","followers_url":"https://api.github.com/users/zalando/followers","following_url":"https://api.github.com/users/zalando/following{/other_user}","gists_url":"https://api.github.com/users/zalando/gists{/gist_id}","starred_url":"https://api.github.com/users/zalando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalando/subscriptions","organizations_url":"https://api.github.com/users/zalando/orgs","repos_url":"https://api.github.com/users/zalando/repos","events_url":"https://api.github.com/users/zalando/events{/privacy}","received_events_url":"https://api.github.com/users/zalando/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/zalando/jackson-datatype-money","description":"Extension module to properly support datatypes of javax.money","fork":false,"url":"https://api.github.com/repos/zalando/jackson-datatype-money","forks_url":"https://api.github.com/repos/zalando/jackson-datatype-money/forks","keys_url":"https://api.github.com/repos/zalando/jackson-datatype-money/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zalando/jackson-datatype-money/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zalando/jackson-datatype-money/teams","hooks_url":"https://api.github.com/repos/zalando/jackson-datatype-money/hooks","issue_events_url":"https://api.github.com/repos/zalando/jackson-datatype-money/issues/events{/number}","events_url":"https://api.github.com/repos/zalando/jackson-datatype-money/events","assignees_url":"https://api.github.com/repos/zalando/jackson-datatype-money/assignees{/user}","branches_url":"https://api.github.com/repos/zalando/jackson-datatype-money/branches{/branch}","tags_url":"https://api.github.com/repos/zalando/jackson-datatype-money/tags","blobs_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/refs{/sha}","trees_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zalando/jackson-datatype-money/statuses/{sha}","languages_url":"https://api.github.com/repos/zalando/jackson-datatype-money/languages","stargazers_url":"https://api.github.com/repos/zalando/jackson-datatype-money/stargazers","contributors_url":"https://api.github.com/repos/zalando/jackson-datatype-money/contributors","subscribers_url":"https://api.github.com/repos/zalando/jackson-datatype-money/subscribers","subscription_url":"https://api.github.com/repos/zalando/jackson-datatype-money/subscription","commits_url":"https://api.github.com/repos/zalando/jackson-datatype-money/commits{/sha}","git_commits_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/commits{/sha}","comments_url":"https://api.github.com/repos/zalando/jackson-datatype-money/comments{/number}","issue_comment_url":"https://api.github.com/repos/zalando/jackson-datatype-money/issues/comments{/number}","contents_url":"https://api.github.com/repos/zalando/jackson-datatype-money/contents/{+path}","compare_url":"https://api.github.com/repos/zalando/jackson-datatype-money/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zalando/jackson-datatype-money/merges","archive_url":"https://api.github.com/repos/zalando/jackson-datatype-money/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zalando/jackson-datatype-money/downloads","issues_url":"https://api.github.com/repos/zalando/jackson-datatype-money/issues{/number}","pulls_url":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls{/number}","milestones_url":"https://api.github.com/repos/zalando/jackson-datatype-money/milestones{/number}","notifications_url":"https://api.github.com/repos/zalando/jackson-datatype-money/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zalando/jackson-datatype-money/labels{/name}","releases_url":"https://api.github.com/repos/zalando/jackson-datatype-money/releases{/id}","deployments_url":"https://api.github.com/repos/zalando/jackson-datatype-money/deployments","created_at":"2015-06-04T20:21:24Z","updated_at":"2016-09-20T09:53:03Z","pushed_at":"2016-09-29T06:47:36Z","git_url":"git://github.com/zalando/jackson-datatype-money.git","ssh_url":"git@github.com:zalando/jackson-datatype-money.git","clone_url":"https://github.com/zalando/jackson-datatype-money.git","svn_url":"https://github.com/zalando/jackson-datatype-money","homepage":"","size":115,"stargazers_count":35,"watchers_count":35,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":2,"forks":5,"open_issues":2,"watchers":35,"default_branch":"master"}},"base":{"label":"zalando:master","ref":"master","sha":"8ecf3b1e88591e2b1082326290b96bfe9df4742f","user":{"login":"zalando","id":1564818,"avatar_url":"https://avatars.githubusercontent.com/u/1564818?v=3","gravatar_id":"","url":"https://api.github.com/users/zalando","html_url":"https://github.com/zalando","followers_url":"https://api.github.com/users/zalando/followers","following_url":"https://api.github.com/users/zalando/following{/other_user}","gists_url":"https://api.github.com/users/zalando/gists{/gist_id}","starred_url":"https://api.github.com/users/zalando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalando/subscriptions","organizations_url":"https://api.github.com/users/zalando/orgs","repos_url":"https://api.github.com/users/zalando/repos","events_url":"https://api.github.com/users/zalando/events{/privacy}","received_events_url":"https://api.github.com/users/zalando/received_events","type":"Organization","site_admin":false},"repo":{"id":36893398,"name":"jackson-datatype-money","full_name":"zalando/jackson-datatype-money","owner":{"login":"zalando","id":1564818,"avatar_url":"https://avatars.githubusercontent.com/u/1564818?v=3","gravatar_id":"","url":"https://api.github.com/users/zalando","html_url":"https://github.com/zalando","followers_url":"https://api.github.com/users/zalando/followers","following_url":"https://api.github.com/users/zalando/following{/other_user}","gists_url":"https://api.github.com/users/zalando/gists{/gist_id}","starred_url":"https://api.github.com/users/zalando/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zalando/subscriptions","organizations_url":"https://api.github.com/users/zalando/orgs","repos_url":"https://api.github.com/users/zalando/repos","events_url":"https://api.github.com/users/zalando/events{/privacy}","received_events_url":"https://api.github.com/users/zalando/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/zalando/jackson-datatype-money","description":"Extension module to properly support datatypes of javax.money","fork":false,"url":"https://api.github.com/repos/zalando/jackson-datatype-money","forks_url":"https://api.github.com/repos/zalando/jackson-datatype-money/forks","keys_url":"https://api.github.com/repos/zalando/jackson-datatype-money/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zalando/jackson-datatype-money/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zalando/jackson-datatype-money/teams","hooks_url":"https://api.github.com/repos/zalando/jackson-datatype-money/hooks","issue_events_url":"https://api.github.com/repos/zalando/jackson-datatype-money/issues/events{/number}","events_url":"https://api.github.com/repos/zalando/jackson-datatype-money/events","assignees_url":"https://api.github.com/repos/zalando/jackson-datatype-money/assignees{/user}","branches_url":"https://api.github.com/repos/zalando/jackson-datatype-money/branches{/branch}","tags_url":"https://api.github.com/repos/zalando/jackson-datatype-money/tags","blobs_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/refs{/sha}","trees_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zalando/jackson-datatype-money/statuses/{sha}","languages_url":"https://api.github.com/repos/zalando/jackson-datatype-money/languages","stargazers_url":"https://api.github.com/repos/zalando/jackson-datatype-money/stargazers","contributors_url":"https://api.github.com/repos/zalando/jackson-datatype-money/contributors","subscribers_url":"https://api.github.com/repos/zalando/jackson-datatype-money/subscribers","subscription_url":"https://api.github.com/repos/zalando/jackson-datatype-money/subscription","commits_url":"https://api.github.com/repos/zalando/jackson-datatype-money/commits{/sha}","git_commits_url":"https://api.github.com/repos/zalando/jackson-datatype-money/git/commits{/sha}","comments_url":"https://api.github.com/repos/zalando/jackson-datatype-money/comments{/number}","issue_comment_url":"https://api.github.com/repos/zalando/jackson-datatype-money/issues/comments{/number}","contents_url":"https://api.github.com/repos/zalando/jackson-datatype-money/contents/{+path}","compare_url":"https://api.github.com/repos/zalando/jackson-datatype-money/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zalando/jackson-datatype-money/merges","archive_url":"https://api.github.com/repos/zalando/jackson-datatype-money/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zalando/jackson-datatype-money/downloads","issues_url":"https://api.github.com/repos/zalando/jackson-datatype-money/issues{/number}","pulls_url":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls{/number}","milestones_url":"https://api.github.com/repos/zalando/jackson-datatype-money/milestones{/number}","notifications_url":"https://api.github.com/repos/zalando/jackson-datatype-money/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zalando/jackson-datatype-money/labels{/name}","releases_url":"https://api.github.com/repos/zalando/jackson-datatype-money/releases{/id}","deployments_url":"https://api.github.com/repos/zalando/jackson-datatype-money/deployments","created_at":"2015-06-04T20:21:24Z","updated_at":"2016-09-20T09:53:03Z","pushed_at":"2016-09-29T06:47:36Z","git_url":"git://github.com/zalando/jackson-datatype-money.git","ssh_url":"git@github.com:zalando/jackson-datatype-money.git","clone_url":"https://github.com/zalando/jackson-datatype-money.git","svn_url":"https://github.com/zalando/jackson-datatype-money","homepage":"","size":115,"stargazers_count":35,"watchers_count":35,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":2,"forks":5,"open_issues":2,"watchers":35,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/41"},"html":{"href":"https://github.com/zalando/jackson-datatype-money/pull/41"},"issue":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/issues/41"},"comments":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/issues/41/comments"},"review_comments":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/41/comments"},"review_comment":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/pulls/41/commits"},"statuses":{"href":"https://api.github.com/repos/zalando/jackson-datatype-money/statuses/e379e0edf5d90c7f396914aa50e8bd23a27e48f6"}}}}
{"actor":{"display_login":"whiskeysierra"}}