Browse Source

Remove recorder as should be reimplemented as a configured aspect aka a Facility

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271322 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
6af62ff98a
4 changed files with 0 additions and 804 deletions
  1. +0
    -194
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Recorder.java
  2. +0
    -208
      proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java
  3. +0
    -194
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Recorder.java
  4. +0
    -208
      proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/RecorderEntry.java

+ 0
- 194
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/Recorder.java View File

@@ -1,194 +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;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Hashtable;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.LogLevel;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;

/**
* This task is the manager for RecorderEntry's. It is this class that holds all
* entries, modifies them every time the <recorder> task is called, and
* addes them to the build listener process.
*
* @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
* @version 0.5
* @see RecorderEntry
*/
public class Recorder
extends Task
{
/**
* The list of recorder entries.
*/
private final static Hashtable c_recorderEntries = new Hashtable();

/**
* The name of the file to record to.
*/
private String m_filename;

/**
* Whether or not to append. Need Boolean to record an unset state (null).
*/
private Boolean m_append;

/**
* Whether to start or stop recording. Need Boolean to record an unset state
* (null).
*/
private Boolean m_start;

/**
* What level to log? -1 means not initialized yet.
*/
private int loglevel = -1;

/**
* Sets the action for the associated recorder entry.
*
* @param action The action for the entry to take: start or stop.
*/
public void setAction( final ActionChoices action )
{
if( action.getValue().equalsIgnoreCase( "start" ) )
{
m_start = Boolean.TRUE;
}
else
{
m_start = Boolean.FALSE;
}
}

/**
* Whether or not the logger should append to a previous file.
*
* @param append The new Append value
*/
public void setAppend( final boolean append )
{
m_append = new Boolean( append );
}

/**
* Sets the level to which this recorder entry should log to.
*
* @param level The new Loglevel value
* @see VerbosityLevelChoices
*/
public void setLoglevel( final LogLevel level )
{
//I hate cascading if/elseif clauses !!!
if( LogLevel.ERROR == level )
{
loglevel = Project.MSG_ERR;
}
else if( LogLevel.WARN == level )
{
loglevel = Project.MSG_WARN;
}
else if( LogLevel.INFO == level )
{
loglevel = Project.MSG_INFO;
}
else if( LogLevel.DEBUG == level )
{
loglevel = Project.MSG_VERBOSE;
}
}

/**
* Sets the name of the file to log to, and the name of the recorder entry.
*
* @param fname File name of logfile.
*/
public void setName( String fname )
{
m_filename = fname;
}

/**
* The main execution.
*
* @exception TaskException Description of Exception
*/
public void execute()
throws TaskException
{
if( m_filename == null )
{
throw new TaskException( "No filename specified" );
}

getLogger().debug( "setting a recorder for name " + m_filename );

// get the recorder entry
final RecorderEntry recorder = getRecorder( m_filename );

getProject().addProjectListener( recorder );

// set the values on the recorder
recorder.setLogLevel( loglevel );

if( null != m_start )
{
recorder.setRecordState( m_start.booleanValue() );
}
}

/**
* Gets the recorder that's associated with the passed in name. If the
* recorder doesn't exist, then a new one is created.
*/
protected RecorderEntry getRecorder( final String name )
throws TaskException
{
final Object o = c_recorderEntries.get( name );
if( null == o )
{
return (RecorderEntry)o;
}

// create a recorder entry
try
{
final PrintStream output = createOutput( name );
final RecorderEntry entry = new RecorderEntry( output );
c_recorderEntries.put( name, entry );
return entry;
}
catch( final IOException ioe )
{
throw new TaskException( "Problems creating a recorder entry",
ioe );
}
}

private PrintStream createOutput( final String name )
throws FileNotFoundException
{
FileOutputStream outputStream = null;
if( m_append == null )
{
outputStream = new FileOutputStream( name );
}
else
{
outputStream = new FileOutputStream( name, m_append.booleanValue() );
}

return new PrintStream( outputStream );
}
}

+ 0
- 208
proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/RecorderEntry.java View File

@@ -1,208 +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;

