diff options
Diffstat (limited to 'containers/org.eclipse.linuxtools.docker.core/src/org/eclipse')
6 files changed, 73 insertions, 4 deletions
diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerContainer.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerContainer.java index 89573f3836..a38e7ab73e 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerContainer.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerContainer.java @@ -49,11 +49,28 @@ public interface IDockerContainer { public IDockerConnection getConnection(); /** + * @return <code>true</code> if the {@link IDockerContainerInfo} has been + * loaded, <code>false</code> otherwise. + */ + public boolean isInfoLoaded(); + + /** * @return the {@link IDockerContainerInfo} by calling the Docker daemon * using the {@link IDockerConnection} associated with this - * {@link IDockerContainer}. + * {@link IDockerContainer} if it was not loaded before, otherwise + * uses the previous version. */ public IDockerContainerInfo info(); + /** + * @param force + * <code>true</code> to force refresh, <code>false</code> to use + * existing {@link IDockerContainerInfo} if it was loaded before. + * @return the {@link IDockerContainerInfo} by calling the Docker daemon + * using the {@link IDockerConnection} associated with this + * {@link IDockerContainer}. + */ + public IDockerContainerInfo info(boolean force); + } diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerPortMapping.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerPortMapping.java index eb7919f9b9..a9cd77f38b 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerPortMapping.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerPortMapping.java @@ -15,7 +15,7 @@ package org.eclipse.linuxtools.docker.core; * Port mapping for {@link IDockerContainer} * */ -public interface IDockerPortMapping { +public interface IDockerPortMapping extends Comparable<IDockerPortMapping> { public int getPrivatePort(); diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java index 386a92dec3..209a2183fc 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java @@ -590,7 +590,7 @@ public class DockerConnection implements IDockerConnection, Closeable { } @Override - public IDockerContainerInfo getContainerInfo(String id) { + public IDockerContainerInfo getContainerInfo(final String id) { try { final ContainerInfo info = client.inspectContainer(id); return new DockerContainerInfo(info); diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerContainer.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerContainer.java index ef5c42f871..408bbdc637 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerContainer.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerContainer.java @@ -32,6 +32,7 @@ public class DockerContainer implements IDockerContainer { private List<IDockerPortMapping> ports; private Long sizeRw; private Long sizeRootFs; + private IDockerContainerInfo containerInfo; public DockerContainer(final IDockerConnection connection, Container container) { @@ -115,10 +116,24 @@ public class DockerContainer implements IDockerContainer { public List<String> names() { return names; } + @Override public IDockerContainerInfo info() { - return this.parent.getContainerInfo(id); + return info(false); + } + + @Override + public IDockerContainerInfo info(final boolean force) { + if (force || isInfoLoaded()) { + this.containerInfo = this.parent.getContainerInfo(id); + } + return this.containerInfo; + } + + @Override + public boolean isInfoLoaded() { + return this.containerInfo != null; } @Override diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerPortBinding.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerPortBinding.java index c1cafa570d..e781915919 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerPortBinding.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerPortBinding.java @@ -45,4 +45,36 @@ public class DockerPortBinding implements IDockerPortBinding { + "\n"; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((hostIp == null) ? 0 : hostIp.hashCode()); + result = prime * result + + ((hostPort == null) ? 0 : hostPort.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + DockerPortBinding other = (DockerPortBinding) obj; + if (hostIp == null) { + if (other.hostIp != null) + return false; + } else if (!hostIp.equals(other.hostIp)) + return false; + if (hostPort == null) { + if (other.hostPort != null) + return false; + } else if (!hostPort.equals(other.hostPort)) + return false; + return true; + } + } diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerPortMapping.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerPortMapping.java index 8c1f7a09d6..28589d3095 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerPortMapping.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerPortMapping.java @@ -108,6 +108,11 @@ public class DockerPortMapping implements IDockerPortMapping { return false; return true; } + + @Override + public int compareTo(final IDockerPortMapping other) { + return other.getPublicPort() - this.publicPort; + } |