summaryrefslogtreecommitdiff
path: root/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudDeploymentConfiguratorBase.java
blob: 19b1895bdccce964553a1497e17bd8b6781eefcf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.intellij.remoteServer.util;

import com.intellij.openapi.project.Project;
import com.intellij.remoteServer.ServerType;
import com.intellij.remoteServer.configuration.ServerConfiguration;
import com.intellij.remoteServer.configuration.deployment.DeploymentConfiguration;
import com.intellij.remoteServer.configuration.deployment.DeploymentConfigurator;
import com.intellij.remoteServer.configuration.deployment.DeploymentSource;
import org.jetbrains.annotations.NotNull;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @author michael.golubev
 */
public abstract class CloudDeploymentConfiguratorBase<D extends DeploymentConfiguration, S extends ServerConfiguration>
  extends DeploymentConfigurator<D, S> {

  private final Project myProject;
  private ServerType<S> myServerType;

  public CloudDeploymentConfiguratorBase(Project project, ServerType<S> serverType) {
    myProject = project;
    myServerType = serverType;
  }

  public static List<CloudDeploymentRuntimeProvider> getDeploymentRuntimeProviders(ServerType<?> serverType) {
    List<CloudDeploymentRuntimeProvider> result = new ArrayList<CloudDeploymentRuntimeProvider>();
    for (CloudDeploymentRuntimeProvider provider : CloudDeploymentRuntimeProvider.EP_NAME.getExtensions()) {
      ServerType<?> providerServerType = provider.getServerType();
      if (providerServerType == null || providerServerType == serverType) {
        result.add(provider);
      }
    }
    return result;
  }

  @NotNull
  @Override
  public List<DeploymentSource> getAvailableDeploymentSources() {
    if (myProject.isDefault()) return Collections.emptyList();
    List<DeploymentSource> result = new ArrayList<DeploymentSource>();
    for (CloudDeploymentRuntimeProvider provider : getDeploymentRuntimeProviders(myServerType)) {
      result.addAll(provider.getDeploymentSources(myProject));
    }
    return result;
  }
}