
net.wouterdanes.docker.maven.AbstractDockerMojo Maven / Gradle / Ivy
package net.wouterdanes.docker.maven;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.common.base.Optional;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Parameter;
import net.wouterdanes.docker.provider.DockerProvider;
import net.wouterdanes.docker.provider.DockerProviderSupplier;
import net.wouterdanes.docker.provider.model.BuiltImageInfo;
/**
* Base class for all Mojos with shared functionality
*/
public abstract class AbstractDockerMojo extends AbstractMojo {
private static final String STARTED_CONTAINERS_KEY = "startedContainers";
private static final String BUILT_IMAGES_KEY = "builtImages";
@Parameter(defaultValue = "remote", property = "docker.provider", required = true)
private String providerName;
public void setProviderName(final String providerName) {
this.providerName = providerName;
}
@Override
public final void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("Using docker provider: " + providerName);
doExecute();
}
protected abstract void doExecute() throws MojoExecutionException, MojoFailureException;
protected void registerStartedContainer(String id) {
List startedContainers = obtainListFromPluginContext(STARTED_CONTAINERS_KEY);
startedContainers.add(id);
}
protected List getStartedContainers() {
return obtainListFromPluginContext(STARTED_CONTAINERS_KEY);
}
protected void registerBuiltImage(String startId, String imageId, boolean keep) {
Map builtImages = obtainMapFromPluginContext(BUILT_IMAGES_KEY);
builtImages.put(startId, new BuiltImageInfo(startId, imageId, keep));
}
protected Collection getBuiltImages() {
Map builtImagesMap = obtainMapFromPluginContext(BUILT_IMAGES_KEY);
return builtImagesMap.values();
}
protected DockerProvider getDockerProvider() {
return new DockerProviderSupplier(providerName).get();
}
protected Optional getBuiltImageForStartId(final String imageId) {
Map builtImages = obtainMapFromPluginContext(BUILT_IMAGES_KEY);
return Optional.fromNullable(builtImages.get(imageId));
}
@SuppressWarnings("unchecked")
private List obtainListFromPluginContext(String name) {
Object obj = getPluginContext().get(name);
if (obj == null) {
ArrayList list = new ArrayList<>();
getPluginContext().put(name, list);
return list;
} else {
return (List) obj;
}
}
@SuppressWarnings("unchecked")
private Map obtainMapFromPluginContext(String name) {
Object obj = getPluginContext().get(name);
if (obj == null) {
Map map = new HashMap<>();
getPluginContext().put(name, map);
return map;
} else {
return (Map) obj;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy