Browse Source

Integrate change of Condition package into rest of system.

Add a new Executor and allow possibility of "dry runs". Ie runs that don't actually execute commands.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269238 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
ab8c0b3d29
8 changed files with 109 additions and 6 deletions
  1. +2
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
  2. +7
    -1
      proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/AspectAwareExecutor.java
  3. +76
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/PrintingExecutor.java
  4. +1
    -1
      proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/DefaultProjectManager.java
  5. +1
    -0
      proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Target.java
  6. +1
    -1
      proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java
  7. +1
    -1
      proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.java
  8. +20
    -2
      proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java

+ 2
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java View File

@@ -132,6 +132,7 @@ public class DefaultEmbeddor


setupLogger( projectManager ); setupLogger( projectManager );



if( projectManager instanceof Composable ) if( projectManager instanceof Composable )
{ {
final DefaultComponentManager componentManager = final DefaultComponentManager componentManager =
@@ -237,6 +238,7 @@ public class DefaultEmbeddor
"org.apache.myrmidon.components.type.DefaultTypeManager" ); "org.apache.myrmidon.components.type.DefaultTypeManager" );
defaults.setParameter( Executor.ROLE, defaults.setParameter( Executor.ROLE,
//"org.apache.myrmidon.components.executor.DefaultExecutor" ); //"org.apache.myrmidon.components.executor.DefaultExecutor" );
//"org.apache.myrmidon.components.executor.PrintingExecutor" );
"org.apache.myrmidon.components.executor.AspectAwareExecutor" ); "org.apache.myrmidon.components.executor.AspectAwareExecutor" );
defaults.setParameter( ProjectManager.ROLE, defaults.setParameter( ProjectManager.ROLE,
"org.apache.myrmidon.components.manager.DefaultProjectManager" ); "org.apache.myrmidon.components.manager.DefaultProjectManager" );


+ 7
- 1
proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/AspectAwareExecutor.java View File

@@ -95,13 +95,19 @@ public class AspectAwareExecutor


getLogger().debug( "Executing" ); getLogger().debug( "Executing" );
getAspectManager().preExecute(); getAspectManager().preExecute();
task.execute();
doExecute( taskModel, task );


getLogger().debug( "Disposing" ); getLogger().debug( "Disposing" );
getAspectManager().preDestroy(); getAspectManager().preDestroy();
doDispose( task, taskModel ); doDispose( task, taskModel );
} }


protected void doExecute( final Configuration taskModel, final Task task )
throws TaskException
{
task.execute();
}

//TODO: Extract and clean taskModel here. //TODO: Extract and clean taskModel here.
//Get all parameters from model and provide to appropriate aspect. //Get all parameters from model and provide to appropriate aspect.
//aspect( final Parameters parameters, final Configuration[] elements ) //aspect( final Parameters parameters, final Configuration[] elements )


+ 76
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/PrintingExecutor.java View File

@@ -0,0 +1,76 @@
/*
* 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 file.
*/
package org.apache.myrmidon.components.executor;

import org.apache.myrmidon.api.Task;
import org.apache.myrmidon.api.TaskException;
import org.apache.avalon.framework.configuration.Configuration;

public class PrintingExecutor
extends AspectAwareExecutor
{
protected void doExecute( final Configuration taskModel, final Task task )
throws TaskException
{
final StringBuffer sb = new StringBuffer();
printConfiguration( taskModel, 0, sb );
System.out.println( sb.toString() );
}

private void printConfiguration( final Configuration taskModel,
final int level,
final StringBuffer sb )
{
for( int i = 0; i < level; i++ )
{
sb.append( ' ' );
}
sb.append( '<' );
sb.append( taskModel.getName() );


final String[] names = taskModel.getAttributeNames();
for( int i = 0; i < names.length; i++ )
{
final String name = names[ i ];
final String value = taskModel.getAttribute( name, null );

sb.append( ' ' );
sb.append( name );
sb.append( "=\"" );
sb.append( value );
sb.append( '\"' );
}

final Configuration[] children = taskModel.getChildren();
if( 0 == children.length )
{
sb.append( "/>\n" );
}
else
{
sb.append( ">\n" );

for( int i = 0; i < children.length; i++ )
{
printConfiguration( children[ i ], level + 1, sb );
}

for( int i = 0; i < level; i++ )
{
sb.append( ' ' );
}

sb.append( "</" );
sb.append( taskModel.getName() );
sb.append( ">\n" );
}
}
}

+ 1
- 1
proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/DefaultProjectManager.java View File

@@ -29,7 +29,7 @@ import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.components.executor.DefaultExecutionFrame; import org.apache.myrmidon.components.executor.DefaultExecutionFrame;
import org.apache.myrmidon.components.executor.ExecutionFrame; import org.apache.myrmidon.components.executor.ExecutionFrame;
import org.apache.myrmidon.components.executor.Executor; import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.components.model.Condition;
import org.apache.myrmidon.framework.Condition;
import org.apache.myrmidon.components.model.Project; import org.apache.myrmidon.components.model.Project;
import org.apache.myrmidon.components.model.Target; import org.apache.myrmidon.components.model.Target;
import org.apache.myrmidon.components.type.TypeManager; import org.apache.myrmidon.components.type.TypeManager;


+ 1
- 0
proposal/myrmidon/src/java/org/apache/myrmidon/components/model/Target.java View File

@@ -9,6 +9,7 @@ package org.apache.myrmidon.components.model;


import java.util.ArrayList; import java.util.ArrayList;
import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.Configuration;
import org.apache.myrmidon.framework.Condition;