import java.io.PrintStream;
import org.apache.avalon.excalibur.util.StringUtil;
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.myrmidon.listeners.AbstractProjectListener;
import org.apache.myrmidon.listeners.LogEvent;
import org.apache.myrmidon.listeners.ProjectEvent;
import org.apache.myrmidon.listeners.TargetEvent;
import org.apache.myrmidon.listeners.TaskEvent;
import org.apache.tools.ant.Project;

/**
* This is a class that represents a recorder. This is the listener to the build
* process.
*
* @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
*/
public class RecorderEntry
extends AbstractProjectListener
implements LogEnabled
{
/**
* The state of the recorder (recorder on or off).
*/
private boolean m_record;

/**
* The current verbosity level to record at.
*/
private int m_loglevel = Project.MSG_INFO;

/**
* The output PrintStream to record to.
*/
private final PrintStream m_output;

/**
* The start time of the last know target.
*/
private long m_targetStartTime = 0l;

private Logger m_logger;

protected RecorderEntry( final PrintStream output )
{
m_output = output;
}

/**
* Provide component with a logger.
*
* @param logger the logger
*/
public void enableLogging( final Logger logger )
{
m_logger = logger;
}

protected final Logger getLogger()
{
return m_logger;
}

private static String formatTime( long millis )
{
long seconds = millis / 1000;
long minutes = seconds / 60;

if( minutes > 0 )
{
return minutes + " minute" + ( minutes == 1 ? " " : "s " ) +
( seconds % 60 ) + " second" + ( seconds % 60 == 1 ? "" : "s" );
}
else
{
return seconds + " second" + ( seconds % 60 == 1 ? "" : "s" );
}
}

public void setLogLevel( final int loglevel )
{
m_loglevel = loglevel;
}

/**
* Turns off or on this recorder.
*
* @param record true for on, false for off, null for no change.
*/
public void setRecordState( final boolean record )
{
m_record = record;
}

/**
* Notify listener of log message event.
*/
public void log( final LogEvent event )
{
final Throwable throwable = event.getThrowable();
if( throwable != null )
{
m_output.println( StringUtil.LINE_SEPARATOR + "BUILD FAILED" + StringUtil.LINE_SEPARATOR );
throwable.printStackTrace( m_output );
finishRecording();
}
else
{
getLogger().debug( "--- MESSAGE LOGGED" );

final StringBuffer sb = new StringBuffer();

final String task = event.getTaskName();
if( task != null )
{
final String name = "[" + task + "]";
final int padding = 12 - name.length();
for( int i = 0; i < padding; i++ )
{
sb.append( " " );
}
sb.append( name );
}

sb.append( event.getMessage() );

//FIXME: Check log level here
if( m_record )
{
m_output.println( sb.toString() );
}
}
}

/**
* Notify listener of projectFinished event.
*/
public void projectFinished( final ProjectEvent event )
{
m_output.println( StringUtil.LINE_SEPARATOR + "BUILD SUCCESSFUL" );
finishRecording();
}

private void finishRecording()
{
getLogger().debug( "< BUILD FINISHED" );
m_output.flush();
m_output.close();
}

/**
* Notify listener of projectStarted event.
*/
public void projectStarted( final ProjectEvent event )
{
getLogger().debug( "> BUILD STARTED" );
}


/**
* Notify listener of targetFinished event.
*/
public void targetFinished( final TargetEvent event )
{
getLogger().debug( "<< TARGET FINISHED -- " + event.getTargetName() );
final long millis = System.currentTimeMillis() - m_targetStartTime;
final String duration = formatTime( millis );
getLogger().debug( event.getTargetName() + ": duration " + duration );
m_output.flush();
}

/**
* Notify listener of targetStarted event.
*/
public void targetStarted( final TargetEvent event )
{
getLogger().debug( ">> TARGET STARTED -- " + event.getTargetName() );
getLogger().info( StringUtil.LINE_SEPARATOR + event.getTargetName() + ":" );
m_targetStartTime = System.currentTimeMillis();

}

/**
* Notify listener of taskStarted event.
*/
public void taskStarted( final TaskEvent event )
{
getLogger().debug( ">>> TASK STARTED -- " + event.getTaskName() );
}

/**
* Notify listener of taskFinished event.
*/
public void taskFinished( final TaskEvent event )
{
getLogger().debug( "<<< TASK FINISHED -- " + event.getTaskName() );
m_output.flush();
}
}

