{"action":"created","comment":{"url":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/comments/168756605","pull_request_review_id":97178159,"id":168756605,"diff_hunk":"@@ -0,0 +1,290 @@\n+/*\n+ * Copyright 2018, TeamDev Ltd. All rights reserved.\n+ *\n+ * Redistribution and use in source and/or binary forms, with or without\n+ * modification, must retain the above copyright notice and the following\n+ * disclaimer.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+package javaclasses.mealorder.c.aggregate;\n+\n+import com.google.common.collect.ImmutableList;\n+import com.google.protobuf.Message;\n+import io.spine.net.EmailAddress;\n+import io.spine.server.aggregate.Aggregate;\n+import io.spine.server.aggregate.Apply;\n+import io.spine.server.command.Assign;\n+import javaclasses.mealorder.Order;\n+import javaclasses.mealorder.PurchaseOrder;\n+import javaclasses.mealorder.PurchaseOrderId;\n+import javaclasses.mealorder.PurchaseOrderVBuilder;\n+import javaclasses.mealorder.c.command.CancelPurchaseOrder;\n+import javaclasses.mealorder.c.command.CreatePurchaseOrder;\n+import javaclasses.mealorder.c.command.MarkPurchaseOrderAsDelivered;\n+import javaclasses.mealorder.c.command.MarkPurchaseOrderAsValid;\n+import javaclasses.mealorder.c.event.PurchaseOrderCanceled;\n+import javaclasses.mealorder.c.event.PurchaseOrderCreated;\n+import javaclasses.mealorder.c.event.PurchaseOrderDelivered;\n+import javaclasses.mealorder.c.event.PurchaseOrderSent;\n+import javaclasses.mealorder.c.event.PurchaseOrderValidationFailed;\n+import javaclasses.mealorder.c.event.PurchaseOrderValidationOverruled;\n+import javaclasses.mealorder.c.event.PurchaseOrderValidationPassed;\n+import javaclasses.mealorder.c.rejection.CannotCancelDeliveredPurchaseOrder;\n+import javaclasses.mealorder.c.rejection.CannotCreatePurchaseOrder;\n+import javaclasses.mealorder.c.rejection.CannotMarkPurchaseOrderAsDelivered;\n+import javaclasses.mealorder.c.rejection.CannotOverruleValidationOfNotInvalidPO;\n+\n+import java.util.List;\n+\n+import static io.spine.time.Time.getCurrentTime;\n+import static javaclasses.mealorder.PurchaseOrderStatus.CANCELED;\n+import static javaclasses.mealorder.PurchaseOrderStatus.CREATED;\n+import static javaclasses.mealorder.PurchaseOrderStatus.DELIVERED;\n+import static javaclasses.mealorder.PurchaseOrderStatus.INVALID;\n+import static javaclasses.mealorder.PurchaseOrderStatus.SENT;\n+import static javaclasses.mealorder.PurchaseOrderStatus.VALID;\n+import static javaclasses.mealorder.c.aggregate.rejection.PurchaseOrderAggregateRejections.throwCannotCancelDeliveredPurchaseOrder;\n+import static javaclasses.mealorder.c.aggregate.rejection.PurchaseOrderAggregateRejections.throwCannotCreatePurchaseOrder;\n+import static javaclasses.mealorder.c.aggregate.rejection.PurchaseOrderAggregateRejections.throwCannotMarkPurchaseOrderAsDelivered;\n+import static javaclasses.mealorder.c.aggregate.rejection.PurchaseOrderAggregateRejections.throwCannotOverruleValidationOfNotInvalidPO;\n+import static javaclasses.mealorder.c.aggregate.PurchaseOrderValidator.findInvalidOrders;\n+import static javaclasses.mealorder.c.aggregate.PurchaseOrderValidator.isAllowedPurchaseOrderCreation;\n+\n+/**\n+ * The aggregate managing the state of a {@link PurchaseOrder}.\n+ *\n+ * @author Yegor Udovchenko\n+ */\n+@SuppressWarnings({\"ClassWithTooManyMethods\", /* Vendor po cannot be separated and should\n+                                                 process all commands and events related to it\n+                                                 according to the domain model.\n+                                                 The {@code Aggregate} does it with methods\n+                                                 annotated as {@code Assign} and {@code Apply}.\n+                                                 In that case class has too many methods.*/\n+        \"OverlyCoupledClass\"}) /* As each method needs dependencies  necessary to perform execution\n+                                                 that class also overly coupled.*/\n+public class PurchaseOrderAggregate extends Aggregate<PurchaseOrderId,\n+        PurchaseOrder, PurchaseOrderVBuilder> {\n+\n+    private PurchaseOrderSender poSender;\n+\n+    /**\n+     * {@inheritDoc}\n+     */\n+    public PurchaseOrderAggregate(PurchaseOrderId id, PurchaseOrderSender poSender) {\n+        super(id);\n+        this.poSender = poSender;\n+    }\n+\n+    @Assign\n+    List<? extends Message> handle(CreatePurchaseOrder cmd) throws CannotCreatePurchaseOrder {\n+        if (!isAllowedPurchaseOrderCreation(cmd)) {\n+            throwCannotCreatePurchaseOrder(cmd);\n+        }\n+\n+        ImmutableList.Builder<Message> result = ImmutableList.builder();\n+        result.add(createPOCreatedEvent(cmd));\n+\n+        List<Order> invalidOrders = findInvalidOrders(cmd.getOrdersList());\n+\n+        // TODO 2/16/2018[yegor.udovchenko]:add PO event signalizing sending error.\n+        if (invalidOrders.isEmpty()) {\n+            result.add(createPOValidationPassedEvent(cmd));\n+            final PurchaseOrder purchaseOrder = PurchaseOrder.newBuilder()\n+                                                             .setId(cmd.getId())\n+                                                             .setStatus(VALID)\n+                                                             .addAllOrders(cmd.getOrdersList())\n+                                                             .build();\n+\n+            if (poSender.formAndSendPurchaseOrder(purchaseOrder, cmd.getWhoCreates()\n+                                                                    .getEmail(),\n+                                                  cmd.getVendorEmail())) {\n+                result.add(createPOSentEvent(purchaseOrder,\n+                                             cmd.getWhoCreates()\n+                                                .getEmail(),\n+                                             cmd.getVendorEmail()));\n+            }\n+        } else {\n+            result.add(createPOValidationFailedEvent(cmd, invalidOrders));\n+        }\n+        return result.build();\n+    }\n+\n+    @Assign\n+    List<? extends Message> handle(MarkPurchaseOrderAsValid cmd)\n+            throws CannotOverruleValidationOfNotInvalidPO {\n+        if (!isAllowedToMarkAsValid()) {\n+            throwCannotOverruleValidationOfNotInvalidPO(cmd);\n+        }\n+        ImmutableList.Builder<Message> result = ImmutableList.builder();\n+        result.add(createPOValidationOverruledEvent(cmd));\n+        // TODO 2/16/2018[yegor.udovchenko]:add PO event signalizing sending error.\n+        if (poSender.formAndSendPurchaseOrder(getState(), cmd.getUserId()\n+                                                             .getEmail(), cmd.getVendorEmail())) {\n+            result.add(createPOSentEvent(getState(), cmd.getUserId()\n+                                                        .getEmail(),\n+                                         cmd.getVendorEmail()));\n+        }\n+        return result.build();\n+    }\n+\n+    @Assign\n+    PurchaseOrderDelivered handle(MarkPurchaseOrderAsDelivered cmd)\n+            throws CannotMarkPurchaseOrderAsDelivered {\n+        if (!isAllowedToMarkAsDelivered()) {\n+            throwCannotMarkPurchaseOrderAsDelivered(cmd);\n+        }\n+        return createPOMarkedAsDeliveredEvent(cmd);\n+    }\n+\n+    @Assign\n+    PurchaseOrderCanceled handle(CancelPurchaseOrder cmd)\n+            throws CannotCancelDeliveredPurchaseOrder {\n+        if (!isAllowedToCancel()) {\n+            throwCannotCancelDeliveredPurchaseOrder(cmd);\n+        }\n+        return createPOCanceledEvent(cmd);\n+    }\n+\n+    /*\n+     * Event appliers\n+     *****************/\n+\n+    @Apply\n+    private void purchaseOrderCreated(PurchaseOrderCreated event) {\n+        getBuilder().setId(event.getId())\n+                    .addAllOrders(event.getOrdersList())\n+                    .setStatus(CREATED);\n+\n+    }\n+\n+    @Apply\n+    private void purchaseOrderValidationPassed(PurchaseOrderValidationPassed event) {","path":"api-java/src/main/java/javaclasses/mealorder/c/aggregate/PurchaseOrderAggregate.java","position":174,"original_position":174,"commit_id":"e1cb63d9ca0698c1595ab9898f817ec5de29ac7b","original_commit_id":"e1cb63d9ca0698c1595ab9898f817ec5de29ac7b","user":{"login":"codacy-bot","id":19940114,"avatar_url":"https://avatars1.githubusercontent.com/u/19940114?v=4","gravatar_id":"","url":"https://api.github.com/users/codacy-bot","html_url":"https://github.com/codacy-bot","followers_url":"https://api.github.com/users/codacy-bot/followers","following_url":"https://api.github.com/users/codacy-bot/following{/other_user}","gists_url":"https://api.github.com/users/codacy-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/codacy-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codacy-bot/subscriptions","organizations_url":"https://api.github.com/users/codacy-bot/orgs","repos_url":"https://api.github.com/users/codacy-bot/repos","events_url":"https://api.github.com/users/codacy-bot/events{/privacy}","received_events_url":"https://api.github.com/users/codacy-bot/received_events","type":"User","site_admin":false},"body":"![Codacy](https://app.codacy.com/assets/images/favicon.png) Issue found: [Avoid unused private methods such as 'purchaseOrderValidationPassed(PurchaseOrderValidationPassed)'.](https://app.codacy.com/app/Java-Classes/MealOrder/pullRequest?prid=1342999)","created_at":"2018-02-16T13:33:35Z","updated_at":"2018-02-16T13:33:35Z","html_url":"https://github.com/Java-Classes/MealOrder/pull/30#discussion_r168756605","pull_request_url":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/30","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/comments/168756605"},"html":{"href":"https://github.com/Java-Classes/MealOrder/pull/30#discussion_r168756605"},"pull_request":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/30"}}},"pull_request":{"url":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/30","id":169624339,"html_url":"https://github.com/Java-Classes/MealOrder/pull/30","diff_url":"https://github.com/Java-Classes/MealOrder/pull/30.diff","patch_url":"https://github.com/Java-Classes/MealOrder/pull/30.patch","issue_url":"https://api.github.com/repos/Java-Classes/MealOrder/issues/30","number":30,"state":"open","locked":false,"title":"Purchase order aggregate create.","user":{"login":"YegorUdovchenko","id":33632314,"avatar_url":"https://avatars2.githubusercontent.com/u/33632314?v=4","gravatar_id":"","url":"https://api.github.com/users/YegorUdovchenko","html_url":"https://github.com/YegorUdovchenko","followers_url":"https://api.github.com/users/YegorUdovchenko/followers","following_url":"https://api.github.com/users/YegorUdovchenko/following{/other_user}","gists_url":"https://api.github.com/users/YegorUdovchenko/gists{/gist_id}","starred_url":"https://api.github.com/users/YegorUdovchenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/YegorUdovchenko/subscriptions","organizations_url":"https://api.github.com/users/YegorUdovchenko/orgs","repos_url":"https://api.github.com/users/YegorUdovchenko/repos","events_url":"https://api.github.com/users/YegorUdovchenko/events{/privacy}","received_events_url":"https://api.github.com/users/YegorUdovchenko/received_events","type":"User","site_admin":false},"body":"In this PR `PurchaseOrderAggregate`  business logic was processed.\r\n\r\n- Created handlers for purchase order commands.\r\n- Created purchase order event appliers.\r\n- Created `PurchaseOrderValidator` class to perform validation process upon `CreatePurchaseOrder` command handling. Its method `isAllowedPurchaseOrderCreation(CreatePurchaseOrder cmd)` checks incoming command for some options: its orders are with 'ACTIVE' status only, its orders and purchase order dates  are equal, its orders are not empty and its vendors are equal.\r\n- Created `PurchaseOrderValidator` method `findInvalidOrders(List<Order> orders)` to perform validation of each order in the list and return those which considered as invalid. For now it is forbidden to order more than 20 equal dishes in single order to prevent users mistakes.\r\n- Added methods that throw rejections upon command handling.\r\n- All handlers were covered with tests. ","created_at":"2018-02-16T13:29:37Z","updated_at":"2018-02-16T13:33:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":"35b55c7a32d3df18e94a1831621f7771263858d5","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/30/commits","review_comments_url":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/30/comments","review_comment_url":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Java-Classes/MealOrder/issues/30/comments","statuses_url":"https://api.github.com/repos/Java-Classes/MealOrder/statuses/e1cb63d9ca0698c1595ab9898f817ec5de29ac7b","head":{"label":"Java-Classes:purchase_order_aggregate_create","ref":"purchase_order_aggregate_create","sha":"e1cb63d9ca0698c1595ab9898f817ec5de29ac7b","user":{"login":"Java-Classes","id":16760983,"avatar_url":"https://avatars1.githubusercontent.com/u/16760983?v=4","gravatar_id":"","url":"https://api.github.com/users/Java-Classes","html_url":"https://github.com/Java-Classes","followers_url":"https://api.github.com/users/Java-Classes/followers","following_url":"https://api.github.com/users/Java-Classes/following{/other_user}","gists_url":"https://api.github.com/users/Java-Classes/gists{/gist_id}","starred_url":"https://api.github.com/users/Java-Classes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Java-Classes/subscriptions","organizations_url":"https://api.github.com/users/Java-Classes/orgs","repos_url":"https://api.github.com/users/Java-Classes/repos","events_url":"https://api.github.com/users/Java-Classes/events{/privacy}","received_events_url":"https://api.github.com/users/Java-Classes/received_events","type":"Organization","site_admin":false},"repo":{"id":119825655,"name":"MealOrder","full_name":"Java-Classes/MealOrder","owner":{"login":"Java-Classes","id":16760983,"avatar_url":"https://avatars1.githubusercontent.com/u/16760983?v=4","gravatar_id":"","url":"https://api.github.com/users/Java-Classes","html_url":"https://github.com/Java-Classes","followers_url":"https://api.github.com/users/Java-Classes/followers","following_url":"https://api.github.com/users/Java-Classes/following{/other_user}","gists_url":"https://api.github.com/users/Java-Classes/gists{/gist_id}","starred_url":"https://api.github.com/users/Java-Classes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Java-Classes/subscriptions","organizations_url":"https://api.github.com/users/Java-Classes/orgs","repos_url":"https://api.github.com/users/Java-Classes/repos","events_url":"https://api.github.com/users/Java-Classes/events{/privacy}","received_events_url":"https://api.github.com/users/Java-Classes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Java-Classes/MealOrder","description":"The MealOrder application.","fork":false,"url":"https://api.github.com/repos/Java-Classes/MealOrder","forks_url":"https://api.github.com/repos/Java-Classes/MealOrder/forks","keys_url":"https://api.github.com/repos/Java-Classes/MealOrder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Java-Classes/MealOrder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Java-Classes/MealOrder/teams","hooks_url":"https://api.github.com/repos/Java-Classes/MealOrder/hooks","issue_events_url":"https://api.github.com/repos/Java-Classes/MealOrder/issues/events{/number}","events_url":"https://api.github.com/repos/Java-Classes/MealOrder/events","assignees_url":"https://api.github.com/repos/Java-Classes/MealOrder/assignees{/user}","branches_url":"https://api.github.com/repos/Java-Classes/MealOrder/branches{/branch}","tags_url":"https://api.github.com/repos/Java-Classes/MealOrder/tags","blobs_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/refs{/sha}","trees_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Java-Classes/MealOrder/statuses/{sha}","languages_url":"https://api.github.com/repos/Java-Classes/MealOrder/languages","stargazers_url":"https://api.github.com/repos/Java-Classes/MealOrder/stargazers","contributors_url":"https://api.github.com/repos/Java-Classes/MealOrder/contributors","subscribers_url":"https://api.github.com/repos/Java-Classes/MealOrder/subscribers","subscription_url":"https://api.github.com/repos/Java-Classes/MealOrder/subscription","commits_url":"https://api.github.com/repos/Java-Classes/MealOrder/commits{/sha}","git_commits_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/commits{/sha}","comments_url":"https://api.github.com/repos/Java-Classes/MealOrder/comments{/number}","issue_comment_url":"https://api.github.com/repos/Java-Classes/MealOrder/issues/comments{/number}","contents_url":"https://api.github.com/repos/Java-Classes/MealOrder/contents/{+path}","compare_url":"https://api.github.com/repos/Java-Classes/MealOrder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Java-Classes/MealOrder/merges","archive_url":"https://api.github.com/repos/Java-Classes/MealOrder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Java-Classes/MealOrder/downloads","issues_url":"https://api.github.com/repos/Java-Classes/MealOrder/issues{/number}","pulls_url":"https://api.github.com/repos/Java-Classes/MealOrder/pulls{/number}","milestones_url":"https://api.github.com/repos/Java-Classes/MealOrder/milestones{/number}","notifications_url":"https://api.github.com/repos/Java-Classes/MealOrder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Java-Classes/MealOrder/labels{/name}","releases_url":"https://api.github.com/repos/Java-Classes/MealOrder/releases{/id}","deployments_url":"https://api.github.com/repos/Java-Classes/MealOrder/deployments","created_at":"2018-02-01T11:18:13Z","updated_at":"2018-02-09T13:03:29Z","pushed_at":"2018-02-16T13:29:38Z","git_url":"git://github.com/Java-Classes/MealOrder.git","ssh_url":"git@github.com:Java-Classes/MealOrder.git","clone_url":"https://github.com/Java-Classes/MealOrder.git","svn_url":"https://github.com/Java-Classes/MealOrder","homepage":null,"size":4885,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":3,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":3,"watchers":0,"default_branch":"master"}},"base":{"label":"Java-Classes:master","ref":"master","sha":"19cd3499bbe45ca754fa2909eebd3c3f1faefc8e","user":{"login":"Java-Classes","id":16760983,"avatar_url":"https://avatars1.githubusercontent.com/u/16760983?v=4","gravatar_id":"","url":"https://api.github.com/users/Java-Classes","html_url":"https://github.com/Java-Classes","followers_url":"https://api.github.com/users/Java-Classes/followers","following_url":"https://api.github.com/users/Java-Classes/following{/other_user}","gists_url":"https://api.github.com/users/Java-Classes/gists{/gist_id}","starred_url":"https://api.github.com/users/Java-Classes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Java-Classes/subscriptions","organizations_url":"https://api.github.com/users/Java-Classes/orgs","repos_url":"https://api.github.com/users/Java-Classes/repos","events_url":"https://api.github.com/users/Java-Classes/events{/privacy}","received_events_url":"https://api.github.com/users/Java-Classes/received_events","type":"Organization","site_admin":false},"repo":{"id":119825655,"name":"MealOrder","full_name":"Java-Classes/MealOrder","owner":{"login":"Java-Classes","id":16760983,"avatar_url":"https://avatars1.githubusercontent.com/u/16760983?v=4","gravatar_id":"","url":"https://api.github.com/users/Java-Classes","html_url":"https://github.com/Java-Classes","followers_url":"https://api.github.com/users/Java-Classes/followers","following_url":"https://api.github.com/users/Java-Classes/following{/other_user}","gists_url":"https://api.github.com/users/Java-Classes/gists{/gist_id}","starred_url":"https://api.github.com/users/Java-Classes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Java-Classes/subscriptions","organizations_url":"https://api.github.com/users/Java-Classes/orgs","repos_url":"https://api.github.com/users/Java-Classes/repos","events_url":"https://api.github.com/users/Java-Classes/events{/privacy}","received_events_url":"https://api.github.com/users/Java-Classes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Java-Classes/MealOrder","description":"The MealOrder application.","fork":false,"url":"https://api.github.com/repos/Java-Classes/MealOrder","forks_url":"https://api.github.com/repos/Java-Classes/MealOrder/forks","keys_url":"https://api.github.com/repos/Java-Classes/MealOrder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Java-Classes/MealOrder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Java-Classes/MealOrder/teams","hooks_url":"https://api.github.com/repos/Java-Classes/MealOrder/hooks","issue_events_url":"https://api.github.com/repos/Java-Classes/MealOrder/issues/events{/number}","events_url":"https://api.github.com/repos/Java-Classes/MealOrder/events","assignees_url":"https://api.github.com/repos/Java-Classes/MealOrder/assignees{/user}","branches_url":"https://api.github.com/repos/Java-Classes/MealOrder/branches{/branch}","tags_url":"https://api.github.com/repos/Java-Classes/MealOrder/tags","blobs_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/refs{/sha}","trees_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Java-Classes/MealOrder/statuses/{sha}","languages_url":"https://api.github.com/repos/Java-Classes/MealOrder/languages","stargazers_url":"https://api.github.com/repos/Java-Classes/MealOrder/stargazers","contributors_url":"https://api.github.com/repos/Java-Classes/MealOrder/contributors","subscribers_url":"https://api.github.com/repos/Java-Classes/MealOrder/subscribers","subscription_url":"https://api.github.com/repos/Java-Classes/MealOrder/subscription","commits_url":"https://api.github.com/repos/Java-Classes/MealOrder/commits{/sha}","git_commits_url":"https://api.github.com/repos/Java-Classes/MealOrder/git/commits{/sha}","comments_url":"https://api.github.com/repos/Java-Classes/MealOrder/comments{/number}","issue_comment_url":"https://api.github.com/repos/Java-Classes/MealOrder/issues/comments{/number}","contents_url":"https://api.github.com/repos/Java-Classes/MealOrder/contents/{+path}","compare_url":"https://api.github.com/repos/Java-Classes/MealOrder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Java-Classes/MealOrder/merges","archive_url":"https://api.github.com/repos/Java-Classes/MealOrder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Java-Classes/MealOrder/downloads","issues_url":"https://api.github.com/repos/Java-Classes/MealOrder/issues{/number}","pulls_url":"https://api.github.com/repos/Java-Classes/MealOrder/pulls{/number}","milestones_url":"https://api.github.com/repos/Java-Classes/MealOrder/milestones{/number}","notifications_url":"https://api.github.com/repos/Java-Classes/MealOrder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Java-Classes/MealOrder/labels{/name}","releases_url":"https://api.github.com/repos/Java-Classes/MealOrder/releases{/id}","deployments_url":"https://api.github.com/repos/Java-Classes/MealOrder/deployments","created_at":"2018-02-01T11:18:13Z","updated_at":"2018-02-09T13:03:29Z","pushed_at":"2018-02-16T13:29:38Z","git_url":"git://github.com/Java-Classes/MealOrder.git","ssh_url":"git@github.com:Java-Classes/MealOrder.git","clone_url":"https://github.com/Java-Classes/MealOrder.git","svn_url":"https://github.com/Java-Classes/MealOrder","homepage":null,"size":4885,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":3,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":3,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/30"},"html":{"href":"https://github.com/Java-Classes/MealOrder/pull/30"},"issue":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/issues/30"},"comments":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/issues/30/comments"},"review_comments":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/30/comments"},"review_comment":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/pulls/30/commits"},"statuses":{"href":"https://api.github.com/repos/Java-Classes/MealOrder/statuses/e1cb63d9ca0698c1595ab9898f817ec5de29ac7b"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"codacy-bot"}}