{"action":"created","comment":{"url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/comments/43924494","id":43924494,"diff_hunk":"@@ -0,0 +1,75 @@\n+/*\n+ * This file is part of Sponge, licensed under the MIT License (MIT).\n+ *\n+ * Copyright (c) SpongePowered <https://www.spongepowered.org>\n+ * Copyright (c) contributors\n+ *\n+ * Permission is hereby granted, free of charge, to any person obtaining a copy\n+ * of this software and associated documentation files (the \"Software\"), to deal\n+ * in the Software without restriction, including without limitation the rights\n+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n+ * copies of the Software, and to permit persons to whom the Software is\n+ * furnished to do so, subject to the following conditions:\n+ *\n+ * The above copyright notice and this permission notice shall be included in\n+ * all copies or substantial portions of the Software.\n+ *\n+ * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n+ * THE SOFTWARE.\n+ */\n+package org.spongepowered.common.data.manipulator.immutable.tileentity;\n+\n+import com.google.common.collect.ComparisonChain;\n+import org.spongepowered.api.data.DataContainer;\n+import org.spongepowered.api.data.MemoryDataContainer;\n+import org.spongepowered.api.data.key.Keys;\n+import org.spongepowered.api.data.manipulator.immutable.tileentity.ImmutableLockableData;\n+import org.spongepowered.api.data.manipulator.mutable.tileentity.LockableData;\n+import org.spongepowered.api.data.value.immutable.ImmutableValue;\n+import org.spongepowered.common.data.manipulator.immutable.common.AbstractImmutableSingleData;\n+import org.spongepowered.common.data.manipulator.mutable.tileentity.SpongeLockableData;\n+import org.spongepowered.common.data.value.immutable.ImmutableSpongeValue;\n+\n+public class ImmutableSpongeLockableData extends AbstractImmutableSingleData<String, ImmutableLockableData, LockableData> implements ImmutableLockableData {\n+\n+    private final ImmutableValue<String> lockToken;\n+    \n+    public ImmutableSpongeLockableData() {\n+        this(\"\");\n+    }\n+    \n+    public ImmutableSpongeLockableData(String value) {\n+        super(ImmutableLockableData.class, value, Keys.LOCK_TOKEN);\n+        this.lockToken = new ImmutableSpongeValue<>(Keys.LOCK_TOKEN, \"\", value);\n+    }\n+\n+    @Override\n+    public int compareTo(ImmutableLockableData o) {\n+        return ComparisonChain.start().compare(o.lockToken().get(), this.getValue()).result();\n+    }\n+\n+    @Override\n+    public ImmutableValue<String> lockToken() {\n+        return new ImmutableSpongeValue<String>(this.usedKey, \"\", this.lockToken.get());\n+    }\n+\n+    @Override\n+    protected ImmutableValue<?> getValueGetter() {\n+        return lockToken();\n+    }\n+\n+    @Override\n+    public LockableData asMutable() {\n+        return new SpongeLockableData(getValue());\n+    }\n+\n+    @Override\n+    public DataContainer toContainer() {\n+        return new MemoryDataContainer().set(Keys.LOCK_TOKEN, this.lockToken.get());","path":"src/main/java/org/spongepowered/common/data/manipulator/immutable/tileentity/ImmutableSpongeLockableData.java","position":73,"original_position":73,"commit_id":"239ec393de1ef1edd62b8cc65849d0bee6e793ea","original_commit_id":"239ec393de1ef1edd62b8cc65849d0bee6e793ea","user":{"login":"gabizou","id":1203877,"avatar_url":"https://avatars.githubusercontent.com/u/1203877?v=3","gravatar_id":"","url":"https://api.github.com/users/gabizou","html_url":"https://github.com/gabizou","followers_url":"https://api.github.com/users/gabizou/followers","following_url":"https://api.github.com/users/gabizou/following{/other_user}","gists_url":"https://api.github.com/users/gabizou/gists{/gist_id}","starred_url":"https://api.github.com/users/gabizou/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gabizou/subscriptions","organizations_url":"https://api.github.com/users/gabizou/orgs","repos_url":"https://api.github.com/users/gabizou/repos","events_url":"https://api.github.com/users/gabizou/events{/privacy}","received_events_url":"https://api.github.com/users/gabizou/received_events","type":"User","site_admin":false},"body":"just use `this.value` instead.","created_at":"2015-11-04T19:12:38Z","updated_at":"2015-11-04T19:12:38Z","html_url":"https://github.com/SpongePowered/SpongeCommon/pull/226#discussion_r43924494","pull_request_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/226","_links":{"self":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/comments/43924494"},"html":{"href":"https://github.com/SpongePowered/SpongeCommon/pull/226#discussion_r43924494"},"pull_request":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/226"}}},"pull_request":{"url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/226","id":48681258,"html_url":"https://github.com/SpongePowered/SpongeCommon/pull/226","diff_url":"https://github.com/SpongePowered/SpongeCommon/pull/226.diff","patch_url":"https://github.com/SpongePowered/SpongeCommon/pull/226.patch","issue_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/226","number":226,"state":"open","locked":false,"title":"Implement LockableData","user":{"login":"sanman00","id":5024620,"avatar_url":"https://avatars.githubusercontent.com/u/5024620?v=3","gravatar_id":"","url":"https://api.github.com/users/sanman00","html_url":"https://github.com/sanman00","followers_url":"https://api.github.com/users/sanman00/followers","following_url":"https://api.github.com/users/sanman00/following{/other_user}","gists_url":"https://api.github.com/users/sanman00/gists{/gist_id}","starred_url":"https://api.github.com/users/sanman00/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sanman00/subscriptions","organizations_url":"https://api.github.com/users/sanman00/orgs","repos_url":"https://api.github.com/users/sanman00/repos","events_url":"https://api.github.com/users/sanman00/events{/privacy}","received_events_url":"https://api.github.com/users/sanman00/received_events","type":"User","site_admin":false},"body":"Implementation of `LockableData`.\r\n- [x] Registration of field getters and setters\r\n- [x] Accurately used the appropriate `AbstractData` implementation\r\n\r\nImplementation of `ImmutableLockableData`\r\n- [x] Accurately extended the appropriate `AbstractImmutableData` implementation\r\n- [x] Accurately instantiating final instance fields with an `ImmutableValue` counter part for any value getters\r\n- [x] If necessary, creating a new `ImmutableValue` for a value that should not be cached, or, using the existing caching utils.\r\n\r\nImplementation of the `LockTokenValueProcessor`(s):\r\n- [x] Appropriately extended `AbstractSpongeValueProcessor`\r\n- [x] Individual processors for each source type possible (one for `ItemStack`/`TileEntity`/`Entity` as necessary).\r\n\r\nRegistration:\r\n- [x] Registered the `Key` correctly by `LOCK_TOKEN` in the `KeyRegistry`\r\n- [x] Registered the `DataProcessor`s and `DataManipulatorBuilder` in `SpongeSerializationRegistry`\r\n- [x] Registered the `ValueProcessor`s in the `SpongeSerializationRegistry`\r\n\r\nTest Plugin code:\r\n```java\r\n@Plugin(id = \"lockdataimpltest\", name = \"LockableDataTest\", version = \"0.0.7_02\")\r\npublic class Main {\r\n    @Inject\r\n    private Game game;\r\n\r\n    private void createCommand(Game game, BiConsumer<Player, Game> method, String commandName) {\r\n        game.getCommandDispatcher().register(this, CommandSpec.builder().executor((src, args) -> {\r\n            if (src instanceof Player) {\r\n                method.accept((Player) src, game);\r\n            }\r\n            return CommandResult.success();\r\n        }).build(), commandName);\r\n    }\r\n\r\n    @Listener\r\n    public void init(GameInitializationEvent e) {\r\n        createCommand(e.getGame(), this::lockedChestTest, \"lockeditemtest\");\r\n        createCommand(e.getGame(), this::immutableDataManipulatorTest, \"immutablemanipulatortest\");\r\n    }\r\n\r\n    @Listener\r\n    public void onBlockInteract(InteractBlockEvent e) {\r\n        System.out.println(e.getTargetBlock());\r\n        System.out.println(Keys.LOCK_TOKEN);\r\n        System.out.println(e.getTargetBlock().supports(Keys.LOCK_TOKEN));\r\n        System.out.println(e.getTargetBlock().get(Keys.LOCK_TOKEN));\r\n        System.out.println(\"----------------------------------------------\");\r\n    }\r\n\r\n    public void lockedChestTest(Player p, Game game) {\r\n        ItemStack stack = game.getRegistry().createItemBuilder().itemType(ItemTypes.CHEST).build();\r\n        LockableData lockableData = game.getRegistry().getManipulatorRegistry().getBuilder(LockableData.class).get().create();\r\n        lockableData = lockableData.set(Keys.LOCK_TOKEN, \"Key to the Secret Chest!\");\r\n        System.out.println(lockableData.toContainer().getString(Keys.LOCK_TOKEN.getQuery()));\r\n        DataTransactionResult offerResult = stack.offer(lockableData);\r\n\r\n        System.out.println(\"ItemStack manipulator offer results: \");\r\n        System.out.println(\"Result type: \" + offerResult.getType());\r\n        System.out.println(\"Successful data: \" + offerResult.getSuccessfulData());\r\n        System.out.println(\"Replaced data: \" + offerResult.getReplacedData());\r\n        System.out.println(\"Rejected data: \" + offerResult.getRejectedData());\r\n        System.out.println(\"End of results\");\r\n\r\n        //LockableData immutable = game.getRegistry().getManipulatorRegistry().getBuilderForImmutable(ImmutableLockableData.class).get().create();\r\n        //^ doesn't work\r\n        ImmutableLockableData immutable = game.getRegistry().getManipulatorRegistry().getBuilder(LockableData.class).get().create().asImmutable();\r\n        DataContainer container = immutable.toContainer();\r\n        container = container.set(Keys.LOCK_TOKEN, \"Unmodifiable Key\");\r\n        LockableData key = game.getRegistry().getManipulatorRegistry().getBuilder(LockableData.class).get().build(container).get();\r\n        stack.offer(key);\r\n        World world = p.getLocation().getExtent();\r\n        Item item = (Item) world.createEntity(EntityTypes.ITEM, p.getLocation().getPosition()).get();\r\n        item.offer(item.getItemData().set(Keys.REPRESENTED_ITEM, stack.createSnapshot()));\r\n        world.spawnEntity(item, Cause.of(p, this));\r\n    }\r\n\r\n    public void immutableDataManipulatorTest(Player p, Game game) {\r\n        ImmutableLockableData immutable = game.getRegistry().getManipulatorRegistry().getBuilder(LockableData.class).get().create().asImmutable();\r\n        immutable = immutable.with(immutable.lockToken().asMutable().set(\"Immutable Lock\").asImmutable()).get();\r\n        System.out.println(immutable.get(Keys.LOCK_TOKEN));\r\n        DataContainer container = immutable.toContainer();\r\n        container = container.set(Keys.LOCK_TOKEN, \"Container Key\");\r\n        game.getRegistry().getManipulatorRegistry().getBuilder(LockableData.class).get().build(container);\r\n        System.out.println(container.getString(Keys.LOCK_TOKEN.getQuery()));\r\n    }\r\n}\r\n```","created_at":"2015-10-25T16:03:30Z","updated_at":"2015-11-04T19:12:38Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0c5b41c85086ecd741617756c7fa28964be5d416","assignee":{"login":"Aaron1011","id":1408859,"avatar_url":"https://avatars.githubusercontent.com/u/1408859?v=3","gravatar_id":"","url":"https://api.github.com/users/Aaron1011","html_url":"https://github.com/Aaron1011","followers_url":"https://api.github.com/users/Aaron1011/followers","following_url":"https://api.github.com/users/Aaron1011/following{/other_user}","gists_url":"https://api.github.com/users/Aaron1011/gists{/gist_id}","starred_url":"https://api.github.com/users/Aaron1011/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Aaron1011/subscriptions","organizations_url":"https://api.github.com/users/Aaron1011/orgs","repos_url":"https://api.github.com/users/Aaron1011/repos","events_url":"https://api.github.com/users/Aaron1011/events{/privacy}","received_events_url":"https://api.github.com/users/Aaron1011/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/226/commits","review_comments_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/226/comments","review_comment_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/226/comments","statuses_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/statuses/239ec393de1ef1edd62b8cc65849d0bee6e793ea","head":{"label":"sanman00:lockable-data-impl","ref":"lockable-data-impl","sha":"239ec393de1ef1edd62b8cc65849d0bee6e793ea","user":{"login":"sanman00","id":5024620,"avatar_url":"https://avatars.githubusercontent.com/u/5024620?v=3","gravatar_id":"","url":"https://api.github.com/users/sanman00","html_url":"https://github.com/sanman00","followers_url":"https://api.github.com/users/sanman00/followers","following_url":"https://api.github.com/users/sanman00/following{/other_user}","gists_url":"https://api.github.com/users/sanman00/gists{/gist_id}","starred_url":"https://api.github.com/users/sanman00/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sanman00/subscriptions","organizations_url":"https://api.github.com/users/sanman00/orgs","repos_url":"https://api.github.com/users/sanman00/repos","events_url":"https://api.github.com/users/sanman00/events{/privacy}","received_events_url":"https://api.github.com/users/sanman00/received_events","type":"User","site_admin":false},"repo":{"id":44871440,"name":"SpongeCommon","full_name":"sanman00/SpongeCommon","owner":{"login":"sanman00","id":5024620,"avatar_url":"https://avatars.githubusercontent.com/u/5024620?v=3","gravatar_id":"","url":"https://api.github.com/users/sanman00","html_url":"https://github.com/sanman00","followers_url":"https://api.github.com/users/sanman00/followers","following_url":"https://api.github.com/users/sanman00/following{/other_user}","gists_url":"https://api.github.com/users/sanman00/gists{/gist_id}","starred_url":"https://api.github.com/users/sanman00/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sanman00/subscriptions","organizations_url":"https://api.github.com/users/sanman00/orgs","repos_url":"https://api.github.com/users/sanman00/repos","events_url":"https://api.github.com/users/sanman00/events{/privacy}","received_events_url":"https://api.github.com/users/sanman00/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sanman00/SpongeCommon","description":"Shared code between Sponge and SpongeVanilla","fork":true,"url":"https://api.github.com/repos/sanman00/SpongeCommon","forks_url":"https://api.github.com/repos/sanman00/SpongeCommon/forks","keys_url":"https://api.github.com/repos/sanman00/SpongeCommon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sanman00/SpongeCommon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sanman00/SpongeCommon/teams","hooks_url":"https://api.github.com/repos/sanman00/SpongeCommon/hooks","issue_events_url":"https://api.github.com/repos/sanman00/SpongeCommon/issues/events{/number}","events_url":"https://api.github.com/repos/sanman00/SpongeCommon/events","assignees_url":"https://api.github.com/repos/sanman00/SpongeCommon/assignees{/user}","branches_url":"https://api.github.com/repos/sanman00/SpongeCommon/branches{/branch}","tags_url":"https://api.github.com/repos/sanman00/SpongeCommon/tags","blobs_url":"https://api.github.com/repos/sanman00/SpongeCommon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sanman00/SpongeCommon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sanman00/SpongeCommon/git/refs{/sha}","trees_url":"https://api.github.com/repos/sanman00/SpongeCommon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sanman00/SpongeCommon/statuses/{sha}","languages_url":"https://api.github.com/repos/sanman00/SpongeCommon/languages","stargazers_url":"https://api.github.com/repos/sanman00/SpongeCommon/stargazers","contributors_url":"https://api.github.com/repos/sanman00/SpongeCommon/contributors","subscribers_url":"https://api.github.com/repos/sanman00/SpongeCommon/subscribers","subscription_url":"https://api.github.com/repos/sanman00/SpongeCommon/subscription","commits_url":"https://api.github.com/repos/sanman00/SpongeCommon/commits{/sha}","git_commits_url":"https://api.github.com/repos/sanman00/SpongeCommon/git/commits{/sha}","comments_url":"https://api.github.com/repos/sanman00/SpongeCommon/comments{/number}","issue_comment_url":"https://api.github.com/repos/sanman00/SpongeCommon/issues/comments{/number}","contents_url":"https://api.github.com/repos/sanman00/SpongeCommon/contents/{+path}","compare_url":"https://api.github.com/repos/sanman00/SpongeCommon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sanman00/SpongeCommon/merges","archive_url":"https://api.github.com/repos/sanman00/SpongeCommon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sanman00/SpongeCommon/downloads","issues_url":"https://api.github.com/repos/sanman00/SpongeCommon/issues{/number}","pulls_url":"https://api.github.com/repos/sanman00/SpongeCommon/pulls{/number}","milestones_url":"https://api.github.com/repos/sanman00/SpongeCommon/milestones{/number}","notifications_url":"https://api.github.com/repos/sanman00/SpongeCommon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sanman00/SpongeCommon/labels{/name}","releases_url":"https://api.github.com/repos/sanman00/SpongeCommon/releases{/id}","created_at":"2015-10-24T15:12:05Z","updated_at":"2015-10-24T15:12:10Z","pushed_at":"2015-11-04T19:09:55Z","git_url":"git://github.com/sanman00/SpongeCommon.git","ssh_url":"git@github.com:sanman00/SpongeCommon.git","clone_url":"https://github.com/sanman00/SpongeCommon.git","svn_url":"https://github.com/sanman00/SpongeCommon","homepage":null,"size":4499,"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":"SpongePowered:master","ref":"master","sha":"a79c101620cf7eaba7f18a7930d433817b20a3ad","user":{"login":"SpongePowered","id":8683473,"avatar_url":"https://avatars.githubusercontent.com/u/8683473?v=3","gravatar_id":"","url":"https://api.github.com/users/SpongePowered","html_url":"https://github.com/SpongePowered","followers_url":"https://api.github.com/users/SpongePowered/followers","following_url":"https://api.github.com/users/SpongePowered/following{/other_user}","gists_url":"https://api.github.com/users/SpongePowered/gists{/gist_id}","starred_url":"https://api.github.com/users/SpongePowered/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SpongePowered/subscriptions","organizations_url":"https://api.github.com/users/SpongePowered/orgs","repos_url":"https://api.github.com/users/SpongePowered/repos","events_url":"https://api.github.com/users/SpongePowered/events{/privacy}","received_events_url":"https://api.github.com/users/SpongePowered/received_events","type":"Organization","site_admin":false},"repo":{"id":33791453,"name":"SpongeCommon","full_name":"SpongePowered/SpongeCommon","owner":{"login":"SpongePowered","id":8683473,"avatar_url":"https://avatars.githubusercontent.com/u/8683473?v=3","gravatar_id":"","url":"https://api.github.com/users/SpongePowered","html_url":"https://github.com/SpongePowered","followers_url":"https://api.github.com/users/SpongePowered/followers","following_url":"https://api.github.com/users/SpongePowered/following{/other_user}","gists_url":"https://api.github.com/users/SpongePowered/gists{/gist_id}","starred_url":"https://api.github.com/users/SpongePowered/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SpongePowered/subscriptions","organizations_url":"https://api.github.com/users/SpongePowered/orgs","repos_url":"https://api.github.com/users/SpongePowered/repos","events_url":"https://api.github.com/users/SpongePowered/events{/privacy}","received_events_url":"https://api.github.com/users/SpongePowered/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SpongePowered/SpongeCommon","description":"Shared code between SpongeForge and SpongeVanilla","fork":false,"url":"https://api.github.com/repos/SpongePowered/SpongeCommon","forks_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/forks","keys_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/teams","hooks_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/hooks","issue_events_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/events{/number}","events_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/events","assignees_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/assignees{/user}","branches_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/branches{/branch}","tags_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/tags","blobs_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/refs{/sha}","trees_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/statuses/{sha}","languages_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/languages","stargazers_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/stargazers","contributors_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/contributors","subscribers_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/subscribers","subscription_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/subscription","commits_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/commits{/sha}","git_commits_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/git/commits{/sha}","comments_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/comments{/number}","issue_comment_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/comments{/number}","contents_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/contents/{+path}","compare_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/merges","archive_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/downloads","issues_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues{/number}","pulls_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls{/number}","milestones_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/milestones{/number}","notifications_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/labels{/name}","releases_url":"https://api.github.com/repos/SpongePowered/SpongeCommon/releases{/id}","created_at":"2015-04-11T20:38:48Z","updated_at":"2015-11-01T12:21:43Z","pushed_at":"2015-11-04T19:09:56Z","git_url":"git://github.com/SpongePowered/SpongeCommon.git","ssh_url":"git@github.com:SpongePowered/SpongeCommon.git","clone_url":"https://github.com/SpongePowered/SpongeCommon.git","svn_url":"https://github.com/SpongePowered/SpongeCommon","homepage":"","size":12362,"stargazers_count":52,"watchers_count":52,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":56,"mirror_url":null,"open_issues_count":59,"forks":56,"open_issues":59,"watchers":52,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/226"},"html":{"href":"https://github.com/SpongePowered/SpongeCommon/pull/226"},"issue":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/226"},"comments":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/issues/226/comments"},"review_comments":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/226/comments"},"review_comment":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/pulls/226/commits"},"statuses":{"href":"https://api.github.com/repos/SpongePowered/SpongeCommon/statuses/239ec393de1ef1edd62b8cc65849d0bee6e793ea"}}}}