All Downloads are FREE. Search and download functionalities are using the official Maven repository.

codegen.templates.org.unix4j.builder.Unix4jCommandBuilder Maven / Gradle / Ivy

There is a newer version: 0.6
Show newest version
<#include "/include/builder-method-javadoc.fmpp">
package org.unix4j.builder;

import org.unix4j.builder.CommandBuilder;
import org.unix4j.command.Command;
import org.unix4j.operation.LineOperation;

<#foreach def in commandDefs> 
import ${def.command.pkg.name}.${def.command.simpleName};
<#if def.options?size != 0>
import ${def.pkg.name}.${def.command.simpleName}Options;



/**
 * Builder for a unix4j command or a chain of joined commands. 
 * Application code does usually not directly refer to this class but uses it 
 * indirectly through the static methods in {@link org.unix4j.Unix4j Unix4j}.
 * 

* Note that the command creation methods do not return a new command instance. * Instead, the builder stores the created commands and only returns a * {@link Command} object when the {@link #build()} method is invoked. Most * applications, however, need not to call {@code build()} explicitly. The * command can be built and executed in a single step by calling one of the * {@code toXXX(..)} methods, such as {@link #toStdOut()}, * {@link #toFile(String)} or {@link #toStringResult()}. *

* The {@link Command} object returned by the {@link #build()} method can * represent a single command or a chain of commands. In a command chain, the * previous command usually pipes its output as standard input into the * next command (the pipe symbol between two commands in unix). For come * commands, however, chaining has a different interpretation. An example is the * {@code xargs} command: here, the next command after {@code xargs} receives * arguments from {@code xargs} instead of (standard) input. */ public interface Unix4jCommandBuilder extends CommandBuilder, <#foreach def in commandDefs> ${def.command.simpleName}.Interface<#if def_has_next>,<#else> { <#foreach def in commandDefs> /* ------------------ ${def.commandName} ------------------ */ <#foreach method in def.methods> <@builderMethodJavadoc def method/> @Override Unix4jCommandBuilder ${method.name}(<#foreach arg in method.args>${def.operands[arg].type} ${arg}<#if arg_has_next>, ); //override with specialized return type @Override Unix4jCommandBuilder join(Command command); //override with specialized return type @Override Unix4jCommandBuilder apply(LineOperation operation); //override with specialized return type @Override Unix4jCommandBuilder reset(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy