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 );


if( projectManager instanceof Composable )
{
final DefaultComponentManager componentManager =
@@ -237,6 +238,7 @@ public class DefaultEmbeddor
"org.apache.myrmidon.components.type.DefaultTypeManager" );
defaults.setParameter( Executor.ROLE,
//"org.apache.myrmidon.components.executor.DefaultExecutor" );
//"org.apache.myrmidon.components.executor.PrintingExecutor" );
"org.apache.myrmidon.components.executor.AspectAwareExecutor" );
defaults.setParameter( ProjectManager.ROLE,
"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" );
getAspectManager().preExecute();
task.execute();
doExecute( taskModel, task );

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

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

//TODO: Extract and clean taskModel here.
//Get all parameters from model and provide to appropriate aspect.
//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.ExecutionFrame;
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.Target;
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 org.apache.avalon.framework.configuration.Configuration;
import org.apache.myrmidon.framework.Condition;

/**
* 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
{
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;

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.


+ 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.TaskException;
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.DefaultEmbeddor;
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 INCREMENTAL_OPT = 6;
private static final int HOME_DIR_OPT = 7;
private static final int DRY_RUN_OPT = 8;

//incompatable options for info options
private static final int[] INFO_OPT_INCOMPAT = new int[]
{
HELP_OPT, QUIET_OPT, VERBOSE_OPT, FILE_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
@@ -96,6 +98,9 @@ public class CLIMain
///List of user supplied parameters for builder
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.
*
@@ -132,7 +137,7 @@ public class CLIMain
private CLOptionDescriptor[] createCLOptions()
{
//TODO: localise
final CLOptionDescriptor[] options = new CLOptionDescriptor[ 12 ];
final CLOptionDescriptor[] options = new CLOptionDescriptor[ 13 ];

options[0] =
new CLOptionDescriptor( "help",
@@ -210,6 +215,11 @@ public class CLIMain
BUILDER_PARAM_OPT,
"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;
}
@@ -259,6 +269,8 @@ public class CLIMain
m_builderParameters.setParameter( option.getArgument( 0 ), option.getArgument( 1 ) );
break;

case DRY_RUN_OPT: m_dryRun = true; 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 Task Lib Directory: " + m_taskLibDir );

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

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


Loading…
Cancel
Save