From: gumartinm Date: Thu, 26 Jan 2012 23:54:04 +0000 (+0100) Subject: Sorry, committing forgotten changes... X-Git-Url: https://git.gumartinm.name/?a=commitdiff_plain;h=0dd463ba384d780b39aaed01095999fd20e2fde2;p=JavaForFun Sorry, committing forgotten changes... Just deleting files, there is nothing important about this commit. --- diff --git a/JavaFork/Daemon/javafork b/JavaFork/Daemon/javafork deleted file mode 100755 index 7277198..0000000 Binary files a/JavaFork/Daemon/javafork and /dev/null differ diff --git a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkDaemon.java b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkDaemon.java deleted file mode 100644 index 074318f..0000000 --- a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkDaemon.java +++ /dev/null @@ -1,166 +0,0 @@ -package de.fork.java; - -import java.io.IOException; -import java.io.PrintWriter; -import java.net.InetAddress; -import java.net.Socket; -import java.net.UnknownHostException; -import javax.xml.parsers.FactoryConfigurationError; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import org.xml.sax.SAXException; - -/** - *

- * With this class we can run processes using the intended daemon which is - * waiting for TCP connections in a specified port. - *

- *

- * Receiving the results in a XML format from the daemon where we can find three - * kinds of different fields: error, out and ret. Every field is related to the - * stderr, stdout and return code respectively.
- *

- *

- *

- * Example, stream received from daemon:
- * {@code
- * 
- * }
- * 
- *

- *

