fixing Git plugin for Upsource case: apparently there is no ExtensionsProvider in...
authorpavel.sher <pavel.sher@jetbrains.com>
Fri, 12 Oct 2018 14:50:11 +0000 (16:50 +0200)
committerpavel.sher <pavel.sher@jetbrains.com>
Fri, 12 Oct 2018 14:50:11 +0000 (16:50 +0200)
git-server-tc/src/jetbrains/buildServer/buildTriggers/vcs/git/GitUrlSupportInitializer.java
git-server/src/jetbrains/buildServer/buildTriggers/vcs/git/GitUrlSupport.java
git-tests/src/jetbrains/buildServer/buildTriggers/vcs/git/tests/GitUrlSupportTest.java

index bbbeebb4d88cb3fef38d4cdad674e126b4bf0cc0..04e7d50805a25b6d3ca8b8bc3cab840e3dd3ae58 100644 (file)
 
 package jetbrains.buildServer.buildTriggers.vcs.git;
 
+import jetbrains.buildServer.ExtensionsProvider;
 import jetbrains.buildServer.serverSide.ProjectManager;
 import org.jetbrains.annotations.NotNull;
 
 public class GitUrlSupportInitializer {
-  public GitUrlSupportInitializer(@NotNull GitUrlSupport urlSupport, @NotNull ProjectManager projectManager) {
+  public GitUrlSupportInitializer(@NotNull GitUrlSupport urlSupport, @NotNull ProjectManager projectManager, @NotNull ExtensionsProvider extensionsProvider) {
     urlSupport.setProjectManager(projectManager);
+    urlSupport.setExtensionsProvider(extensionsProvider);
   }
 }
index e9a87f8b64956a07bc68eedfcd353b5c474e2813..774673159adf6dba9c860ab6cbcdea4d0159cb0b 100644 (file)
@@ -46,13 +46,11 @@ import java.util.Map;
 public class GitUrlSupport implements ContextAwareUrlSupport, PositionAware, GitServerExtension {
 
   private final GitVcsSupport myGitSupport;
-  private final ExtensionsProvider myExtensionsProvider;
-  private ProjectManager myProjectManager;
+  private volatile ExtensionsProvider myExtensionsProvider;
+  private volatile ProjectManager myProjectManager;
 
-  public GitUrlSupport(@NotNull GitVcsSupport gitSupport,
-                       @NotNull final ExtensionsProvider extensionsProvider) {
+  public GitUrlSupport(@NotNull GitVcsSupport gitSupport) {
     myGitSupport = gitSupport;
-    myExtensionsProvider = extensionsProvider;
     gitSupport.addExtension(this);
   }
 
@@ -62,6 +60,12 @@ public class GitUrlSupport implements ContextAwareUrlSupport, PositionAware, Git
     myProjectManager = projectManager;
   }
 
+  // ExtensionsProvider will be set by {@link GitUrlSupportInitializer}
+  // have to do it this way because Upsource loads Git plugin and it does not have ExtensionsProvider bean
+  public void setExtensionsProvider(@NotNull final ExtensionsProvider extensionsProvider) {
+    myExtensionsProvider = extensionsProvider;
+  }
+
   @Nullable
   public Map<String, String> convertToVcsRootProperties(@NotNull VcsUrl url, @NotNull VcsOperationContext operationContext) throws VcsException {
     String scmName = getMavenScmName(url);
@@ -239,6 +243,7 @@ public class GitUrlSupport implements ContextAwareUrlSupport, PositionAware, Git
 
   @Nullable
   private synchronized ServerSshKeyManager getSshKeyManager() {
+    if (myExtensionsProvider == null) return null;
     Collection<ServerSshKeyManager> managers = myExtensionsProvider.getExtensions(ServerSshKeyManager.class);
     if (managers.isEmpty())
       return null;
index 917f1a2ca232857c4db9dadb4b91d52cc9e0bc15..aa8cc9b5ee1787fabaf330920af3cdd7a5b595c3 100644 (file)
@@ -81,8 +81,9 @@ public class GitUrlSupportTest extends BaseTestCase {
       if (myTestConnectionMocked != null && myTestConnectionMocked) return null;
       return myGitVcsSupport.testConnection(vcsRoot);
     }).build();
-    myUrlSupport = new GitUrlSupport(myGitVcsSupport, (ExtensionsProvider)epMock.proxy());
+    myUrlSupport = new GitUrlSupport(myGitVcsSupport);
     myUrlSupport.setProjectManager(pm);
+    myUrlSupport.setExtensionsProvider((ExtensionsProvider)epMock.proxy());
   }
 
   @AfterMethod