com.github.alexcojocaru.mojo.elasticsearch.v2.AbstractElasticsearchBaseMojo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of elasticsearch-maven-plugin Show documentation
Show all versions of elasticsearch-maven-plugin Show documentation
A Maven plugin to run a single node Elasticsearch cluster during the integration test phase of a build
package com.github.alexcojocaru.mojo.elasticsearch.v2;
import java.io.File;
import org.apache.maven.monitor.logging.DefaultLog;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugins.annotations.Parameter;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.logging.console.ConsoleLogger;
import com.github.alexcojocaru.mojo.elasticsearch.v2.configuration.ChainedArtifactResolver;
import com.github.alexcojocaru.mojo.elasticsearch.v2.configuration.ElasticsearchBaseConfiguration;
import com.github.alexcojocaru.mojo.elasticsearch.v2.configuration.PluginArtifactResolver;
/**
* Base mojo to define maven parameters required by all ES mojos.
*
* @author Alex Cojocaru
*/
public abstract class AbstractElasticsearchBaseMojo
extends AbstractMojo
implements ElasticsearchBaseConfiguration
{
/**
* The number of Elasticsearch nodes to start within the cluster.
*/
@Parameter(property="es.instanceCount", defaultValue = "1")
protected int instanceCount;
/**
* The Elasticsearch base path.
*/
@Parameter(defaultValue = "${project.build.directory}/elasticsearch", readonly = true)
protected File baseDir;
/**
* Whether to skip the plugin execution or not.
*/
@Parameter(property="es.skip", defaultValue = "false")
protected boolean skip;
/**
* The plugin log level.
*/
@Parameter(property="es.logLevel", defaultValue = "INFO")
protected String logLevel;
private Log log;
@Override
public int getInstanceCount()
{
return instanceCount;
}
public void setInstanceCount(int instanceCount)
{
this.instanceCount = instanceCount;
}
@Override
public File getBaseDir()
{
return baseDir;
}
public void setBaseDir(File baseDir)
{
this.baseDir = baseDir;
}
@Override
public boolean isSkip()
{
return skip;
}
public void setSkip(boolean skip)
{
this.skip = skip;
}
@Override
public String getLogLevel()
{
return logLevel;
}
public void setLogLevel(String logLevel)
{
this.logLevel = logLevel;
}
private int getMavenLogLevel()
{
switch (logLevel)
{
case "DEBUG":
return Logger.LEVEL_DEBUG;
case "WARN":
return Logger.LEVEL_WARN;
case "ERROR":
return Logger.LEVEL_ERROR;
case "FATAL":
return Logger.LEVEL_FATAL;
case "DISABLED":
return Logger.LEVEL_DISABLED;
case "INFO":
default:
return Logger.LEVEL_INFO;
}
}
@Override
public Log getLog()
{
if (log == null)
{
log = new DefaultLog(new ConsoleLogger(getMavenLogLevel(), "console"));
}
return log;
}
@Override
public ClusterConfiguration buildClusterConfiguration()
{
ClusterConfiguration.Builder clusterConfigBuilder = new ClusterConfiguration.Builder()
.withArtifactResolver(buildArtifactResolver())
.withLog(getLog());
for (int i = 0; i < instanceCount; i++)
{
clusterConfigBuilder.addInstanceConfiguration(new InstanceConfiguration.Builder()
.withId(i)
.withBaseDir(baseDir.getAbsolutePath() + i)
.build());
}
ClusterConfiguration clusterConfig = clusterConfigBuilder.build();
return clusterConfig;
}
@Override
public PluginArtifactResolver buildArtifactResolver()
{
ChainedArtifactResolver artifactResolver = new ChainedArtifactResolver();
return artifactResolver;
}
}