{"action":"created","comment":{"url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/comments/223401362","pull_request_review_id":162519288,"id":223401362,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMzQwMTM2Mg==","diff_hunk":"@@ -0,0 +1,263 @@\n+/*\n+ * SonarLint for Eclipse\n+ * Copyright (C) 2015-2018 SonarSource SA\n+ * sonarlint@sonarsource.com\n+ *\n+ * This program is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU Lesser General Public\n+ * License as published by the Free Software Foundation; either\n+ * version 3 of the License, or (at your option) any later version.\n+ *\n+ * This program is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+ * Lesser General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU Lesser General Public License\n+ * along with this program; if not, write to the Free Software Foundation,\n+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n+ */\n+package org.sonarlint.eclipse.ui.internal.bind.wizard;\n+\n+import java.lang.reflect.InvocationTargetException;\n+import java.util.ArrayList;\n+import java.util.Collection;\n+import java.util.Objects;\n+import java.util.Optional;\n+import java.util.Set;\n+import java.util.stream.Collectors;\n+import javax.annotation.Nullable;\n+import org.eclipse.core.runtime.IProgressMonitor;\n+import org.eclipse.jface.dialogs.IMessageProvider;\n+import org.eclipse.jface.dialogs.IPageChangingListener;\n+import org.eclipse.jface.dialogs.PageChangingEvent;\n+import org.eclipse.jface.operation.IRunnableWithProgress;\n+import org.eclipse.jface.viewers.IStructuredSelection;\n+import org.eclipse.jface.wizard.IWizardPage;\n+import org.eclipse.jface.wizard.WizardDialog;\n+import org.eclipse.jface.wizard.WizardPage;\n+import org.eclipse.swt.widgets.Shell;\n+import org.eclipse.ui.INewWizard;\n+import org.eclipse.ui.IWorkbench;\n+import org.sonarlint.eclipse.core.SonarLintLogger;\n+import org.sonarlint.eclipse.core.internal.SonarLintCorePlugin;\n+import org.sonarlint.eclipse.core.internal.TriggerType;\n+import org.sonarlint.eclipse.core.internal.jobs.ProjectStorageUpdateJob;\n+import org.sonarlint.eclipse.core.internal.resources.SonarLintProjectConfiguration;\n+import org.sonarlint.eclipse.core.internal.resources.SonarLintProjectConfiguration.EclipseProjectBinding;\n+import org.sonarlint.eclipse.core.internal.server.IServer;\n+import org.sonarlint.eclipse.core.internal.server.Server;\n+import org.sonarlint.eclipse.core.resource.ISonarLintProject;\n+import org.sonarlint.eclipse.ui.internal.SonarLintUiPlugin;\n+import org.sonarlint.eclipse.ui.internal.server.actions.JobUtils;\n+import org.sonarlint.eclipse.ui.internal.server.wizard.ServerConnectionWizard;\n+import org.sonarlint.eclipse.ui.internal.util.wizard.ParentAwareWizard;\n+import org.sonarlint.eclipse.ui.internal.util.wizard.WizardDialogWithoutHelp;\n+\n+import static java.util.Comparator.comparing;\n+import static java.util.stream.Collectors.toCollection;\n+\n+public class ProjectBindingWizard extends ParentAwareWizard implements INewWizard, IPageChangingListener {\n+\n+  private final ProjectBindingModel model;\n+  private final ServerSelectionWizardPage serverSelectionWizardPage;\n+  private final RemoteProjectSelectionWizardPage remoteProjectSelectionWizardPage;\n+  private final ProjectsSelectionWizardPage projectsSelectionWizardPage;\n+\n+  private ProjectBindingWizard(String title, ProjectBindingModel model) {\n+    super();\n+    this.model = model;\n+    setNeedsProgressMonitor(true);\n+    setWindowTitle(title);\n+    setHelpAvailable(false);\n+    projectsSelectionWizardPage = new ProjectsSelectionWizardPage(model);\n+    serverSelectionWizardPage = new ServerSelectionWizardPage(model);\n+    remoteProjectSelectionWizardPage = new RemoteProjectSelectionWizardPage(model);\n+  }\n+\n+  private ProjectBindingWizard(Collection<ISonarLintProject> selectedProjects, @Nullable Server selectedServer) {\n+    this(\"Bind to a SonarQube or SonarCloud project\", new ProjectBindingModel());\n+    this.model.setProjects(selectedProjects.stream()\n+      .sorted(comparing(ISonarLintProject::getName))\n+      .collect(toCollection(ArrayList::new)));\n+    if (selectedServer != null) {\n+      this.model.setServer(selectedServer);\n+    } else if (SonarLintCorePlugin.getServersManager().getServers().size() == 1) {\n+      // Only one server configured, pre-select it\n+      this.model.setServer((Server) SonarLintCorePlugin.getServersManager().getServers().get(0));\n+    } else {\n+      Set<IServer> servers = selectedProjects.stream()\n+        .map(p -> SonarLintCorePlugin.getServersManager().forProject(p))\n+        .filter(Optional<IServer>::isPresent)\n+        .map(Optional<IServer>::get)\n+        .collect(Collectors.toSet());\n+      if (servers.size() == 1) {\n+        // All projects are already bound to the same server, pre-select it\n+        this.model.setServer((Server) servers.iterator().next());\n+      }\n+    }\n+    Set<String> projectKeys = selectedProjects.stream()\n+      .map(SonarLintCorePlugin::loadConfig)\n+      .map(SonarLintProjectConfiguration::getProjectBinding)\n+      .filter(Optional<EclipseProjectBinding>::isPresent)\n+      .map(Optional<EclipseProjectBinding>::get)\n+      .map(EclipseProjectBinding::projectKey)\n+      .collect(Collectors.toSet());\n+    if (projectKeys.size() == 1) {\n+      // If all projects are bound to the same remote project, then use it as default\n+      model.setRemoteProjectKey(projectKeys.iterator().next());\n+    }\n+  }\n+\n+  public static WizardDialog createDialog(Shell activeShell, Collection<ISonarLintProject> selectedProjects, Server selectedServer) {\n+    return new WizardDialogWithoutHelp(activeShell, new ProjectBindingWizard(selectedProjects, selectedServer));\n+  }\n+\n+  public static WizardDialog createDialog(Shell activeShell, Collection<ISonarLintProject> selectedProjects) {\n+    if (SonarLintCorePlugin.getServersManager().getServers().isEmpty()) {\n+      return ServerConnectionWizard.createDialog(activeShell);\n+    }\n+    return new WizardDialogWithoutHelp(activeShell, new ProjectBindingWizard(selectedProjects, null));\n+  }\n+\n+  @Override\n+  public void init(IWorkbench workbench, IStructuredSelection selection) {\n+    // Nothing to do\n+  }\n+\n+  @Override\n+  public IWizardPage getStartingPage() {\n+    if (model.getEclipseProjects().isEmpty()) {\n+      return projectsSelectionWizardPage;\n+    }\n+    return serverSelectionWizardPage;\n+  }\n+\n+  @Override\n+  public void addPages() {\n+    addPage(projectsSelectionWizardPage);\n+    addPage(serverSelectionWizardPage);\n+    addPage(remoteProjectSelectionWizardPage);\n+  }\n+\n+  @Override\n+  public IWizardPage getNextPage(IWizardPage page) {\n+    if (page == projectsSelectionWizardPage) {\n+      return serverSelectionWizardPage;\n+    }\n+    if (page == serverSelectionWizardPage) {\n+      return remoteProjectSelectionWizardPage;\n+    }\n+    return null;\n+  }\n+\n+  @Override\n+  public IWizardPage getPreviousPage(IWizardPage page) {\n+    // This method is only used for the first page of a wizard,\n+    // because every following page remember the previous one on its own\n+    if (page == serverSelectionWizardPage) {\n+      return projectsSelectionWizardPage;\n+    }\n+    return null;\n+  }\n+\n+  @Override\n+  public boolean canFinish() {\n+    IWizardPage currentPage = getContainer().getCurrentPage();\n+    return currentPage == remoteProjectSelectionWizardPage && super.canFinish();\n+  }\n+\n+  @Override\n+  public boolean performFinish() {\n+    String serverId = model.getServer().getId();","path":"org.sonarlint.eclipse.ui/src/org/sonarlint/eclipse/ui/internal/bind/wizard/ProjectBindingWizard.java","position":172,"original_position":172,"commit_id":"a5e3016fdcbfc161f1d2fe636a6fe5ba43d9fe7b","original_commit_id":"a5e3016fdcbfc161f1d2fe636a6fe5ba43d9fe7b","user":{"login":"sonarsource-next[bot]","id":39046940,"node_id":"MDM6Qm90MzkwNDY5NDA=","avatar_url":"https://avatars1.githubusercontent.com/in/11855?v=4","gravatar_id":"","url":"https://api.github.com/users/sonarsource-next%5Bbot%5D","html_url":"https://github.com/apps/sonarsource-next","followers_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/followers","following_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/repos","events_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/sonarsource-next%5Bbot%5D/received_events","type":"Bot","site_admin":false},"body":"![Bug](https://sonarsource.github.io/sonar-github/bug.png 'Bug') Bug: A \"NullPointerException\" could be thrown; \"getServer()\" can return null. ([squid:S2259](https://next.sonarqube.com/sonarqube/coding_rules#rule_key=squid%3AS2259))\n\n[See it in SonarQube](https://next.sonarqube.com/sonarqube/project/issues?id=org.sonarsource.sonarlint.eclipse%3Asonarlint-eclipse-parent&pullRequest=168&issues=AWYvGP7GtyuBvWg8J39k&open=AWYvGP7GtyuBvWg8J39k)\n\n[ISSUE_KEY]: AWYvGP7GtyuBvWg8J39k","created_at":"2018-10-08T15:15:23Z","updated_at":"2018-10-08T15:15:26Z","html_url":"https://github.com/SonarSource/sonarlint-eclipse/pull/168#discussion_r223401362","pull_request_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/168","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/comments/223401362"},"html":{"href":"https://github.com/SonarSource/sonarlint-eclipse/pull/168#discussion_r223401362"},"pull_request":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/168"}}},"pull_request":{"url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/168","id":217900709,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE3OTAwNzA5","html_url":"https://github.com/SonarSource/sonarlint-eclipse/pull/168","diff_url":"https://github.com/SonarSource/sonarlint-eclipse/pull/168.diff","patch_url":"https://github.com/SonarSource/sonarlint-eclipse/pull/168.patch","issue_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues/168","number":168,"state":"open","locked":false,"title":"Drop modules + hardening","user":{"login":"henryju","id":281596,"node_id":"MDQ6VXNlcjI4MTU5Ng==","avatar_url":"https://avatars3.githubusercontent.com/u/281596?v=4","gravatar_id":"","url":"https://api.github.com/users/henryju","html_url":"https://github.com/henryju","followers_url":"https://api.github.com/users/henryju/followers","following_url":"https://api.github.com/users/henryju/following{/other_user}","gists_url":"https://api.github.com/users/henryju/gists{/gist_id}","starred_url":"https://api.github.com/users/henryju/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/henryju/subscriptions","organizations_url":"https://api.github.com/users/henryju/orgs","repos_url":"https://api.github.com/users/henryju/repos","events_url":"https://api.github.com/users/henryju/events{/privacy}","received_events_url":"https://api.github.com/users/henryju/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-09-25T08:50:54Z","updated_at":"2018-10-08T15:15:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b5255138257089198922b9b0cd3e3b38912d8bd4","assignee":null,"assignees":[],"requested_reviewers":[{"login":"dbmeneses","id":12492673,"node_id":"MDQ6VXNlcjEyNDkyNjcz","avatar_url":"https://avatars0.githubusercontent.com/u/12492673?v=4","gravatar_id":"","url":"https://api.github.com/users/dbmeneses","html_url":"https://github.com/dbmeneses","followers_url":"https://api.github.com/users/dbmeneses/followers","following_url":"https://api.github.com/users/dbmeneses/following{/other_user}","gists_url":"https://api.github.com/users/dbmeneses/gists{/gist_id}","starred_url":"https://api.github.com/users/dbmeneses/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbmeneses/subscriptions","organizations_url":"https://api.github.com/users/dbmeneses/orgs","repos_url":"https://api.github.com/users/dbmeneses/repos","events_url":"https://api.github.com/users/dbmeneses/events{/privacy}","received_events_url":"https://api.github.com/users/dbmeneses/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/168/commits","review_comments_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/168/comments","review_comment_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues/168/comments","statuses_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/statuses/a5e3016fdcbfc161f1d2fe636a6fe5ba43d9fe7b","head":{"label":"SonarSource:feature/drop_modules","ref":"feature/drop_modules","sha":"a5e3016fdcbfc161f1d2fe636a6fe5ba43d9fe7b","user":{"login":"SonarSource","id":545988,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0NTk4OA==","avatar_url":"https://avatars0.githubusercontent.com/u/545988?v=4","gravatar_id":"","url":"https://api.github.com/users/SonarSource","html_url":"https://github.com/SonarSource","followers_url":"https://api.github.com/users/SonarSource/followers","following_url":"https://api.github.com/users/SonarSource/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource/subscriptions","organizations_url":"https://api.github.com/users/SonarSource/orgs","repos_url":"https://api.github.com/users/SonarSource/repos","events_url":"https://api.github.com/users/SonarSource/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource/received_events","type":"Organization","site_admin":false},"repo":{"id":1350022,"node_id":"MDEwOlJlcG9zaXRvcnkxMzUwMDIy","name":"sonarlint-eclipse","full_name":"SonarSource/sonarlint-eclipse","private":false,"owner":{"login":"SonarSource","id":545988,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0NTk4OA==","avatar_url":"https://avatars0.githubusercontent.com/u/545988?v=4","gravatar_id":"","url":"https://api.github.com/users/SonarSource","html_url":"https://github.com/SonarSource","followers_url":"https://api.github.com/users/SonarSource/followers","following_url":"https://api.github.com/users/SonarSource/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource/subscriptions","organizations_url":"https://api.github.com/users/SonarSource/orgs","repos_url":"https://api.github.com/users/SonarSource/repos","events_url":"https://api.github.com/users/SonarSource/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/SonarSource/sonarlint-eclipse","description":"SonarLint for Eclipse","fork":false,"url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse","forks_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/forks","keys_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/teams","hooks_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/hooks","issue_events_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues/events{/number}","events_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/events","assignees_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/assignees{/user}","branches_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/branches{/branch}","tags_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/tags","blobs_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/refs{/sha}","trees_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/statuses/{sha}","languages_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/languages","stargazers_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/stargazers","contributors_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/contributors","subscribers_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/subscribers","subscription_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/subscription","commits_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/commits{/sha}","git_commits_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/commits{/sha}","comments_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/comments{/number}","issue_comment_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues/comments{/number}","contents_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/contents/{+path}","compare_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/merges","archive_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/downloads","issues_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues{/number}","pulls_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls{/number}","milestones_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/milestones{/number}","notifications_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/labels{/name}","releases_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/releases{/id}","deployments_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/deployments","created_at":"2011-02-10T09:32:22Z","updated_at":"2018-10-05T01:00:03Z","pushed_at":"2018-10-08T15:12:55Z","git_url":"git://github.com/SonarSource/sonarlint-eclipse.git","ssh_url":"git@github.com:SonarSource/sonarlint-eclipse.git","clone_url":"https://github.com/SonarSource/sonarlint-eclipse.git","svn_url":"https://github.com/SonarSource/sonarlint-eclipse","homepage":"http://eclipse.sonarlint.org","size":14397,"stargazers_count":166,"watchers_count":166,"language":"Java","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":86,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"other","name":"NOASSERTION","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":86,"open_issues":1,"watchers":166,"default_branch":"master"}},"base":{"label":"SonarSource:master","ref":"master","sha":"7d1fbb6d05ec03b2986cf9383089f7131fa644ee","user":{"login":"SonarSource","id":545988,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0NTk4OA==","avatar_url":"https://avatars0.githubusercontent.com/u/545988?v=4","gravatar_id":"","url":"https://api.github.com/users/SonarSource","html_url":"https://github.com/SonarSource","followers_url":"https://api.github.com/users/SonarSource/followers","following_url":"https://api.github.com/users/SonarSource/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource/subscriptions","organizations_url":"https://api.github.com/users/SonarSource/orgs","repos_url":"https://api.github.com/users/SonarSource/repos","events_url":"https://api.github.com/users/SonarSource/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource/received_events","type":"Organization","site_admin":false},"repo":{"id":1350022,"node_id":"MDEwOlJlcG9zaXRvcnkxMzUwMDIy","name":"sonarlint-eclipse","full_name":"SonarSource/sonarlint-eclipse","private":false,"owner":{"login":"SonarSource","id":545988,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU0NTk4OA==","avatar_url":"https://avatars0.githubusercontent.com/u/545988?v=4","gravatar_id":"","url":"https://api.github.com/users/SonarSource","html_url":"https://github.com/SonarSource","followers_url":"https://api.github.com/users/SonarSource/followers","following_url":"https://api.github.com/users/SonarSource/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource/subscriptions","organizations_url":"https://api.github.com/users/SonarSource/orgs","repos_url":"https://api.github.com/users/SonarSource/repos","events_url":"https://api.github.com/users/SonarSource/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/SonarSource/sonarlint-eclipse","description":"SonarLint for Eclipse","fork":false,"url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse","forks_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/forks","keys_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/teams","hooks_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/hooks","issue_events_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues/events{/number}","events_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/events","assignees_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/assignees{/user}","branches_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/branches{/branch}","tags_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/tags","blobs_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/refs{/sha}","trees_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/statuses/{sha}","languages_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/languages","stargazers_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/stargazers","contributors_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/contributors","subscribers_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/subscribers","subscription_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/subscription","commits_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/commits{/sha}","git_commits_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/git/commits{/sha}","comments_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/comments{/number}","issue_comment_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues/comments{/number}","contents_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/contents/{+path}","compare_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/merges","archive_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/downloads","issues_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues{/number}","pulls_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls{/number}","milestones_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/milestones{/number}","notifications_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/labels{/name}","releases_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/releases{/id}","deployments_url":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/deployments","created_at":"2011-02-10T09:32:22Z","updated_at":"2018-10-05T01:00:03Z","pushed_at":"2018-10-08T15:12:55Z","git_url":"git://github.com/SonarSource/sonarlint-eclipse.git","ssh_url":"git@github.com:SonarSource/sonarlint-eclipse.git","clone_url":"https://github.com/SonarSource/sonarlint-eclipse.git","svn_url":"https://github.com/SonarSource/sonarlint-eclipse","homepage":"http://eclipse.sonarlint.org","size":14397,"stargazers_count":166,"watchers_count":166,"language":"Java","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":86,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"other","name":"NOASSERTION","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":86,"open_issues":1,"watchers":166,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/168"},"html":{"href":"https://github.com/SonarSource/sonarlint-eclipse/pull/168"},"issue":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues/168"},"comments":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/issues/168/comments"},"review_comments":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/168/comments"},"review_comment":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/pulls/168/commits"},"statuses":{"href":"https://api.github.com/repos/SonarSource/sonarlint-eclipse/statuses/a5e3016fdcbfc161f1d2fe636a6fe5ba43d9fe7b"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"sonarsource-next"}}