下面列出了怎么用org.apache.hadoop.fs.shell.CommandFactory的API类实例代码及写法,或者点击链接到github查看源代码。
protected void registerCommands(CommandFactory factory) {
// TODO: DFSAdmin subclasses FsShell so need to protect the command
// registration. This class should morph into a base class for
// commands, and then this method can be abstract
if (this.getClass().equals(OzoneFsShell.class)) {
factory.registerCommands(FsCommand.class);
}
}
@Test
@Ignore
public void generateMethods() {
final CommandFactory commandFactory = new CommandFactory(new Configuration());
FsCommand.registerCommands(commandFactory);
final String[] names = commandFactory.getNames();
final String collect = Arrays.stream(names).map(item -> "\"" + item.replace("-", "") + "\"").collect(Collectors.joining(","));
System.out.println(collect);
Arrays.stream(names).map(commandFactory::getInstance).forEach(item -> {
String description = "";
final String[] sentences = item.getDescription().split("\\.");
if (sentences.length == 0) {
description = item.getDescription();
} else {
description = sentences[0] + ".";
}
String cliCommand = String.format("@CliCommand(value = {\"%s\", \"hdfs dfs -%s\"}, help = \"%s\")", item.getCommandName(), item.getCommandName(), description);
String content = String.format(" public String %s(\n" +
" @CliOption(key = {\"\"}, help = \"%s\") String path\n" +
" ) {\n" +
" return runCommand(\"%s\", path);\n" +
" }\n", item.getCommandName(), description, item.getCommandName());
System.out.println(cliCommand);
System.out.println(content);
System.out.println();
});
}
protected void registerCommands(CommandFactory factory) {
// TODO: DFSAdmin subclasses FsShell so need to protect the command
// registration. This class should morph into a base class for
// commands, and then this method can be abstract
if (this.getClass().equals(FsShell.class)) {
factory.registerCommands(FsCommand.class);
}
}
protected void registerCommands(CommandFactory factory) {
// TODO: DFSAdmin subclasses FsShell so need to protect the command
// registration. This class should morph into a base class for
// commands, and then this method can be abstract
if (this.getClass().equals(FsShell.class)) {
factory.registerCommands(FsCommand.class);
}
}
private static Command getCommandInstance(String cmdName, Configuration conf) {
final CommandFactory commandFactory = new CommandFactory(conf);
FsCommand.registerCommands(commandFactory);
return commandFactory.getInstance(cmdName, conf);
}
/**
* Register the permission related commands with the factory
* @param factory the command factory
*/
public static void registerCommands(CommandFactory factory) {
factory.addClass(Chmod.class, "-chmod");
factory.addClass(Chown.class, "-chown");
factory.addClass(Chgrp.class, "-chgrp");
}
/**
* Register the permission related commands with the factory
* @param factory the command factory
*/
public static void registerCommands(CommandFactory factory) {
factory.addClass(Chmod.class, "-chmod");
factory.addClass(Chown.class, "-chown");
factory.addClass(Chgrp.class, "-chgrp");
}
/** sets the command factory for later use */
public void setCommandFactory(CommandFactory factory) { // FIXME FsShell should call this
this.commandFactory = factory;
}
/** retrieves the command factory */
protected CommandFactory getCommandFactory() {
return this.commandFactory;
}
@Override
protected void registerCommands(CommandFactory factory) {
super.registerCommands(factory);
factory.registerCommands(Find.class);
}
/**
* Set the command factory.
*
* @param factory {@link CommandFactory}
*/
public void setCommandFactory(CommandFactory factory) {
this.commandFactory = factory;
}
/**
* Return the command factory.
*
* @return {@link CommandFactory}
*/
public CommandFactory getCommandFactory() {
return this.commandFactory;
}
/**
* Register the names for the count command
*
* @param factory the command factory that will instantiate this class
*/
public static void registerCommands(CommandFactory factory) {
factory.addClass(Find.class, "-find");
}
/**
* Set the command factory.
*
* @param factory {@link CommandFactory}
*/
public void setCommandFactory(CommandFactory factory) {
this.commandFactory = factory;
}
/**
* Return the command factory.
*
* @return {@link CommandFactory}
*/
public CommandFactory getCommandFactory() {
return this.commandFactory;
}
/**
* Register the names for the count command
*
* @param factory the command factory that will instantiate this class
*/
public static void registerCommands(CommandFactory factory) {
factory.addClass(Find.class, "-find");
}
/**
* Register the names for the count command
* @param factory the command factory that will instantiate this class
*/
public static void registerCommands(CommandFactory factory) {
factory.addClass(Find.class, "-find");
}
/**
* Set the command factory.
* @param factory {@link CommandFactory}
*/
public void setCommandFactory(CommandFactory factory) {
this.commandFactory = factory;
}
/**
* Return the command factory.
* @return {@link CommandFactory}
*/
public CommandFactory getCommandFactory() {
return this.commandFactory;
}