+ 0
- 194
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/Recorder.java View File

@@ -1,194 +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;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Hashtable;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.framework.LogLevel;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;

/**
* This task is the manager for RecorderEntry's. It is this class that holds all
* entries, modifies them every time the &lt;recorder&gt; task is called, and
* addes them to the build listener process.
*
* @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
* @version 0.5
* @see RecorderEntry
*/
public class Recorder
extends Task
{
/**
* The list of recorder entries.
*/
private final static Hashtable c_recorderEntries = new Hashtable();

/**
* The name of the file to record to.
*/
private String m_filename;

/**
* Whether or not to append. Need Boolean to record an unset state (null).
*/
private Boolean m_append;

/**
* Whether to start or stop recording. Need Boolean to record an unset state
* (null).
*/
private Boolean m_start;

/**
* What level to log? -1 means not initialized yet.
*/
private int loglevel = -1;

/**
* Sets the action for the associated recorder entry.
*
* @param action The action for the entry to take: start or stop.
*/
public void setAction( final ActionChoices action )
{
if( action.getValue().equalsIgnoreCase( "start" ) )
{
m_start = Boolean.TRUE;
}
else
{
m_start = Boolean.FALSE;
}
}

/**
* Whether or not the logger should append to a previous file.
*
* @param append The new Append value
*/
public void setAppend( final boolean append )
{
m_append = new Boolean( append );
}

/**
* Sets the level to which this recorder entry should log to.
*
* @param level The new Loglevel value
* @see VerbosityLevelChoices
*/
public void setLoglevel( final LogLevel level )
{
//I hate cascading if/elseif clauses !!!
if( LogLevel.ERROR == level )
{
loglevel = Project.MSG_ERR;
}
else if( LogLevel.WARN == level )
{
loglevel = Project.MSG_WARN;
}
else if( LogLevel.INFO == level )
{
loglevel = Project.MSG_INFO;
}
else if( LogLevel.DEBUG == level )
{
loglevel = Project.MSG_VERBOSE;
}
}

/**
* Sets the name of the file to log to, and the name of the recorder entry.
*
* @param fname File name of logfile.
*/
public void setName( String fname )
{
m_filename = fname;
}

/**
* The main execution.
*
* @exception TaskException Description of Exception
*/
public void execute()
throws TaskException
{
if( m_filename == null )
{
throw new TaskException( "No filename specified" );
}

getLogger().debug( "setting a recorder for name " + m_filename );

// get the recorder entry
final RecorderEntry recorder = getRecorder( m_filename );

getProject().addProjectListener( recorder );

// set the values on the recorder
recorder.setLogLevel( loglevel );

if( null != m_start )
{
recorder.setRecordState( m_start.booleanValue() );
}
}

/**
* Gets the recorder that's associated with the passed in name. If the
* recorder doesn't exist, then a new one is created.
*/
protected RecorderEntry getRecorder( final String name )
throws TaskException
{
final Object o = c_recorderEntries.get( name );
if( null == o )
{
return (RecorderEntry)o;
}

// create a recorder entry
try
{
final PrintStream output = createOutput( name );
final RecorderEntry entry = new RecorderEntry( output );
c_recorderEntries.put( name, entry );
return entry;
}
catch( final IOException ioe )
{
throw new TaskException( "Problems creating a recorder entry",
ioe );
}
}

private PrintStream createOutput( final String name )
throws FileNotFoundException
{
FileOutputStream outputStream = null;
if( m_append == null )
{
outputStream = new FileOutputStream( name );
}
else
{
outputStream = new FileOutputStream( name, m_append.booleanValue() );
}

return new PrintStream( outputStream );
}
}

+ 0
- 208
proposal/myrmidon/src/todo/org/apache/tools/ant/taskdefs/RecorderEntry.java View File

@@ -1,208 +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;

import java.io.PrintStream;
import org.apache.avalon.excalibur.util.StringUtil;
import org.apache.avalon.framework.logger.LogEnabled;
import org.apache.avalon.framework.logger.Logger;
import org.apache.myrmidon.listeners.AbstractProjectListener;
import org.apache.myrmidon.listeners.LogEvent;
import org.apache.myrmidon.listeners.ProjectEvent;
import org.apache.myrmidon.listeners.TargetEvent;
import org.apache.myrmidon.listeners.TaskEvent;
import org.apache.tools.ant.Project;