/** /**
* Targets in build file. * Targets in build file.


+ 1
- 1
proposal/myrmidon/src/java/org/apache/myrmidon/framework/DataType.java View File

@@ -15,5 +15,5 @@ package org.apache.myrmidon.framework;
*/ */
public interface DataType public interface DataType
{ {
String ROLE = "org.apache.myrmidon.api.DataType";
String ROLE = "org.apache.myrmidon.framework.DataType";
} }

+ 1
- 1
proposal/myrmidon/src/java/org/apache/myrmidon/framework/Pattern.java View File

@@ -8,7 +8,7 @@
package org.apache.myrmidon.framework; package org.apache.myrmidon.framework;


import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.components.model.Condition;
import org.apache.myrmidon.framework.Condition;


/** /**
* Basic data type for holding patterns. * Basic data type for holding patterns.


+ 20
- 2
proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java View File

@@ -37,6 +37,7 @@ import org.apache.myrmidon.api.DefaultTaskContext;
import org.apache.myrmidon.api.TaskContext; import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException; import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.components.builder.ProjectBuilder; import org.apache.myrmidon.components.builder.ProjectBuilder;
import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.components.embeddor.Embeddor; import org.apache.myrmidon.components.embeddor.Embeddor;
import org.apache.myrmidon.components.embeddor.DefaultEmbeddor; import org.apache.myrmidon.components.embeddor.DefaultEmbeddor;
import org.apache.myrmidon.components.manager.LogTargetToListenerAdapter; import org.apache.myrmidon.components.manager.LogTargetToListenerAdapter;
@@ -67,13 +68,14 @@ public class CLIMain
private static final int TASKLIB_DIR_OPT = 5; private static final int TASKLIB_DIR_OPT = 5;
private static final int INCREMENTAL_OPT = 6; private static final int INCREMENTAL_OPT = 6;
private static final int HOME_DIR_OPT = 7; private static final int HOME_DIR_OPT = 7;
private static final int DRY_RUN_OPT = 8;


//incompatable options for info options //incompatable options for info options
private static final int[] INFO_OPT_INCOMPAT = new int[] private static final int[] INFO_OPT_INCOMPAT = new int[]
{ {
HELP_OPT, QUIET_OPT, VERBOSE_OPT, FILE_OPT, HELP_OPT, QUIET_OPT, VERBOSE_OPT, FILE_OPT,
LOG_LEVEL_OPT, VERSION_OPT, LISTENER_OPT, LOG_LEVEL_OPT, VERSION_OPT, LISTENER_OPT,
DEFINE_OPT //TASKLIB_DIR_OPT, HOME_DIR_OPT
DEFINE_OPT, DRY_RUN_OPT //TASKLIB_DIR_OPT, HOME_DIR_OPT
}; };


//incompatable options for other logging options //incompatable options for other logging options
@@ -96,6 +98,9 @@ public class CLIMain
///List of user supplied parameters for builder ///List of user supplied parameters for builder
private Parameters m_builderParameters = new Parameters(); private Parameters m_builderParameters = new Parameters();


///Determine whether tasks are actually executed
private boolean m_dryRun = false;

/** /**
* Main entry point called to run standard Myrmidon. * Main entry point called to run standard Myrmidon.
* *
@@ -132,7 +137,7 @@ public class CLIMain
private CLOptionDescriptor[] createCLOptions() private CLOptionDescriptor[] createCLOptions()
{ {
//TODO: localise //TODO: localise
final CLOptionDescriptor[] options = new CLOptionDescriptor[ 12 ];
final CLOptionDescriptor[] options = new CLOptionDescriptor[ 13 ];


options[0] = options[0] =
new CLOptionDescriptor( "help", new CLOptionDescriptor( "help",
@@ -210,6 +215,11 @@ public class CLIMain
BUILDER_PARAM_OPT, BUILDER_PARAM_OPT,
"Define a builder parameter (ie -Bfoo=var)" ); "Define a builder parameter (ie -Bfoo=var)" );


options[12] =
new CLOptionDescriptor( "dry-run",
CLOptionDescriptor.ARGUMENT_DISALLOWED,
DRY_RUN_OPT,
"Do not execute tasks - just print them out" );


return options; return options;
} }
@@ -259,6 +269,8 @@ public class CLIMain
m_builderParameters.setParameter( option.getArgument( 0 ), option.getArgument( 1 ) ); m_builderParameters.setParameter( option.getArgument( 0 ), option.getArgument( 1 ) );
break; break;


case DRY_RUN_OPT: m_dryRun = true; break;

case 0: m_targets.add( option.getArgument() ); break; case 0: m_targets.add( option.getArgument() ); break;
} }
} }
@@ -318,6 +330,12 @@ public class CLIMain
//getLogger().debug( "Ant Lib Directory: " + m_libDir ); //getLogger().debug( "Ant Lib Directory: " + m_libDir );
//getLogger().debug( "Ant Task Lib Directory: " + m_taskLibDir ); //getLogger().debug( "Ant Task Lib Directory: " + m_taskLibDir );


if( m_dryRun )
{
m_parameters.setParameter( Executor.ROLE,
"org.apache.myrmidon.components.executor.PrintingExecutor" );
}

final Embeddor embeddor = new DefaultEmbeddor(); final Embeddor embeddor = new DefaultEmbeddor();
setupLogger( embeddor ); setupLogger( embeddor );
embeddor.parameterize( m_parameters ); embeddor.parameterize( m_parameters );


Loading…
Cancel
Save