darrell 2002/06/10 22:30:47
Modified: ant1compat project.xml
ant1compat/src/conf ant-descriptor.xml
ant1compat/src/test/org/apache/tools/ant/test
Ant1CompatTestCase.java if-unless-test.xml
antlib/src/java/org/apache/antlib/project TargetTask.java
container/src/java/org/apache/myrmidon/components/builder
ConvertingProjectBuilder.java
DefaultProjectBuilder.java
container/src/java/org/apache/myrmidon/components/workspace
DefaultWorkspace.java
Log:
* Added Ant1CompatTargetTask, which provides Ant1 style handling of <target>
elements, by processing "if" and "unless" attributes as per Ant1.
* Implicit target is now of type "simple-target", and is executed directly by
DefaultWorkspace, rather than by TargetTask. TargetTask now has no knowledge
of the "<init>" target name.
* ConvertingProjectBuilder no longer has add "magic" <if> tasks to replicate
Ant1 target behaviour.
Revision Changes Path
1.11 +1 -0 jakarta-ant-myrmidon/ant1compat/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-ant-myrmidon/ant1compat/project.xml,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- project.xml 4 Jun 2002 12:47:51 -0000 1.10
+++ project.xml 11 Jun 2002 05:30:47 -0000 1.11
@@ -9,6 +9,7 @@
<classpath>
<fileset dir="../api/build/lib" includes="*.jar"/>
<fileset dir="../aut/build/lib" includes="*.jar"/>
+ <fileset dir="../antlib/build/lib" includes="*.jar"/>
<fileset dir="../framework/build/lib" includes="*.jar"/>
<fileset dir="../lib" includes="*.jar"/>
</classpath>
1.3 +4 -0
jakarta-ant-myrmidon/ant1compat/src/conf/ant-descriptor.xml
Index: ant-descriptor.xml
===================================================================
RCS file:
/home/cvs/jakarta-ant-myrmidon/ant1compat/src/conf/ant-descriptor.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ant-descriptor.xml 8 May 2002 13:40:21 -0000 1.2
+++ ant-descriptor.xml 11 Jun 2002 05:30:47 -0000 1.3
@@ -1,6 +1,10 @@
<ant-lib version="1.0">
<types>
+ <!-- Target task -->
+ <task name="target"
+ classname="org.apache.tools.ant.Ant1CompatTargetTask"/>
+
<!-- Type instance tasks -->
<task name="path"
classname="org.apache.tools.ant.Ant1CompatTypeInstanceTask" />
1.5 +20 -6
jakarta-ant-myrmidon/ant1compat/src/test/org/apache/tools/ant/test/Ant1CompatTestCase.java
Index: Ant1CompatTestCase.java
===================================================================
RCS file:
/home/cvs/jakarta-ant-myrmidon/ant1compat/src/test/org/apache/tools/ant/test/Ant1CompatTestCase.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Ant1CompatTestCase.java 29 May 2002 06:13:21 -0000 1.4
+++ Ant1CompatTestCase.java 11 Jun 2002 05:30:47 -0000 1.5
@@ -52,19 +52,33 @@
LogMessageTracker tracker = new LogMessageTracker( LogLevel.WARN );
// Should pass if for "set", "true" and "false"
- tracker.addExpectedMessage( "/if-unless-test/if-set-test/if/echo",
"Ran target: if-set-test" );
- tracker.addExpectedMessage( "/if-unless-test/if-true-test/if/echo",
"Ran target: if-true-test" );
- tracker.addExpectedMessage( "/if-unless-test/if-false-test/if/echo",
"Ran target: if-false-test" );
+ tracker.addExpectedMessage( "/if-unless-test/if-set-test/echo", "Ran
target: if-set-test" );
+ tracker.addExpectedMessage( "/if-unless-test/if-true-test/echo",
"Ran target: if-true-test" );
+ tracker.addExpectedMessage( "/if-unless-test/if-false-test/echo",
"Ran target: if-false-test" );
// Should only pass unless, when not defined.
- tracker.addExpectedMessage(
"/if-unless-test/unless-unset-test/if/echo",
+ tracker.addExpectedMessage( "/if-unless-test/unless-unset-test/echo",
"Ran target: unless-unset-test" );
// If combined with unless on a single target.
- tracker.addExpectedMessage(
"/if-unless-test/if-with-unless-test-1/if/echo",
+ tracker.addExpectedMessage(
"/if-unless-test/if-with-unless-test-1/echo",
"Ran target: if-with-unless-test-1" );
executeTarget( projectFile, "if-unless-tests", tracker );
+ }
+
+ public void testIfUnlessCalledTarget() throws Exception
+ {
+ // Process a single target with if and unless, to make
+ // sure that this works for the directly called target.
+ final File projectFile = getTestResource( "if-unless-test.xml" );
+
+ // if/unless tests.
+ LogMessageTracker tracker = new LogMessageTracker( LogLevel.WARN );
+ tracker.addExpectedMessage(
"/if-unless-test/if-unless-test-single-target/echo",
+ "Ran target:
if-unless-test-single-target" );
+
+ executeTarget( projectFile, "if-unless-test-single-target" );
}
public void testAntTask() throws Exception
1.2 +5 -0
jakarta-ant-myrmidon/ant1compat/src/test/org/apache/tools/ant/test/if-unless-test.xml
Index: if-unless-test.xml
===================================================================
RCS file:
/home/cvs/jakarta-ant-myrmidon/ant1compat/src/test/org/apache/tools/ant/test/if-unless-test.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- if-unless-test.xml 14 Apr 2002 12:38:41 -0000 1.1
+++ if-unless-test.xml 11 Jun 2002 05:30:47 -0000 1.2
@@ -59,4 +59,9 @@
<target name="if-with-unless-test-3" if="prop-set" unless="prop-set">
<echo message="Ran target: if-with-unless-test-3"/>
</target>
+
+ <target name="if-unless-test-single-target" depends="setup-props"
+ if="prop-set" unless="prop-unset">
+ <echo message="Ran target: if-unless-test-single-target"/>
+ </target>
</project>
1.13 +2 -16
jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project/TargetTask.java
Index: TargetTask.java
===================================================================
RCS file:
/home/cvs/jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/project/TargetTask.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- TargetTask.java 11 Jun 2002 03:59:48 -0000 1.12
+++ TargetTask.java 11 Jun 2002 05:30:47 -0000 1.13
@@ -29,8 +29,6 @@
private static final Resources REZ =
ResourceManager.getPackageResources( TargetTask.class );
- private static final String IMPLICIT_TARGET_NAME = "<init>";
-
/**
* The array of ordered tasks which are contained
* withing Target.
@@ -118,12 +116,6 @@
throw new TaskException( message );
}
- //Add in special case for "init" target.
- if( IMPLICIT_TARGET_NAME.equals( m_name ) )
- {
- return;
- }
-
final NameValidatorManager validatorManager =
(NameValidatorManager)getService( NameValidatorManager.class );
try
@@ -147,12 +139,6 @@
private void executeDependencies()
throws TaskException
{
- // Execute implicit target first
- if( ! m_name.equals( IMPLICIT_TARGET_NAME ) )
- {
- executeDependency( new Dependency( null, IMPLICIT_TARGET_NAME )
);
- }
-
if( null != m_dependencies )
{
for( int i = 0; i < m_dependencies.length; i++ )
@@ -167,7 +153,7 @@
*
* @throws TaskException if theres an eror executing contained tasks.
*/
- private void executeContainedTasks()
+ protected void executeContainedTasks()
throws TaskException
{
final ModelElement[] tasks =
1.13 +6 -54
jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/builder/ConvertingProjectBuilder.java
Index: ConvertingProjectBuilder.java
===================================================================
RCS file:
/home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/builder/ConvertingProjectBuilder.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- ConvertingProjectBuilder.java 8 Jun 2002 23:56:04 -0000 1.12
+++ ConvertingProjectBuilder.java 11 Jun 2002 05:30:47 -0000 1.13
@@ -39,19 +39,15 @@
// Put a new version attribute.
model.setAttribute( VERSION_ATTRIBUTE, "2.0" );
- // Convert the child <target> elements, and move all the non <target>
- // elements
+ // Move all the non <target> elements (implicit target) to before
+ // any <target> elements.
final ModelElement[] children = model.getChildren();
int insertPos = 0;
for( int i = 0; i < children.length; i++ )
{
final ModelElement child = children[ i ];
- if( child.getName().equals( "target" ) )
- {
- convertTarget( child );
- }
- else
+ if( ! child.getName().equals( "target" ) )
{
if( i > insertPos )
{
@@ -62,55 +58,11 @@
}
}
- // Add an "import" task for the ant1 tasks
+ // Add an "import" task for the ant1 tasks - this is the first
+ // Task in the implicit target.
final ModelElement typelibDeclaration =
new ModelElement( "import", model.getLocation() );
typelibDeclaration.setAttribute( "library", "ant1" );
model.addChild( 0, typelibDeclaration );
- }
-
- /**
- * Converts an Ant1 target into a Myrmidon version.
- * @param target The target to convert
- */
- private void convertTarget( final ModelElement target )
- {
- final String ifAttrib = target.getAttribute( "if" );
- final String unlessAttrib = target.getAttribute( "unless" );
-
- if( ifAttrib == null && unlessAttrib == null )
- {
- // Don't need to do anything
- return;
- }
-
- target.setAttribute( "if", null );
- target.setAttribute( "unless", null );
-
- // Wrap the children of the target in an <if> task
- final ModelElement ifTask = new ModelElement( "if",
target.getLocation() );
- final ModelElement condition = new ModelElement( "condition",
target.getLocation() );
- ifTask.addChild( condition );
- ifTask.addChildren( target.getChildren() );
- ifTask.setContent( target.getContent() );
- target.removeChildren();
- target.addChild( ifTask );
-
- if( ifAttrib != null )
- {
- // Add an <is-set> test
- final ModelElement test = new ModelElement( "is-set",
target.getLocation() );
- test.setAttribute( "property", ifAttrib );
- condition.addChild( test );
- }
- if( unlessAttrib != null )
- {
- // Add a ! <is-set> test
- final ModelElement test = new ModelElement( "is-set",
target.getLocation() );
- test.setAttribute( "property", unlessAttrib );
- final ModelElement not = new ModelElement( "not",
target.getLocation() );
- not.addChild( test );
- condition.addChild( not );
- }
}
}
1.75 +2 -2
jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java
Index: DefaultProjectBuilder.java
===================================================================
RCS file:
/home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/builder/DefaultProjectBuilder.java,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -r1.74 -r1.75
--- DefaultProjectBuilder.java 11 Jun 2002 04:47:09 -0000 1.74
+++ DefaultProjectBuilder.java 11 Jun 2002 05:30:47 -0000 1.75
@@ -341,7 +341,7 @@
final List targets )
throws Exception
{
- final ModelElement implicit = new ModelElement( "target",
model.getLocation() );
+ final ModelElement implicit = new ModelElement( "simple-target",
model.getLocation() );
implicit.setAttribute( "name", Project.IMPLICIT_TARGET_NAME );
final ModelElement[] children = model.getChildren();
1.81 +9 -2
jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java
Index: DefaultWorkspace.java
===================================================================
RCS file:
/home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/workspace/DefaultWorkspace.java,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -r1.80 -r1.81
--- DefaultWorkspace.java 11 Jun 2002 04:47:09 -0000 1.80
+++ DefaultWorkspace.java 11 Jun 2002 05:30:47 -0000 1.81
@@ -78,6 +78,13 @@
{
final ProjectEntry entry = getProjectEntry( descriptor );
final Project project = entry.getProject();
+
+ // First execute the implicit target.
+ Target implicitTarget =
+ project.getTarget( Project.IMPLICIT_TARGET_NAME );
+ executeTarget( entry, implicitTarget );
+
+ // Now execute the called target.
Target target = project.getTarget( targetName );
if( null == target )
{
@@ -242,7 +249,7 @@
/**
* Executes a target. Does not execute the target if it has already been
- * executed. Executes the dependencies of the target, before executing
+ * executed. Executes the implicit target, before executing
* the target itself.
*
* @param target the target
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>