git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270480 13f79535-47bb-0310-9956-ffa450edef68master
@@ -10,11 +10,9 @@ package org.apache.tools.ant.taskdefs.optional.sitraka; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileWriter; | import java.io.FileWriter; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.OutputStream; | |||||
import java.io.PrintWriter; | import java.io.PrintWriter; | ||||
import java.io.StringWriter; | import java.io.StringWriter; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Random; | |||||
import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
import org.apache.tools.ant.taskdefs.exec.Execute; | import org.apache.tools.ant.taskdefs.exec.Execute; | ||||
@@ -23,7 +21,6 @@ import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; | |||||
import org.apache.tools.ant.types.Argument; | import org.apache.tools.ant.types.Argument; | ||||
import org.apache.tools.ant.types.Commandline; | import org.apache.tools.ant.types.Commandline; | ||||
import org.apache.tools.ant.types.CommandlineJava; | import org.apache.tools.ant.types.CommandlineJava; | ||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
@@ -38,68 +35,32 @@ import org.apache.tools.ant.types.Path; | |||||
* | * | ||||
* @author <a href="sbailliez@imediation.com">Stephane Bailliez</a> | * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a> | ||||
*/ | */ | ||||
public class Coverage extends Task | |||||
public class Coverage | |||||
extends Task | |||||
{ | { | ||||
protected Commandline cmdl = new Commandline(); | protected Commandline cmdl = new Commandline(); | ||||
protected CommandlineJava cmdlJava = new CommandlineJava(); | protected CommandlineJava cmdlJava = new CommandlineJava(); | ||||
protected String function = "coverage"; | |||||
protected boolean applet = false; | |||||
/** | /** | ||||
* this is a somewhat annoying thing, set it to never | * this is a somewhat annoying thing, set it to never | ||||
*/ | */ | ||||
protected String exitPrompt = "never"; | |||||
protected Filters filters = new Filters(); | |||||
protected String finalSnapshot = "coverage"; | |||||
protected String recordFromStart = "coverage"; | |||||
protected boolean trackNatives = false; | |||||
protected int warnLevel = 0; | |||||
protected ArrayList filesets = new ArrayList(); | |||||
protected File home; | |||||
protected File inputFile; | |||||
protected File javaExe; | |||||
protected String seedName; | |||||
protected File snapshotDir; | |||||
protected Socket socket; | |||||
protected Triggers triggers; | |||||
protected String vm; | |||||
protected File workingDir; | |||||
//---------------- the tedious job begins here | |||||
public Coverage() | |||||
{ | |||||
} | |||||
/** | |||||
* default to false unless file is htm or html | |||||
* | |||||
* @param value The new Applet value | |||||
*/ | |||||
public void setApplet( boolean value ) | |||||
{ | |||||
applet = value; | |||||
} | |||||
private String m_exitPrompt = "never"; | |||||
private Filters m_filters = new Filters(); | |||||
private String m_finalSnapshot = "coverage"; | |||||
private String m_recordFromStart = "coverage"; | |||||
private boolean m_trackNatives; | |||||
private int m_warnLevel = 0; | |||||
private ArrayList m_filesets = new ArrayList(); | |||||
private File m_home; | |||||
private File m_inputFile; | |||||
private File m_javaExe; | |||||
private String m_seedName; | |||||
private File m_snapshotDir; | |||||
private Socket m_socket; | |||||
private Triggers m_triggers; | |||||
private String m_vm; | |||||
private File m_workingDir; | |||||
/** | /** | ||||
* classname to run as standalone or runner for filesets | * classname to run as standalone or runner for filesets | ||||
@@ -118,7 +79,7 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setExitprompt( String value ) | public void setExitprompt( String value ) | ||||
{ | { | ||||
exitPrompt = value; | |||||
m_exitPrompt = value; | |||||
} | } | ||||
/** | /** | ||||
@@ -128,11 +89,9 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setFinalsnapshot( String value ) | public void setFinalsnapshot( String value ) | ||||
{ | { | ||||
finalSnapshot = value; | |||||
m_finalSnapshot = value; | |||||
} | } | ||||
//--------- setters used via reflection -- | |||||
/** | /** | ||||
* set the coverage home directory where are libraries, jars and jplauncher | * set the coverage home directory where are libraries, jars and jplauncher | ||||
* | * | ||||
@@ -140,17 +99,17 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setHome( File value ) | public void setHome( File value ) | ||||
{ | { | ||||
home = value; | |||||
m_home = value; | |||||
} | } | ||||
public void setInputfile( File value ) | public void setInputfile( File value ) | ||||
{ | { | ||||
inputFile = value; | |||||
m_inputFile = value; | |||||
} | } | ||||
public void setJavaexe( File value ) | public void setJavaexe( File value ) | ||||
{ | { | ||||
javaExe = value; | |||||
m_javaExe = value; | |||||
} | } | ||||
/** | /** | ||||
@@ -160,7 +119,7 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setRecordfromstart( Recordfromstart value ) | public void setRecordfromstart( Recordfromstart value ) | ||||
{ | { | ||||
recordFromStart = value.getValue(); | |||||
m_recordFromStart = value.getValue(); | |||||
} | } | ||||
/** | /** | ||||
@@ -170,17 +129,17 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setSeedname( String value ) | public void setSeedname( String value ) | ||||
{ | { | ||||
seedName = value; | |||||
m_seedName = value; | |||||
} | } | ||||
public void setSnapshotdir( File value ) | public void setSnapshotdir( File value ) | ||||
{ | { | ||||
snapshotDir = value; | |||||
m_snapshotDir = value; | |||||
} | } | ||||
public void setTracknatives( boolean value ) | public void setTracknatives( boolean value ) | ||||
{ | { | ||||
trackNatives = value; | |||||
m_trackNatives = value; | |||||
} | } | ||||
/** | /** | ||||
@@ -190,17 +149,17 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setVm( Javavm value ) | public void setVm( Javavm value ) | ||||
{ | { | ||||
vm = value.getValue(); | |||||
m_vm = value.getValue(); | |||||
} | } | ||||
public void setWarnlevel( Integer value ) | public void setWarnlevel( Integer value ) | ||||
{ | { | ||||
warnLevel = value.intValue(); | |||||
m_warnLevel = value.intValue(); | |||||
} | } | ||||
public void setWorkingdir( File value ) | public void setWorkingdir( File value ) | ||||
{ | { | ||||
workingDir = value; | |||||
m_workingDir = value; | |||||
} | } | ||||
/** | /** | ||||
@@ -210,7 +169,7 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void addFileset( FileSet fs ) | public void addFileset( FileSet fs ) | ||||
{ | { | ||||
filesets.add( fs ); | |||||
m_filesets.add( fs ); | |||||
} | } | ||||
/** | /** | ||||
@@ -235,11 +194,9 @@ public class Coverage extends Task | |||||
public Filters createFilters() | public Filters createFilters() | ||||
{ | { | ||||
return filters; | |||||
return m_filters; | |||||
} | } | ||||
// | |||||
/** | /** | ||||
* the jvm arguments | * the jvm arguments | ||||
* | * | ||||
@@ -252,20 +209,20 @@ public class Coverage extends Task | |||||
public Socket createSocket() | public Socket createSocket() | ||||
{ | { | ||||
if( socket == null ) | |||||
if( m_socket == null ) | |||||
{ | { | ||||
socket = new Socket(); | |||||
m_socket = new Socket(); | |||||
} | } | ||||
return socket; | |||||
return m_socket; | |||||
} | } | ||||
public Triggers createTriggers() | public Triggers createTriggers() | ||||
{ | { | ||||
if( triggers == null ) | |||||
if( m_triggers == null ) | |||||
{ | { | ||||
triggers = new Triggers(); | |||||
m_triggers = new Triggers(); | |||||
} | } | ||||
return triggers; | |||||
return m_triggers; | |||||
} | } | ||||
/** | /** | ||||
@@ -278,19 +235,19 @@ public class Coverage extends Task | |||||
{ | { | ||||
File paramfile = null; | File paramfile = null; | ||||
// if an input file is used, all other options are ignored... | // if an input file is used, all other options are ignored... | ||||
if( inputFile == null ) | |||||
if( m_inputFile == null ) | |||||
{ | { | ||||
checkOptions(); | checkOptions(); | ||||
paramfile = createParamFile(); | paramfile = createParamFile(); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
paramfile = inputFile; | |||||
paramfile = m_inputFile; | |||||
} | } | ||||
try | try | ||||
{ | { | ||||
// we need to run Coverage from his directory due to dll/jar issues | // we need to run Coverage from his directory due to dll/jar issues | ||||
cmdl.setExecutable( new File( home, "jplauncher" ).getAbsolutePath() ); | |||||
cmdl.setExecutable( new File( m_home, "jplauncher" ).getAbsolutePath() ); | |||||
cmdl.createArgument().setValue( "-jp_input=" + paramfile.getAbsolutePath() ); | cmdl.createArgument().setValue( "-jp_input=" + paramfile.getAbsolutePath() ); | ||||
// use the custom handler for stdin issues | // use the custom handler for stdin issues | ||||
@@ -313,7 +270,7 @@ public class Coverage extends Task | |||||
finally | finally | ||||
{ | { | ||||
//@todo should be removed once switched to JDK1.2 | //@todo should be removed once switched to JDK1.2 | ||||
if( inputFile == null && paramfile != null ) | |||||
if( m_inputFile == null && paramfile != null ) | |||||
{ | { | ||||
paramfile.delete(); | paramfile.delete(); | ||||
} | } | ||||
@@ -331,35 +288,35 @@ public class Coverage extends Task | |||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
ArrayList params = new ArrayList(); | ArrayList params = new ArrayList(); | ||||
params.add( "-jp_function=" + function ); | |||||
if( vm != null ) | |||||
params.add( "-jp_function=coverage" ); | |||||
if( m_vm != null ) | |||||
{ | { | ||||
params.add( "-jp_vm=" + vm ); | |||||
params.add( "-jp_vm=" + m_vm ); | |||||
} | } | ||||
if( javaExe != null ) | |||||
if( m_javaExe != null ) | |||||
{ | { | ||||
params.add( "-jp_java_exe=" + resolveFile( javaExe.getPath() ) ); | |||||
params.add( "-jp_java_exe=" + resolveFile( m_javaExe.getPath() ) ); | |||||
} | } | ||||
params.add( "-jp_working_dir=" + workingDir.getPath() ); | |||||
params.add( "-jp_snapshot_dir=" + snapshotDir.getPath() ); | |||||
params.add( "-jp_record_from_start=" + recordFromStart ); | |||||
params.add( "-jp_warn=" + warnLevel ); | |||||
if( seedName != null ) | |||||
params.add( "-jp_working_dir=" + m_workingDir.getPath() ); | |||||
params.add( "-jp_snapshot_dir=" + m_snapshotDir.getPath() ); | |||||
params.add( "-jp_record_from_start=" + m_recordFromStart ); | |||||
params.add( "-jp_warn=" + m_warnLevel ); | |||||
if( m_seedName != null ) | |||||
{ | { | ||||
params.add( "-jp_output_file=" + seedName ); | |||||
params.add( "-jp_output_file=" + m_seedName ); | |||||
} | } | ||||
params.add( "-jp_filter=" + filters.toString() ); | |||||
if( triggers != null ) | |||||
params.add( "-jp_filter=" + m_filters.toString() ); | |||||
if( m_triggers != null ) | |||||
{ | { | ||||
params.add( "-jp_trigger=" + triggers.toString() ); | |||||
params.add( "-jp_trigger=" + m_triggers.toString() ); | |||||
} | } | ||||
if( finalSnapshot != null ) | |||||
if( m_finalSnapshot != null ) | |||||
{ | { | ||||
params.add( "-jp_final_snapshot=" + finalSnapshot ); | |||||
params.add( "-jp_final_snapshot=" + m_finalSnapshot ); | |||||
} | } | ||||
params.add( "-jp_exit_prompt=" + exitPrompt ); | |||||
params.add( "-jp_exit_prompt=" + m_exitPrompt ); | |||||
//params.add("-jp_append=" + append); | //params.add("-jp_append=" + append); | ||||
params.add( "-jp_track_natives=" + trackNatives ); | |||||
params.add( "-jp_track_natives=" + m_trackNatives ); | |||||
//.... now the jvm | //.... now the jvm | ||||
// arguments | // arguments | ||||
String[] vmargs = cmdlJava.getVmCommand().getArguments(); | String[] vmargs = cmdlJava.getVmCommand().getArguments(); | ||||
@@ -397,50 +354,50 @@ public class Coverage extends Task | |||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
// check coverage home | // check coverage home | ||||
if( home == null || !home.isDirectory() ) | |||||
if( m_home == null || !m_home.isDirectory() ) | |||||
{ | { | ||||
throw new TaskException( "Invalid home directory. Must point to JProbe home directory" ); | throw new TaskException( "Invalid home directory. Must point to JProbe home directory" ); | ||||
} | } | ||||
home = new File( home, "coverage" ); | |||||
File jar = new File( home, "coverage.jar" ); | |||||
m_home = new File( m_home, "coverage" ); | |||||
File jar = new File( m_home, "coverage.jar" ); | |||||
if( !jar.exists() ) | if( !jar.exists() ) | ||||
{ | { | ||||
throw new TaskException( "Cannot find Coverage directory: " + home ); | |||||
throw new TaskException( "Cannot find Coverage directory: " + m_home ); | |||||
} | } | ||||
// make sure snapshot dir exists and is resolved | // make sure snapshot dir exists and is resolved | ||||
if( snapshotDir == null ) | |||||
if( m_snapshotDir == null ) | |||||
{ | { | ||||
snapshotDir = new File( "." ); | |||||
m_snapshotDir = new File( "." ); | |||||
} | } | ||||
snapshotDir = resolveFile( snapshotDir.getPath() ); | |||||
if( !snapshotDir.isDirectory() || !snapshotDir.exists() ) | |||||
m_snapshotDir = resolveFile( m_snapshotDir.getPath() ); | |||||
if( !m_snapshotDir.isDirectory() || !m_snapshotDir.exists() ) | |||||
{ | { | ||||
throw new TaskException( "Snapshot directory does not exists :" + snapshotDir ); | |||||
throw new TaskException( "Snapshot directory does not exists :" + m_snapshotDir ); | |||||
} | } | ||||
if( workingDir == null ) | |||||
if( m_workingDir == null ) | |||||
{ | { | ||||
workingDir = new File( "." ); | |||||
m_workingDir = new File( "." ); | |||||
} | } | ||||
workingDir = resolveFile( workingDir.getPath() ); | |||||
m_workingDir = resolveFile( m_workingDir.getPath() ); | |||||
// check for info, do your best to select the java executable. | // check for info, do your best to select the java executable. | ||||
// JProbe 3.0 fails if there is no javaexe option. So | // JProbe 3.0 fails if there is no javaexe option. So | ||||
if( javaExe == null && ( vm == null || "java2".equals( vm ) ) ) | |||||
if( m_javaExe == null && ( m_vm == null || "java2".equals( m_vm ) ) ) | |||||
{ | { | ||||
String version = System.getProperty( "java.version" ); | String version = System.getProperty( "java.version" ); | ||||
// make we are using 1.2+, if it is, then do your best to | // make we are using 1.2+, if it is, then do your best to | ||||
// get a javaexe | // get a javaexe | ||||
if( !version.startsWith( "1.1" ) ) | if( !version.startsWith( "1.1" ) ) | ||||
{ | { | ||||
if( vm == null ) | |||||
if( m_vm == null ) | |||||
{ | { | ||||
vm = "java2"; | |||||
m_vm = "java2"; | |||||
} | } | ||||
// if we are here obviously it is java2 | // if we are here obviously it is java2 | ||||
String home = System.getProperty( "java.home" ); | String home = System.getProperty( "java.home" ); | ||||
boolean isUnix = File.separatorChar == '/'; | boolean isUnix = File.separatorChar == '/'; | ||||
javaExe = isUnix ? new File( home, "bin/java" ) : new File( home, "/bin/java.exe" ); | |||||
m_javaExe = isUnix ? new File( home, "bin/java" ) : new File( home, "/bin/java.exe" ); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -458,7 +415,7 @@ public class Coverage extends Task | |||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
//@todo change this when switching to JDK 1.2 and use File.createTmpFile() | //@todo change this when switching to JDK 1.2 and use File.createTmpFile() | ||||
File file = createTmpFile(); | |||||
File file = File.createTempFile( "jpcoverage", "tmp" ); | |||||
getLogger().debug( "Creating parameter file: " + file ); | getLogger().debug( "Creating parameter file: " + file ); | ||||
// options need to be one per line in the parameter file | // options need to be one per line in the parameter file | ||||
@@ -500,72 +457,4 @@ public class Coverage extends Task | |||||
} | } | ||||
return file; | return file; | ||||
} | } | ||||
/** | |||||
* create a temporary file in the current dir (For JDK1.1 support) | |||||
* | |||||
* @return Description of the Returned Value | |||||
*/ | |||||
protected File createTmpFile() | |||||
{ | |||||
final long rand = ( new Random( System.currentTimeMillis() ) ).nextLong(); | |||||
File file = new File( "jpcoverage" + rand + ".tmp" ); | |||||
return file; | |||||
} | |||||
public static class Finalsnapshot extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"coverage", "none", "all"}; | |||||
} | |||||
} | |||||
public static class Javavm extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"java2", "jdk118", "jdk117"}; | |||||
} | |||||
} | |||||
public static class Recordfromstart extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"coverage", "none", "all"}; | |||||
} | |||||
} | |||||
/** | |||||
* specific pumper to avoid those nasty stdin issues | |||||
*/ | |||||
static class CoverageStreamHandler | |||||
extends LogStreamHandler | |||||
{ | |||||
CoverageStreamHandler( OutputStream output, OutputStream error ) | |||||
{ | |||||
super( output, error ); | |||||
} | |||||
/** | |||||
* there are some issues concerning all JProbe executable In our case a | |||||
* 'Press ENTER to close this window..." will be displayed in the | |||||
* current window waiting for enter. So I'm closing the stream right | |||||
* away to avoid problems. | |||||
* | |||||
* @param os The new ProcessInputStream value | |||||
*/ | |||||
public void setProcessInputStream( OutputStream os ) | |||||
{ | |||||
try | |||||
{ | |||||
os.close(); | |||||
} | |||||
catch( IOException ignored ) | |||||
{ | |||||
} | |||||
} | |||||
} | |||||
} | } |
@@ -0,0 +1,43 @@ | |||||
/* | |||||
* 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.optional.sitraka; | |||||
import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; | |||||
import java.io.OutputStream; | |||||
import java.io.IOException; | |||||
/** | |||||
* specific pumper to avoid those nasty stdin issues | |||||
*/ | |||||
class CoverageStreamHandler | |||||
extends LogStreamHandler | |||||
{ | |||||
CoverageStreamHandler( OutputStream output, OutputStream error ) | |||||
{ | |||||
super( output, error ); | |||||
} | |||||
/** | |||||
* there are some issues concerning all JProbe executable In our case a | |||||
* 'Press ENTER to close this window..." will be displayed in the | |||||
* current window waiting for enter. So I'm closing the stream right | |||||
* away to avoid problems. | |||||
* | |||||
* @param os The new ProcessInputStream value | |||||
*/ | |||||
public void setProcessInputStream( OutputStream os ) | |||||
{ | |||||
try | |||||
{ | |||||
os.close(); | |||||
} | |||||
catch( IOException ignored ) | |||||
{ | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
/* | |||||
* 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.optional.sitraka; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
public class Finalsnapshot | |||||
extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"coverage", "none", "all"}; | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
/* | |||||
* 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.optional.sitraka; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
public class Javavm | |||||
extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"java2", "jdk118", "jdk117"}; | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
/* | |||||
* 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.optional.sitraka; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
public class Recordfromstart | |||||
extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"coverage", "none", "all"}; | |||||
} | |||||
} |
@@ -10,11 +10,9 @@ package org.apache.tools.ant.taskdefs.optional.sitraka; | |||||
import java.io.File; | import java.io.File; | ||||
import java.io.FileWriter; | import java.io.FileWriter; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.OutputStream; | |||||
import java.io.PrintWriter; | import java.io.PrintWriter; | ||||
import java.io.StringWriter; | import java.io.StringWriter; | ||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.Random; | |||||
import org.apache.myrmidon.api.TaskException; | import org.apache.myrmidon.api.TaskException; | ||||
import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
import org.apache.tools.ant.taskdefs.exec.Execute; | import org.apache.tools.ant.taskdefs.exec.Execute; | ||||
@@ -23,7 +21,6 @@ import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; | |||||
import org.apache.tools.ant.types.Argument; | import org.apache.tools.ant.types.Argument; | ||||
import org.apache.tools.ant.types.Commandline; | import org.apache.tools.ant.types.Commandline; | ||||
import org.apache.tools.ant.types.CommandlineJava; | import org.apache.tools.ant.types.CommandlineJava; | ||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
@@ -38,68 +35,32 @@ import org.apache.tools.ant.types.Path; | |||||
* | * | ||||
* @author <a href="sbailliez@imediation.com">Stephane Bailliez</a> | * @author <a href="sbailliez@imediation.com">Stephane Bailliez</a> | ||||
*/ | */ | ||||
public class Coverage extends Task | |||||
public class Coverage | |||||
extends Task | |||||
{ | { | ||||
protected Commandline cmdl = new Commandline(); | protected Commandline cmdl = new Commandline(); | ||||
protected CommandlineJava cmdlJava = new CommandlineJava(); | protected CommandlineJava cmdlJava = new CommandlineJava(); | ||||
protected String function = "coverage"; | |||||
protected boolean applet = false; | |||||
/** | /** | ||||
* this is a somewhat annoying thing, set it to never | * this is a somewhat annoying thing, set it to never | ||||
*/ | */ | ||||
protected String exitPrompt = "never"; | |||||
protected Filters filters = new Filters(); | |||||
protected String finalSnapshot = "coverage"; | |||||
protected String recordFromStart = "coverage"; | |||||
protected boolean trackNatives = false; | |||||
protected int warnLevel = 0; | |||||
protected ArrayList filesets = new ArrayList(); | |||||
protected File home; | |||||
protected File inputFile; | |||||
protected File javaExe; | |||||
protected String seedName; | |||||
protected File snapshotDir; | |||||
protected Socket socket; | |||||
protected Triggers triggers; | |||||
protected String vm; | |||||
protected File workingDir; | |||||
//---------------- the tedious job begins here | |||||
public Coverage() | |||||
{ | |||||
} | |||||
/** | |||||
* default to false unless file is htm or html | |||||
* | |||||
* @param value The new Applet value | |||||
*/ | |||||
public void setApplet( boolean value ) | |||||
{ | |||||
applet = value; | |||||
} | |||||
private String m_exitPrompt = "never"; | |||||
private Filters m_filters = new Filters(); | |||||
private String m_finalSnapshot = "coverage"; | |||||
private String m_recordFromStart = "coverage"; | |||||
private boolean m_trackNatives; | |||||
private int m_warnLevel = 0; | |||||
private ArrayList m_filesets = new ArrayList(); | |||||
private File m_home; | |||||
private File m_inputFile; | |||||
private File m_javaExe; | |||||
private String m_seedName; | |||||
private File m_snapshotDir; | |||||
private Socket m_socket; | |||||
private Triggers m_triggers; | |||||
private String m_vm; | |||||
private File m_workingDir; | |||||
/** | /** | ||||
* classname to run as standalone or runner for filesets | * classname to run as standalone or runner for filesets | ||||
@@ -118,7 +79,7 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setExitprompt( String value ) | public void setExitprompt( String value ) | ||||
{ | { | ||||
exitPrompt = value; | |||||
m_exitPrompt = value; | |||||
} | } | ||||
/** | /** | ||||
@@ -128,11 +89,9 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setFinalsnapshot( String value ) | public void setFinalsnapshot( String value ) | ||||
{ | { | ||||
finalSnapshot = value; | |||||
m_finalSnapshot = value; | |||||
} | } | ||||
//--------- setters used via reflection -- | |||||
/** | /** | ||||
* set the coverage home directory where are libraries, jars and jplauncher | * set the coverage home directory where are libraries, jars and jplauncher | ||||
* | * | ||||
@@ -140,17 +99,17 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setHome( File value ) | public void setHome( File value ) | ||||
{ | { | ||||
home = value; | |||||
m_home = value; | |||||
} | } | ||||
public void setInputfile( File value ) | public void setInputfile( File value ) | ||||
{ | { | ||||
inputFile = value; | |||||
m_inputFile = value; | |||||
} | } | ||||
public void setJavaexe( File value ) | public void setJavaexe( File value ) | ||||
{ | { | ||||
javaExe = value; | |||||
m_javaExe = value; | |||||
} | } | ||||
/** | /** | ||||
@@ -160,7 +119,7 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setRecordfromstart( Recordfromstart value ) | public void setRecordfromstart( Recordfromstart value ) | ||||
{ | { | ||||
recordFromStart = value.getValue(); | |||||
m_recordFromStart = value.getValue(); | |||||
} | } | ||||
/** | /** | ||||
@@ -170,17 +129,17 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setSeedname( String value ) | public void setSeedname( String value ) | ||||
{ | { | ||||
seedName = value; | |||||
m_seedName = value; | |||||
} | } | ||||
public void setSnapshotdir( File value ) | public void setSnapshotdir( File value ) | ||||
{ | { | ||||
snapshotDir = value; | |||||
m_snapshotDir = value; | |||||
} | } | ||||
public void setTracknatives( boolean value ) | public void setTracknatives( boolean value ) | ||||
{ | { | ||||
trackNatives = value; | |||||
m_trackNatives = value; | |||||
} | } | ||||
/** | /** | ||||
@@ -190,17 +149,17 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void setVm( Javavm value ) | public void setVm( Javavm value ) | ||||
{ | { | ||||
vm = value.getValue(); | |||||
m_vm = value.getValue(); | |||||
} | } | ||||
public void setWarnlevel( Integer value ) | public void setWarnlevel( Integer value ) | ||||
{ | { | ||||
warnLevel = value.intValue(); | |||||
m_warnLevel = value.intValue(); | |||||
} | } | ||||
public void setWorkingdir( File value ) | public void setWorkingdir( File value ) | ||||
{ | { | ||||
workingDir = value; | |||||
m_workingDir = value; | |||||
} | } | ||||
/** | /** | ||||
@@ -210,7 +169,7 @@ public class Coverage extends Task | |||||
*/ | */ | ||||
public void addFileset( FileSet fs ) | public void addFileset( FileSet fs ) | ||||
{ | { | ||||
filesets.add( fs ); | |||||
m_filesets.add( fs ); | |||||
} | } | ||||
/** | /** | ||||
@@ -235,11 +194,9 @@ public class Coverage extends Task | |||||
public Filters createFilters() | public Filters createFilters() | ||||
{ | { | ||||
return filters; | |||||
return m_filters; | |||||
} | } | ||||
// | |||||
/** | /** | ||||
* the jvm arguments | * the jvm arguments | ||||
* | * | ||||
@@ -252,20 +209,20 @@ public class Coverage extends Task | |||||
public Socket createSocket() | public Socket createSocket() | ||||
{ | { | ||||
if( socket == null ) | |||||
if( m_socket == null ) | |||||
{ | { | ||||
socket = new Socket(); | |||||
m_socket = new Socket(); | |||||
} | } | ||||
return socket; | |||||
return m_socket; | |||||
} | } | ||||
public Triggers createTriggers() | public Triggers createTriggers() | ||||
{ | { | ||||
if( triggers == null ) | |||||
if( m_triggers == null ) | |||||
{ | { | ||||
triggers = new Triggers(); | |||||
m_triggers = new Triggers(); | |||||
} | } | ||||
return triggers; | |||||
return m_triggers; | |||||
} | } | ||||
/** | /** | ||||
@@ -278,19 +235,19 @@ public class Coverage extends Task | |||||
{ | { | ||||
File paramfile = null; | File paramfile = null; | ||||
// if an input file is used, all other options are ignored... | // if an input file is used, all other options are ignored... | ||||
if( inputFile == null ) | |||||
if( m_inputFile == null ) | |||||
{ | { | ||||
checkOptions(); | checkOptions(); | ||||
paramfile = createParamFile(); | paramfile = createParamFile(); | ||||
} | } | ||||
else | else | ||||
{ | { | ||||
paramfile = inputFile; | |||||
paramfile = m_inputFile; | |||||
} | } | ||||
try | try | ||||
{ | { | ||||
// we need to run Coverage from his directory due to dll/jar issues | // we need to run Coverage from his directory due to dll/jar issues | ||||
cmdl.setExecutable( new File( home, "jplauncher" ).getAbsolutePath() ); | |||||
cmdl.setExecutable( new File( m_home, "jplauncher" ).getAbsolutePath() ); | |||||
cmdl.createArgument().setValue( "-jp_input=" + paramfile.getAbsolutePath() ); | cmdl.createArgument().setValue( "-jp_input=" + paramfile.getAbsolutePath() ); | ||||
// use the custom handler for stdin issues | // use the custom handler for stdin issues | ||||
@@ -313,7 +270,7 @@ public class Coverage extends Task | |||||
finally | finally | ||||
{ | { | ||||
//@todo should be removed once switched to JDK1.2 | //@todo should be removed once switched to JDK1.2 | ||||
if( inputFile == null && paramfile != null ) | |||||
if( m_inputFile == null && paramfile != null ) | |||||
{ | { | ||||
paramfile.delete(); | paramfile.delete(); | ||||
} | } | ||||
@@ -331,35 +288,35 @@ public class Coverage extends Task | |||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
ArrayList params = new ArrayList(); | ArrayList params = new ArrayList(); | ||||
params.add( "-jp_function=" + function ); | |||||
if( vm != null ) | |||||
params.add( "-jp_function=coverage" ); | |||||
if( m_vm != null ) | |||||
{ | { | ||||
params.add( "-jp_vm=" + vm ); | |||||
params.add( "-jp_vm=" + m_vm ); | |||||
} | } | ||||
if( javaExe != null ) | |||||
if( m_javaExe != null ) | |||||
{ | { | ||||
params.add( "-jp_java_exe=" + resolveFile( javaExe.getPath() ) ); | |||||
params.add( "-jp_java_exe=" + resolveFile( m_javaExe.getPath() ) ); | |||||
} | } | ||||
params.add( "-jp_working_dir=" + workingDir.getPath() ); | |||||
params.add( "-jp_snapshot_dir=" + snapshotDir.getPath() ); | |||||
params.add( "-jp_record_from_start=" + recordFromStart ); | |||||
params.add( "-jp_warn=" + warnLevel ); | |||||
if( seedName != null ) | |||||
params.add( "-jp_working_dir=" + m_workingDir.getPath() ); | |||||
params.add( "-jp_snapshot_dir=" + m_snapshotDir.getPath() ); | |||||
params.add( "-jp_record_from_start=" + m_recordFromStart ); | |||||
params.add( "-jp_warn=" + m_warnLevel ); | |||||
if( m_seedName != null ) | |||||
{ | { | ||||
params.add( "-jp_output_file=" + seedName ); | |||||
params.add( "-jp_output_file=" + m_seedName ); | |||||
} | } | ||||
params.add( "-jp_filter=" + filters.toString() ); | |||||
if( triggers != null ) | |||||
params.add( "-jp_filter=" + m_filters.toString() ); | |||||
if( m_triggers != null ) | |||||
{ | { | ||||
params.add( "-jp_trigger=" + triggers.toString() ); | |||||
params.add( "-jp_trigger=" + m_triggers.toString() ); | |||||
} | } | ||||
if( finalSnapshot != null ) | |||||
if( m_finalSnapshot != null ) | |||||
{ | { | ||||
params.add( "-jp_final_snapshot=" + finalSnapshot ); | |||||
params.add( "-jp_final_snapshot=" + m_finalSnapshot ); | |||||
} | } | ||||
params.add( "-jp_exit_prompt=" + exitPrompt ); | |||||
params.add( "-jp_exit_prompt=" + m_exitPrompt ); | |||||
//params.add("-jp_append=" + append); | //params.add("-jp_append=" + append); | ||||
params.add( "-jp_track_natives=" + trackNatives ); | |||||
params.add( "-jp_track_natives=" + m_trackNatives ); | |||||
//.... now the jvm | //.... now the jvm | ||||
// arguments | // arguments | ||||
String[] vmargs = cmdlJava.getVmCommand().getArguments(); | String[] vmargs = cmdlJava.getVmCommand().getArguments(); | ||||
@@ -397,50 +354,50 @@ public class Coverage extends Task | |||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
// check coverage home | // check coverage home | ||||
if( home == null || !home.isDirectory() ) | |||||
if( m_home == null || !m_home.isDirectory() ) | |||||
{ | { | ||||
throw new TaskException( "Invalid home directory. Must point to JProbe home directory" ); | throw new TaskException( "Invalid home directory. Must point to JProbe home directory" ); | ||||
} | } | ||||
home = new File( home, "coverage" ); | |||||
File jar = new File( home, "coverage.jar" ); | |||||
m_home = new File( m_home, "coverage" ); | |||||
File jar = new File( m_home, "coverage.jar" ); | |||||
if( !jar.exists() ) | if( !jar.exists() ) | ||||
{ | { | ||||
throw new TaskException( "Cannot find Coverage directory: " + home ); | |||||
throw new TaskException( "Cannot find Coverage directory: " + m_home ); | |||||
} | } | ||||
// make sure snapshot dir exists and is resolved | // make sure snapshot dir exists and is resolved | ||||
if( snapshotDir == null ) | |||||
if( m_snapshotDir == null ) | |||||
{ | { | ||||
snapshotDir = new File( "." ); | |||||
m_snapshotDir = new File( "." ); | |||||
} | } | ||||
snapshotDir = resolveFile( snapshotDir.getPath() ); | |||||
if( !snapshotDir.isDirectory() || !snapshotDir.exists() ) | |||||
m_snapshotDir = resolveFile( m_snapshotDir.getPath() ); | |||||
if( !m_snapshotDir.isDirectory() || !m_snapshotDir.exists() ) | |||||
{ | { | ||||
throw new TaskException( "Snapshot directory does not exists :" + snapshotDir ); | |||||
throw new TaskException( "Snapshot directory does not exists :" + m_snapshotDir ); | |||||
} | } | ||||
if( workingDir == null ) | |||||
if( m_workingDir == null ) | |||||
{ | { | ||||
workingDir = new File( "." ); | |||||
m_workingDir = new File( "." ); | |||||
} | } | ||||
workingDir = resolveFile( workingDir.getPath() ); | |||||
m_workingDir = resolveFile( m_workingDir.getPath() ); | |||||
// check for info, do your best to select the java executable. | // check for info, do your best to select the java executable. | ||||
// JProbe 3.0 fails if there is no javaexe option. So | // JProbe 3.0 fails if there is no javaexe option. So | ||||
if( javaExe == null && ( vm == null || "java2".equals( vm ) ) ) | |||||
if( m_javaExe == null && ( m_vm == null || "java2".equals( m_vm ) ) ) | |||||
{ | { | ||||
String version = System.getProperty( "java.version" ); | String version = System.getProperty( "java.version" ); | ||||
// make we are using 1.2+, if it is, then do your best to | // make we are using 1.2+, if it is, then do your best to | ||||
// get a javaexe | // get a javaexe | ||||
if( !version.startsWith( "1.1" ) ) | if( !version.startsWith( "1.1" ) ) | ||||
{ | { | ||||
if( vm == null ) | |||||
if( m_vm == null ) | |||||
{ | { | ||||
vm = "java2"; | |||||
m_vm = "java2"; | |||||
} | } | ||||
// if we are here obviously it is java2 | // if we are here obviously it is java2 | ||||
String home = System.getProperty( "java.home" ); | String home = System.getProperty( "java.home" ); | ||||
boolean isUnix = File.separatorChar == '/'; | boolean isUnix = File.separatorChar == '/'; | ||||
javaExe = isUnix ? new File( home, "bin/java" ) : new File( home, "/bin/java.exe" ); | |||||
m_javaExe = isUnix ? new File( home, "bin/java" ) : new File( home, "/bin/java.exe" ); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -458,7 +415,7 @@ public class Coverage extends Task | |||||
throws TaskException | throws TaskException | ||||
{ | { | ||||
//@todo change this when switching to JDK 1.2 and use File.createTmpFile() | //@todo change this when switching to JDK 1.2 and use File.createTmpFile() | ||||
File file = createTmpFile(); | |||||
File file = File.createTempFile( "jpcoverage", "tmp" ); | |||||
getLogger().debug( "Creating parameter file: " + file ); | getLogger().debug( "Creating parameter file: " + file ); | ||||
// options need to be one per line in the parameter file | // options need to be one per line in the parameter file | ||||
@@ -500,72 +457,4 @@ public class Coverage extends Task | |||||
} | } | ||||
return file; | return file; | ||||
} | } | ||||
/** | |||||
* create a temporary file in the current dir (For JDK1.1 support) | |||||
* | |||||
* @return Description of the Returned Value | |||||
*/ | |||||
protected File createTmpFile() | |||||
{ | |||||
final long rand = ( new Random( System.currentTimeMillis() ) ).nextLong(); | |||||
File file = new File( "jpcoverage" + rand + ".tmp" ); | |||||
return file; | |||||
} | |||||
public static class Finalsnapshot extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"coverage", "none", "all"}; | |||||
} | |||||
} | |||||
public static class Javavm extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"java2", "jdk118", "jdk117"}; | |||||
} | |||||
} | |||||
public static class Recordfromstart extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"coverage", "none", "all"}; | |||||
} | |||||
} | |||||
/** | |||||
* specific pumper to avoid those nasty stdin issues | |||||
*/ | |||||
static class CoverageStreamHandler | |||||
extends LogStreamHandler | |||||
{ | |||||
CoverageStreamHandler( OutputStream output, OutputStream error ) | |||||
{ | |||||
super( output, error ); | |||||
} | |||||
/** | |||||
* there are some issues concerning all JProbe executable In our case a | |||||
* 'Press ENTER to close this window..." will be displayed in the | |||||
* current window waiting for enter. So I'm closing the stream right | |||||
* away to avoid problems. | |||||
* | |||||
* @param os The new ProcessInputStream value | |||||
*/ | |||||
public void setProcessInputStream( OutputStream os ) | |||||
{ | |||||
try | |||||
{ | |||||
os.close(); | |||||
} | |||||
catch( IOException ignored ) | |||||
{ | |||||
} | |||||
} | |||||
} | |||||
} | } |
@@ -0,0 +1,43 @@ | |||||
/* | |||||
* 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.optional.sitraka; | |||||
import org.apache.tools.ant.taskdefs.exec.LogStreamHandler; | |||||
import java.io.OutputStream; | |||||
import java.io.IOException; | |||||
/** | |||||
* specific pumper to avoid those nasty stdin issues | |||||
*/ | |||||
class CoverageStreamHandler | |||||
extends LogStreamHandler | |||||
{ | |||||
CoverageStreamHandler( OutputStream output, OutputStream error ) | |||||
{ | |||||
super( output, error ); | |||||
} | |||||
/** | |||||
* there are some issues concerning all JProbe executable In our case a | |||||
* 'Press ENTER to close this window..." will be displayed in the | |||||
* current window waiting for enter. So I'm closing the stream right | |||||
* away to avoid problems. | |||||
* | |||||
* @param os The new ProcessInputStream value | |||||
*/ | |||||
public void setProcessInputStream( OutputStream os ) | |||||
{ | |||||
try | |||||
{ | |||||
os.close(); | |||||
} | |||||
catch( IOException ignored ) | |||||
{ | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
/* | |||||
* 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.optional.sitraka; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
public class Finalsnapshot | |||||
extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"coverage", "none", "all"}; | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
/* | |||||
* 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.optional.sitraka; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
public class Javavm | |||||
extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"java2", "jdk118", "jdk117"}; | |||||
} | |||||
} |
@@ -0,0 +1,19 @@ | |||||
/* | |||||
* 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.optional.sitraka; | |||||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
public class Recordfromstart | |||||
extends EnumeratedAttribute | |||||
{ | |||||
public String[] getValues() | |||||
{ | |||||
return new String[]{"coverage", "none", "all"}; | |||||
} | |||||
} |