/**
* This is a class that represents a recorder. This is the listener to the build
* process.
*
* @author <a href="mailto:jayglanville@home.com">J D Glanville</a>
*/
public class RecorderEntry
extends AbstractProjectListener
implements LogEnabled
{
/**
* The state of the recorder (recorder on or off).
*/
private boolean m_record;

/**
* The current verbosity level to record at.
*/
private int m_loglevel = Project.MSG_INFO;

/**
* The output PrintStream to record to.
*/
private final PrintStream m_output;

/**
* The start time of the last know target.
*/
private long m_targetStartTime = 0l;

private Logger m_logger;

protected RecorderEntry( final PrintStream output )
{
m_output = output;
}

/**
* Provide component with a logger.
*
* @param logger the logger
*/
public void enableLogging( final Logger logger )
{
m_logger = logger;
}

protected final Logger getLogger()
{
return m_logger;
}

private static String formatTime( long millis )
{
long seconds = millis / 1000;
long minutes = seconds / 60;

if( minutes > 0 )
{
return minutes + " minute" + ( minutes == 1 ? " " : "s " ) +
( seconds % 60 ) + " second" + ( seconds % 60 == 1 ? "" : "s" );
}
else
{
return seconds + " second" + ( seconds % 60 == 1 ? "" : "s" );
}
}

public void setLogLevel( final int loglevel )
{
m_loglevel = loglevel;
}

/**
* Turns off or on this recorder.
*
* @param record true for on, false for off, null for no change.
*/
public void setRecordState( final boolean record )
{
m_record = record;
}

/**
* Notify listener of log message event.
*/
public void log( final LogEvent event )
{
final Throwable throwable = event.getThrowable();
if( throwable != null )
{
m_output.println( StringUtil.LINE_SEPARATOR + "BUILD FAILED" + StringUtil.LINE_SEPARATOR );
throwable.printStackTrace( m_output );
finishRecording();
}
else
{
getLogger().debug( "--- MESSAGE LOGGED" );

final StringBuffer sb = new StringBuffer();

final String task = event.getTaskName();
if( task != null )
{
final String name = "[" + task + "]";
final int padding = 12 - name.length();
for( int i = 0; i < padding; i++ )
{
sb.append( " " );
}
sb.append( name );
}

sb.append( event.getMessage() );

//FIXME: Check log level here
if( m_record )
{
m_output.println( sb.toString() );
}
}
}

/**
* Notify listener of projectFinished event.
*/
public void projectFinished( final ProjectEvent event )
{
m_output.println( StringUtil.LINE_SEPARATOR + "BUILD SUCCESSFUL" );
finishRecording();
}

private void finishRecording()
{
getLogger().debug( "< BUILD FINISHED" );
m_output.flush();
m_output.close();
}

/**
* Notify listener of projectStarted event.
*/
public void projectStarted( final ProjectEvent event )
{
getLogger().debug( "> BUILD STARTED" );
}


/**
* Notify listener of targetFinished event.
*/
public void targetFinished( final TargetEvent event )
{
getLogger().debug( "<< TARGET FINISHED -- " + event.getTargetName() );
final long millis = System.currentTimeMillis() - m_targetStartTime;
final String duration = formatTime( millis );
getLogger().debug( event.getTargetName() + ": duration " + duration );
m_output.flush();
}

/**
* Notify listener of targetStarted event.
*/
public void targetStarted( final TargetEvent event )
{
getLogger().debug( ">> TARGET STARTED -- " + event.getTargetName() );
getLogger().info( StringUtil.LINE_SEPARATOR + event.getTargetName() + ":" );
m_targetStartTime = System.currentTimeMillis();

}

/**
* Notify listener of taskStarted event.
*/
public void taskStarted( final TaskEvent event )
{
getLogger().debug( ">>> TASK STARTED -- " + event.getTaskName() );
}

/**
* Notify listener of taskFinished event.
*/
public void taskFinished( final TaskEvent event )
{
getLogger().debug( "<<< TASK FINISHED -- " + event.getTaskName() );
m_output.flush();
}
}

Loading…
Cancel
Save