git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270594 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -17,9 +17,10 @@ import java.util.Iterator; | |||
| import java.util.StringTokenizer; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.Os; | |||
| import org.apache.myrmidon.framework.exec.ExecOutputHandler; | |||
| import org.apache.tools.ant.DirectoryScanner; | |||
| import org.apache.tools.ant.Task; | |||
| import org.apache.tools.ant.taskdefs.exec.Execute; | |||
| import org.apache.tools.ant.taskdefs.exec.Execute2; | |||
| import org.apache.tools.ant.types.Commandline; | |||
| import org.apache.tools.ant.types.FileSet; | |||
| import org.apache.tools.ant.types.Path; | |||
| @@ -59,6 +60,7 @@ import org.apache.tools.ant.types.Path; | |||
| public class Javadoc | |||
| extends Task | |||
| implements ExecOutputHandler | |||
| { | |||
| private Commandline m_command = new Commandline(); | |||
| @@ -544,8 +546,8 @@ public class Javadoc | |||
| m_command.createArgument().setValue( m_bottom.getText() ); | |||
| } | |||
| Commandline toExecute = (Commandline)m_command.clone(); | |||
| toExecute.setExecutable( getJavadocExecutableName() ); | |||
| Commandline cmd = (Commandline)m_command.clone(); | |||
| cmd.setExecutable( getJavadocExecutableName() ); | |||
| // ------------------------------------------------ general javadoc arguments | |||
| if( m_classpath == null ) | |||
| @@ -553,14 +555,14 @@ public class Javadoc | |||
| else | |||
| m_classpath = m_classpath.concatSystemClasspath( "ignore" ); | |||
| toExecute.createArgument().setValue( "-classpath" ); | |||
| toExecute.createArgument().setValue( m_sourcePath.toString() + | |||
| System.getProperty( "path.separator" ) + m_classpath.toString() ); | |||
| cmd.createArgument().setValue( "-classpath" ); | |||
| cmd.createArgument().setValue( m_sourcePath.toString() + | |||
| System.getProperty( "path.separator" ) + m_classpath.toString() ); | |||
| if( m_version && m_doclet == null ) | |||
| toExecute.createArgument().setValue( "-version" ); | |||
| cmd.createArgument().setValue( "-version" ); | |||
| if( m_author && m_doclet == null ) | |||
| toExecute.createArgument().setValue( "-author" ); | |||
| cmd.createArgument().setValue( "-author" ); | |||
| if( m_doclet == null ) | |||
| { | |||
| @@ -583,12 +585,12 @@ public class Javadoc | |||
| } | |||
| else | |||
| { | |||
| toExecute.createArgument().setValue( "-doclet" ); | |||
| toExecute.createArgument().setValue( m_doclet.getName() ); | |||
| cmd.createArgument().setValue( "-doclet" ); | |||
| cmd.createArgument().setValue( m_doclet.getName() ); | |||
| if( m_doclet.getPath() != null ) | |||
| { | |||
| toExecute.createArgument().setValue( "-docletpath" ); | |||
| toExecute.createArgument().setPath( m_doclet.getPath() ); | |||
| cmd.createArgument().setValue( "-docletpath" ); | |||
| cmd.createArgument().setPath( m_doclet.getPath() ); | |||
| } | |||
| for( Iterator e = m_doclet.getParams(); e.hasNext(); ) | |||
| { | |||
| @@ -598,18 +600,18 @@ public class Javadoc | |||
| throw new TaskException( "Doclet parameters must have a name" ); | |||
| } | |||
| toExecute.createArgument().setValue( param.getName() ); | |||
| cmd.createArgument().setValue( param.getName() ); | |||
| if( param.getValue() != null ) | |||
| { | |||
| toExecute.createArgument().setValue( param.getValue() ); | |||
| cmd.createArgument().setValue( param.getValue() ); | |||
| } | |||
| } | |||
| } | |||
| if( m_bootclasspath != null ) | |||
| { | |||
| toExecute.createArgument().setValue( "-bootclasspath" ); | |||
| toExecute.createArgument().setPath( m_bootclasspath ); | |||
| cmd.createArgument().setValue( "-bootclasspath" ); | |||
| cmd.createArgument().setPath( m_bootclasspath ); | |||
| } | |||
| // add the links arguments | |||
| @@ -635,9 +637,9 @@ public class Javadoc | |||
| File packageList = new File( packageListLocation, "package-list" ); | |||
| if( packageList.exists() ) | |||
| { | |||
| toExecute.createArgument().setValue( "-linkoffline" ); | |||
| toExecute.createArgument().setValue( la.getHref() ); | |||
| toExecute.createArgument().setValue( packageListLocation.getAbsolutePath() ); | |||
| cmd.createArgument().setValue( "-linkoffline" ); | |||
| cmd.createArgument().setValue( la.getHref() ); | |||
| cmd.createArgument().setValue( packageListLocation.getAbsolutePath() ); | |||
| } | |||
| else | |||
| { | |||
| @@ -646,8 +648,8 @@ public class Javadoc | |||
| } | |||
| else | |||
| { | |||
| toExecute.createArgument().setValue( "-link" ); | |||
| toExecute.createArgument().setValue( la.getHref() ); | |||
| cmd.createArgument().setValue( "-link" ); | |||
| cmd.createArgument().setValue( la.getHref() ); | |||
| } | |||
| } | |||
| } | |||
| @@ -674,9 +676,9 @@ public class Javadoc | |||
| { | |||
| String name = grp.substring( 0, space ); | |||
| String pkgList = grp.substring( space + 1 ); | |||
| toExecute.createArgument().setValue( "-group" ); | |||
| toExecute.createArgument().setValue( name ); | |||
| toExecute.createArgument().setValue( pkgList ); | |||
| cmd.createArgument().setValue( "-group" ); | |||
| cmd.createArgument().setValue( name ); | |||
| cmd.createArgument().setValue( pkgList ); | |||
| } | |||
| } | |||
| } | |||
| @@ -693,9 +695,9 @@ public class Javadoc | |||
| { | |||
| throw new TaskException( "The title and packages must be specified for group elements." ); | |||
| } | |||
| toExecute.createArgument().setValue( "-group" ); | |||
| toExecute.createArgument().setValue( title ); | |||
| toExecute.createArgument().setValue( packages ); | |||
| cmd.createArgument().setValue( "-group" ); | |||
| cmd.createArgument().setValue( title ); | |||
| cmd.createArgument().setValue( packages ); | |||
| } | |||
| } | |||
| @@ -716,7 +718,7 @@ public class Javadoc | |||
| } | |||
| else | |||
| { | |||
| toExecute.createArgument().setValue( name ); | |||
| cmd.createArgument().setValue( name ); | |||
| } | |||
| } | |||
| @@ -732,7 +734,7 @@ public class Javadoc | |||
| } | |||
| if( packages.size() > 0 ) | |||
| { | |||
| evaluatePackages( toExecute, m_sourcePath, packages, excludePackages ); | |||
| evaluatePackages( cmd, m_sourcePath, packages, excludePackages ); | |||
| } | |||
| } | |||
| @@ -750,7 +752,7 @@ public class Javadoc | |||
| if( m_tmpList == null ) | |||
| { | |||
| m_tmpList = File.createTempFile( "javadoc", "", getBaseDirectory() ); | |||
| toExecute.createArgument().setValue( "@" + m_tmpList.getAbsolutePath() ); | |||
| cmd.createArgument().setValue( "@" + m_tmpList.getAbsolutePath() ); | |||
| } | |||
| srcListWriter = new PrintWriter( new FileWriter( m_tmpList.getAbsolutePath(), | |||
| true ) ); | |||
| @@ -767,7 +769,7 @@ public class Javadoc | |||
| } | |||
| else | |||
| { | |||
| toExecute.createArgument().setValue( sourceFileName ); | |||
| cmd.createArgument().setValue( sourceFileName ); | |||
| } | |||
| } | |||
| @@ -787,17 +789,15 @@ public class Javadoc | |||
| if( m_packageList != null ) | |||
| { | |||
| toExecute.createArgument().setValue( "@" + m_packageList ); | |||
| cmd.createArgument().setValue( "@" + m_packageList ); | |||
| } | |||
| getLogger().debug( "Javadoc args: " + toExecute ); | |||
| getLogger().debug( "Javadoc args: " + cmd ); | |||
| getLogger().info( "Javadoc execution" ); | |||
| final JavadocOutputStream out = new JavadocOutputStream( getLogger(), false ); | |||
| final JavadocOutputStream err = new JavadocOutputStream( getLogger(), true ); | |||
| Execute exe = new Execute(); | |||
| exe.setOutput( out ); | |||
| exe.setError( err ); | |||
| final Execute2 exe = new Execute2(); | |||
| setupLogger( exe ); | |||
| exe.setExecOutputHandler( this ); | |||
| /* | |||
| * No reason to change the working directory as all filenames and | |||
| @@ -808,7 +808,7 @@ public class Javadoc | |||
| exe.setWorkingDirectory( null ); | |||
| try | |||
| { | |||
| exe.setCommandline( toExecute.getCommandline() ); | |||
| exe.setCommandline( cmd.getCommandline() ); | |||
| final int ret = exe.execute(); | |||
| if( ret != 0 ) | |||
| { | |||
| @@ -827,17 +827,6 @@ public class Javadoc | |||
| m_tmpList.delete(); | |||
| m_tmpList = null; | |||
| } | |||
| try | |||
| { | |||
| out.flush(); | |||
| err.flush(); | |||
| out.close(); | |||
| err.close(); | |||
| } | |||
| catch( IOException e ) | |||
| { | |||
| } | |||
| } | |||
| } | |||
| @@ -1028,4 +1017,29 @@ public class Javadoc | |||
| } | |||
| } | |||
| } | |||
| /** | |||
| * Receive notification about the process writing | |||
| * to standard output. | |||
| */ | |||
| public void stdout( final String line ) | |||
| { | |||
| if( line.startsWith( "Generating " ) || line.startsWith( "Building " ) ) | |||
| { | |||
| getLogger().debug( line ); | |||
| } | |||
| else | |||
| { | |||
| getLogger().info( line ); | |||
| } | |||
| } | |||
| /** | |||
| * Receive notification about the process writing | |||
| * to standard error. | |||
| */ | |||
| public void stderr( final String line ) | |||
| { | |||
| getLogger().warn( line ); | |||
| } | |||
| } | |||
| @@ -1,54 +0,0 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.javadoc; | |||
| import org.apache.avalon.framework.logger.Logger; | |||
| import org.apache.tools.ant.taskdefs.exec.LogOutputStream; | |||
| class JavadocOutputStream | |||
| extends LogOutputStream | |||
| { | |||
| // Override the logging of output in order to filter out Generating | |||
| // messages. Generating messages are set to a priority of VERBOSE | |||
| // unless they appear after what could be an informational message. | |||
| // | |||
| private String m_queuedLine; | |||
| JavadocOutputStream( final Logger logger, final boolean isError ) | |||
| { | |||
| super( logger, isError ); | |||
| } | |||
| protected void processLine( final String line ) | |||
| { | |||
| if( !isError() && line.startsWith( "Generating " ) ) | |||
| { | |||
| if( m_queuedLine != null ) | |||
| { | |||
| getLogger().debug( m_queuedLine ); | |||
| } | |||
| m_queuedLine = line; | |||
| } | |||
| else | |||
| { | |||
| if( m_queuedLine != null ) | |||
| { | |||
| if( line.startsWith( "Building " ) ) | |||
| { | |||
| getLogger().debug( m_queuedLine ); | |||
| } | |||
| else | |||
| { | |||
| getLogger().info( m_queuedLine ); | |||
| } | |||
| m_queuedLine = null; | |||
| } | |||
| getLogger().warn( line ); | |||
| } | |||
| } | |||
| } | |||
| @@ -17,9 +17,10 @@ import java.util.Iterator; | |||
| import java.util.StringTokenizer; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.Os; | |||
| import org.apache.myrmidon.framework.exec.ExecOutputHandler; | |||
| import org.apache.tools.ant.DirectoryScanner; | |||
| import org.apache.tools.ant.Task; | |||
| import org.apache.tools.ant.taskdefs.exec.Execute; | |||
| import org.apache.tools.ant.taskdefs.exec.Execute2; | |||
| import org.apache.tools.ant.types.Commandline; | |||
| import org.apache.tools.ant.types.FileSet; | |||
| import org.apache.tools.ant.types.Path; | |||
| @@ -59,6 +60,7 @@ import org.apache.tools.ant.types.Path; | |||
| public class Javadoc | |||
| extends Task | |||
| implements ExecOutputHandler | |||
| { | |||
| private Commandline m_command = new Commandline(); | |||
| @@ -544,8 +546,8 @@ public class Javadoc | |||
| m_command.createArgument().setValue( m_bottom.getText() ); | |||
| } | |||
| Commandline toExecute = (Commandline)m_command.clone(); | |||
| toExecute.setExecutable( getJavadocExecutableName() ); | |||
| Commandline cmd = (Commandline)m_command.clone(); | |||
| cmd.setExecutable( getJavadocExecutableName() ); | |||
| // ------------------------------------------------ general javadoc arguments | |||
| if( m_classpath == null ) | |||
| @@ -553,14 +555,14 @@ public class Javadoc | |||
| else | |||
| m_classpath = m_classpath.concatSystemClasspath( "ignore" ); | |||
| toExecute.createArgument().setValue( "-classpath" ); | |||
| toExecute.createArgument().setValue( m_sourcePath.toString() + | |||
| System.getProperty( "path.separator" ) + m_classpath.toString() ); | |||
| cmd.createArgument().setValue( "-classpath" ); | |||
| cmd.createArgument().setValue( m_sourcePath.toString() + | |||
| System.getProperty( "path.separator" ) + m_classpath.toString() ); | |||
| if( m_version && m_doclet == null ) | |||
| toExecute.createArgument().setValue( "-version" ); | |||
| cmd.createArgument().setValue( "-version" ); | |||
| if( m_author && m_doclet == null ) | |||
| toExecute.createArgument().setValue( "-author" ); | |||
| cmd.createArgument().setValue( "-author" ); | |||
| if( m_doclet == null ) | |||
| { | |||
| @@ -583,12 +585,12 @@ public class Javadoc | |||
| } | |||
| else | |||
| { | |||
| toExecute.createArgument().setValue( "-doclet" ); | |||
| toExecute.createArgument().setValue( m_doclet.getName() ); | |||
| cmd.createArgument().setValue( "-doclet" ); | |||
| cmd.createArgument().setValue( m_doclet.getName() ); | |||
| if( m_doclet.getPath() != null ) | |||
| { | |||
| toExecute.createArgument().setValue( "-docletpath" ); | |||
| toExecute.createArgument().setPath( m_doclet.getPath() ); | |||
| cmd.createArgument().setValue( "-docletpath" ); | |||
| cmd.createArgument().setPath( m_doclet.getPath() ); | |||
| } | |||
| for( Iterator e = m_doclet.getParams(); e.hasNext(); ) | |||
| { | |||
| @@ -598,18 +600,18 @@ public class Javadoc | |||
| throw new TaskException( "Doclet parameters must have a name" ); | |||
| } | |||
| toExecute.createArgument().setValue( param.getName() ); | |||
| cmd.createArgument().setValue( param.getName() ); | |||
| if( param.getValue() != null ) | |||
| { | |||
| toExecute.createArgument().setValue( param.getValue() ); | |||
| cmd.createArgument().setValue( param.getValue() ); | |||
| } | |||
| } | |||
| } | |||
| if( m_bootclasspath != null ) | |||
| { | |||
| toExecute.createArgument().setValue( "-bootclasspath" ); | |||
| toExecute.createArgument().setPath( m_bootclasspath ); | |||
| cmd.createArgument().setValue( "-bootclasspath" ); | |||
| cmd.createArgument().setPath( m_bootclasspath ); | |||
| } | |||
| // add the links arguments | |||
| @@ -635,9 +637,9 @@ public class Javadoc | |||
| File packageList = new File( packageListLocation, "package-list" ); | |||
| if( packageList.exists() ) | |||
| { | |||
| toExecute.createArgument().setValue( "-linkoffline" ); | |||
| toExecute.createArgument().setValue( la.getHref() ); | |||
| toExecute.createArgument().setValue( packageListLocation.getAbsolutePath() ); | |||
| cmd.createArgument().setValue( "-linkoffline" ); | |||
| cmd.createArgument().setValue( la.getHref() ); | |||
| cmd.createArgument().setValue( packageListLocation.getAbsolutePath() ); | |||
| } | |||
| else | |||
| { | |||
| @@ -646,8 +648,8 @@ public class Javadoc | |||
| } | |||
| else | |||
| { | |||
| toExecute.createArgument().setValue( "-link" ); | |||
| toExecute.createArgument().setValue( la.getHref() ); | |||
| cmd.createArgument().setValue( "-link" ); | |||
| cmd.createArgument().setValue( la.getHref() ); | |||
| } | |||
| } | |||
| } | |||
| @@ -674,9 +676,9 @@ public class Javadoc | |||
| { | |||
| String name = grp.substring( 0, space ); | |||
| String pkgList = grp.substring( space + 1 ); | |||
| toExecute.createArgument().setValue( "-group" ); | |||
| toExecute.createArgument().setValue( name ); | |||
| toExecute.createArgument().setValue( pkgList ); | |||
| cmd.createArgument().setValue( "-group" ); | |||
| cmd.createArgument().setValue( name ); | |||
| cmd.createArgument().setValue( pkgList ); | |||
| } | |||
| } | |||
| } | |||
| @@ -693,9 +695,9 @@ public class Javadoc | |||
| { | |||
| throw new TaskException( "The title and packages must be specified for group elements." ); | |||
| } | |||
| toExecute.createArgument().setValue( "-group" ); | |||
| toExecute.createArgument().setValue( title ); | |||
| toExecute.createArgument().setValue( packages ); | |||
| cmd.createArgument().setValue( "-group" ); | |||
| cmd.createArgument().setValue( title ); | |||
| cmd.createArgument().setValue( packages ); | |||
| } | |||
| } | |||
| @@ -716,7 +718,7 @@ public class Javadoc | |||
| } | |||
| else | |||
| { | |||
| toExecute.createArgument().setValue( name ); | |||
| cmd.createArgument().setValue( name ); | |||
| } | |||
| } | |||
| @@ -732,7 +734,7 @@ public class Javadoc | |||
| } | |||
| if( packages.size() > 0 ) | |||
| { | |||
| evaluatePackages( toExecute, m_sourcePath, packages, excludePackages ); | |||
| evaluatePackages( cmd, m_sourcePath, packages, excludePackages ); | |||
| } | |||
| } | |||
| @@ -750,7 +752,7 @@ public class Javadoc | |||
| if( m_tmpList == null ) | |||
| { | |||
| m_tmpList = File.createTempFile( "javadoc", "", getBaseDirectory() ); | |||
| toExecute.createArgument().setValue( "@" + m_tmpList.getAbsolutePath() ); | |||
| cmd.createArgument().setValue( "@" + m_tmpList.getAbsolutePath() ); | |||
| } | |||
| srcListWriter = new PrintWriter( new FileWriter( m_tmpList.getAbsolutePath(), | |||
| true ) ); | |||
| @@ -767,7 +769,7 @@ public class Javadoc | |||
| } | |||
| else | |||
| { | |||
| toExecute.createArgument().setValue( sourceFileName ); | |||
| cmd.createArgument().setValue( sourceFileName ); | |||
| } | |||
| } | |||
| @@ -787,17 +789,15 @@ public class Javadoc | |||
| if( m_packageList != null ) | |||
| { | |||
| toExecute.createArgument().setValue( "@" + m_packageList ); | |||
| cmd.createArgument().setValue( "@" + m_packageList ); | |||
| } | |||
| getLogger().debug( "Javadoc args: " + toExecute ); | |||
| getLogger().debug( "Javadoc args: " + cmd ); | |||
| getLogger().info( "Javadoc execution" ); | |||
| final JavadocOutputStream out = new JavadocOutputStream( getLogger(), false ); | |||
| final JavadocOutputStream err = new JavadocOutputStream( getLogger(), true ); | |||
| Execute exe = new Execute(); | |||
| exe.setOutput( out ); | |||
| exe.setError( err ); | |||
| final Execute2 exe = new Execute2(); | |||
| setupLogger( exe ); | |||
| exe.setExecOutputHandler( this ); | |||
| /* | |||
| * No reason to change the working directory as all filenames and | |||
| @@ -808,7 +808,7 @@ public class Javadoc | |||
| exe.setWorkingDirectory( null ); | |||
| try | |||
| { | |||
| exe.setCommandline( toExecute.getCommandline() ); | |||
| exe.setCommandline( cmd.getCommandline() ); | |||
| final int ret = exe.execute(); | |||
| if( ret != 0 ) | |||
| { | |||
| @@ -827,17 +827,6 @@ public class Javadoc | |||
| m_tmpList.delete(); | |||
| m_tmpList = null; | |||
| } | |||
| try | |||
| { | |||
| out.flush(); | |||
| err.flush(); | |||
| out.close(); | |||
| err.close(); | |||
| } | |||
| catch( IOException e ) | |||
| { | |||
| } | |||
| } | |||
| } | |||
| @@ -1028,4 +1017,29 @@ public class Javadoc | |||
| } | |||
| } | |||
| } | |||
| /** | |||
| * Receive notification about the process writing | |||
| * to standard output. | |||
| */ | |||
| public void stdout( final String line ) | |||
| { | |||
| if( line.startsWith( "Generating " ) || line.startsWith( "Building " ) ) | |||
| { | |||
| getLogger().debug( line ); | |||
| } | |||
| else | |||
| { | |||
| getLogger().info( line ); | |||
| } | |||
| } | |||
| /** | |||
| * Receive notification about the process writing | |||
| * to standard error. | |||
| */ | |||
| public void stderr( final String line ) | |||
| { | |||
| getLogger().warn( line ); | |||
| } | |||
| } | |||
| @@ -1,54 +0,0 @@ | |||
| /* | |||
| * Copyright (C) The Apache Software Foundation. All rights reserved. | |||
| * | |||
| * This software is published under the terms of the Apache Software License | |||
| * version 1.1, a copy of which has been included with this distribution in | |||
| * the LICENSE.txt file. | |||
| */ | |||
| package org.apache.tools.ant.taskdefs.javadoc; | |||
| import org.apache.avalon.framework.logger.Logger; | |||
| import org.apache.tools.ant.taskdefs.exec.LogOutputStream; | |||
| class JavadocOutputStream | |||
| extends LogOutputStream | |||
| { | |||
| // Override the logging of output in order to filter out Generating | |||
| // messages. Generating messages are set to a priority of VERBOSE | |||
| // unless they appear after what could be an informational message. | |||
| // | |||
| private String m_queuedLine; | |||
| JavadocOutputStream( final Logger logger, final boolean isError ) | |||
| { | |||
| super( logger, isError ); | |||
| } | |||
| protected void processLine( final String line ) | |||
| { | |||
| if( !isError() && line.startsWith( "Generating " ) ) | |||
| { | |||
| if( m_queuedLine != null ) | |||
| { | |||
| getLogger().debug( m_queuedLine ); | |||
| } | |||
| m_queuedLine = line; | |||
| } | |||
| else | |||
| { | |||
| if( m_queuedLine != null ) | |||
| { | |||
| if( line.startsWith( "Building " ) ) | |||
| { | |||
| getLogger().debug( m_queuedLine ); | |||
| } | |||
| else | |||
| { | |||
| getLogger().info( m_queuedLine ); | |||
| } | |||
| m_queuedLine = null; | |||
| } | |||
| getLogger().warn( line ); | |||
| } | |||
| } | |||
| } | |||