- * This class has to process the above stream and it offers two methods wich can be used - * to retrieve the stderr and stdout in a right way without having to know about the XML stream - * received from the daemon. The user does not have to know about how the daemon sends the data, - * he or she will work directly with the strings related to each stream. Those methods - * are {@link ForkDaemon#getStdout()} and {@link ForkDaemon#getStderr()} The return code from the command - * executed by the daemon can be retrieved as a return parameter from the method - * {@link ForkDaemon#exec(String, String, int)} - *

- *

- * Instances of this class are mutable. To use them concurrently, clients must surround each - * method invocation (or invocation sequence) with external synchronization of the clients choosing. - *

- */ -public class ForkDaemon { - private final ForkParser handler; - - - /** - * Simple constructor. - * Nothing special here. - * - */ - public ForkDaemon () { - handler = new ForkParser(); - } - - - /** - * This method sends commands to the daemon. - *
- * It uses a TCP connection in order to send commands to the daemon and receive - * the results related to that command. - *
- * The mehtod retrieves the stdout, stderr and the return code of that command. - * - *

The host name can either be a machine name, such as - * "java.sun.com", or a textual representation of its - * IP address. If a literal IP address is supplied, only the - * validity of the address format is checked. - *

- *

For host specified in literal IPv6 address, - * either the form defined in RFC 2732 or the literal IPv6 address - * format defined in RFC 2373 is accepted. IPv6 scoped addresses are also - * supported. See here for a description of IPv6 - * scoped addresses. - *

- * @param command the command to be executed by the daemon. - * @param host the specified host. - * @param port the TCP port where the daemon accepts connections. - * - * @return the executed command's return code. - * - * @throws UnknownHostException if no IP address for the - * host could be found, or if a scope_id was specified - * @throws SecurityException if a security manager exists - * and its checkConnect method doesn't allow the operation - * @throws IOException if an I/O error occurs when creating the socket. - * @throws SAXException - * @throws FactoryConfigurationError if the implementation is not available or cannot be instantiated. - * @throws SAXException If any SAX errors occur during processing. - * @throws ParserConfigurationException - */ - public int exec(final String command, String host, int port) - throws UnknownHostException, IOException, SAXException, ParserConfigurationException { - final SAXParserFactory spf = SAXParserFactory.newInstance(); - final SAXParser saxParser = spf.newSAXParser(); - PrintWriter out = null; - - final Socket socket = new Socket(InetAddress.getByName(host), port); - try { - out = new PrintWriter(socket.getOutputStream(), true); - out.println(command); - saxParser.parse(socket.getInputStream(), handler); - } - finally { - if (out != null) { - out.close(); - } - socket.close(); - } - - //Just for testing the parser by using a file instead of a TCP connection. - //InputSource input = new InputSource(new FileReader("/tmp/xmlfromdaemon.xml")); - //saxParser.parse(input, handler); - - return new Integer(handler.getReturnValue()).intValue(); - } - - - /** - * Retrieve the standard output. - * - * @see {@link ForkDaemon#getStderr()} - * @return stdout - */ - public String getStdout() { - return handler.getStdout(); - } - - - /** - *

- * Retrieve the standard error. - *

- *

- *

-	 * Example, stream received from daemon:
-	 * {@code
-	 * 
-	 * }
-	 * 
- *

- *

- *

-	 * From that example with this method we are going to obtain this return parameter:
-	 * {@code
-	 * ls: no se puede acceder a bbb: No existe el fichero o el directorio
-	 * ls: no se puede acceder a aaa: No existe el fichero o el directorio
-	 * ls: no se puede acceder a dddd: No existe el fichero o el directorio
-	 * }
-	 * 
- *

- * @return stderr - */ - public String getStderr() { - return handler.getStderr(); - } -} \ No newline at end of file diff --git a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkParser.java b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkParser.java deleted file mode 100644 index c20ba15..0000000 --- a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkParser.java +++ /dev/null @@ -1,141 +0,0 @@ -package de.fork.java; - -import org.apache.log4j.Logger; -import org.xml.sax.Attributes; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; -import org.xml.sax.ext.DefaultHandler2; - -/** - *

- * Class intended to parse the XML stream received from the daemon which is - * waiting to run commands. These commands are sent by the method - * {@link es.dia.pos.n2a.util.os.unix.ForkDaemon#exec(String, String, int)} - *

- *

- * After processing one command the daemon sends a XML stream with the stderr, - * stdout and return status of that command. With this class we extract those values - * and we can retrieve them using the methods {@link #getStderr() }, {@link #getStdout()} - * and {@link #getReturnValue()} - *

- *

- *

- * Example, stream received from daemon:
- * {@code
- * 
- * }
- * 
- *

- */ -public class ForkParser extends DefaultHandler2{ - private static final Logger logger = Logger.getLogger(ForkParser.class); - private StringBuffer accumulator = new StringBuffer(); - private String stderr = new String(); - private String stdout = new String(); - private String returnCode = new String(); - - - @Override - public void endElement (String uri, String localName, String qName) { - if (qName.equals("error")) { - // After , we've got the stderror - stderr = stderr + accumulator.toString(); - } else if (qName.equals("out")) { - // After , we've got the stdout - stdout = stdout + accumulator.toString(); - } else if (qName.equals("ret")) { - returnCode = returnCode + accumulator.toString(); - } - } - - - @Override - public void endDocument () throws SAXException - { - if (stderr.length() != 0) { - String lastStderr = stderr.replaceFirst("\\\n$", ""); - stderr = lastStderr; - } - else { - stderr = null; - } - if (stdout.length() != 0) { - String lastStdout = stdout.replaceFirst("\\\n$", ""); - stdout = lastStdout; - } - else { - stdout = null; - } - } - - /** - * Retrieve the standard error. - * - *
-	 * From the above example with this method we are going to obtain this return parameter:
-	 * {@code
-	 * ls: no se puede acceder a bbb: No existe el fichero o el directorio
-	 * ls: no se puede acceder a aaa: No existe el fichero o el directorio
-	 * ls: no se puede acceder a dddd: No existe el fichero o el directorio
-	 * }
-	 * 
- * - * @return stderr - */ - public String getStderr() { - return stderr; - - } - - - /** - * Retrieve the standard output. - * - * @see {@link ForkParser#getStderr()} - * @return stdout - */ - public String getStdout() { - return stdout; - } - - - /** - * Retrieve the return code from the executed command. - * - * @return return status, usually 0 means the command went OK. - */ - public String getReturnValue() { - return returnCode; - } - - - @Override - public void startElement (String uri, String localName, String qName, Attributes attributes) { - accumulator.setLength(0); - } - - - @Override - public void characters(char[] buffer, int start, int length) { - accumulator.append(buffer, start, length); - } - - @Override - public void warning(SAXParseException exception) { - logger.error("WARNING line:" + exception.getLineNumber(), exception); - } - - @Override - public void error(SAXParseException exception) { - logger.error("ERROR line:" + exception.getLineNumber(), exception); - } - - @Override - public void fatalError(SAXParseException exception) throws SAXException { - logger.error("FATAL ERROR line:" + exception.getLineNumber(), exception); - throw (exception); - } -} \ No newline at end of file diff --git a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/LauncherProcesses.java b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/LauncherProcesses.java deleted file mode 100644 index 0f93fe2..0000000 --- a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/LauncherProcesses.java +++ /dev/null @@ -1,275 +0,0 @@ -package de.fork.java; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.PrintStream; -import java.net.UnknownHostException; -import javax.xml.parsers.ParserConfigurationException; -import org.apache.log4j.Logger; -import org.xml.sax.SAXException; - - -public class LauncherProcesses { - - private static final Logger logger = Logger.getLogger(LauncherProcesses.class); - - // Exit process status - private static final int STATUS_ERR = -1; - - private static final int DEFAULT_PORT = 5193; - private static final String DEFAULT_HOST = "127.0.0.1"; - - /** - * Run a process. - * - * @param command system command to be executed. - * - * @return return code. - */ - public static int exec(final String command) throws IOException, InterruptedException { - - return exec(command, null, null); - } - - /** - * Run a process. - * - * @param command system command to execute. - * @param standarOutPut if not null, the standard output is redirected to this parameter. - * - * @return return code. - */ - public static int exec(final String command, final PrintStream standarOutPut) throws IOException, InterruptedException { - - return exec(command, standarOutPut, null); - } - - - /** - * Run a process. - * - * @param command system command to be executed. - * @param standarOutPut if not null, the standard output is redirected to this parameter. - * @param errorOutPut if not null, the error output is redirected to this parameter. - * - * @return return code from the executed system command. - */ - public static int exec(final String command, final PrintStream standarOutPut, final PrintStream errorOutPut) throws IOException, InterruptedException { - - return exec(command, standarOutPut, errorOutPut, DEFAULT_HOST, DEFAULT_PORT); - } - - /** - * Run a process. - * - * @param command system command to be executed. - * @param aLogger send the information to log. - */ - public static int exec(final String command, final Logger aLogger) throws IOException, InterruptedException { - - //calling private method to handle logger input/ouput in a common method - return execHandlingLogger(command, aLogger, DEFAULT_HOST, DEFAULT_PORT); - } - - - /** - * @param commandAndArguments String array containing system command and its - * arguments to be executed.
- * For example: - *
-	 * commandAndArguments[0]="ls";
-	 * commandAndArguments[1]="-lr";
-	 * 
- * @param aLogger - * - * @return return code from the executed system command. - * - * @throws IOException - * @throws InterruptedException - */ - public static int exec(final String[] commandAndArguments, final Logger aLogger) throws IOException, InterruptedException { - String wholeCommand=""; - - for(String argument : commandAndArguments) { - wholeCommand = wholeCommand + " " + argument; - } - - //calling private method to handle logger input/ouput in a common method - return execHandlingLogger(wholeCommand, aLogger, DEFAULT_HOST, DEFAULT_PORT); - } - - - /** - * - * @param command system command to be executed. - * @param standarOutPut the stdout stream from that command as a PrintStream - * @param errorOutPut the stderr stream from that command as a PrintStream - * @param host the specified host. - * @param port the TCP port where the daemon accepts connections. - * - *

The host name can either be a machine name, such as - * "java.sun.com", or a textual representation of its - * IP address. If a literal IP address is supplied, only the - * validity of the address format is checked. - *

- *

For host specified in literal IPv6 address, - * either the form defined in RFC 2732 or the literal IPv6 address - * format defined in RFC 2373 is accepted. IPv6 scoped addresses are also - * supported. See here for a description of IPv6 - * scoped addresses. - *

- * - * @return the executed command's return code. - * - * @throws UnknownHostException - * @throws IOException - */ - public static int exec(final String command, final PrintStream standarOutPut, - final PrintStream errorOutPut, final String host, int port) throws IOException { - int exitStatus = LauncherProcesses.STATUS_ERR; - - ForkDaemon process = new ForkDaemon(); - try { - exitStatus = process.exec(command, host, port); - } catch (SAXException e) { - // This is not a crazy thing, we are trying to insert this new method without - // breaking the old methods which did not throw SAXException or ParserConfigurationException - //[§EJ Item 61] Do not blame me. - throw new IOException(e); - } catch (ParserConfigurationException e) { - // This is not a crazy thing, we are trying to insert this new method without - // breaking the old methods which did not throw SAXException or ParserConfigurationException - //[§EJ Item 61] Do not blame me. - throw new IOException(e); - } - - if (standarOutPut != null) { - if (process.getStdout() != null) { - standarOutPut.println(process.getStdout()); - } - } - - if (errorOutPut != null) { - if (process.getStderr() != null) { - errorOutPut.println(process.getStderr()); - } - } - - return exitStatus; - } - - - /** - * - * @param command system command to be executed. - * @param aLogger - * @param host the specified host. - * @param port the TCP port where the daemon accepts connections. - * - * @return the executed command's return code. - * - * @throws IOException - * @throws InterruptedException - */ - private static int execHandlingLogger(final String command, final Logger aLogger, - final String host, int port) throws IOException, InterruptedException { - int exitStatus = LauncherProcesses.STATUS_ERR; - - ForkDaemon process = new ForkDaemon(); - try { - exitStatus = process.exec(command, host, port); - } catch (SAXException e) { - // This is not a crazy thing, we are trying to insert this new method without - // breaking the old methods which did not throw SAXException or ParserConfigurationException - // Do not blame me. - throw new IOException(e); - } catch (ParserConfigurationException e) { - // This is not a crazy thing, we are trying to insert this new method without - // breaking the old methods which did not throw SAXException or ParserConfigurationException - // Do not blame me. - throw new IOException(e); - } - - if (process.getStdout() != null) { - aLogger.info(process.getStdout()); - } - if (process.getStderr() != null) { - aLogger.error(process.getStderr()); - } - - return exitStatus; - } - - - /** - * @param command command and its arguments to be executed.
- * For example: - *
-	 * commandAndArguments[0]="ls";
-	 * commandAndArguments[1]="-lr";
-	 * 
- * @param aLogger send information to log - * - * @return the executed command's return code. - * - * @throws IOException - * @throws InterruptedException - */ - public static InputStream execStream (final String [] command, final Logger aLogger) - throws IOException, InterruptedException { - int exitStatus = LauncherProcesses.STATUS_ERR; - - InputStream stdInput = null; - - String wholeCommand=""; - for(String argument : command) { - wholeCommand = wholeCommand + " " + argument; - } - - ForkDaemon process = new ForkDaemon(); - try { - exitStatus = process.exec(wholeCommand, DEFAULT_HOST, DEFAULT_PORT); - } catch (SAXException e) { - // This is not a crazy thing, we are trying to insert this new method without - // breaking the old methods which did not throw SAXException or ParserConfigurationException - throw new IOException(e); - } catch (ParserConfigurationException e) { - // This is not a crazy thing, we are trying to insert this new method without - // breaking the old methods which did not throw SAXException or ParserConfigurationException - throw new IOException(e); - } - - if(exitStatus == 0) { - stdInput = new ByteArrayInputStream(process.getStdout().getBytes("UTF-8")); - } - else { - aLogger.error(process.getStderr()); - } - - - return stdInput; - } - - /** - *

The command is lunched from location - *

  • #>cd location
  • - *
  • #location> command
  • - * - * @param command the command to be executed by the daemon. - * @param location - * - * @return the executed command's return code.
    - * Usually 0 if execution is OK, otherwise !=0 - * - * @throws IOException - * @throws InterruptedException - */ - public static int execInLocation (final String command, final String location) throws IOException, InterruptedException { - int exitStatus = LauncherProcesses.STATUS_ERR; - final String wholeCommand = "cd " + location + " && " + command; - - exitStatus = exec(wholeCommand, null, null, DEFAULT_HOST, DEFAULT_PORT); - return exitStatus; - } -} \ No newline at end of file diff --git a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/MainJavaFork.java b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/MainJavaFork.java deleted file mode 100644 index a422cdd..0000000 --- a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/MainJavaFork.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.fork.java; - -import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.PrintStream; -import javax.xml.parsers.ParserConfigurationException; -import org.xml.sax.SAXException; - - -public class MainJavaFork { - - /** - * @param args - * @throws SAXException - * @throws ParserConfigurationException - * @throws FileNotFoundException - */ - public static void main(String[] args) - throws ParserConfigurationException, SAXException, FileNotFoundException, IOException { - - final ByteArrayOutputStream stdoutByteOut = new ByteArrayOutputStream(); - final PrintStream stdout = new PrintStream(stdoutByteOut); - final String command = "/home/gustavo/github/JavaForFun/JavaFork/Daemon/script.sh"; - final ByteArrayOutputStream stderrByteOut = new ByteArrayOutputStream(); - final PrintStream stderr = new PrintStream(stderrByteOut); - int result; - - result = LauncherProcesses.exec(command,stdout, stderr, "127.0.0.1", 5193); - System.out.println(result); - System.out.println("Stdout: " + stdoutByteOut.toString()); - System.out.println("Stderr: " + stderrByteOut.toString()); - } - -} \ No newline at end of file