{"action":"created","comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/comments/213550310","pull_request_review_id":150408418,"id":213550310,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxMzU1MDMxMA==","diff_hunk":"@@ -1915,6 +1917,152 @@ public void testListBucketDefaultKmsKeyName() throws ExecutionException, Interru\n     }\n   }\n \n+  @Test\n+  public void testRetentionPolicyNoLock() throws ExecutionException, InterruptedException {\n+    String bucketName = RemoteStorageHelper.generateBucketName();\n+    Bucket remoteBucket = storage.create(BucketInfo.newBuilder(bucketName)\n+        .setRetentionPeriod(RETENTION_PERIOD).build());\n+    try {\n+      assertEquals(RETENTION_PERIOD, remoteBucket.getRetentionPeriod());\n+      assertNotNull(remoteBucket.getRetentionEffectiveTime());\n+      assertNull(remoteBucket.retentionPolicyIsLocked());\n+      remoteBucket = storage.get(bucketName, Storage.BucketGetOption.fields(BucketField.RETENTION_POLICY));\n+      assertEquals(RETENTION_PERIOD, remoteBucket.getRetentionPeriod());\n+      assertNotNull(remoteBucket.getRetentionEffectiveTime());\n+      assertNull(remoteBucket.retentionPolicyIsLocked());\n+      String blobName = \"test-create-with-retention-policy-hold\";\n+      BlobInfo blobInfo = BlobInfo.newBuilder(bucketName, blobName).build();\n+      Blob remoteBlob = storage.create(blobInfo);\n+      assertNotNull(remoteBlob.getRetentionExpirationTime());\n+      remoteBucket = remoteBucket.toBuilder().setRetentionPeriod(null).build().update();\n+      assertNull(remoteBucket.getRetentionPeriod());\n+    } finally {\n+      RemoteStorageHelper.forceDelete(storage, bucketName, 5, TimeUnit.SECONDS);\n+    }\n+  }\n+\n+  @Test\n+  public void testRetentionPolicyLock() throws ExecutionException, InterruptedException {\n+    retentionPolicyLockRequesterPays(true);\n+    retentionPolicyLockRequesterPays(false);\n+  }\n+\n+  private void retentionPolicyLockRequesterPays(boolean requesterPays) throws ExecutionException, InterruptedException {\n+    String projectId = remoteStorageHelper.getOptions().getProjectId();\n+    String bucketName = RemoteStorageHelper.generateBucketName();\n+    BucketInfo bucketInfo;\n+    if (requesterPays) {\n+      bucketInfo = BucketInfo.newBuilder(bucketName).setRetentionPeriod(RETENTION_PERIOD)\n+          .setRequesterPays(true).build();\n+    } else {\n+      bucketInfo = BucketInfo.newBuilder(bucketName).setRetentionPeriod(RETENTION_PERIOD).build();\n+    }\n+    Bucket remoteBucket = storage.create(bucketInfo);\n+    try {\n+      assertFalse(remoteBucket.retentionPolicyIsLocked());\n+      assertNotNull(remoteBucket.getRetentionEffectiveTime());\n+      assertNotNull(remoteBucket.getMetageneration());\n+      if (requesterPays) {\n+        remoteBucket = storage.lockRetentionPolicy(remoteBucket, Storage.BucketTargetOption.metagenerationMatch(),\n+            Storage.BucketTargetOption.userProject(projectId));\n+      } else {\n+        remoteBucket = storage.lockRetentionPolicy(remoteBucket, Storage.BucketTargetOption.metagenerationMatch());\n+      }\n+      assertTrue(remoteBucket.retentionPolicyIsLocked());\n+      assertNotNull(remoteBucket.getRetentionEffectiveTime());\n+    } finally {\n+      RemoteStorageHelper.forceDelete(storage, bucketName, 5, TimeUnit.SECONDS);\n+    }\n+  }\n+\n+  @Test\n+  public void testAttemptObjectDeleteWithRetentionPolicy() throws ExecutionException, InterruptedException {\n+    String bucketName = RemoteStorageHelper.generateBucketName();\n+    Bucket remoteBucket = storage.create(BucketInfo.newBuilder(bucketName)\n+        .setRetentionPeriod(RETENTION_PERIOD).build());\n+    assertEquals(RETENTION_PERIOD, remoteBucket.getRetentionPeriod());\n+    String blobName = \"test-create-with-retention-policy\";\n+    BlobInfo blobInfo = BlobInfo.newBuilder(bucketName, blobName).build();\n+    Blob remoteBlob = storage.create(blobInfo);\n+    assertNotNull(remoteBlob.getRetentionExpirationTime());\n+    try {\n+      remoteBlob.delete();\n+      fail(\"Expected failure on delete from retentionPolicy\");\n+    } catch (StorageException ex) {\n+      // expected\n+    } finally {\n+      Thread.sleep(RETENTION_PERIOD_IN_MILLISECONDS);\n+      RemoteStorageHelper.forceDelete(storage, bucketName, 5, TimeUnit.SECONDS);\n+    }\n+  }\n+\n+  @Test\n+  public void testEnableDisableBucketDefaultEventBasedHold() throws ExecutionException, InterruptedException {\n+    String bucketName = RemoteStorageHelper.generateBucketName();\n+    Bucket remoteBucket = storage.create(BucketInfo.newBuilder(bucketName).setDefaultEventBasedHold(true).build());\n+    try {\n+      assertTrue(remoteBucket.getDefaultEventBasedHold());\n+      remoteBucket = storage.get(bucketName, Storage.BucketGetOption.fields(BucketField.DEFAULT_EVENT_BASED_HOLD));\n+      assertTrue(remoteBucket.getDefaultEventBasedHold());\n+      String blobName = \"test-create-with-event-based-hold\";\n+      BlobInfo blobInfo = BlobInfo.newBuilder(bucketName, blobName).build();\n+      Blob remoteBlob = storage.create(blobInfo);\n+      assertTrue(remoteBlob.getEventBasedHold());\n+      remoteBlob = storage.get(blobInfo.getBlobId(), Storage.BlobGetOption.fields(BlobField.EVENT_BASED_HOLD));\n+      assertTrue(remoteBlob.getEventBasedHold());\n+      remoteBlob = remoteBlob.toBuilder().setEventBasedHold(false).build().update();\n+      assertFalse(remoteBlob.getEventBasedHold());\n+      remoteBucket = remoteBucket.toBuilder().setDefaultEventBasedHold(false).build().update();\n+      assertFalse(remoteBucket.getDefaultEventBasedHold());\n+    } finally {\n+      RemoteStorageHelper.forceDelete(storage, bucketName, 5, TimeUnit.SECONDS);\n+    }\n+  }\n+\n+  @Test\n+  public void testEnableDisableTemporaryHold() {\n+    String blobName = \"test-create-with-temporary-hold\";\n+    BlobInfo blobInfo = BlobInfo.newBuilder(BUCKET, blobName).setTemporaryHold(true).build();\n+    Blob remoteBlob = storage.create(blobInfo);\n+    assertTrue(remoteBlob.getTemporaryHold());\n+    remoteBlob = storage.get(remoteBlob.getBlobId(), Storage.BlobGetOption.fields(BlobField.TEMPORARY_HOLD));\n+    assertTrue(remoteBlob.getTemporaryHold());\n+    remoteBlob = remoteBlob.toBuilder().setTemporaryHold(false).build().update();\n+    assertFalse(remoteBlob.getTemporaryHold());\n+  }\n+\n+  @Test\n+  public void testAttemptObjectDeleteWithEventBasedHold() {\n+    String blobName = \"test-create-with-event-based-hold\";\n+    BlobInfo blobInfo = BlobInfo.newBuilder(BUCKET, blobName).setEventBasedHold(true).build();\n+    Blob remoteBlob = storage.create(blobInfo);\n+    assertTrue(remoteBlob.getEventBasedHold());\n+    try {\n+      remoteBlob.delete();\n+      fail(\"Expected failure on delete from eventBasedHold\");\n+    } catch (StorageException ex) {\n+      // expected\n+    } finally {\n+      remoteBlob.toBuilder().setEventBasedHold(false).build().update();\n+    }\n+  }\n+\n+  @Test\n+  public void testAttemptDeletionObjectTemporaryHold() {\n+    String blobName = \"test-create-with-temporary-hold\";\n+    BlobInfo blobInfo = BlobInfo.newBuilder(BUCKET, blobName).setTemporaryHold(true).build();\n+    Blob remoteBlob = storage.create(blobInfo);\n+    assertTrue(remoteBlob.getTemporaryHold());\n+    try {\n+      remoteBlob.delete();\n+      fail(\"Expected failure on delete from temporaryHold\");","path":"google-cloud-clients/google-cloud-storage/src/test/java/com/google/cloud/storage/it/ITStorageTest.java","position":151,"original_position":151,"commit_id":"ced985df5ed94712aa775ea3068fec078f23d202","original_commit_id":"ced985df5ed94712aa775ea3068fec078f23d202","user":{"login":"codacy-bot","id":19940114,"node_id":"MDQ6VXNlcjE5OTQwMTE0","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: [In JUnit4, use the @Test(expected) annotation to denote tests that should throw exceptions](https://app.codacy.com/app/mziccard/google-cloud-java/pullRequest?prid=2059255)","created_at":"2018-08-29T05:42:05Z","updated_at":"2018-08-29T05:42:06Z","html_url":"https://github.com/GoogleCloudPlatform/google-cloud-java/pull/3574#discussion_r213550310","pull_request_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/3574","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/comments/213550310"},"html":{"href":"https://github.com/GoogleCloudPlatform/google-cloud-java/pull/3574#discussion_r213550310"},"pull_request":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/3574"}}},"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/3574","id":209168321,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA5MTY4MzIx","html_url":"https://github.com/GoogleCloudPlatform/google-cloud-java/pull/3574","diff_url":"https://github.com/GoogleCloudPlatform/google-cloud-java/pull/3574.diff","patch_url":"https://github.com/GoogleCloudPlatform/google-cloud-java/pull/3574.patch","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/3574","number":3574,"state":"open","locked":false,"title":"[Storage] Bucket lock","user":{"login":"frankyn","id":1907648,"node_id":"MDQ6VXNlcjE5MDc2NDg=","avatar_url":"https://avatars1.githubusercontent.com/u/1907648?v=4","gravatar_id":"","url":"https://api.github.com/users/frankyn","html_url":"https://github.com/frankyn","followers_url":"https://api.github.com/users/frankyn/followers","following_url":"https://api.github.com/users/frankyn/following{/other_user}","gists_url":"https://api.github.com/users/frankyn/gists{/gist_id}","starred_url":"https://api.github.com/users/frankyn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frankyn/subscriptions","organizations_url":"https://api.github.com/users/frankyn/orgs","repos_url":"https://api.github.com/users/frankyn/repos","events_url":"https://api.github.com/users/frankyn/events{/privacy}","received_events_url":"https://api.github.com/users/frankyn/received_events","type":"User","site_admin":false},"body":"Hi,\r\n\r\nImplementation for Bucket Lock with some clean up on other features (requester pays and CMEK)\r\n([high-level design information on feature](https://docs.google.com/document/d/1qxJN7Hhoef7oQ7FOvjaLVb-lDjYQMacYjPy75IwfP7E/edit#))\r\n### Bucket Level\r\n\r\n**defaultEventBasedHold**\r\n- [x] unit tests \r\n- [x] integration tests \r\n\r\n**retentionPolicy**\r\n- [x] unit tests\r\n- [x] integration tests\r\n\r\n**lockRetentionPolicy** (_new RPC_)\r\n- [x] unit tests\r\n- [x] integration tests\r\n- [x] FakeRPC (google-cloud-contrib)\r\n### Object Level\r\n\r\n**eventBasedHold**\r\n- [x] unit tests\r\n- [x] integration tests\r\n\r\n**temporaryHold**\r\n- [x] unit tests\r\n- [x] integration tests","created_at":"2018-08-17T14:38:19Z","updated_at":"2018-08-29T05:42:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9c80f6a144adf6855ad27529d23008a3950a0dcb","assignee":null,"assignees":[],"requested_reviewers":[{"login":"andreamlin","id":4016818,"node_id":"MDQ6VXNlcjQwMTY4MTg=","avatar_url":"https://avatars2.githubusercontent.com/u/4016818?v=4","gravatar_id":"","url":"https://api.github.com/users/andreamlin","html_url":"https://github.com/andreamlin","followers_url":"https://api.github.com/users/andreamlin/followers","following_url":"https://api.github.com/users/andreamlin/following{/other_user}","gists_url":"https://api.github.com/users/andreamlin/gists{/gist_id}","starred_url":"https://api.github.com/users/andreamlin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andreamlin/subscriptions","organizations_url":"https://api.github.com/users/andreamlin/orgs","repos_url":"https://api.github.com/users/andreamlin/repos","events_url":"https://api.github.com/users/andreamlin/events{/privacy}","received_events_url":"https://api.github.com/users/andreamlin/received_events","type":"User","site_admin":false},{"login":"garrettjonesgoogle","id":13341017,"node_id":"MDQ6VXNlcjEzMzQxMDE3","avatar_url":"https://avatars2.githubusercontent.com/u/13341017?v=4","gravatar_id":"","url":"https://api.github.com/users/garrettjonesgoogle","html_url":"https://github.com/garrettjonesgoogle","followers_url":"https://api.github.com/users/garrettjonesgoogle/followers","following_url":"https://api.github.com/users/garrettjonesgoogle/following{/other_user}","gists_url":"https://api.github.com/users/garrettjonesgoogle/gists{/gist_id}","starred_url":"https://api.github.com/users/garrettjonesgoogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/garrettjonesgoogle/subscriptions","organizations_url":"https://api.github.com/users/garrettjonesgoogle/orgs","repos_url":"https://api.github.com/users/garrettjonesgoogle/repos","events_url":"https://api.github.com/users/garrettjonesgoogle/events{/privacy}","received_events_url":"https://api.github.com/users/garrettjonesgoogle/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":175662188,"node_id":"MDU6TGFiZWwxNzU2NjIxODg=","url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/labels/cla:%20yes","name":"cla: yes","color":"c2e0c6","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/3574/commits","review_comments_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/3574/comments","review_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/3574/comments","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/statuses/ced985df5ed94712aa775ea3068fec078f23d202","head":{"label":"GoogleCloudPlatform:gcs-bucket-lock","ref":"gcs-bucket-lock","sha":"ced985df5ed94712aa775ea3068fec078f23d202","user":{"login":"GoogleCloudPlatform","id":2810941,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4MTA5NDE=","avatar_url":"https://avatars0.githubusercontent.com/u/2810941?v=4","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":26181278,"node_id":"MDEwOlJlcG9zaXRvcnkyNjE4MTI3OA==","name":"google-cloud-java","full_name":"GoogleCloudPlatform/google-cloud-java","owner":{"login":"GoogleCloudPlatform","id":2810941,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4MTA5NDE=","avatar_url":"https://avatars0.githubusercontent.com/u/2810941?v=4","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GoogleCloudPlatform/google-cloud-java","description":"Google Cloud Client Library for Java","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/releases{/id}","deployments_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/deployments","created_at":"2014-11-04T17:57:16Z","updated_at":"2018-08-29T03:21:14Z","pushed_at":"2018-08-29T05:32:27Z","git_url":"git://github.com/GoogleCloudPlatform/google-cloud-java.git","ssh_url":"git@github.com:GoogleCloudPlatform/google-cloud-java.git","clone_url":"https://github.com/GoogleCloudPlatform/google-cloud-java.git","svn_url":"https://github.com/GoogleCloudPlatform/google-cloud-java","homepage":"https://googlecloudplatform.github.io/google-cloud-java/","size":299800,"stargazers_count":764,"watchers_count":764,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":520,"mirror_url":null,"archived":false,"open_issues_count":183,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":520,"open_issues":183,"watchers":764,"default_branch":"master"}},"base":{"label":"GoogleCloudPlatform:master","ref":"master","sha":"4eca7a426cbeffdfb95546bd5d2fcbdfcb0e4658","user":{"login":"GoogleCloudPlatform","id":2810941,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4MTA5NDE=","avatar_url":"https://avatars0.githubusercontent.com/u/2810941?v=4","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":26181278,"node_id":"MDEwOlJlcG9zaXRvcnkyNjE4MTI3OA==","name":"google-cloud-java","full_name":"GoogleCloudPlatform/google-cloud-java","owner":{"login":"GoogleCloudPlatform","id":2810941,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI4MTA5NDE=","avatar_url":"https://avatars0.githubusercontent.com/u/2810941?v=4","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GoogleCloudPlatform/google-cloud-java","description":"Google Cloud Client Library for Java","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/releases{/id}","deployments_url":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/deployments","created_at":"2014-11-04T17:57:16Z","updated_at":"2018-08-29T03:21:14Z","pushed_at":"2018-08-29T05:32:27Z","git_url":"git://github.com/GoogleCloudPlatform/google-cloud-java.git","ssh_url":"git@github.com:GoogleCloudPlatform/google-cloud-java.git","clone_url":"https://github.com/GoogleCloudPlatform/google-cloud-java.git","svn_url":"https://github.com/GoogleCloudPlatform/google-cloud-java","homepage":"https://googlecloudplatform.github.io/google-cloud-java/","size":299800,"stargazers_count":764,"watchers_count":764,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":520,"mirror_url":null,"archived":false,"open_issues_count":183,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":520,"open_issues":183,"watchers":764,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/3574"},"html":{"href":"https://github.com/GoogleCloudPlatform/google-cloud-java/pull/3574"},"issue":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/3574"},"comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/issues/3574/comments"},"review_comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/3574/comments"},"review_comment":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/pulls/3574/commits"},"statuses":{"href":"https://api.github.com/repos/GoogleCloudPlatform/google-cloud-java/statuses/ced985df5ed94712aa775ea3068fec078f23d202"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"codacy-bot"}}