diff --git a/platform/remote-servers/api/src/com/intellij/remoteServer/configuration/ServerConfigurationBase.java b/platform/remote-servers/api/src/com/intellij/remoteServer/configuration/ServerConfigurationBase.java new file mode 100644 index 000000000000..1e7e1d9eff6b --- /dev/null +++ b/platform/remote-servers/api/src/com/intellij/remoteServer/configuration/ServerConfigurationBase.java @@ -0,0 +1,26 @@ +package com.intellij.remoteServer.configuration; + +import com.intellij.openapi.components.PersistentStateComponent; +import com.intellij.util.xmlb.XmlSerializerUtil; +import org.jetbrains.annotations.Nullable; + +/** + * @author nik + */ +public abstract class ServerConfigurationBase> extends ServerConfiguration implements PersistentStateComponent { + @Override + public PersistentStateComponent getSerializer() { + return this; + } + + @Nullable + @Override + public Self getState() { + return (Self)this; + } + + @Override + public void loadState(Self state) { + XmlSerializerUtil.copyBean(state, this); + } +} diff --git a/platform/remote-servers/api/src/com/intellij/remoteServer/configuration/deployment/DeploymentSourceUtil.java b/platform/remote-servers/api/src/com/intellij/remoteServer/configuration/deployment/DeploymentSourceUtil.java index 1336f7c0f63f..72d978f70aee 100644 --- a/platform/remote-servers/api/src/com/intellij/remoteServer/configuration/deployment/DeploymentSourceUtil.java +++ b/platform/remote-servers/api/src/com/intellij/remoteServer/configuration/deployment/DeploymentSourceUtil.java @@ -18,10 +18,14 @@ package com.intellij.remoteServer.configuration.deployment; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.module.ModulePointer; import com.intellij.openapi.project.Project; +import com.intellij.packaging.artifacts.Artifact; import com.intellij.packaging.artifacts.ArtifactPointer; import org.jdom.Element; import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.List; + /** * @author nik */ @@ -33,6 +37,10 @@ public abstract class DeploymentSourceUtil { @NotNull public abstract ArtifactDeploymentSource createArtifactDeploymentSource(@NotNull ArtifactPointer artifactPointer); + @NotNull + public abstract List createArtifactDeploymentSources(@NotNull Project project, + @NotNull Collection artifacts); + @NotNull public abstract ModuleDeploymentSource createModuleDeploymentSource(@NotNull ModulePointer modulePointer); diff --git a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/ServerConnector.java b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/ServerConnector.java index e3b16f04245c..0f3fc11b4bc2 100644 --- a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/ServerConnector.java +++ b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/ServerConnector.java @@ -10,8 +10,6 @@ import org.jetbrains.annotations.NotNull; public abstract class ServerConnector { public abstract void connect(@NotNull ConnectionCallback callback); - public abstract void disconnect(); - public interface ConnectionCallback extends RemoteOperationCallback { void connected(@NotNull ServerRuntimeInstance serverRuntimeInstance); } diff --git a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/ServerRuntimeInstance.java b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/ServerRuntimeInstance.java index 05c4bdcdb2d0..b54e564585a3 100644 --- a/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/ServerRuntimeInstance.java +++ b/platform/remote-servers/api/src/com/intellij/remoteServer/runtime/deployment/ServerRuntimeInstance.java @@ -22,6 +22,8 @@ public abstract class ServerRuntimeInstance { return source.getPresentableName(); } + public abstract void disconnect(); + public interface DeploymentOperationCallback extends RemoteOperationCallback { void succeeded(@NotNull DeploymentRuntime deployment); } diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeploymentSourceUtilImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeploymentSourceUtilImpl.java index f1df34ae94d4..6cc425ee0670 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeploymentSourceUtilImpl.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeploymentSourceUtilImpl.java @@ -18,6 +18,7 @@ package com.intellij.remoteServer.impl.configuration.deployment; import com.intellij.openapi.module.ModulePointer; import com.intellij.openapi.module.ModulePointerManager; import com.intellij.openapi.project.Project; +import com.intellij.packaging.artifacts.Artifact; import com.intellij.packaging.artifacts.ArtifactPointer; import com.intellij.packaging.artifacts.ArtifactPointerManager; import com.intellij.remoteServer.configuration.deployment.ArtifactDeploymentSource; @@ -27,6 +28,10 @@ import com.intellij.remoteServer.configuration.deployment.ModuleDeploymentSource import org.jdom.Element; import org.jetbrains.annotations.NotNull; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + /** * @author nik */ @@ -37,6 +42,18 @@ public class DeploymentSourceUtilImpl extends DeploymentSourceUtil { return new ArtifactDeploymentSourceImpl(artifactPointer); } + @NotNull + @Override + public List createArtifactDeploymentSources(@NotNull Project project, + @NotNull Collection artifacts) { + List sources = new ArrayList(); + ArtifactPointerManager pointerManager = ArtifactPointerManager.getInstance(project); + for (Artifact artifact : artifacts) { + sources.add(createArtifactDeploymentSource(pointerManager.createPointer(artifact))); + } + return sources; + } + @Override @NotNull public ModuleDeploymentSource createModuleDeploymentSource(@NotNull ModulePointer modulePointer) { diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ServerConnectionImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ServerConnectionImpl.java index 9d8ec2e8cbd3..f4de05e03ee2 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ServerConnectionImpl.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/runtime/ServerConnectionImpl.java @@ -85,8 +85,10 @@ public class ServerConnectionImpl implements private void doDisconnect() { if (myStatus == ConnectionStatus.CONNECTED) { - myRuntimeInstance = null; - myConnector.disconnect(); + if (myRuntimeInstance != null) { + myRuntimeInstance.disconnect(); + myRuntimeInstance = null; + } setStatus(ConnectionStatus.DISCONNECTED); } } diff --git a/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineCloudType.java b/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineCloudType.java index 2557877c30d0..855ed7a64dfe 100644 --- a/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineCloudType.java +++ b/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineCloudType.java @@ -22,7 +22,6 @@ import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.options.UnnamedConfigurable; import com.intellij.openapi.project.Project; import com.intellij.packaging.artifacts.Artifact; -import com.intellij.packaging.artifacts.ArtifactPointerManager; import com.intellij.remoteServer.ServerType; import com.intellij.remoteServer.configuration.deployment.*; import com.intellij.remoteServer.runtime.Deployment; @@ -38,7 +37,6 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; -import java.util.ArrayList; import java.util.List; /** @@ -134,12 +132,7 @@ public class AppEngineCloudType extends ServerType @Override public List getAvailableDeploymentSources() { List artifacts = AppEngineUtil.collectWebArtifacts(myProject, true); - List sources = new ArrayList(); - ArtifactPointerManager pointerManager = ArtifactPointerManager.getInstance(myProject); - for (Artifact artifact : artifacts) { - sources.add(DeploymentSourceUtil.getInstance().createArtifactDeploymentSource(pointerManager.createPointer(artifact))); - } - return sources; + return DeploymentSourceUtil.getInstance().createArtifactDeploymentSources(myProject, artifacts); } @NotNull @@ -165,10 +158,6 @@ public class AppEngineCloudType extends ServerType public void connect(@NotNull final ConnectionCallback callback) { callback.connected(new AppEngineRuntimeInstance(myConfiguration)); } - - @Override - public void disconnect() { - } } private static class AppEngineRuntimeInstance extends ServerRuntimeInstance { @@ -193,5 +182,9 @@ public class AppEngineCloudType extends ServerType public void computeDeployments(@NotNull ComputeDeploymentsCallback deployments) { deployments.succeeded(ContainerUtil.emptyList()); } + + @Override + public void disconnect() { + } } } diff --git a/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineServerConfiguration.java b/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineServerConfiguration.java index 9291f376fc7d..4576fb41bdde 100644 --- a/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineServerConfiguration.java +++ b/plugins/google-app-engine/source/com/intellij/appengine/cloud/AppEngineServerConfiguration.java @@ -15,16 +15,13 @@ */ package com.intellij.appengine.cloud; -import com.intellij.openapi.components.PersistentStateComponent; -import com.intellij.remoteServer.configuration.ServerConfiguration; -import com.intellij.util.xmlb.XmlSerializerUtil; +import com.intellij.remoteServer.configuration.ServerConfigurationBase; import com.intellij.util.xmlb.annotations.Attribute; -import org.jetbrains.annotations.Nullable; /** * @author nik */ -public class AppEngineServerConfiguration extends ServerConfiguration implements PersistentStateComponent { +public class AppEngineServerConfiguration extends ServerConfigurationBase { private String myEmail; @Attribute("email") @@ -35,20 +32,4 @@ public class AppEngineServerConfiguration extends ServerConfiguration implements public void setEmail(String email) { myEmail = email; } - - @Nullable - @Override - public AppEngineServerConfiguration getState() { - return this; - } - - @Override - public void loadState(AppEngineServerConfiguration state) { - XmlSerializerUtil.copyBean(state, this); - } - - @Override - public PersistentStateComponent getSerializer() { - return this; - } }