package com.lordofthejars.nosqlunit.elasticsearch2; import org.junit.rules.ExternalResource; public class ManagedElasticsearch extends ExternalResource { private ManagedElasticsearch() { super(); } protected ManagedElasticsearchLifecycleManager managedElasticsearchLifecycleManager; public static class ManagedElasticsearchRuleBuilder { private ManagedElasticsearchLifecycleManager managedElasticsearchLifecycleManager; private ManagedElasticsearchRuleBuilder() { this.managedElasticsearchLifecycleManager = new ManagedElasticsearchLifecycleManager(); } public static ManagedElasticsearchRuleBuilder newManagedElasticsearchRule() { return new ManagedElasticsearchRuleBuilder(); } public ManagedElasticsearchRuleBuilder elasticsearchPath(String elasticsearchPath) { this.managedElasticsearchLifecycleManager.setElasticsearchPath(elasticsearchPath); return this; } public ManagedElasticsearchRuleBuilder port(int port) { this.managedElasticsearchLifecycleManager.setPort(port); return this; } public ManagedElasticsearchRuleBuilder targetPath(String targetPath) { this.managedElasticsearchLifecycleManager.setTargetPath(targetPath); return this; } public ManagedElasticsearchRuleBuilder appendCommandLineArguments( String argumentName, String argumentValue) { this.managedElasticsearchLifecycleManager.addExtraCommandLineArgument(argumentName, argumentValue); return this; } public ManagedElasticsearchRuleBuilder appendSingleCommandLineArguments( String argument) { this.managedElasticsearchLifecycleManager.addSingleCommandLineArgument(argument); return this; } public ManagedElasticsearch build() { if (this.managedElasticsearchLifecycleManager.getElasticsearchPath() == null) { throw new IllegalArgumentException( "No Path to Elasticsearch is provided."); } ManagedElasticsearch managedElasticsearch = new ManagedElasticsearch(); managedElasticsearch.managedElasticsearchLifecycleManager = this.managedElasticsearchLifecycleManager; return managedElasticsearch; } } @Override protected void before() throws Throwable { this.managedElasticsearchLifecycleManager.startEngine(); } @Override protected void after() { this.managedElasticsearchLifecycleManager.stopEngine(); } }