{"action":"created","comment":{"url":"https://api.github.com/repos/codice/ddf/pulls/comments/138443624","pull_request_review_id":62240040,"id":138443624,"diff_hunk":"@@ -0,0 +1,119 @@\n+/**\n+ * Copyright (c) Codice Foundation\n+ * <p>\n+ * This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser\n+ * General Public License as published by the Free Software Foundation, either version 3 of the\n+ * License, or any later version.\n+ * <p>\n+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\n+ * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ * Lesser General Public License for more details. A copy of the GNU Lesser General Public License\n+ * is distributed along with this program and can be found at\n+ * <http://www.gnu.org/licenses/lgpl.html>.\n+ */\n+package org.codice.ddf.configuration.migration;\n+\n+import java.nio.file.Path;\n+\n+import javax.annotation.Nullable;\n+\n+import org.apache.commons.lang.Validate;\n+import org.codice.ddf.migration.MigrationEntry;\n+import org.codice.ddf.migration.MigrationException;\n+import org.codice.ddf.migration.MigrationWarning;\n+\n+/**\n+ * Defines a migration entry representing a property defined in a Java properties file whose value\n+ * references another migration entry.\n+ */\n+public class ExportMigrationJavaPropertyReferencedEntryImpl\n+        extends ExportMigrationPropertyReferencedEntryImpl {\n+    /**\n+     * Holds the path for the properties file where the reference is defined.\n+     */\n+    private final Path propertiesPath;\n+\n+    /**\n+     * Instantiates a new java property referenced migration entry given a migratable context, properties\n+     * path, name, and pathname.\n+     *\n+     * @param context        the migration context associated with this entry\n+     * @param propertiesPath the path to the Java property file\n+     * @param property       the property name for this entry\n+     * @param pathname       the pathname for this entry\n+     * @throws IllegalArgumentException if <code>context</code>, <code>propertiesPath</code>,\n+     *                                  <code>property</code>, or <code>pathname</code> is <code>null</code>\n+     */\n+    ExportMigrationJavaPropertyReferencedEntryImpl(ExportMigrationContextImpl context,\n+            Path propertiesPath, String property, String pathname) {\n+        super(context, property, pathname);\n+        Validate.notNull(propertiesPath, \"invalid null properties path\");\n+        this.propertiesPath = propertiesPath;\n+    }\n+\n+    public Path getPropertiesPath() {\n+        return propertiesPath;\n+    }\n+\n+    @Override\n+    public int hashCode() {\n+        return 31 * super.hashCode() + propertiesPath.hashCode();\n+    }\n+\n+    @Override\n+    public boolean equals(@Nullable Object o) {\n+        if (!super.equals(o)) {\n+            return false;\n+        } // else - they would be at least of the same class\n+        final ExportMigrationJavaPropertyReferencedEntryImpl me =\n+                (ExportMigrationJavaPropertyReferencedEntryImpl) o;\n+\n+        return propertiesPath.equals(me.getPropertiesPath());\n+    }\n+\n+    @Override\n+    public int compareTo(@Nullable MigrationEntry me) {\n+        final int c = super.compareTo(me);\n+\n+        if (c != 0) {\n+            return c;\n+        } // else they would be at least of the same class\n+        final ExportMigrationJavaPropertyReferencedEntryImpl eme =\n+                (ExportMigrationJavaPropertyReferencedEntryImpl) me;\n+\n+        return propertiesPath.compareTo(eme.getPropertiesPath());","path":"platform/migration/platform-migration/src/main/java/org/codice/ddf/configuration/migration/ExportMigrationJavaPropertyReferencedEntryImpl.java","position":84,"original_position":84,"commit_id":"7787d199273daeadf2c8b92b6464db503849b5c8","original_commit_id":"7787d199273daeadf2c8b92b6464db503849b5c8","user":{"login":"codice-bot","id":28742502,"avatar_url":"https://avatars1.githubusercontent.com/u/28742502?v=4","gravatar_id":"","url":"https://api.github.com/users/codice-bot","html_url":"https://github.com/codice-bot","followers_url":"https://api.github.com/users/codice-bot/followers","following_url":"https://api.github.com/users/codice-bot/following{/other_user}","gists_url":"https://api.github.com/users/codice-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/codice-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codice-bot/subscriptions","organizations_url":"https://api.github.com/users/codice-bot/orgs","repos_url":"https://api.github.com/users/codice-bot/repos","events_url":"https://api.github.com/users/codice-bot/events{/privacy}","received_events_url":"https://api.github.com/users/codice-bot/received_events","type":"User","site_admin":false},"body":"![MAJOR](https://sonarsource.github.io/sonar-github/severity-major.png 'Severity: MAJOR') A \"NullPointerException\" could be thrown; \"eme\" is nullable here. [![rule](https://sonarsource.github.io/sonar-github/rule.png)](https://sonarcloud.io/coding_rules#rule_key=squid%3AS2259)\n","created_at":"2017-09-12T19:30:02Z","updated_at":"2017-09-12T19:30:02Z","html_url":"https://github.com/codice/ddf/pull/2308#discussion_r138443624","pull_request_url":"https://api.github.com/repos/codice/ddf/pulls/2308","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/codice/ddf/pulls/comments/138443624"},"html":{"href":"https://github.com/codice/ddf/pull/2308#discussion_r138443624"},"pull_request":{"href":"https://api.github.com/repos/codice/ddf/pulls/2308"}}},"pull_request":{"url":"https://api.github.com/repos/codice/ddf/pulls/2308","id":140614452,"html_url":"https://github.com/codice/ddf/pull/2308","diff_url":"https://github.com/codice/ddf/pull/2308.diff","patch_url":"https://github.com/codice/ddf/pull/2308.patch","issue_url":"https://api.github.com/repos/codice/ddf/issues/2308","number":2308,"state":"open","locked":false,"title":"DDF-3142 - New migration API (Take 3)","user":{"login":"paouelle","id":10549555,"avatar_url":"https://avatars0.githubusercontent.com/u/10549555?v=4","gravatar_id":"","url":"https://api.github.com/users/paouelle","html_url":"https://github.com/paouelle","followers_url":"https://api.github.com/users/paouelle/followers","following_url":"https://api.github.com/users/paouelle/following{/other_user}","gists_url":"https://api.github.com/users/paouelle/gists{/gist_id}","starred_url":"https://api.github.com/users/paouelle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paouelle/subscriptions","organizations_url":"https://api.github.com/users/paouelle/orgs","repos_url":"https://api.github.com/users/paouelle/repos","events_url":"https://api.github.com/users/paouelle/events{/privacy}","received_events_url":"https://api.github.com/users/paouelle/received_events","type":"User","site_admin":false},"body":"#### What does this PR do?\r\nThis is the third PR related to migration export/import. It is a continuation of PRs https://github.com/codice/ddf/pull/2174 and https://github.com/codice/ddf/pull/2268 which have become too big for Github to handle.\r\n\r\n#### Who is reviewing it? \r\n@brjeter @Lambeaux @figliold \r\n\r\n(please choose AT LEAST two reviewers that need to approve the PR before it can get merged)\r\n#### Select relevant component teams: \r\nhttps://github.com/orgs/codice/teams\r\n\r\n#### Choose 2 committers to review/merge the PR. \r\n(please choose ONLY two committers from below, delete the rest)\r\n@coyotesqrl\r\n@pklinef\r\n@lessarderic\r\n\r\n#### How should this be tested? (List steps with links to updated documentation)\r\nThis should be tested on both Linux/Mac and Windows. Unzip DDF, install and configure it then perform migration:export. Copy the export file out. Delete DDF completely. Re-unzip DDF and install then perform migration:import.\r\n\r\n#### Any background context you want to provide?\r\nThe migration API is changed to handle the import side. It will also abstract the format of the export so it becomes unknown to the various migratable. In our case, we will start exporting in a zip file. It will also be used in subsequent tickets where we will encrypt, sign, and checksum the generated zip file and where auditing will be done.\r\n\r\nTo simplify the review process, it is suggested to subdivide it as follow:\r\n1- API - everything under platform/migration/platform-migratable-api\r\n2- Framework implementation - everything under platform/migration/platform-migration minus the admin package\r\n3- Config Admin Migratable - the admin package under platform/migration/platform-migration\r\n4- Platform Migratable - everything under platform/platform-migratable\r\n5- Security Migratable - everything under platform/security/security-migratable\r\n6- Admin Commands - everything under platform/admin/core/admin-core-migration-commands\r\n\r\n#### What are the relevant tickets?\r\n[DDF-3142](https://codice.atlassian.net/browse/DDF-3142)\r\n\r\n#### Screenshots (if appropriate)\r\n#### Checklist:\r\n- [ ] Documentation Updated\r\n- [ ] Update / Add Unit Tests\r\n- [ ] Update / Add Integration Tests\r\n\r\n#### Review Comment Legend:\r\n- ✏️ (Pencil) This comment is a nitpick or style suggestion, no action required for approval. This comment should provide a suggestion either as an in line code snippet or a gist. \r\n- ❓ (Question Mark) This comment is to gain a clearer understanding of design or code choices, clarification is required but action may not be necessary for approval.\r\n- ❗ (Exclamation Mark) This comment is critical and requires clarification or action before approval.\r\n","created_at":"2017-09-12T15:34:46Z","updated_at":"2017-09-12T19:30:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"04ff9a9de9fe66158508e89c4744d5168aa96a61","assignee":{"login":"pklinef","id":700518,"avatar_url":"https://avatars1.githubusercontent.com/u/700518?v=4","gravatar_id":"","url":"https://api.github.com/users/pklinef","html_url":"https://github.com/pklinef","followers_url":"https://api.github.com/users/pklinef/followers","following_url":"https://api.github.com/users/pklinef/following{/other_user}","gists_url":"https://api.github.com/users/pklinef/gists{/gist_id}","starred_url":"https://api.github.com/users/pklinef/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pklinef/subscriptions","organizations_url":"https://api.github.com/users/pklinef/orgs","repos_url":"https://api.github.com/users/pklinef/repos","events_url":"https://api.github.com/users/pklinef/events{/privacy}","received_events_url":"https://api.github.com/users/pklinef/received_events","type":"User","site_admin":false},"assignees":[{"login":"pklinef","id":700518,"avatar_url":"https://avatars1.githubusercontent.com/u/700518?v=4","gravatar_id":"","url":"https://api.github.com/users/pklinef","html_url":"https://github.com/pklinef","followers_url":"https://api.github.com/users/pklinef/followers","following_url":"https://api.github.com/users/pklinef/following{/other_user}","gists_url":"https://api.github.com/users/pklinef/gists{/gist_id}","starred_url":"https://api.github.com/users/pklinef/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pklinef/subscriptions","organizations_url":"https://api.github.com/users/pklinef/orgs","repos_url":"https://api.github.com/users/pklinef/repos","events_url":"https://api.github.com/users/pklinef/events{/privacy}","received_events_url":"https://api.github.com/users/pklinef/received_events","type":"User","site_admin":false},{"login":"coyotesqrl","id":1469860,"avatar_url":"https://avatars2.githubusercontent.com/u/1469860?v=4","gravatar_id":"","url":"https://api.github.com/users/coyotesqrl","html_url":"https://github.com/coyotesqrl","followers_url":"https://api.github.com/users/coyotesqrl/followers","following_url":"https://api.github.com/users/coyotesqrl/following{/other_user}","gists_url":"https://api.github.com/users/coyotesqrl/gists{/gist_id}","starred_url":"https://api.github.com/users/coyotesqrl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/coyotesqrl/subscriptions","organizations_url":"https://api.github.com/users/coyotesqrl/orgs","repos_url":"https://api.github.com/users/coyotesqrl/repos","events_url":"https://api.github.com/users/coyotesqrl/events{/privacy}","received_events_url":"https://api.github.com/users/coyotesqrl/received_events","type":"User","site_admin":false},{"login":"lessarderic","id":11377558,"avatar_url":"https://avatars1.githubusercontent.com/u/11377558?v=4","gravatar_id":"","url":"https://api.github.com/users/lessarderic","html_url":"https://github.com/lessarderic","followers_url":"https://api.github.com/users/lessarderic/followers","following_url":"https://api.github.com/users/lessarderic/following{/other_user}","gists_url":"https://api.github.com/users/lessarderic/gists{/gist_id}","starred_url":"https://api.github.com/users/lessarderic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lessarderic/subscriptions","organizations_url":"https://api.github.com/users/lessarderic/orgs","repos_url":"https://api.github.com/users/lessarderic/repos","events_url":"https://api.github.com/users/lessarderic/events{/privacy}","received_events_url":"https://api.github.com/users/lessarderic/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"Lambeaux","id":7215534,"avatar_url":"https://avatars3.githubusercontent.com/u/7215534?v=4","gravatar_id":"","url":"https://api.github.com/users/Lambeaux","html_url":"https://github.com/Lambeaux","followers_url":"https://api.github.com/users/Lambeaux/followers","following_url":"https://api.github.com/users/Lambeaux/following{/other_user}","gists_url":"https://api.github.com/users/Lambeaux/gists{/gist_id}","starred_url":"https://api.github.com/users/Lambeaux/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lambeaux/subscriptions","organizations_url":"https://api.github.com/users/Lambeaux/orgs","repos_url":"https://api.github.com/users/Lambeaux/repos","events_url":"https://api.github.com/users/Lambeaux/events{/privacy}","received_events_url":"https://api.github.com/users/Lambeaux/received_events","type":"User","site_admin":false},{"login":"rzwiefel","id":9013416,"avatar_url":"https://avatars0.githubusercontent.com/u/9013416?v=4","gravatar_id":"","url":"https://api.github.com/users/rzwiefel","html_url":"https://github.com/rzwiefel","followers_url":"https://api.github.com/users/rzwiefel/followers","following_url":"https://api.github.com/users/rzwiefel/following{/other_user}","gists_url":"https://api.github.com/users/rzwiefel/gists{/gist_id}","starred_url":"https://api.github.com/users/rzwiefel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rzwiefel/subscriptions","organizations_url":"https://api.github.com/users/rzwiefel/orgs","repos_url":"https://api.github.com/users/rzwiefel/repos","events_url":"https://api.github.com/users/rzwiefel/events{/privacy}","received_events_url":"https://api.github.com/users/rzwiefel/received_events","type":"User","site_admin":false},{"login":"ricklarsen","id":10619999,"avatar_url":"https://avatars2.githubusercontent.com/u/10619999?v=4","gravatar_id":"","url":"https://api.github.com/users/ricklarsen","html_url":"https://github.com/ricklarsen","followers_url":"https://api.github.com/users/ricklarsen/followers","following_url":"https://api.github.com/users/ricklarsen/following{/other_user}","gists_url":"https://api.github.com/users/ricklarsen/gists{/gist_id}","starred_url":"https://api.github.com/users/ricklarsen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ricklarsen/subscriptions","organizations_url":"https://api.github.com/users/ricklarsen/orgs","repos_url":"https://api.github.com/users/ricklarsen/repos","events_url":"https://api.github.com/users/ricklarsen/events{/privacy}","received_events_url":"https://api.github.com/users/ricklarsen/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/codice/ddf/pulls/2308/commits","review_comments_url":"https://api.github.com/repos/codice/ddf/pulls/2308/comments","review_comment_url":"https://api.github.com/repos/codice/ddf/pulls/comments{/number}","comments_url":"https://api.github.com/repos/codice/ddf/issues/2308/comments","statuses_url":"https://api.github.com/repos/codice/ddf/statuses/7787d199273daeadf2c8b92b6464db503849b5c8","head":{"label":"paouelle:DDF-3142-3","ref":"DDF-3142-3","sha":"7787d199273daeadf2c8b92b6464db503849b5c8","user":{"login":"paouelle","id":10549555,"avatar_url":"https://avatars0.githubusercontent.com/u/10549555?v=4","gravatar_id":"","url":"https://api.github.com/users/paouelle","html_url":"https://github.com/paouelle","followers_url":"https://api.github.com/users/paouelle/followers","following_url":"https://api.github.com/users/paouelle/following{/other_user}","gists_url":"https://api.github.com/users/paouelle/gists{/gist_id}","starred_url":"https://api.github.com/users/paouelle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paouelle/subscriptions","organizations_url":"https://api.github.com/users/paouelle/orgs","repos_url":"https://api.github.com/users/paouelle/repos","events_url":"https://api.github.com/users/paouelle/events{/privacy}","received_events_url":"https://api.github.com/users/paouelle/received_events","type":"User","site_admin":false},"repo":{"id":85875261,"name":"ddf","full_name":"paouelle/ddf","owner":{"login":"paouelle","id":10549555,"avatar_url":"https://avatars0.githubusercontent.com/u/10549555?v=4","gravatar_id":"","url":"https://api.github.com/users/paouelle","html_url":"https://github.com/paouelle","followers_url":"https://api.github.com/users/paouelle/followers","following_url":"https://api.github.com/users/paouelle/following{/other_user}","gists_url":"https://api.github.com/users/paouelle/gists{/gist_id}","starred_url":"https://api.github.com/users/paouelle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paouelle/subscriptions","organizations_url":"https://api.github.com/users/paouelle/orgs","repos_url":"https://api.github.com/users/paouelle/repos","events_url":"https://api.github.com/users/paouelle/events{/privacy}","received_events_url":"https://api.github.com/users/paouelle/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/paouelle/ddf","description":"Distributed Data Framework - an open source, modular integration framework.","fork":true,"url":"https://api.github.com/repos/paouelle/ddf","forks_url":"https://api.github.com/repos/paouelle/ddf/forks","keys_url":"https://api.github.com/repos/paouelle/ddf/keys{/key_id}","collaborators_url":"https://api.github.com/repos/paouelle/ddf/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/paouelle/ddf/teams","hooks_url":"https://api.github.com/repos/paouelle/ddf/hooks","issue_events_url":"https://api.github.com/repos/paouelle/ddf/issues/events{/number}","events_url":"https://api.github.com/repos/paouelle/ddf/events","assignees_url":"https://api.github.com/repos/paouelle/ddf/assignees{/user}","branches_url":"https://api.github.com/repos/paouelle/ddf/branches{/branch}","tags_url":"https://api.github.com/repos/paouelle/ddf/tags","blobs_url":"https://api.github.com/repos/paouelle/ddf/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/paouelle/ddf/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/paouelle/ddf/git/refs{/sha}","trees_url":"https://api.github.com/repos/paouelle/ddf/git/trees{/sha}","statuses_url":"https://api.github.com/repos/paouelle/ddf/statuses/{sha}","languages_url":"https://api.github.com/repos/paouelle/ddf/languages","stargazers_url":"https://api.github.com/repos/paouelle/ddf/stargazers","contributors_url":"https://api.github.com/repos/paouelle/ddf/contributors","subscribers_url":"https://api.github.com/repos/paouelle/ddf/subscribers","subscription_url":"https://api.github.com/repos/paouelle/ddf/subscription","commits_url":"https://api.github.com/repos/paouelle/ddf/commits{/sha}","git_commits_url":"https://api.github.com/repos/paouelle/ddf/git/commits{/sha}","comments_url":"https://api.github.com/repos/paouelle/ddf/comments{/number}","issue_comment_url":"https://api.github.com/repos/paouelle/ddf/issues/comments{/number}","contents_url":"https://api.github.com/repos/paouelle/ddf/contents/{+path}","compare_url":"https://api.github.com/repos/paouelle/ddf/compare/{base}...{head}","merges_url":"https://api.github.com/repos/paouelle/ddf/merges","archive_url":"https://api.github.com/repos/paouelle/ddf/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/paouelle/ddf/downloads","issues_url":"https://api.github.com/repos/paouelle/ddf/issues{/number}","pulls_url":"https://api.github.com/repos/paouelle/ddf/pulls{/number}","milestones_url":"https://api.github.com/repos/paouelle/ddf/milestones{/number}","notifications_url":"https://api.github.com/repos/paouelle/ddf/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/paouelle/ddf/labels{/name}","releases_url":"https://api.github.com/repos/paouelle/ddf/releases{/id}","deployments_url":"https://api.github.com/repos/paouelle/ddf/deployments","created_at":"2017-03-22T20:55:51Z","updated_at":"2017-03-22T20:56:09Z","pushed_at":"2017-09-12T18:39:16Z","git_url":"git://github.com/paouelle/ddf.git","ssh_url":"git@github.com:paouelle/ddf.git","clone_url":"https://github.com/paouelle/ddf.git","svn_url":"https://github.com/paouelle/ddf","homepage":"http://ddf.codice.org","size":319446,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"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":"codice:master","ref":"master","sha":"8011192ddc2baef93d519719d7b5ba3ba70d75da","user":{"login":"codice","id":2386734,"avatar_url":"https://avatars2.githubusercontent.com/u/2386734?v=4","gravatar_id":"","url":"https://api.github.com/users/codice","html_url":"https://github.com/codice","followers_url":"https://api.github.com/users/codice/followers","following_url":"https://api.github.com/users/codice/following{/other_user}","gists_url":"https://api.github.com/users/codice/gists{/gist_id}","starred_url":"https://api.github.com/users/codice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codice/subscriptions","organizations_url":"https://api.github.com/users/codice/orgs","repos_url":"https://api.github.com/users/codice/repos","events_url":"https://api.github.com/users/codice/events{/privacy}","received_events_url":"https://api.github.com/users/codice/received_events","type":"Organization","site_admin":false},"repo":{"id":15173563,"name":"ddf","full_name":"codice/ddf","owner":{"login":"codice","id":2386734,"avatar_url":"https://avatars2.githubusercontent.com/u/2386734?v=4","gravatar_id":"","url":"https://api.github.com/users/codice","html_url":"https://github.com/codice","followers_url":"https://api.github.com/users/codice/followers","following_url":"https://api.github.com/users/codice/following{/other_user}","gists_url":"https://api.github.com/users/codice/gists{/gist_id}","starred_url":"https://api.github.com/users/codice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codice/subscriptions","organizations_url":"https://api.github.com/users/codice/orgs","repos_url":"https://api.github.com/users/codice/repos","events_url":"https://api.github.com/users/codice/events{/privacy}","received_events_url":"https://api.github.com/users/codice/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/codice/ddf","description":"Distributed Data Framework - an open source, modular integration framework.","fork":false,"url":"https://api.github.com/repos/codice/ddf","forks_url":"https://api.github.com/repos/codice/ddf/forks","keys_url":"https://api.github.com/repos/codice/ddf/keys{/key_id}","collaborators_url":"https://api.github.com/repos/codice/ddf/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/codice/ddf/teams","hooks_url":"https://api.github.com/repos/codice/ddf/hooks","issue_events_url":"https://api.github.com/repos/codice/ddf/issues/events{/number}","events_url":"https://api.github.com/repos/codice/ddf/events","assignees_url":"https://api.github.com/repos/codice/ddf/assignees{/user}","branches_url":"https://api.github.com/repos/codice/ddf/branches{/branch}","tags_url":"https://api.github.com/repos/codice/ddf/tags","blobs_url":"https://api.github.com/repos/codice/ddf/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/codice/ddf/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/codice/ddf/git/refs{/sha}","trees_url":"https://api.github.com/repos/codice/ddf/git/trees{/sha}","statuses_url":"https://api.github.com/repos/codice/ddf/statuses/{sha}","languages_url":"https://api.github.com/repos/codice/ddf/languages","stargazers_url":"https://api.github.com/repos/codice/ddf/stargazers","contributors_url":"https://api.github.com/repos/codice/ddf/contributors","subscribers_url":"https://api.github.com/repos/codice/ddf/subscribers","subscription_url":"https://api.github.com/repos/codice/ddf/subscription","commits_url":"https://api.github.com/repos/codice/ddf/commits{/sha}","git_commits_url":"https://api.github.com/repos/codice/ddf/git/commits{/sha}","comments_url":"https://api.github.com/repos/codice/ddf/comments{/number}","issue_comment_url":"https://api.github.com/repos/codice/ddf/issues/comments{/number}","contents_url":"https://api.github.com/repos/codice/ddf/contents/{+path}","compare_url":"https://api.github.com/repos/codice/ddf/compare/{base}...{head}","merges_url":"https://api.github.com/repos/codice/ddf/merges","archive_url":"https://api.github.com/repos/codice/ddf/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/codice/ddf/downloads","issues_url":"https://api.github.com/repos/codice/ddf/issues{/number}","pulls_url":"https://api.github.com/repos/codice/ddf/pulls{/number}","milestones_url":"https://api.github.com/repos/codice/ddf/milestones{/number}","notifications_url":"https://api.github.com/repos/codice/ddf/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/codice/ddf/labels{/name}","releases_url":"https://api.github.com/repos/codice/ddf/releases{/id}","deployments_url":"https://api.github.com/repos/codice/ddf/deployments","created_at":"2013-12-13T20:38:28Z","updated_at":"2017-09-08T21:47:50Z","pushed_at":"2017-09-12T19:00:22Z","git_url":"git://github.com/codice/ddf.git","ssh_url":"git@github.com:codice/ddf.git","clone_url":"https://github.com/codice/ddf.git","svn_url":"https://github.com/codice/ddf","homepage":"http://ddf.codice.org","size":328648,"stargazers_count":63,"watchers_count":63,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":120,"mirror_url":null,"open_issues_count":32,"forks":120,"open_issues":32,"watchers":63,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/codice/ddf/pulls/2308"},"html":{"href":"https://github.com/codice/ddf/pull/2308"},"issue":{"href":"https://api.github.com/repos/codice/ddf/issues/2308"},"comments":{"href":"https://api.github.com/repos/codice/ddf/issues/2308/comments"},"review_comments":{"href":"https://api.github.com/repos/codice/ddf/pulls/2308/comments"},"review_comment":{"href":"https://api.github.com/repos/codice/ddf/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/codice/ddf/pulls/2308/commits"},"statuses":{"href":"https://api.github.com/repos/codice/ddf/statuses/7787d199273daeadf2c8b92b6464db503849b5c8"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"codice-bot"}}