Format RemovePluginCommand to 100-column limit

This commit formats RemovePluginCommand.java to the 100-column limit and
removes this file from the list of suppressions.
This commit is contained in:
Jason Tedor 2017-03-19 22:50:13 -04:00
parent f9d6924f7d
commit 2eafe8310e
3 changed files with 40 additions and 24 deletions

View File

@ -1578,7 +1578,6 @@
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]plugins[/\\]PluginSecurity.java" checks="LineLength" />
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]plugins[/\\]PluginsService.java" checks="LineLength" />
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]plugins[/\\]ProgressInputStream.java" checks="LineLength" />
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]plugins[/\\]RemovePluginCommand.java" checks="LineLength" />
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]plugins[/\\]RepositoryPlugin.java" checks="LineLength" />
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]plugins[/\\]ScriptPlugin.java" checks="LineLength" />
<suppress files="core[/\\]src[/\\]main[/\\]java[/\\]org[/\\]elasticsearch[/\\]plugins[/\\]SearchPlugin.java" checks="LineLength" />

View File

@ -26,6 +26,7 @@ import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import joptsimple.OptionSet;
import joptsimple.OptionSpec;
@ -40,21 +41,22 @@ import org.elasticsearch.env.Environment;
import static org.elasticsearch.cli.Terminal.Verbosity.VERBOSE;
/**
* A command for the plugin cli to remove a plugin from elasticsearch.
* A command for the plugin CLI to remove a plugin from Elasticsearch.
*/
class RemovePluginCommand extends EnvironmentAwareCommand {
private final OptionSpec<String> arguments;
RemovePluginCommand() {
super("Removes a plugin from elasticsearch");
super("removes a plugin from Elasticsearch");
this.arguments = parser.nonOptions("plugin name");
}
@Override
protected void execute(Terminal terminal, OptionSet options, Environment env) throws Exception {
String arg = arguments.value(options);
execute(terminal, arg, env);
protected void execute(final Terminal terminal, final OptionSet options, final Environment env)
throws Exception {
final String pluginName = arguments.value(options);
execute(terminal, pluginName, env);
}
/**
@ -68,18 +70,22 @@ class RemovePluginCommand extends EnvironmentAwareCommand {
* @throws UserException if plugin directory does not exist
* @throws UserException if the plugin bin directory is not a directory
*/
void execute(Terminal terminal, String pluginName, Environment env) throws IOException, UserException {
void execute(final Terminal terminal, final String pluginName, final Environment env)
throws IOException, UserException {
if (pluginName == null) {
throw new UserException(ExitCodes.USAGE, "plugin name is required");
}
terminal.println("-> Removing " + Strings.coalesceToEmpty(pluginName) + "...");
terminal.println("-> removing [" + Strings.coalesceToEmpty(pluginName) + "]...");
final Path pluginDir = env.pluginsFile().resolve(pluginName);
if (Files.exists(pluginDir) == false) {
throw new UserException(
ExitCodes.CONFIG,
"plugin " + pluginName + " not found; run 'elasticsearch-plugin list' to get list of installed plugins");
final String message = String.format(
Locale.ROOT,
"plugin [%s] not found; "
+ "run 'elasticsearch-plugin list' to get list of installed plugins",
pluginName);
throw new UserException(ExitCodes.CONFIG, message);
}
final List<Path> pluginPaths = new ArrayList<>();
@ -87,30 +93,41 @@ class RemovePluginCommand extends EnvironmentAwareCommand {
final Path pluginBinDir = env.binFile().resolve(pluginName);
if (Files.exists(pluginBinDir)) {
if (Files.isDirectory(pluginBinDir) == false) {
throw new UserException(ExitCodes.IO_ERROR, "Bin dir for " + pluginName + " is not a directory");
throw new UserException(
ExitCodes.IO_ERROR, "bin dir for " + pluginName + " is not a directory");
}
pluginPaths.add(pluginBinDir);
terminal.println(VERBOSE, "Removing: " + pluginBinDir);
terminal.println(VERBOSE, "removing [" + pluginBinDir + "]");
}
terminal.println(VERBOSE, "Removing: " + pluginDir);
terminal.println(VERBOSE, "removing [" + pluginDir + "]");
final Path tmpPluginDir = env.pluginsFile().resolve(".removing-" + pluginName);
try {
Files.move(pluginDir, tmpPluginDir, StandardCopyOption.ATOMIC_MOVE);
} catch (final AtomicMoveNotSupportedException e) {
// this can happen on a union filesystem when a plugin is not installed on the top layer; we fall back to a non-atomic move
/*
* On a union file system if the plugin that we are removing is not installed on the
* top layer then atomic move will not be supported. In this case, we fall back to a
* non-atomic move.
*/
Files.move(pluginDir, tmpPluginDir);
}
pluginPaths.add(tmpPluginDir);
IOUtils.rm(pluginPaths.toArray(new Path[pluginPaths.size()]));
// we preserve the config files in case the user is upgrading the plugin, but we print
// a message so the user knows in case they want to remove manually
/*
* We preserve the config files in case the user is upgrading the plugin, but we print a
* message so the user knows in case they want to remove manually.
*/
final Path pluginConfigDir = env.configFile().resolve(pluginName);
if (Files.exists(pluginConfigDir)) {
terminal.println(
"-> Preserving plugin config files [" + pluginConfigDir + "] in case of upgrade, delete manually if not needed");
final String message = String.format(
Locale.ROOT,
"-> preserving plugin config files [%s] in case of upgrade; "
+ "delete manually if not needed",
pluginConfigDir);
terminal.println(message);
}
}

View File

@ -79,7 +79,7 @@ public class RemovePluginCommandTests extends ESTestCase {
public void testMissing() throws Exception {
UserException e = expectThrows(UserException.class, () -> removePlugin("dne", home));
assertTrue(e.getMessage(), e.getMessage().contains("plugin dne not found"));
assertTrue(e.getMessage(), e.getMessage().contains("plugin [dne] not found"));
assertRemoveCleaned(env);
}
@ -136,7 +136,7 @@ public class RemovePluginCommandTests extends ESTestCase {
public void testRemoveUninstalledPluginErrors() throws Exception {
UserException e = expectThrows(UserException.class, () -> removePlugin("fake", home));
assertEquals(ExitCodes.CONFIG, e.exitCode);
assertEquals("plugin fake not found; run 'elasticsearch-plugin list' to get list of installed plugins", e.getMessage());
assertEquals("plugin [fake] not found; run 'elasticsearch-plugin list' to get list of installed plugins", e.getMessage());
MockTerminal terminal = new MockTerminal();
new RemovePluginCommand() {
@ -146,8 +146,8 @@ public class RemovePluginCommandTests extends ESTestCase {
}
}.main(new String[] { "-Epath.home=" + home, "fake" }, terminal);
try (BufferedReader reader = new BufferedReader(new StringReader(terminal.getOutput()))) {
assertEquals("-> Removing fake...", reader.readLine());
assertEquals("ERROR: plugin fake not found; run 'elasticsearch-plugin list' to get list of installed plugins",
assertEquals("-> removing [fake]...", reader.readLine());
assertEquals("ERROR: plugin [fake] not found; run 'elasticsearch-plugin list' to get list of installed plugins",
reader.readLine());
assertNull(reader.readLine());
}
@ -160,7 +160,7 @@ public class RemovePluginCommandTests extends ESTestCase {
}
private String expectedConfigDirPreservedMessage(final Path configDir) {
return "-> Preserving plugin config files [" + configDir + "] in case of upgrade, delete manually if not needed";
return "-> preserving plugin config files [" + configDir + "] in case of upgrade; delete manually if not needed";
}
}