Made BuildException extend TaskException. Now BuildException is no longer a RuntimException and needs to be declared everywhere it could be thrown Removed the constructors that took location info for BuildException. Location is something known about byt the container and the tasks them selves should not be worrying about that sort of thing Removed a bunch of deprecated methods and features. Also moved all file handling utilities outside iof the Project class. To aid the transition I added a resolveFile method to the base ProjectComponent class. 480 odd compile errors left to clean up. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270158 13f79535-47bb-0310-9956-ffa450edef68master
@@ -6,6 +6,7 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.io.ByteArrayOutputStream; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
@@ -20,7 +21,9 @@ import java.util.Hashtable; | |||
import java.util.Vector; | |||
import java.util.zip.ZipEntry; | |||
import java.util.zip.ZipFile; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.util.FileUtils; | |||
/** | |||
* Used to load classes within ant with a different claspath from that used to | |||
@@ -97,24 +100,25 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
* The project to which this class loader belongs. | |||
*/ | |||
private Project project; | |||
static | |||
{ | |||
try | |||
{ | |||
getProtectionDomain = Class.class.getMethod( "getProtectionDomain", new Class[0] ); | |||
getProtectionDomain = Class.class.getMethod( "getProtectionDomain", new Class[ 0 ] ); | |||
Class protectionDomain = Class.forName( "java.security.ProtectionDomain" ); | |||
Class[] args = new Class[]{String.class, byte[].class, Integer.TYPE, Integer.TYPE, protectionDomain}; | |||
defineClassProtectionDomain = ClassLoader.class.getDeclaredMethod( "defineClass", args ); | |||
getContextClassLoader = Thread.class.getMethod( "getContextClassLoader", new Class[0] ); | |||
getContextClassLoader = Thread.class.getMethod( "getContextClassLoader", new Class[ 0 ] ); | |||
args = new Class[]{ClassLoader.class}; | |||
setContextClassLoader = Thread.class.getMethod( "setContextClassLoader", args ); | |||
} | |||
catch( Exception e ) | |||
{} | |||
{ | |||
} | |||
} | |||
/** | |||
* Create a classloader for the given project using the classpath given. | |||
* | |||
@@ -136,7 +140,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
{ | |||
try | |||
{ | |||
addPathElement( ( String )pathElements[i] ); | |||
addPathElement( (String)pathElements[ i ] ); | |||
} | |||
catch( BuildException e ) | |||
{ | |||
@@ -169,7 +173,6 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
addSystemPackageRoot( "javax" ); | |||
} | |||
/** | |||
* Create a classloader for the given project using the classpath given. | |||
* | |||
@@ -243,17 +246,18 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
* current loader value for later resetting | |||
*/ | |||
public void setThreadContextLoader() | |||
throws TaskException | |||
{ | |||
if( isContextLoaderSaved ) | |||
{ | |||
throw new BuildException( "Context loader has not been reset" ); | |||
throw new TaskException( "Context loader has not been reset" ); | |||
} | |||
if( getContextClassLoader != null && setContextClassLoader != null ) | |||
{ | |||
try | |||
{ | |||
savedContextLoader | |||
= ( ClassLoader )getContextClassLoader.invoke( Thread.currentThread(), new Object[0] ); | |||
= (ClassLoader)getContextClassLoader.invoke( Thread.currentThread(), new Object[ 0 ] ); | |||
Object[] args = new Object[]{this}; | |||
setContextClassLoader.invoke( Thread.currentThread(), args ); | |||
isContextLoaderSaved = true; | |||
@@ -261,11 +265,11 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
catch( InvocationTargetException ite ) | |||
{ | |||
Throwable t = ite.getTargetException(); | |||
throw new BuildException( t.toString() ); | |||
throw new TaskException( t.toString() ); | |||
} | |||
catch( Exception e ) | |||
{ | |||
throw new BuildException( e.toString() ); | |||
throw new TaskException( e.toString() ); | |||
} | |||
} | |||
} | |||
@@ -293,22 +297,22 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
if( url != null ) | |||
{ | |||
log( "Resource " + name + " loaded from parent loader", | |||
Project.MSG_DEBUG ); | |||
Project.MSG_DEBUG ); | |||
} | |||
else | |||
{ | |||
// try and load from this loader if the parent either didn't find | |||
// it or wasn't consulted. | |||
for( Enumeration e = pathComponents.elements(); e.hasMoreElements() && url == null; ) | |||
for( Enumeration e = pathComponents.elements(); e.hasMoreElements() && url == null; ) | |||
{ | |||
File pathComponent = ( File )e.nextElement(); | |||
File pathComponent = (File)e.nextElement(); | |||
url = getResourceURL( pathComponent, name ); | |||
if( url != null ) | |||
{ | |||
log( "Resource " + name | |||
+ " loaded from ant loader", | |||
Project.MSG_DEBUG ); | |||
Project.MSG_DEBUG ); | |||
} | |||
} | |||
} | |||
@@ -321,7 +325,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
if( url != null ) | |||
{ | |||
log( "Resource " + name + " loaded from parent loader", | |||
Project.MSG_DEBUG ); | |||
Project.MSG_DEBUG ); | |||
} | |||
} | |||
@@ -386,7 +390,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
if( resourceStream == null ) | |||
{ | |||
log( "Couldn't load ResourceStream for " + name, | |||
Project.MSG_DEBUG ); | |||
Project.MSG_DEBUG ); | |||
} | |||
return resourceStream; | |||
@@ -403,7 +407,6 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
loaderPackages.addElement( packageRoot + "." ); | |||
} | |||
/** | |||
* Add an element to the classpath to be searched | |||
* | |||
@@ -414,8 +417,8 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
throws BuildException | |||
{ | |||
File pathComponent | |||
= project != null ? project.resolveFile( pathElement ) | |||
: new File( pathElement ); | |||
= project != null ? FileUtils.newFileUtils().resolveFile( project.getBaseDir(), pathElement ) | |||
: new File( pathElement ); | |||
pathComponents.addElement( pathComponent ); | |||
} | |||
@@ -435,15 +438,17 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
cleanup(); | |||
} | |||
public void buildStarted( BuildEvent event ) { } | |||
public void buildStarted( BuildEvent event ) | |||
{ | |||
} | |||
public void cleanup() | |||
{ | |||
pathComponents = null; | |||
project = null; | |||
for( Enumeration e = zipFiles.elements(); e.hasMoreElements(); ) | |||
for( Enumeration e = zipFiles.elements(); e.hasMoreElements(); ) | |||
{ | |||
ZipFile zipFile = ( ZipFile )e.nextElement(); | |||
ZipFile zipFile = (ZipFile)e.nextElement(); | |||
try | |||
{ | |||
zipFile.close(); | |||
@@ -472,7 +477,6 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
return findClassInComponents( name ); | |||
} | |||
/** | |||
* Load a class through this class loader even if that class is available on | |||
* the parent classpath. This ensures that any classes which are loaded by | |||
@@ -524,12 +528,15 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
return theClass; | |||
} | |||
public void messageLogged( BuildEvent event ) { } | |||
public void messageLogged( BuildEvent event ) | |||
{ | |||
} | |||
/** | |||
* Reset the current thread's context loader to its original value | |||
*/ | |||
public void resetThreadContextLoader() | |||
throws TaskException | |||
{ | |||
if( isContextLoaderSaved && | |||
getContextClassLoader != null && setContextClassLoader != null ) | |||
@@ -544,22 +551,30 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
catch( InvocationTargetException ite ) | |||
{ | |||
Throwable t = ite.getTargetException(); | |||
throw new BuildException( t.toString() ); | |||
throw new TaskException( t.toString() ); | |||
} | |||
catch( Exception e ) | |||
{ | |||
throw new BuildException( e.toString() ); | |||
throw new TaskException( e.toString() ); | |||
} | |||
} | |||
} | |||
public void targetFinished( BuildEvent event ) { } | |||
public void targetFinished( BuildEvent event ) | |||
{ | |||
} | |||
public void targetStarted( BuildEvent event ) { } | |||
public void targetStarted( BuildEvent event ) | |||
{ | |||
} | |||
public void taskFinished( BuildEvent event ) { } | |||
public void taskFinished( BuildEvent event ) | |||
{ | |||
} | |||
public void taskStarted( BuildEvent event ) { } | |||
public void taskStarted( BuildEvent event ) | |||
{ | |||
} | |||
/** | |||
* Returns an enumeration of URLs representing all the resources with the | |||
@@ -575,7 +590,6 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
return new ResourceEnumeration( name ); | |||
} | |||
/** | |||
* Load a class with this class loader. This method will load a class. This | |||
* class attempts to load the class firstly using the parent class loader. | |||
@@ -649,9 +663,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
{ | |||
project.log( message, priority ); | |||
} | |||
// else { | |||
// System.out.println(message); | |||
// } | |||
// else { | |||
// System.out.println(message); | |||
// } | |||
} | |||
/** | |||
@@ -680,7 +694,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
{ | |||
ByteArrayOutputStream baos = new ByteArrayOutputStream(); | |||
int bytesRead = -1; | |||
byte[] buffer = new byte[BUFFER_SIZE]; | |||
byte[] buffer = new byte[ BUFFER_SIZE ]; | |||
while( ( bytesRead = stream.read( buffer, 0, BUFFER_SIZE ) ) != -1 ) | |||
{ | |||
@@ -696,20 +710,20 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
{ | |||
try | |||
{ | |||
Object domain = getProtectionDomain.invoke( Project.class, new Object[0] ); | |||
Object domain = getProtectionDomain.invoke( Project.class, new Object[ 0 ] ); | |||
Object[] args = new Object[]{classname, classData, new Integer( 0 ), new Integer( classData.length ), domain}; | |||
return ( Class )defineClassProtectionDomain.invoke( this, args ); | |||
return (Class)defineClassProtectionDomain.invoke( this, args ); | |||
} | |||
catch( InvocationTargetException ite ) | |||
{ | |||
Throwable t = ite.getTargetException(); | |||
if( t instanceof ClassFormatError ) | |||
{ | |||
throw ( ClassFormatError )t; | |||
throw (ClassFormatError)t; | |||
} | |||
else if( t instanceof NoClassDefFoundError ) | |||
{ | |||
throw ( NoClassDefFoundError )t; | |||
throw (NoClassDefFoundError)t; | |||
} | |||
else | |||
{ | |||
@@ -759,7 +773,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
else | |||
{ | |||
// is the zip file in the cache | |||
ZipFile zipFile = ( ZipFile )zipFiles.get( file ); | |||
ZipFile zipFile = (ZipFile)zipFiles.get( file ); | |||
if( zipFile == null ) | |||
{ | |||
zipFile = new ZipFile( file ); | |||
@@ -775,7 +789,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
catch( Exception e ) | |||
{ | |||
log( "Ignoring Exception " + e.getClass().getName() + ": " + e.getMessage() + | |||
" reading resource " + resourceName + " from " + file, Project.MSG_VERBOSE ); | |||
" reading resource " + resourceName + " from " + file, Project.MSG_VERBOSE ); | |||
} | |||
return null; | |||
@@ -819,7 +833,7 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
} | |||
else | |||
{ | |||
ZipFile zipFile = ( ZipFile )zipFiles.get( file ); | |||
ZipFile zipFile = (ZipFile)zipFiles.get( file ); | |||
if( zipFile == null ) | |||
{ | |||
zipFile = new ZipFile( file ); | |||
@@ -855,9 +869,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
// designated to use a specific loader first (this one or the parent one) | |||
boolean useParentFirst = parentFirst; | |||
for( Enumeration e = systemPackages.elements(); e.hasMoreElements(); ) | |||
for( Enumeration e = systemPackages.elements(); e.hasMoreElements(); ) | |||
{ | |||
String packageName = ( String )e.nextElement(); | |||
String packageName = (String)e.nextElement(); | |||
if( resourceName.startsWith( packageName ) ) | |||
{ | |||
useParentFirst = true; | |||
@@ -865,9 +879,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
} | |||
} | |||
for( Enumeration e = loaderPackages.elements(); e.hasMoreElements(); ) | |||
for( Enumeration e = loaderPackages.elements(); e.hasMoreElements(); ) | |||
{ | |||
String packageName = ( String )e.nextElement(); | |||
String packageName = (String)e.nextElement(); | |||
if( resourceName.startsWith( packageName ) ) | |||
{ | |||
useParentFirst = false; | |||
@@ -899,7 +913,6 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
} | |||
} | |||
/** | |||
* Find a class on the given classpath. | |||
* | |||
@@ -916,9 +929,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
String classFilename = getClassFilename( name ); | |||
try | |||
{ | |||
for( Enumeration e = pathComponents.elements(); e.hasMoreElements(); ) | |||
for( Enumeration e = pathComponents.elements(); e.hasMoreElements(); ) | |||
{ | |||
File pathComponent = ( File )e.nextElement(); | |||
File pathComponent = (File)e.nextElement(); | |||
try | |||
{ | |||
stream = getResourceStream( pathComponent, classFilename ); | |||
@@ -946,7 +959,8 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
} | |||
} | |||
catch( IOException e ) | |||
{} | |||
{ | |||
} | |||
} | |||
} | |||
@@ -969,7 +983,6 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
} | |||
} | |||
/** | |||
* Get a stream to read the requested resource name from this loader. | |||
* | |||
@@ -983,9 +996,9 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
// class we want. | |||
InputStream stream = null; | |||
for( Enumeration e = pathComponents.elements(); e.hasMoreElements() && stream == null; ) | |||
for( Enumeration e = pathComponents.elements(); e.hasMoreElements() && stream == null; ) | |||
{ | |||
File pathComponent = ( File )e.nextElement(); | |||
File pathComponent = (File)e.nextElement(); | |||
stream = getResourceStream( pathComponent, name ); | |||
} | |||
return stream; | |||
@@ -1073,11 +1086,11 @@ public class AntClassLoader extends ClassLoader implements BuildListener | |||
try | |||
{ | |||
File pathComponent | |||
= ( File )pathComponents.elementAt( pathElementsIndex ); | |||
= (File)pathComponents.elementAt( pathElementsIndex ); | |||
url = getResourceURL( pathComponent, this.resourceName ); | |||
pathElementsIndex++; | |||
} | |||
catch( BuildException e ) | |||
catch( TaskException e ) | |||
{ | |||
// ignore path elements which are not valid relative to the project | |||
} | |||
@@ -44,43 +44,6 @@ public class BuildException | |||
super( msg, cause ); | |||
} | |||
/** | |||
* Constructs an exception with the given message and exception as a root | |||
* cause and a location in a file. | |||
* | |||
* @param msg Description of or information about the exception. | |||
* @param cause Exception that might have cause this one. | |||
* @param location Location in the project file where the error occured. | |||
*/ | |||
public BuildException( String msg, Throwable cause, Location location ) | |||
{ | |||
this( msg, cause ); | |||
this.location = location; | |||
} | |||
/** | |||
* Constructs an exception with the given exception as a root cause. | |||
* | |||
* @param cause Exception that might have caused this one. | |||
*/ | |||
public BuildException( Throwable cause ) | |||
{ | |||
super( cause.toString(), cause ); | |||
} | |||
/** | |||
* Constructs an exception with the given descriptive message and a location | |||
* in a file. | |||
* | |||
* @param msg Description of or information about the exception. | |||
* @param location Location in the project file where the error occured. | |||
*/ | |||
public BuildException( String msg, Location location ) | |||
{ | |||
super( msg ); | |||
this.location = location; | |||
} | |||
/** | |||
* Sets the file location where the error occured. | |||
* | |||
@@ -1,96 +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 file. | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.io.File; | |||
import java.io.FilenameFilter; | |||
/** | |||
* Filters filenames to determine whether or not the file is desirable. | |||
* | |||
* @author Jason Hunter [jhunter@servlets.com] | |||
* @author james@x180.com | |||
*/ | |||
public class DesirableFilter implements FilenameFilter | |||
{ | |||
/** | |||
* Test the given filename to determine whether or not it's desirable. This | |||
* helps tasks filter temp files and files used by CVS. | |||
* | |||
* @param dir Description of Parameter | |||
* @param name Description of Parameter | |||
* @return Description of the Returned Value | |||
*/ | |||
public boolean accept( File dir, String name ) | |||
{ | |||
// emacs save file | |||
if( name.endsWith( "~" ) ) | |||
{ | |||
return false; | |||
} | |||
// emacs autosave file | |||
if( name.startsWith( "#" ) && name.endsWith( "#" ) ) | |||
{ | |||
return false; | |||
} | |||
// openwindows text editor does this I think | |||
if( name.startsWith( "%" ) && name.endsWith( "%" ) ) | |||
{ | |||
return false; | |||
} | |||
/* | |||
* CVS stuff -- hopefully there won't be a case with | |||
* an all cap file/dir named "CVS" that somebody wants | |||
* to keep around... | |||
*/ | |||
if( name.equals( "CVS" ) ) | |||
{ | |||
return false; | |||
} | |||
/* | |||
* If we are going to ignore CVS might as well ignore | |||
* this one as well... | |||
*/ | |||
if( name.equals( ".cvsignore" ) ) | |||
{ | |||
return false; | |||
} | |||
// CVS merge autosaves. | |||
if( name.startsWith( ".#" ) ) | |||
{ | |||
return false; | |||
} | |||
// SCCS/CSSC/TeamWare: | |||
if( name.equals( "SCCS" ) ) | |||
{ | |||
return false; | |||
} | |||
// Visual Source Save | |||
if( name.equals( "vssver.scc" ) ) | |||
{ | |||
return false; | |||
} | |||
// default | |||
return true; | |||
} | |||
} | |||
@@ -6,9 +6,11 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.io.File; | |||
import java.util.StringTokenizer; | |||
import java.util.Vector; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* Class for scanning a directory for files/directories that match a certain | |||
@@ -105,7 +107,7 @@ public class DirectoryScanner implements FileScanner | |||
"**/SCCS", | |||
"**/SCCS/**", | |||
"**/vssver.scc" | |||
}; | |||
}; | |||
/** | |||
* Have the Vectors holding our results been built by a slow scan? | |||
@@ -174,8 +176,9 @@ public class DirectoryScanner implements FileScanner | |||
/** | |||
* Constructor. | |||
*/ | |||
public DirectoryScanner() { } | |||
public DirectoryScanner() | |||
{ | |||
} | |||
/** | |||
* Matches a string against a pattern. The pattern contains two special | |||
@@ -192,7 +195,6 @@ public class DirectoryScanner implements FileScanner | |||
return match( pattern, str, true ); | |||
} | |||
/** | |||
* Matches a string against a pattern. The pattern contains two special | |||
* characters: '*' which means zero or more characters, '?' which means one | |||
@@ -217,7 +219,7 @@ public class DirectoryScanner implements FileScanner | |||
boolean containsStar = false; | |||
for( int i = 0; i < patArr.length; i++ ) | |||
{ | |||
if( patArr[i] == '*' ) | |||
if( patArr[ i ] == '*' ) | |||
{ | |||
containsStar = true; | |||
break; | |||
@@ -233,15 +235,15 @@ public class DirectoryScanner implements FileScanner | |||
} | |||
for( int i = 0; i <= patIdxEnd; i++ ) | |||
{ | |||
ch = patArr[i]; | |||
ch = patArr[ i ]; | |||
if( ch != '?' ) | |||
{ | |||
if( isCaseSensitive && ch != strArr[i] ) | |||
if( isCaseSensitive && ch != strArr[ i ] ) | |||
{ | |||
return false;// Character mismatch | |||
} | |||
if( !isCaseSensitive && Character.toUpperCase( ch ) != | |||
Character.toUpperCase( strArr[i] ) ) | |||
Character.toUpperCase( strArr[ i ] ) ) | |||
{ | |||
return false;// Character mismatch | |||
} | |||
@@ -256,16 +258,16 @@ public class DirectoryScanner implements FileScanner | |||
} | |||
// Process characters before first star | |||
while( ( ch = patArr[patIdxStart] ) != '*' && strIdxStart <= strIdxEnd ) | |||
while( ( ch = patArr[ patIdxStart ] ) != '*' && strIdxStart <= strIdxEnd ) | |||
{ | |||
if( ch != '?' ) | |||
{ | |||
if( isCaseSensitive && ch != strArr[strIdxStart] ) | |||
if( isCaseSensitive && ch != strArr[ strIdxStart ] ) | |||
{ | |||
return false;// Character mismatch | |||
} | |||
if( !isCaseSensitive && Character.toUpperCase( ch ) != | |||
Character.toUpperCase( strArr[strIdxStart] ) ) | |||
Character.toUpperCase( strArr[ strIdxStart ] ) ) | |||
{ | |||
return false;// Character mismatch | |||
} | |||
@@ -279,7 +281,7 @@ public class DirectoryScanner implements FileScanner | |||
// left in the pattern. If so, we succeeded. Otherwise failure. | |||
for( int i = patIdxStart; i <= patIdxEnd; i++ ) | |||
{ | |||
if( patArr[i] != '*' ) | |||
if( patArr[ i ] != '*' ) | |||
{ | |||
return false; | |||
} | |||
@@ -288,16 +290,16 @@ public class DirectoryScanner implements FileScanner | |||
} | |||
// Process characters after last star | |||
while( ( ch = patArr[patIdxEnd] ) != '*' && strIdxStart <= strIdxEnd ) | |||
while( ( ch = patArr[ patIdxEnd ] ) != '*' && strIdxStart <= strIdxEnd ) | |||
{ | |||
if( ch != '?' ) | |||
{ | |||
if( isCaseSensitive && ch != strArr[strIdxEnd] ) | |||
if( isCaseSensitive && ch != strArr[ strIdxEnd ] ) | |||
{ | |||
return false;// Character mismatch | |||
} | |||
if( !isCaseSensitive && Character.toUpperCase( ch ) != | |||
Character.toUpperCase( strArr[strIdxEnd] ) ) | |||
Character.toUpperCase( strArr[ strIdxEnd ] ) ) | |||
{ | |||
return false;// Character mismatch | |||
} | |||
@@ -311,7 +313,7 @@ public class DirectoryScanner implements FileScanner | |||
// left in the pattern. If so, we succeeded. Otherwise failure. | |||
for( int i = patIdxStart; i <= patIdxEnd; i++ ) | |||
{ | |||
if( patArr[i] != '*' ) | |||
if( patArr[ i ] != '*' ) | |||
{ | |||
return false; | |||
} | |||
@@ -326,7 +328,7 @@ public class DirectoryScanner implements FileScanner | |||
int patIdxTmp = -1; | |||
for( int i = patIdxStart + 1; i <= patIdxEnd; i++ ) | |||
{ | |||
if( patArr[i] == '*' ) | |||
if( patArr[ i ] == '*' ) | |||
{ | |||
patIdxTmp = i; | |||
break; | |||
@@ -348,15 +350,15 @@ public class DirectoryScanner implements FileScanner | |||
{ | |||
for( int j = 0; j < patLength; j++ ) | |||
{ | |||
ch = patArr[patIdxStart + j + 1]; | |||
ch = patArr[ patIdxStart + j + 1 ]; | |||
if( ch != '?' ) | |||
{ | |||
if( isCaseSensitive && ch != strArr[strIdxStart + i + j] ) | |||
if( isCaseSensitive && ch != strArr[ strIdxStart + i + j ] ) | |||
{ | |||
continue strLoop; | |||
} | |||
if( !isCaseSensitive && Character.toUpperCase( ch ) != | |||
Character.toUpperCase( strArr[strIdxStart + i + j] ) ) | |||
Character.toUpperCase( strArr[ strIdxStart + i + j ] ) ) | |||
{ | |||
continue strLoop; | |||
} | |||
@@ -380,7 +382,7 @@ public class DirectoryScanner implements FileScanner | |||
// in the pattern. If so, we succeeded. Otherwise failure. | |||
for( int i = patIdxStart; i <= patIdxEnd; i++ ) | |||
{ | |||
if( patArr[i] != '*' ) | |||
if( patArr[ i ] != '*' ) | |||
{ | |||
return false; | |||
} | |||
@@ -444,12 +446,12 @@ public class DirectoryScanner implements FileScanner | |||
// up to first '**' | |||
while( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) | |||
{ | |||
String patDir = ( String )patDirs.elementAt( patIdxStart ); | |||
String patDir = (String)patDirs.elementAt( patIdxStart ); | |||
if( patDir.equals( "**" ) ) | |||
{ | |||
break; | |||
} | |||
if( !match( patDir, ( String )strDirs.elementAt( strIdxStart ), isCaseSensitive ) ) | |||
if( !match( patDir, (String)strDirs.elementAt( strIdxStart ), isCaseSensitive ) ) | |||
{ | |||
return false; | |||
} | |||
@@ -480,12 +482,12 @@ public class DirectoryScanner implements FileScanner | |||
// up to last '**' | |||
while( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) | |||
{ | |||
String patDir = ( String )patDirs.elementAt( patIdxEnd ); | |||
String patDir = (String)patDirs.elementAt( patIdxEnd ); | |||
if( patDir.equals( "**" ) ) | |||
{ | |||
break; | |||
} | |||
if( !match( patDir, ( String )strDirs.elementAt( strIdxEnd ), isCaseSensitive ) ) | |||
if( !match( patDir, (String)strDirs.elementAt( strIdxEnd ), isCaseSensitive ) ) | |||
{ | |||
return false; | |||
} | |||
@@ -532,8 +534,8 @@ public class DirectoryScanner implements FileScanner | |||
{ | |||
for( int j = 0; j < patLength; j++ ) | |||
{ | |||
String subPat = ( String )patDirs.elementAt( patIdxStart + j + 1 ); | |||
String subStr = ( String )strDirs.elementAt( strIdxStart + i + j ); | |||
String subPat = (String)patDirs.elementAt( patIdxStart + j + 1 ); | |||
String subStr = (String)strDirs.elementAt( strIdxStart + i + j ); | |||
if( !match( subPat, subStr, isCaseSensitive ) ) | |||
{ | |||
continue strLoop; | |||
@@ -564,7 +566,6 @@ public class DirectoryScanner implements FileScanner | |||
return true; | |||
} | |||
/** | |||
* Does the path match the start of this pattern up to the first "**". <p> | |||
* | |||
@@ -630,12 +631,12 @@ public class DirectoryScanner implements FileScanner | |||
// up to first '**' | |||
while( patIdxStart <= patIdxEnd && strIdxStart <= strIdxEnd ) | |||
{ | |||
String patDir = ( String )patDirs.elementAt( patIdxStart ); | |||
String patDir = (String)patDirs.elementAt( patIdxStart ); | |||
if( patDir.equals( "**" ) ) | |||
{ | |||
break; | |||
} | |||
if( !match( patDir, ( String )strDirs.elementAt( strIdxStart ), isCaseSensitive ) ) | |||
if( !match( patDir, (String)strDirs.elementAt( strIdxStart ), isCaseSensitive ) ) | |||
{ | |||
return false; | |||
} | |||
@@ -661,7 +662,6 @@ public class DirectoryScanner implements FileScanner | |||
} | |||
} | |||
/** | |||
* Sets the basedir for scanning. This is the directory that is scanned | |||
* recursively. All '/' and '\' characters are replaced by <code>File.separatorChar</code> | |||
@@ -674,7 +674,6 @@ public class DirectoryScanner implements FileScanner | |||
setBasedir( new File( basedir.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ) ) ); | |||
} | |||
/** | |||
* Sets the basedir for scanning. This is the directory that is scanned | |||
* recursively. | |||
@@ -686,7 +685,6 @@ public class DirectoryScanner implements FileScanner | |||
this.basedir = basedir; | |||
} | |||
/** | |||
* Sets the case sensitivity of the file system | |||
* | |||
@@ -697,7 +695,6 @@ public class DirectoryScanner implements FileScanner | |||
this.isCaseSensitive = isCaseSensitive; | |||
} | |||
/** | |||
* Sets the set of exclude patterns to use. All '/' and '\' characters are | |||
* replaced by <code>File.separatorChar</code>. So the separator used need | |||
@@ -715,16 +712,16 @@ public class DirectoryScanner implements FileScanner | |||
} | |||
else | |||
{ | |||
this.excludes = new String[excludes.length]; | |||
this.excludes = new String[ excludes.length ]; | |||
for( int i = 0; i < excludes.length; i++ ) | |||
{ | |||
String pattern; | |||
pattern = excludes[i].replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); | |||
pattern = excludes[ i ].replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); | |||
if( pattern.endsWith( File.separator ) ) | |||
{ | |||
pattern += "**"; | |||
} | |||
this.excludes[i] = pattern; | |||
this.excludes[ i ] = pattern; | |||
} | |||
} | |||
} | |||
@@ -746,21 +743,20 @@ public class DirectoryScanner implements FileScanner | |||
} | |||
else | |||
{ | |||
this.includes = new String[includes.length]; | |||
this.includes = new String[ includes.length ]; | |||
for( int i = 0; i < includes.length; i++ ) | |||
{ | |||
String pattern; | |||
pattern = includes[i].replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); | |||
pattern = includes[ i ].replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); | |||
if( pattern.endsWith( File.separator ) ) | |||
{ | |||
pattern += "**"; | |||
} | |||
this.includes[i] = pattern; | |||
this.includes[ i ] = pattern; | |||
} | |||
} | |||
} | |||
/** | |||
* Gets the basedir that is used for scanning. This is the directory that is | |||
* scanned recursively. | |||
@@ -772,7 +768,6 @@ public class DirectoryScanner implements FileScanner | |||
return basedir; | |||
} | |||
/** | |||
* Get the names of the directories that matched at least one of the include | |||
* patterns, an matched also at least one of the exclude patterns. The names | |||
@@ -781,18 +776,18 @@ public class DirectoryScanner implements FileScanner | |||
* @return the names of the directories | |||
*/ | |||
public String[] getExcludedDirectories() | |||
throws TaskException | |||
{ | |||
slowScan(); | |||
int count = dirsExcluded.size(); | |||
String[] directories = new String[count]; | |||
String[] directories = new String[ count ]; | |||
for( int i = 0; i < count; i++ ) | |||
{ | |||
directories[i] = ( String )dirsExcluded.elementAt( i ); | |||
directories[ i ] = (String)dirsExcluded.elementAt( i ); | |||
} | |||
return directories; | |||
} | |||
/** | |||
* Get the names of the files that matched at least one of the include | |||
* patterns, an matched also at least one of the exclude patterns. The names | |||
@@ -801,18 +796,18 @@ public class DirectoryScanner implements FileScanner | |||
* @return the names of the files | |||
*/ | |||
public String[] getExcludedFiles() | |||
throws TaskException | |||
{ | |||
slowScan(); | |||
int count = filesExcluded.size(); | |||
String[] files = new String[count]; | |||
String[] files = new String[ count ]; | |||
for( int i = 0; i < count; i++ ) | |||
{ | |||
files[i] = ( String )filesExcluded.elementAt( i ); | |||
files[ i ] = (String)filesExcluded.elementAt( i ); | |||
} | |||
return files; | |||
} | |||
/** | |||
* Get the names of the directories that matched at least one of the include | |||
* patterns, an matched none of the exclude patterns. The names are relative | |||
@@ -823,15 +818,14 @@ public class DirectoryScanner implements FileScanner | |||
public String[] getIncludedDirectories() | |||
{ | |||
int count = dirsIncluded.size(); | |||
String[] directories = new String[count]; | |||
String[] directories = new String[ count ]; | |||
for( int i = 0; i < count; i++ ) | |||
{ | |||
directories[i] = ( String )dirsIncluded.elementAt( i ); | |||
directories[ i ] = (String)dirsIncluded.elementAt( i ); | |||
} | |||
return directories; | |||
} | |||
/** | |||
* Get the names of the files that matched at least one of the include | |||
* patterns, and matched none of the exclude patterns. The names are | |||
@@ -842,15 +836,14 @@ public class DirectoryScanner implements FileScanner | |||
public String[] getIncludedFiles() | |||
{ | |||
int count = filesIncluded.size(); | |||
String[] files = new String[count]; | |||
String[] files = new String[ count ]; | |||
for( int i = 0; i < count; i++ ) | |||
{ | |||
files[i] = ( String )filesIncluded.elementAt( i ); | |||
files[ i ] = (String)filesIncluded.elementAt( i ); | |||
} | |||
return files; | |||
} | |||
/** | |||
* Get the names of the directories that matched at none of the include | |||
* patterns. The names are relative to the basedir. | |||
@@ -858,18 +851,18 @@ public class DirectoryScanner implements FileScanner | |||
* @return the names of the directories | |||
*/ | |||
public String[] getNotIncludedDirectories() | |||
throws TaskException | |||
{ | |||
slowScan(); | |||
int count = dirsNotIncluded.size(); | |||
String[] directories = new String[count]; | |||
String[] directories = new String[ count ]; | |||
for( int i = 0; i < count; i++ ) | |||
{ | |||
directories[i] = ( String )dirsNotIncluded.elementAt( i ); | |||
directories[ i ] = (String)dirsNotIncluded.elementAt( i ); | |||
} | |||
return directories; | |||
} | |||
/** | |||
* Get the names of the files that matched at none of the include patterns. | |||
* The names are relative to the basedir. | |||
@@ -877,13 +870,14 @@ public class DirectoryScanner implements FileScanner | |||
* @return the names of the files | |||
*/ | |||
public String[] getNotIncludedFiles() | |||
throws TaskException | |||
{ | |||
slowScan(); | |||
int count = filesNotIncluded.size(); | |||
String[] files = new String[count]; | |||
String[] files = new String[ count ]; | |||
for( int i = 0; i < count; i++ ) | |||
{ | |||
files[i] = ( String )filesNotIncluded.elementAt( i ); | |||
files[ i ] = (String)filesNotIncluded.elementAt( i ); | |||
} | |||
return files; | |||
} | |||
@@ -900,7 +894,6 @@ public class DirectoryScanner implements FileScanner | |||
return everythingIncluded; | |||
} | |||
/** | |||
* Adds the array with default exclusions to the current exclusions set. | |||
*/ | |||
@@ -908,25 +901,25 @@ public class DirectoryScanner implements FileScanner | |||
{ | |||
int excludesLength = excludes == null ? 0 : excludes.length; | |||
String[] newExcludes; | |||
newExcludes = new String[excludesLength + DEFAULTEXCLUDES.length]; | |||
newExcludes = new String[ excludesLength + DEFAULTEXCLUDES.length ]; | |||
if( excludesLength > 0 ) | |||
{ | |||
System.arraycopy( excludes, 0, newExcludes, 0, excludesLength ); | |||
} | |||
for( int i = 0; i < DEFAULTEXCLUDES.length; i++ ) | |||
{ | |||
newExcludes[i + excludesLength] = DEFAULTEXCLUDES[i].replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); | |||
newExcludes[ i + excludesLength ] = DEFAULTEXCLUDES[ i ].replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ); | |||
} | |||
excludes = newExcludes; | |||
} | |||
/** | |||
* Scans the base directory for files that match at least one include | |||
* pattern, and don't match any exclude patterns. | |||
* | |||
*/ | |||
public void scan() | |||
throws TaskException | |||
{ | |||
if( basedir == null ) | |||
{ | |||
@@ -935,23 +928,23 @@ public class DirectoryScanner implements FileScanner | |||
if( !basedir.exists() ) | |||
{ | |||
throw new IllegalStateException( "basedir " + basedir | |||
+ " does not exist" ); | |||
+ " does not exist" ); | |||
} | |||
if( !basedir.isDirectory() ) | |||
{ | |||
throw new IllegalStateException( "basedir " + basedir | |||
+ " is not a directory" ); | |||
+ " is not a directory" ); | |||
} | |||
if( includes == null ) | |||
{ | |||
// No includes supplied, so set it to 'matches all' | |||
includes = new String[1]; | |||
includes[0] = "**"; | |||
includes = new String[ 1 ]; | |||
includes[ 0 ] = "**"; | |||
} | |||
if( excludes == null ) | |||
{ | |||
excludes = new String[0]; | |||
excludes = new String[ 0 ]; | |||
} | |||
filesIncluded = new Vector(); | |||
@@ -990,7 +983,7 @@ public class DirectoryScanner implements FileScanner | |||
{ | |||
for( int i = 0; i < excludes.length; i++ ) | |||
{ | |||
if( matchPath( excludes[i], name, isCaseSensitive ) ) | |||
if( matchPath( excludes[ i ], name, isCaseSensitive ) ) | |||
{ | |||
return true; | |||
} | |||
@@ -998,7 +991,6 @@ public class DirectoryScanner implements FileScanner | |||
return false; | |||
} | |||
/** | |||
* Tests whether a name matches against at least one include pattern. | |||
* | |||
@@ -1010,7 +1002,7 @@ public class DirectoryScanner implements FileScanner | |||
{ | |||
for( int i = 0; i < includes.length; i++ ) | |||
{ | |||
if( matchPath( includes[i], name, isCaseSensitive ) ) | |||
if( matchPath( includes[ i ], name, isCaseSensitive ) ) | |||
{ | |||
return true; | |||
} | |||
@@ -1029,7 +1021,7 @@ public class DirectoryScanner implements FileScanner | |||
{ | |||
for( int i = 0; i < includes.length; i++ ) | |||
{ | |||
if( matchPatternStart( includes[i], name, isCaseSensitive ) ) | |||
if( matchPatternStart( includes[ i ], name, isCaseSensitive ) ) | |||
{ | |||
return true; | |||
} | |||
@@ -1037,7 +1029,6 @@ public class DirectoryScanner implements FileScanner | |||
return false; | |||
} | |||
/** | |||
* Scans the passed dir for files and directories. Found files and | |||
* directories are placed in their respective collections, based on the | |||
@@ -1056,6 +1047,7 @@ public class DirectoryScanner implements FileScanner | |||
* @see #dirsExcluded | |||
*/ | |||
protected void scandir( File dir, String vpath, boolean fast ) | |||
throws TaskException | |||
{ | |||
String[] newfiles = dir.list(); | |||
@@ -1068,14 +1060,14 @@ public class DirectoryScanner implements FileScanner | |||
* (2) an IO error occurred (why doesn't it throw an exception | |||
* then???) | |||
*/ | |||
throw new BuildException( "IO error scanning directory " | |||
+ dir.getAbsolutePath() ); | |||
throw new TaskException( "IO error scanning directory " | |||
+ dir.getAbsolutePath() ); | |||
} | |||
for( int i = 0; i < newfiles.length; i++ ) | |||
{ | |||
String name = vpath + newfiles[i]; | |||
File file = new File( dir, newfiles[i] ); | |||
String name = vpath + newfiles[ i ]; | |||
File file = new File( dir, newfiles[ i ] ); | |||
if( file.isDirectory() ) | |||
{ | |||
if( isIncluded( name ) ) | |||
@@ -1141,33 +1133,34 @@ public class DirectoryScanner implements FileScanner | |||
* Returns immediately if a slow scan has already been requested. | |||
*/ | |||
protected void slowScan() | |||
throws TaskException | |||
{ | |||
if( haveSlowResults ) | |||
{ | |||
return; | |||
} | |||
String[] excl = new String[dirsExcluded.size()]; | |||
String[] excl = new String[ dirsExcluded.size() ]; | |||
dirsExcluded.copyInto( excl ); | |||
String[] notIncl = new String[dirsNotIncluded.size()]; | |||
String[] notIncl = new String[ dirsNotIncluded.size() ]; | |||
dirsNotIncluded.copyInto( notIncl ); | |||
for( int i = 0; i < excl.length; i++ ) | |||
{ | |||
if( !couldHoldIncluded( excl[i] ) ) | |||
if( !couldHoldIncluded( excl[ i ] ) ) | |||
{ | |||
scandir( new File( basedir, excl[i] ), | |||
excl[i] + File.separator, false ); | |||
scandir( new File( basedir, excl[ i ] ), | |||
excl[ i ] + File.separator, false ); | |||
} | |||
} | |||
for( int i = 0; i < notIncl.length; i++ ) | |||
{ | |||
if( !couldHoldIncluded( notIncl[i] ) ) | |||
if( !couldHoldIncluded( notIncl[ i ] ) ) | |||
{ | |||
scandir( new File( basedir, notIncl[i] ), | |||
notIncl[i] + File.separator, false ); | |||
scandir( new File( basedir, notIncl[ i ] ), | |||
notIncl[ i ] + File.separator, false ); | |||
} | |||
} | |||
@@ -6,13 +6,13 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.io.File; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* An interface used to describe the actions required by any type of directory | |||
* scanner. | |||
* | |||
* @author RT | |||
*/ | |||
public interface FileScanner | |||
{ | |||
@@ -36,7 +36,7 @@ public interface FileScanner | |||
* | |||
* @return the names of the directories | |||
*/ | |||
String[] getExcludedDirectories(); | |||
String[] getExcludedDirectories() throws TaskException; | |||
/** | |||
* Get the names of the files that matched at least one of the include | |||
@@ -45,7 +45,7 @@ public interface FileScanner | |||
* | |||
* @return the names of the files | |||
*/ | |||
String[] getExcludedFiles(); | |||
String[] getExcludedFiles() throws TaskException; | |||
/** | |||
* Get the names of the directories that matched at least one of the include | |||
@@ -63,7 +63,7 @@ public interface FileScanner | |||
* | |||
* @return the names of the files | |||
*/ | |||
String[] getIncludedFiles(); | |||
String[] getIncludedFiles() throws TaskException; | |||
/** | |||
* Get the names of the directories that matched at none of the include | |||
@@ -71,7 +71,7 @@ public interface FileScanner | |||
* | |||
* @return the names of the directories | |||
*/ | |||
String[] getNotIncludedDirectories(); | |||
String[] getNotIncludedDirectories() throws TaskException; | |||
/** | |||
* Get the names of the files that matched at none of the include patterns. | |||
@@ -79,14 +79,15 @@ public interface FileScanner | |||
* | |||
* @return the names of the files | |||
*/ | |||
String[] getNotIncludedFiles(); | |||
String[] getNotIncludedFiles() throws TaskException; | |||
/** | |||
* Scans the base directory for files that match at least one include | |||
* pattern, and don't match any exclude patterns. | |||
* | |||
*/ | |||
void scan(); | |||
void scan() | |||
throws TaskException; | |||
/** | |||
* Sets the basedir for scanning. This is the directory that is scanned | |||
@@ -6,6 +6,7 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.io.File; | |||
import java.lang.reflect.Constructor; | |||
import java.lang.reflect.InvocationTargetException; | |||
@@ -13,8 +14,10 @@ import java.lang.reflect.Method; | |||
import java.util.Enumeration; | |||
import java.util.Hashtable; | |||
import java.util.Locale; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.types.EnumeratedAttribute; | |||
import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.util.FileUtils; | |||
/** | |||
* Helper class that collects the methods a task or nested element holds to set | |||
@@ -66,6 +69,7 @@ public class IntrospectionHelper implements BuildListener | |||
private Hashtable nestedTypes; | |||
private IntrospectionHelper( final Class bean ) | |||
throws TaskException | |||
{ | |||
attributeTypes = new Hashtable(); | |||
attributeSetters = new Hashtable(); | |||
@@ -78,52 +82,52 @@ public class IntrospectionHelper implements BuildListener | |||
Method[] methods = bean.getMethods(); | |||
for( int i = 0; i < methods.length; i++ ) | |||
{ | |||
final Method m = methods[i]; | |||
final Method m = methods[ i ]; | |||
final String name = m.getName(); | |||
Class returnType = m.getReturnType(); | |||
Class[] args = m.getParameterTypes(); | |||
// not really user settable properties on tasks | |||
if( org.apache.tools.ant.Task.class.isAssignableFrom( bean ) | |||
&& args.length == 1 && | |||
&& args.length == 1 && | |||
( | |||
( | |||
"setLocation".equals( name ) && org.apache.tools.ant.Location.class.equals( args[0] ) | |||
) || ( | |||
"setTaskType".equals( name ) && java.lang.String.class.equals( args[0] ) | |||
) | |||
) ) | |||
"setLocation".equals( name ) && org.apache.tools.ant.Location.class.equals( args[ 0 ] ) | |||
) || ( | |||
"setTaskType".equals( name ) && java.lang.String.class.equals( args[ 0 ] ) | |||
) | |||
) ) | |||
{ | |||
continue; | |||
} | |||
// hide addTask for TaskContainers | |||
if( org.apache.tools.ant.TaskContainer.class.isAssignableFrom( bean ) | |||
&& args.length == 1 && "addTask".equals( name ) | |||
&& org.apache.tools.ant.Task.class.equals( args[0] ) ) | |||
&& args.length == 1 && "addTask".equals( name ) | |||
&& org.apache.tools.ant.Task.class.equals( args[ 0 ] ) ) | |||
{ | |||
continue; | |||
} | |||
if( "addText".equals( name ) | |||
&& java.lang.Void.TYPE.equals( returnType ) | |||
&& args.length == 1 | |||
&& java.lang.String.class.equals( args[0] ) ) | |||
&& java.lang.Void.TYPE.equals( returnType ) | |||
&& args.length == 1 | |||
&& java.lang.String.class.equals( args[ 0 ] ) ) | |||
{ | |||
addText = methods[i]; | |||
addText = methods[ i ]; | |||
} | |||
else if( name.startsWith( "set" ) | |||
&& java.lang.Void.TYPE.equals( returnType ) | |||
&& args.length == 1 | |||
&& !args[0].isArray() ) | |||
&& java.lang.Void.TYPE.equals( returnType ) | |||
&& args.length == 1 | |||
&& !args[ 0 ].isArray() ) | |||
{ | |||
String propName = getPropertyName( name, "set" ); | |||
if( attributeSetters.get( propName ) != null ) | |||
{ | |||
if( java.lang.String.class.equals( args[0] ) ) | |||
if( java.lang.String.class.equals( args[ 0 ] ) ) | |||
{ | |||
/* | |||
* Ignore method m, as there is an overloaded | |||
@@ -144,109 +148,109 @@ public class IntrospectionHelper implements BuildListener | |||
* particular order. | |||
*/ | |||
} | |||
AttributeSetter as = createAttributeSetter( m, args[0] ); | |||
AttributeSetter as = createAttributeSetter( m, args[ 0 ] ); | |||
if( as != null ) | |||
{ | |||
attributeTypes.put( propName, args[0] ); | |||
attributeTypes.put( propName, args[ 0 ] ); | |||
attributeSetters.put( propName, as ); | |||
} | |||
} | |||
else if( name.startsWith( "create" ) | |||
&& !returnType.isArray() | |||
&& !returnType.isPrimitive() | |||
&& args.length == 0 ) | |||
&& !returnType.isArray() | |||
&& !returnType.isPrimitive() | |||
&& args.length == 0 ) | |||
{ | |||
String propName = getPropertyName( name, "create" ); | |||
nestedTypes.put( propName, returnType ); | |||
nestedCreators.put( propName, | |||
new NestedCreator() | |||
{ | |||
new NestedCreator() | |||
{ | |||
public Object create( Object parent ) | |||
throws InvocationTargetException, | |||
IllegalAccessException | |||
{ | |||
public Object create( Object parent ) | |||
throws InvocationTargetException, | |||
IllegalAccessException | |||
{ | |||
return m.invoke( parent, new Object[]{} ); | |||
} | |||
return m.invoke( parent, new Object[]{} ); | |||
} | |||
} ); | |||
} ); | |||
} | |||
else if( name.startsWith( "addConfigured" ) | |||
&& java.lang.Void.TYPE.equals( returnType ) | |||
&& args.length == 1 | |||
&& !java.lang.String.class.equals( args[0] ) | |||
&& !args[0].isArray() | |||
&& !args[0].isPrimitive() ) | |||
&& java.lang.Void.TYPE.equals( returnType ) | |||
&& args.length == 1 | |||
&& !java.lang.String.class.equals( args[ 0 ] ) | |||
&& !args[ 0 ].isArray() | |||
&& !args[ 0 ].isPrimitive() ) | |||
{ | |||
try | |||
{ | |||
final Constructor c = | |||
args[0].getConstructor( new Class[]{} ); | |||
args[ 0 ].getConstructor( new Class[]{} ); | |||
String propName = getPropertyName( name, "addConfigured" ); | |||
nestedTypes.put( propName, args[0] ); | |||
nestedTypes.put( propName, args[ 0 ] ); | |||
nestedCreators.put( propName, | |||
new NestedCreator() | |||
{ | |||
new NestedCreator() | |||
{ | |||
public Object create( Object parent ) | |||
throws InvocationTargetException, IllegalAccessException, InstantiationException | |||
{ | |||
public Object create( Object parent ) | |||
throws InvocationTargetException, IllegalAccessException, InstantiationException | |||
{ | |||
Object o = c.newInstance( new Object[]{} ); | |||
return o; | |||
} | |||
Object o = c.newInstance( new Object[]{} ); | |||
return o; | |||
} | |||
} ); | |||
} ); | |||
nestedStorers.put( propName, | |||
new NestedStorer() | |||
{ | |||
new NestedStorer() | |||
{ | |||
public void store( Object parent, Object child ) | |||
throws InvocationTargetException, IllegalAccessException, InstantiationException | |||
{ | |||
public void store( Object parent, Object child ) | |||
throws InvocationTargetException, IllegalAccessException, InstantiationException | |||
{ | |||
m.invoke( parent, new Object[]{child} ); | |||
} | |||
m.invoke( parent, new Object[]{child} ); | |||
} | |||
} ); | |||
} ); | |||
} | |||
catch( NoSuchMethodException nse ) | |||
{ | |||
} | |||
} | |||
else if( name.startsWith( "add" ) | |||
&& java.lang.Void.TYPE.equals( returnType ) | |||
&& args.length == 1 | |||
&& !java.lang.String.class.equals( args[0] ) | |||
&& !args[0].isArray() | |||
&& !args[0].isPrimitive() ) | |||
&& java.lang.Void.TYPE.equals( returnType ) | |||
&& args.length == 1 | |||
&& !java.lang.String.class.equals( args[ 0 ] ) | |||
&& !args[ 0 ].isArray() | |||
&& !args[ 0 ].isPrimitive() ) | |||
{ | |||
try | |||
{ | |||
final Constructor c = | |||
args[0].getConstructor( new Class[]{} ); | |||
args[ 0 ].getConstructor( new Class[]{} ); | |||
String propName = getPropertyName( name, "add" ); | |||
nestedTypes.put( propName, args[0] ); | |||
nestedTypes.put( propName, args[ 0 ] ); | |||
nestedCreators.put( propName, | |||
new NestedCreator() | |||
{ | |||
new NestedCreator() | |||
{ | |||
public Object create( Object parent ) | |||
throws InvocationTargetException, IllegalAccessException, InstantiationException | |||
{ | |||
public Object create( Object parent ) | |||
throws InvocationTargetException, IllegalAccessException, InstantiationException | |||
{ | |||
Object o = c.newInstance( new Object[]{} ); | |||
m.invoke( parent, new Object[]{o} ); | |||
return o; | |||
} | |||
Object o = c.newInstance( new Object[]{} ); | |||
m.invoke( parent, new Object[]{o} ); | |||
return o; | |||
} | |||
} ); | |||
} ); | |||
} | |||
catch( NoSuchMethodException nse ) | |||
{ | |||
@@ -263,7 +267,7 @@ public class IntrospectionHelper implements BuildListener | |||
*/ | |||
public static synchronized IntrospectionHelper getHelper( Class c ) | |||
{ | |||
IntrospectionHelper ih = ( IntrospectionHelper )helpers.get( c ); | |||
IntrospectionHelper ih = (IntrospectionHelper)helpers.get( c ); | |||
if( ih == null ) | |||
{ | |||
ih = new IntrospectionHelper( c ); | |||
@@ -285,13 +289,13 @@ public class IntrospectionHelper implements BuildListener | |||
String value ) | |||
throws BuildException | |||
{ | |||
AttributeSetter as = ( AttributeSetter )attributeSetters.get( attributeName ); | |||
AttributeSetter as = (AttributeSetter)attributeSetters.get( attributeName ); | |||
if( as == null ) | |||
{ | |||
String msg = getElementName( p, element ) + | |||
//String msg = "Class " + element.getClass().getName() + | |||
//String msg = "Class " + element.getClass().getName() + | |||
" doesn't support the \"" + attributeName + "\" attribute."; | |||
throw new BuildException( msg ); | |||
throw new TaskException( msg ); | |||
} | |||
try | |||
{ | |||
@@ -300,16 +304,16 @@ public class IntrospectionHelper implements BuildListener | |||
catch( IllegalAccessException ie ) | |||
{ | |||
// impossible as getMethods should only return public methods | |||
throw new BuildException( ie ); | |||
throw new TaskException( ie.toString(), ie ); | |||
} | |||
catch( InvocationTargetException ite ) | |||
{ | |||
Throwable t = ite.getTargetException(); | |||
if( t instanceof BuildException ) | |||
if( t instanceof TaskException ) | |||
{ | |||
throw ( BuildException )t; | |||
throw (TaskException)t; | |||
} | |||
throw new BuildException( t ); | |||
throw new TaskException( t.toString(), t ); | |||
} | |||
} | |||
@@ -318,17 +322,17 @@ public class IntrospectionHelper implements BuildListener | |||
* | |||
* @param attributeName Description of Parameter | |||
* @return The AttributeType value | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public Class getAttributeType( String attributeName ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
Class at = ( Class )attributeTypes.get( attributeName ); | |||
Class at = (Class)attributeTypes.get( attributeName ); | |||
if( at == null ) | |||
{ | |||
String msg = "Class " + bean.getName() + | |||
" doesn't support the \"" + attributeName + "\" attribute."; | |||
throw new BuildException( msg ); | |||
throw new TaskException( msg ); | |||
} | |||
return at; | |||
} | |||
@@ -348,17 +352,17 @@ public class IntrospectionHelper implements BuildListener | |||
* | |||
* @param elementName Description of Parameter | |||
* @return The ElementType value | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public Class getElementType( String elementName ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
Class nt = ( Class )nestedTypes.get( elementName ); | |||
Class nt = (Class)nestedTypes.get( elementName ); | |||
if( nt == null ) | |||
{ | |||
String msg = "Class " + bean.getName() + | |||
" doesn't support the nested \"" + elementName + "\" element."; | |||
throw new BuildException( msg ); | |||
throw new TaskException( msg ); | |||
} | |||
return nt; | |||
} | |||
@@ -381,13 +385,14 @@ public class IntrospectionHelper implements BuildListener | |||
* @param text The feature to be added to the Text attribute | |||
*/ | |||
public void addText( Project project, Object element, String text ) | |||
throws TaskException | |||
{ | |||
if( addText == null ) | |||
{ | |||
String msg = getElementName( project, element ) + | |||
//String msg = "Class " + element.getClass().getName() + | |||
//String msg = "Class " + element.getClass().getName() + | |||
" doesn't support nested text data."; | |||
throw new BuildException( msg ); | |||
throw new TaskException( msg ); | |||
} | |||
try | |||
{ | |||
@@ -396,16 +401,16 @@ public class IntrospectionHelper implements BuildListener | |||
catch( IllegalAccessException ie ) | |||
{ | |||
// impossible as getMethods should only return public methods | |||
throw new BuildException( ie ); | |||
throw new TaskException( ie.getMessage(), ie ); | |||
} | |||
catch( InvocationTargetException ite ) | |||
{ | |||
Throwable t = ite.getTargetException(); | |||
if( t instanceof BuildException ) | |||
if( t instanceof TaskException ) | |||
{ | |||
throw ( BuildException )t; | |||
throw (TaskException)t; | |||
} | |||
throw new BuildException( t ); | |||
throw new TaskException( t.getMessage(), t ); | |||
} | |||
} | |||
@@ -419,7 +424,9 @@ public class IntrospectionHelper implements BuildListener | |||
helpers.clear(); | |||
} | |||
public void buildStarted( BuildEvent event ) { } | |||
public void buildStarted( BuildEvent event ) | |||
{ | |||
} | |||
/** | |||
* Creates a named nested element. | |||
@@ -428,49 +435,51 @@ public class IntrospectionHelper implements BuildListener | |||
* @param element Description of Parameter | |||
* @param elementName Description of Parameter | |||
* @return Description of the Returned Value | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public Object createElement( Project project, Object element, String elementName ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
NestedCreator nc = ( NestedCreator )nestedCreators.get( elementName ); | |||
NestedCreator nc = (NestedCreator)nestedCreators.get( elementName ); | |||
if( nc == null ) | |||
{ | |||
String msg = getElementName( project, element ) + | |||
" doesn't support the nested \"" + elementName + "\" element."; | |||
throw new BuildException( msg ); | |||
throw new TaskException( msg ); | |||
} | |||
try | |||
{ | |||
Object nestedElement = nc.create( element ); | |||
if( nestedElement instanceof ProjectComponent ) | |||
{ | |||
( ( ProjectComponent )nestedElement ).setProject( project ); | |||
( (ProjectComponent)nestedElement ).setProject( project ); | |||
} | |||
return nestedElement; | |||
} | |||
catch( IllegalAccessException ie ) | |||
{ | |||
// impossible as getMethods should only return public methods | |||
throw new BuildException( ie ); | |||
throw new TaskException( ie.getMessage(), ie ); | |||
} | |||
catch( InstantiationException ine ) | |||
{ | |||
// impossible as getMethods should only return public methods | |||
throw new BuildException( ine ); | |||
throw new TaskException( ine.getMessage(), ine ); | |||
} | |||
catch( InvocationTargetException ite ) | |||
{ | |||
Throwable t = ite.getTargetException(); | |||
if( t instanceof BuildException ) | |||
if( t instanceof TaskException ) | |||
{ | |||
throw ( BuildException )t; | |||
throw (TaskException)t; | |||
} | |||
throw new BuildException( t ); | |||
throw new TaskException( t.getMessage(), t ); | |||
} | |||
} | |||
public void messageLogged( BuildEvent event ) { } | |||
public void messageLogged( BuildEvent event ) | |||
{ | |||
} | |||
/** | |||
* Creates a named nested element. | |||
@@ -479,16 +488,16 @@ public class IntrospectionHelper implements BuildListener | |||
* @param element Description of Parameter | |||
* @param child Description of Parameter | |||
* @param elementName Description of Parameter | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public void storeElement( Project project, Object element, Object child, String elementName ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( elementName == null ) | |||
{ | |||
return; | |||
} | |||
NestedStorer ns = ( NestedStorer )nestedStorers.get( elementName ); | |||
NestedStorer ns = (NestedStorer)nestedStorers.get( elementName ); | |||
if( ns == null ) | |||
{ | |||
return; | |||
@@ -500,21 +509,21 @@ public class IntrospectionHelper implements BuildListener | |||
catch( IllegalAccessException ie ) | |||
{ | |||
// impossible as getMethods should only return public methods | |||
throw new BuildException( ie ); | |||
throw new TaskException( ie.getMessage(), ie ); | |||
} | |||
catch( InstantiationException ine ) | |||
{ | |||
// impossible as getMethods should only return public methods | |||
throw new BuildException( ine ); | |||
throw new TaskException( ine.getMessage(), ine ); | |||
} | |||
catch( InvocationTargetException ite ) | |||
{ | |||
Throwable t = ite.getTargetException(); | |||
if( t instanceof BuildException ) | |||
if( t instanceof TaskException ) | |||
{ | |||
throw ( BuildException )t; | |||
throw (TaskException)t; | |||
} | |||
throw new BuildException( t ); | |||
throw new TaskException( t.getMessage(), t ); | |||
} | |||
} | |||
@@ -528,13 +537,21 @@ public class IntrospectionHelper implements BuildListener | |||
return addText != null; | |||
} | |||
public void targetFinished( BuildEvent event ) { } | |||
public void targetFinished( BuildEvent event ) | |||
{ | |||
} | |||
public void targetStarted( BuildEvent event ) { } | |||
public void targetStarted( BuildEvent event ) | |||
{ | |||
} | |||
public void taskFinished( BuildEvent event ) { } | |||
public void taskFinished( BuildEvent event ) | |||
{ | |||
} | |||
public void taskStarted( BuildEvent event ) { } | |||
public void taskStarted( BuildEvent event ) | |||
{ | |||
} | |||
protected String getElementName( Project project, Object element ) | |||
{ | |||
@@ -555,8 +572,8 @@ public class IntrospectionHelper implements BuildListener | |||
Enumeration e = elements.keys(); | |||
while( e.hasMoreElements() ) | |||
{ | |||
String elementName = ( String )e.nextElement(); | |||
Class elementClass = ( Class )elements.get( elementName ); | |||
String elementName = (String)e.nextElement(); | |||
Class elementClass = (Class)elements.get( elementName ); | |||
if( element.getClass().equals( elementClass ) ) | |||
{ | |||
return "The <" + elementName + "> " + typeName; | |||
@@ -590,7 +607,8 @@ public class IntrospectionHelper implements BuildListener | |||
* @return Description of the Returned Value | |||
*/ | |||
private AttributeSetter createAttributeSetter( final Method m, | |||
final Class arg ) | |||
final Class arg ) | |||
throws TaskException | |||
{ | |||
// simplest case - setAttribute expects String | |||
@@ -608,7 +626,7 @@ public class IntrospectionHelper implements BuildListener | |||
// now for the primitive types, use their wrappers | |||
} | |||
else if( java.lang.Character.class.equals( arg ) | |||
|| java.lang.Character.TYPE.equals( arg ) ) | |||
|| java.lang.Character.TYPE.equals( arg ) ) | |||
{ | |||
return | |||
new AttributeSetter() | |||
@@ -702,7 +720,7 @@ public class IntrospectionHelper implements BuildListener | |||
// in Project | |||
} | |||
else if( java.lang.Boolean.class.equals( arg ) | |||
|| java.lang.Boolean.TYPE.equals( arg ) ) | |||
|| java.lang.Boolean.TYPE.equals( arg ) ) | |||
{ | |||
return | |||
new AttributeSetter() | |||
@@ -711,7 +729,7 @@ public class IntrospectionHelper implements BuildListener | |||
throws InvocationTargetException, IllegalAccessException | |||
{ | |||
m.invoke( parent, | |||
new Boolean[]{new Boolean( Project.toBoolean( value ) )} ); | |||
new Boolean[]{new Boolean( Project.toBoolean( value ) )} ); | |||
} | |||
}; | |||
@@ -723,7 +741,7 @@ public class IntrospectionHelper implements BuildListener | |||
new AttributeSetter() | |||
{ | |||
public void set( Project p, Object parent, String value ) | |||
throws InvocationTargetException, IllegalAccessException, BuildException | |||
throws InvocationTargetException, IllegalAccessException, TaskException | |||
{ | |||
try | |||
{ | |||
@@ -731,7 +749,7 @@ public class IntrospectionHelper implements BuildListener | |||
} | |||
catch( ClassNotFoundException ce ) | |||
{ | |||
throw new BuildException( ce ); | |||
throw new TaskException( ce.toString(), ce ); | |||
} | |||
} | |||
}; | |||
@@ -745,7 +763,9 @@ public class IntrospectionHelper implements BuildListener | |||
public void set( Project p, Object parent, String value ) | |||
throws InvocationTargetException, IllegalAccessException | |||
{ | |||
m.invoke( parent, new File[]{p.resolveFile( value )} ); | |||
final File file = | |||
FileUtils.newFileUtils().resolveFile( p.getBaseDir(), value ); | |||
m.invoke( parent, new File[]{ file } ); | |||
} | |||
}; | |||
@@ -771,17 +791,17 @@ public class IntrospectionHelper implements BuildListener | |||
new AttributeSetter() | |||
{ | |||
public void set( Project p, Object parent, String value ) | |||
throws InvocationTargetException, IllegalAccessException, BuildException | |||
throws InvocationTargetException, IllegalAccessException, TaskException | |||
{ | |||
try | |||
{ | |||
org.apache.tools.ant.types.EnumeratedAttribute ea = ( org.apache.tools.ant.types.EnumeratedAttribute )arg.newInstance(); | |||
org.apache.tools.ant.types.EnumeratedAttribute ea = (org.apache.tools.ant.types.EnumeratedAttribute)arg.newInstance(); | |||
ea.setValue( value ); | |||
m.invoke( parent, new EnumeratedAttribute[]{ea} ); | |||
} | |||
catch( InstantiationException ie ) | |||
{ | |||
throw new BuildException( ie ); | |||
throw new TaskException( ie.getMessage(), ie ); | |||
} | |||
} | |||
}; | |||
@@ -801,20 +821,20 @@ public class IntrospectionHelper implements BuildListener | |||
{ | |||
public void set( Project p, Object parent, | |||
String value ) | |||
throws InvocationTargetException, IllegalAccessException, BuildException | |||
throws InvocationTargetException, IllegalAccessException, TaskException | |||
{ | |||
try | |||
{ | |||
Object attribute = c.newInstance( new String[]{value} ); | |||
if( attribute instanceof ProjectComponent ) | |||
{ | |||
( ( ProjectComponent )attribute ).setProject( p ); | |||
( (ProjectComponent)attribute ).setProject( p ); | |||
} | |||
m.invoke( parent, new Object[]{attribute} ); | |||
} | |||
catch( InstantiationException ie ) | |||
{ | |||
throw new BuildException( ie ); | |||
throw new TaskException( ie.getMessage(), ie ); | |||
} | |||
} | |||
}; | |||
@@ -831,7 +851,7 @@ public class IntrospectionHelper implements BuildListener | |||
{ | |||
void set( Project p, Object parent, String value ) | |||
throws InvocationTargetException, IllegalAccessException, | |||
BuildException; | |||
TaskException; | |||
} | |||
private interface NestedCreator | |||
@@ -14,6 +14,7 @@ import java.io.PrintStream; | |||
import java.util.Enumeration; | |||
import java.util.Properties; | |||
import java.util.Vector; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* Command line entry point into Ant. This class is entered via the cannonical | |||
@@ -97,7 +98,7 @@ public class Main | |||
private File buildFile; | |||
protected Main( String[] args ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
String searchForThis = null; | |||
@@ -289,7 +290,7 @@ public class Main | |||
if( !buildFile.exists() ) | |||
{ | |||
System.out.println( "Buildfile: " + buildFile + " does not exist!" ); | |||
throw new BuildException( "Build failed" ); | |||
throw new TaskException( "Build failed" ); | |||
} | |||
// make sure it's not a directory (this falls into the ultra | |||
@@ -298,14 +299,14 @@ public class Main | |||
if( buildFile.isDirectory() ) | |||
{ | |||
System.out.println( "What? Buildfile: " + buildFile + " is a dir!" ); | |||
throw new BuildException( "Build failed" ); | |||
throw new TaskException( "Build failed" ); | |||
} | |||
readyToRun = true; | |||
} | |||
public static synchronized String getAntVersion() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( antVersion == null ) | |||
{ | |||
@@ -327,12 +328,12 @@ public class Main | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( "Could not load the version information:" | |||
throw new TaskException( "Could not load the version information:" | |||
+ ioe.getMessage() ); | |||
} | |||
catch( NullPointerException npe ) | |||
{ | |||
throw new BuildException( "Could not load the version information." ); | |||
throw new TaskException( "Could not load the version information." ); | |||
} | |||
} | |||
return antVersion; | |||
@@ -388,7 +389,7 @@ public class Main | |||
m.runBuild( coreLoader ); | |||
System.exit( 0 ); | |||
} | |||
catch( BuildException be ) | |||
catch( TaskException be ) | |||
{ | |||
if( m.err != System.err ) | |||
{ | |||
@@ -569,7 +570,7 @@ public class Main | |||
} | |||
private static void printVersion() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
System.out.println( getAntVersion() ); | |||
} | |||
@@ -591,7 +592,7 @@ public class Main | |||
} | |||
catch( Throwable exc ) | |||
{ | |||
throw new BuildException( "Unable to instantiate listener " + className, exc ); | |||
throw new TaskException( "Unable to instantiate listener " + className, exc ); | |||
} | |||
} | |||
} | |||
@@ -668,10 +669,10 @@ public class Main | |||
* @param suffix Suffix filename to look for in parents. | |||
* @param start Description of Parameter | |||
* @return A handle to the build file | |||
* @exception BuildException Failed to locate a build file | |||
* @exception TaskException Failed to locate a build file | |||
*/ | |||
private File findBuildFile( String start, String suffix ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( msgOutputLevel >= Project.MSG_INFO ) | |||
{ | |||
@@ -691,7 +692,7 @@ public class Main | |||
// complain that we can't find the build file. | |||
if( parent == null ) | |||
{ | |||
throw new BuildException( "Could not locate a build file!" ); | |||
throw new TaskException( "Could not locate a build file!" ); | |||
} | |||
// refresh our file handle | |||
@@ -705,10 +706,10 @@ public class Main | |||
* Executes the build. | |||
* | |||
* @param coreLoader Description of Parameter | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
private void runBuild( ClassLoader coreLoader ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( !readyToRun ) | |||
@@ -782,15 +783,15 @@ public class Main | |||
} | |||
catch( NoClassDefFoundError ncdfe ) | |||
{ | |||
throw new BuildException( noParserMessage, ncdfe ); | |||
throw new TaskException( noParserMessage, ncdfe ); | |||
} | |||
catch( ClassNotFoundException cnfe ) | |||
{ | |||
throw new BuildException( noParserMessage, cnfe ); | |||
throw new TaskException( noParserMessage, cnfe ); | |||
} | |||
catch( NullPointerException npe ) | |||
{ | |||
throw new BuildException( noParserMessage, npe ); | |||
throw new TaskException( noParserMessage, npe ); | |||
} | |||
if( projectHelp ) | |||
@@ -8,6 +8,8 @@ | |||
package org.apache.tools.ant; | |||
import org.apache.myrmidon.api.AbstractTask; | |||
import org.apache.tools.ant.util.FileUtils; | |||
import java.io.File; | |||
/** | |||
* Base class for components of a project, including tasks and data types. | |||
@@ -43,6 +45,11 @@ public abstract class ProjectComponent | |||
return project; | |||
} | |||
protected File resolveFile( final String name ) | |||
{ | |||
return FileUtils.newFileUtils().resolveFile( project.getBaseDir(), name ); | |||
} | |||
/** | |||
* Log a message with the default (INFO) priority. | |||
* | |||
@@ -6,6 +6,7 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.FileNotFoundException; | |||
@@ -17,6 +18,8 @@ import java.util.Vector; | |||
import javax.xml.parsers.ParserConfigurationException; | |||
import javax.xml.parsers.SAXParser; | |||
import javax.xml.parsers.SAXParserFactory; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.util.FileUtils; | |||
import org.xml.sax.AttributeList; | |||
import org.xml.sax.DocumentHandler; | |||
import org.xml.sax.HandlerBase; | |||
@@ -64,10 +67,10 @@ public class ProjectHelper | |||
* @param buf The feature to be added to the Text attribute | |||
* @param start The feature to be added to the Text attribute | |||
* @param end The feature to be added to the Text attribute | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public static void addText( Project project, Object target, char[] buf, int start, int end ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
addText( project, target, new String( buf, start, end ) ); | |||
} | |||
@@ -78,10 +81,10 @@ public class ProjectHelper | |||
* @param project The feature to be added to the Text attribute | |||
* @param target The feature to be added to the Text attribute | |||
* @param text The feature to be added to the Text attribute | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public static void addText( Project project, Object target, String text ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( text == null || text.trim().length() == 0 ) | |||
@@ -90,17 +93,17 @@ public class ProjectHelper | |||
} | |||
if( target instanceof TaskAdapter ) | |||
target = ( ( TaskAdapter )target ).getProxy(); | |||
target = ( (TaskAdapter)target ).getProxy(); | |||
IntrospectionHelper.getHelper( target.getClass() ).addText( project, target, text ); | |||
} | |||
public static void configure( Object target, AttributeList attrs, | |||
Project project ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( target instanceof TaskAdapter ) | |||
target = ( ( TaskAdapter )target ).getProxy(); | |||
target = ( (TaskAdapter)target ).getProxy(); | |||
IntrospectionHelper ih = | |||
IntrospectionHelper.getHelper( target.getClass() ); | |||
@@ -111,14 +114,14 @@ public class ProjectHelper | |||
{ | |||
// reflect these into the target | |||
String value = replaceProperties( project, attrs.getValue( i ), | |||
project.getProperties() ); | |||
project.getProperties() ); | |||
try | |||
{ | |||
ih.setAttribute( project, target, | |||
attrs.getName( i ).toLowerCase( Locale.US ), value ); | |||
attrs.getName( i ).toLowerCase( Locale.US ), value ); | |||
} | |||
catch( BuildException be ) | |||
catch( TaskException be ) | |||
{ | |||
// id attribute must be set externally | |||
if( !attrs.getName( i ).equals( "id" ) ) | |||
@@ -134,10 +137,10 @@ public class ProjectHelper | |||
* | |||
* @param project Description of Parameter | |||
* @param buildFile Description of Parameter | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public static void configureProject( Project project, File buildFile ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
new ProjectHelper( project, buildFile ).parse(); | |||
} | |||
@@ -151,10 +154,10 @@ public class ProjectHelper | |||
* @param value Description of Parameter | |||
* @param fragments Description of Parameter | |||
* @param propertyRefs Description of Parameter | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public static void parsePropertyString( String value, Vector fragments, Vector propertyRefs ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
int prev = 0; | |||
int pos; | |||
@@ -180,8 +183,8 @@ public class ProjectHelper | |||
int endName = value.indexOf( '}', pos ); | |||
if( endName < 0 ) | |||
{ | |||
throw new BuildException( "Syntax error in property: " | |||
+ value ); | |||
throw new TaskException( "Syntax error in property: " | |||
+ value ); | |||
} | |||
String propertyName = value.substring( pos + 2, endName ); | |||
fragments.addElement( null ); | |||
@@ -203,11 +206,11 @@ public class ProjectHelper | |||
* @param value the string to be scanned for property references. | |||
* @param project Description of Parameter | |||
* @return Description of the Returned Value | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
* @since 1.5 | |||
*/ | |||
public static String replaceProperties( Project project, String value ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
return replaceProperties( project, value, project.getProperties() ); | |||
} | |||
@@ -220,10 +223,10 @@ public class ProjectHelper | |||
* @param project Description of Parameter | |||
* @param keys Description of Parameter | |||
* @return Description of the Returned Value | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public static String replaceProperties( Project project, String value, Hashtable keys ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( value == null ) | |||
{ | |||
@@ -239,16 +242,16 @@ public class ProjectHelper | |||
Enumeration j = propertyRefs.elements(); | |||
while( i.hasMoreElements() ) | |||
{ | |||
String fragment = ( String )i.nextElement(); | |||
String fragment = (String)i.nextElement(); | |||
if( fragment == null ) | |||
{ | |||
String propertyName = ( String )j.nextElement(); | |||
String propertyName = (String)j.nextElement(); | |||
if( !keys.containsKey( propertyName ) ) | |||
{ | |||
project.log( "Property ${" + propertyName + "} has not been set", Project.MSG_VERBOSE ); | |||
} | |||
fragment = ( keys.containsKey( propertyName ) ) ? ( String )keys.get( propertyName ) | |||
: "${" + propertyName + "}"; | |||
fragment = ( keys.containsKey( propertyName ) ) ? (String)keys.get( propertyName ) | |||
: "${" + propertyName + "}"; | |||
} | |||
sb.append( fragment ); | |||
} | |||
@@ -265,6 +268,7 @@ public class ProjectHelper | |||
* @param tag Description of Parameter | |||
*/ | |||
public static void storeChild( Project project, Object parent, Object child, String tag ) | |||
throws TaskException | |||
{ | |||
IntrospectionHelper ih = IntrospectionHelper.getHelper( parent.getClass() ); | |||
ih.storeElement( project, parent, child, tag ); | |||
@@ -302,10 +306,10 @@ public class ProjectHelper | |||
/** | |||
* Parses the project file. | |||
* | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
private void parse() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
FileInputStream inputStream = null; | |||
InputSource inputSource = null; | |||
@@ -329,7 +333,7 @@ public class ProjectHelper | |||
} | |||
catch( ParserConfigurationException exc ) | |||
{ | |||
throw new BuildException( "Parser has not been configured correctly", exc ); | |||
throw new TaskException( "Parser has not been configured correctly", exc ); | |||
} | |||
catch( SAXParseException exc ) | |||
{ | |||
@@ -339,7 +343,7 @@ public class ProjectHelper | |||
Throwable t = exc.getException(); | |||
if( t instanceof BuildException ) | |||
{ | |||
BuildException be = ( BuildException )t; | |||
BuildException be = (BuildException)t; | |||
if( be.getLocation() == Location.UNKNOWN_LOCATION ) | |||
{ | |||
be.setLocation( location ); | |||
@@ -347,24 +351,24 @@ public class ProjectHelper | |||
throw be; | |||
} | |||
throw new BuildException( exc.getMessage(), t, location ); | |||
throw new BuildException( exc.getMessage(), t ); | |||
} | |||
catch( SAXException exc ) | |||
{ | |||
Throwable t = exc.getException(); | |||
if( t instanceof BuildException ) | |||
if( t instanceof TaskException ) | |||
{ | |||
throw ( BuildException )t; | |||
throw (TaskException)t; | |||
} | |||
throw new BuildException( exc.getMessage(), t ); | |||
throw new TaskException( exc.getMessage(), t ); | |||
} | |||
catch( FileNotFoundException exc ) | |||
{ | |||
throw new BuildException( exc ); | |||
throw new TaskException( "Error", exc ); | |||
} | |||
catch( IOException exc ) | |||
{ | |||
throw new BuildException( "Error reading project file", exc ); | |||
throw new TaskException( "Error reading project file", exc ); | |||
} | |||
finally | |||
{ | |||
@@ -434,7 +438,9 @@ public class ProjectHelper | |||
* Called when this element and all elements nested into it have been | |||
* handled. | |||
*/ | |||
protected void finished() { } | |||
protected void finished() | |||
{ | |||
} | |||
} | |||
/** | |||
@@ -466,21 +472,21 @@ public class ProjectHelper | |||
{ | |||
addText( project, element, buf, start, end ); | |||
} | |||
catch( BuildException exc ) | |||
catch( TaskException exc ) | |||
{ | |||
throw new SAXParseException( exc.getMessage(), locator, exc ); | |||
} | |||
} | |||
public void init( String propType, AttributeList attrs ) | |||
throws SAXParseException | |||
throws SAXParseException, TaskException | |||
{ | |||
try | |||
{ | |||
element = project.createDataType( propType ); | |||
if( element == null ) | |||
{ | |||
throw new BuildException( "Unknown data type " + propType ); | |||
throw new TaskException( "Unknown data type " + propType ); | |||
} | |||
if( target != null ) | |||
@@ -495,7 +501,7 @@ public class ProjectHelper | |||
configureId( element, attrs ); | |||
} | |||
} | |||
catch( BuildException exc ) | |||
catch( TaskException exc ) | |||
{ | |||
throw new SAXParseException( exc.getMessage(), locator, exc ); | |||
} | |||
@@ -530,7 +536,7 @@ public class ProjectHelper | |||
if( parent instanceof TaskAdapter ) | |||
{ | |||
this.parent = ( ( TaskAdapter )parent ).getProxy(); | |||
this.parent = ( (TaskAdapter)parent ).getProxy(); | |||
} | |||
else | |||
{ | |||
@@ -549,7 +555,7 @@ public class ProjectHelper | |||
{ | |||
addText( project, child, buf, start, end ); | |||
} | |||
catch( BuildException exc ) | |||
catch( TaskException exc ) | |||
{ | |||
throw new SAXParseException( exc.getMessage(), locator, exc ); | |||
} | |||
@@ -574,7 +580,7 @@ public class ProjectHelper | |||
{ | |||
UnknownElement uc = new UnknownElement( elementName ); | |||
uc.setProject( project ); | |||
( ( UnknownElement )parent ).addChild( uc ); | |||
( (UnknownElement)parent ).addChild( uc ); | |||
child = uc; | |||
} | |||
else | |||
@@ -596,7 +602,7 @@ public class ProjectHelper | |||
ih.storeElement( project, parent, child, elementName ); | |||
} | |||
} | |||
catch( BuildException exc ) | |||
catch( TaskException exc ) | |||
{ | |||
throw new SAXParseException( exc.getMessage(), locator, exc ); | |||
} | |||
@@ -609,7 +615,7 @@ public class ProjectHelper | |||
{ | |||
// taskcontainer nested element can contain other tasks - no other | |||
// nested elements possible | |||
new TaskHandler( this, ( TaskContainer )child, childWrapper, target ).init( name, attrs ); | |||
new TaskHandler( this, (TaskContainer)child, childWrapper, target ).init( name, attrs ); | |||
} | |||
else | |||
{ | |||
@@ -631,7 +637,7 @@ public class ProjectHelper | |||
} | |||
public void init( String tag, AttributeList attrs ) | |||
throws SAXParseException | |||
throws SAXParseException, TaskException | |||
{ | |||
String def = null; | |||
String name = null; | |||
@@ -668,10 +674,10 @@ public class ProjectHelper | |||
if( def == null ) | |||
{ | |||
throw new SAXParseException( "The default attribute of project is required", | |||
locator ); | |||
locator ); | |||
} | |||
project.setDefaultTarget( def ); | |||
project.setDefault( def ); | |||
if( name != null ) | |||
{ | |||
@@ -701,7 +707,7 @@ public class ProjectHelper | |||
} | |||
else | |||
{ | |||
project.setBaseDir( project.resolveFile( baseDir, buildFileParent ) ); | |||
project.setBaseDir( FileUtils.newFileUtils().resolveFile( buildFileParent, baseDir ) ); | |||
} | |||
} | |||
} | |||
@@ -833,7 +839,7 @@ public class ProjectHelper | |||
catch( FileNotFoundException fne ) | |||
{ | |||
project.log( file.getAbsolutePath() + " could not be found", | |||
Project.MSG_WARN ); | |||
Project.MSG_WARN ); | |||
} | |||
} | |||
// use default if not file or file not found | |||
@@ -980,7 +986,7 @@ public class ProjectHelper | |||
{ | |||
addText( project, task, buf, start, end ); | |||
} | |||
catch( BuildException exc ) | |||
catch( TaskException exc ) | |||
{ | |||
throw new SAXParseException( exc.getMessage(), locator, exc ); | |||
} | |||
@@ -998,7 +1004,7 @@ public class ProjectHelper | |||
{ | |||
task = project.createTask( tag ); | |||
} | |||
catch( BuildException e ) | |||
catch( TaskException e ) | |||
{ | |||
// swallow here, will be thrown again in | |||
// UnknownElement.maybeConfigure if the problem persists. | |||
@@ -1041,7 +1047,7 @@ public class ProjectHelper | |||
if( task instanceof TaskContainer ) | |||
{ | |||
// task can contain other tasks - no other nested elements possible | |||
new TaskHandler( this, ( TaskContainer )task, wrapper, target ).init( name, attrs ); | |||
new TaskHandler( this, (TaskContainer)task, wrapper, target ).init( name, attrs ); | |||
} | |||
else | |||
{ | |||
@@ -11,6 +11,7 @@ import java.util.Locale; | |||
import java.util.Vector; | |||
import org.xml.sax.AttributeList; | |||
import org.xml.sax.helpers.AttributeListImpl; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* Wrapper class that holds the attributes of a Task (or elements nested below | |||
@@ -102,7 +103,7 @@ public class RuntimeConfigurable | |||
* @exception BuildException Description of Exception | |||
*/ | |||
public void maybeConfigure( Project p ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
String id = null; | |||
@@ -6,9 +6,11 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.util.Enumeration; | |||
import java.util.StringTokenizer; | |||
import java.util.Vector; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* This class implements a target object with required parameters. | |||
@@ -28,6 +30,7 @@ public class Target implements TaskContainer | |||
private Project project; | |||
public void setDepends( String depS ) | |||
throws TaskException | |||
{ | |||
if( depS.length() > 0 ) | |||
{ | |||
@@ -40,9 +43,9 @@ public class Target implements TaskContainer | |||
//Make sure the dependency is not empty string | |||
if( token.equals( "" ) || token.equals( "," ) ) | |||
{ | |||
throw new BuildException( "Syntax Error: Depend attribute " + | |||
"for target \"" + getName() + | |||
"\" has an empty string for dependency." ); | |||
throw new TaskException( "Syntax Error: Depend attribute " + | |||
"for target \"" + getName() + | |||
"\" has an empty string for dependency." ); | |||
} | |||
addDependency( token ); | |||
@@ -54,9 +57,9 @@ public class Target implements TaskContainer | |||
token = tok.nextToken(); | |||
if( !tok.hasMoreTokens() || !token.equals( "," ) ) | |||
{ | |||
throw new BuildException( "Syntax Error: Depend attribute " + | |||
"for target \"" + getName() + | |||
"\" ends with a , character" ); | |||
throw new TaskException( "Syntax Error: Depend attribute " + | |||
"for target \"" + getName() + | |||
"\" ends with a , character" ); | |||
} | |||
} | |||
} | |||
@@ -126,7 +129,7 @@ public class Target implements TaskContainer | |||
} | |||
} | |||
Task[] retval = new Task[tasks.size()]; | |||
Task[] retval = new Task[ tasks.size() ]; | |||
tasks.copyInto( retval ); | |||
return retval; | |||
} | |||
@@ -139,6 +142,10 @@ public class Target implements TaskContainer | |||
execute(); | |||
project.fireTargetFinished( this, null ); | |||
} | |||
catch( final TaskException te ) | |||
{ | |||
project.fireTargetFinished( this, te ); | |||
} | |||
catch( RuntimeException exc ) | |||
{ | |||
project.fireTargetFinished( this, exc ); | |||
@@ -162,7 +169,7 @@ public class Target implements TaskContainer | |||
} | |||
public void execute() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( testIfCondition() && testUnlessCondition() ) | |||
{ | |||
@@ -172,12 +179,12 @@ public class Target implements TaskContainer | |||
Object o = enum.nextElement(); | |||
if( o instanceof Task ) | |||
{ | |||
Task task = ( Task )o; | |||
Task task = (Task)o; | |||
task.perform(); | |||
} | |||
else | |||
{ | |||
RuntimeConfigurable r = ( RuntimeConfigurable )o; | |||
RuntimeConfigurable r = (RuntimeConfigurable)o; | |||
r.maybeConfigure( project ); | |||
} | |||
} | |||
@@ -185,12 +192,12 @@ public class Target implements TaskContainer | |||
else if( !testIfCondition() ) | |||
{ | |||
project.log( this, "Skipped because property '" + this.ifCondition + "' not set.", | |||
Project.MSG_VERBOSE ); | |||
Project.MSG_VERBOSE ); | |||
} | |||
else | |||
{ | |||
project.log( this, "Skipped because property '" + this.unlessCondition + "' set.", | |||
Project.MSG_VERBOSE ); | |||
Project.MSG_VERBOSE ); | |||
} | |||
} | |||
@@ -209,6 +216,7 @@ public class Target implements TaskContainer | |||
} | |||
private boolean testIfCondition() | |||
throws TaskException | |||
{ | |||
if( "".equals( ifCondition ) ) | |||
{ | |||
@@ -220,6 +228,7 @@ public class Target implements TaskContainer | |||
} | |||
private boolean testUnlessCondition() | |||
throws TaskException | |||
{ | |||
if( "".equals( unlessCondition ) ) | |||
{ | |||
@@ -7,7 +7,9 @@ | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.io.File; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.util.FileUtils; | |||
public abstract class Task | |||
extends ProjectComponent | |||
@@ -8,6 +8,7 @@ | |||
package org.apache.tools.ant; | |||
import java.lang.reflect.Method; | |||
import java.lang.reflect.Modifier; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
@@ -33,6 +34,7 @@ public class TaskAdapter extends Task | |||
* @param project Description of Parameter | |||
*/ | |||
public static void checkTaskClass( final Class taskClass, final Project project ) | |||
throws TaskException | |||
{ | |||
// don't have to check for interface, since then | |||
// taskClass would be abstract too. | |||
@@ -53,7 +55,7 @@ public class TaskAdapter extends Task | |||
{ | |||
final String message = "No public execute() in " + taskClass; | |||
project.log( message, Project.MSG_ERR ); | |||
throw new BuildException( message ); | |||
throw new TaskException( message ); | |||
} | |||
} | |||
@@ -100,7 +102,7 @@ public class TaskAdapter extends Task | |||
{ | |||
log( "Error setting project in " + proxy.getClass(), | |||
Project.MSG_ERR ); | |||
throw new BuildException( ex ); | |||
throw new BuildException( "Error", ex ); | |||
} | |||
Method executeM = null; | |||
@@ -111,7 +113,7 @@ public class TaskAdapter extends Task | |||
if( executeM == null ) | |||
{ | |||
log( "No public execute() in " + proxy.getClass(), Project.MSG_ERR ); | |||
throw new BuildException( "No public execute() in " + proxy.getClass() ); | |||
throw new TaskException( "No public execute() in " + proxy.getClass() ); | |||
} | |||
executeM.invoke( proxy, null ); | |||
return; | |||
@@ -119,7 +121,7 @@ public class TaskAdapter extends Task | |||
catch( Exception ex ) | |||
{ | |||
log( "Error in " + proxy.getClass(), Project.MSG_ERR ); | |||
throw new BuildException( ex ); | |||
throw new BuildException( "Error", ex ); | |||
} | |||
} | |||
@@ -6,7 +6,9 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant; | |||
import java.util.Vector; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* Wrapper class that holds all information necessary to create a task or data | |||
@@ -57,7 +59,7 @@ public class UnknownElement extends Task | |||
{ | |||
if( realThing != null && realThing instanceof Task ) | |||
{ | |||
return ( Task )realThing; | |||
return (Task)realThing; | |||
} | |||
return null; | |||
} | |||
@@ -70,7 +72,7 @@ public class UnknownElement extends Task | |||
public String getTaskName() | |||
{ | |||
return realThing == null || !( realThing instanceof Task ) ? | |||
super.getTaskName() : ( ( Task )realThing ).getTaskName(); | |||
super.getTaskName() : ( (Task)realThing ).getTaskName(); | |||
} | |||
/** | |||
@@ -87,18 +89,19 @@ public class UnknownElement extends Task | |||
* Called when the real task has been configured for the first time. | |||
*/ | |||
public void execute() | |||
throws TaskException | |||
{ | |||
if( realThing == null ) | |||
{ | |||
// plain impossible to get here, maybeConfigure should | |||
// have thrown an exception. | |||
throw new BuildException( "Could not create task of type: " | |||
+ elementName, location ); | |||
throw new TaskException( "Could not create task of type: " | |||
+ elementName ); | |||
} | |||
if( realThing instanceof Task ) | |||
{ | |||
( ( Task )realThing ).perform(); | |||
( (Task)realThing ).perform(); | |||
} | |||
} | |||
@@ -109,14 +112,14 @@ public class UnknownElement extends Task | |||
* @exception BuildException Description of Exception | |||
*/ | |||
public void maybeConfigure() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
realThing = makeObject( this, wrapper ); | |||
wrapper.setProxy( realThing ); | |||
if( realThing instanceof Task ) | |||
{ | |||
( ( Task )realThing ).setRuntimeConfigurableWrapper( wrapper ); | |||
( (Task)realThing ).setRuntimeConfigurableWrapper( wrapper ); | |||
} | |||
handleChildren( realThing, wrapper ); | |||
@@ -137,19 +140,19 @@ public class UnknownElement extends Task | |||
{ | |||
String lSep = System.getProperty( "line.separator" ); | |||
String msg = "Could not create " + what + " of type: " + elementName | |||
+ "." + lSep | |||
+ "Ant could not find the task or a class this" + lSep | |||
+ "task relies upon." + lSep | |||
+ "Common solutions are to use taskdef to declare" + lSep | |||
+ "your task, or, if this is an optional task," + lSep | |||
+ "to put the optional.jar and all required libraries of" + lSep | |||
+ "this task in the lib directory of" + lSep | |||
+ "your ant installation (ANT_HOME)." + lSep | |||
+ "There is also the possibility that your build file " + lSep | |||
+ "is written to work with a more recent version of ant " + lSep | |||
+ "than the one you are using, in which case you have to " + lSep | |||
+ "upgrade."; | |||
return new BuildException( msg, location ); | |||
+ "." + lSep | |||
+ "Ant could not find the task or a class this" + lSep | |||
+ "task relies upon." + lSep | |||
+ "Common solutions are to use taskdef to declare" + lSep | |||
+ "your task, or, if this is an optional task," + lSep | |||
+ "to put the optional.jar and all required libraries of" + lSep | |||
+ "this task in the lib directory of" + lSep | |||
+ "your ant installation (ANT_HOME)." + lSep | |||
+ "There is also the possibility that your build file " + lSep | |||
+ "is written to work with a more recent version of ant " + lSep | |||
+ "than the one you are using, in which case you have to " + lSep | |||
+ "upgrade."; | |||
return new BuildException( msg ); | |||
} | |||
/** | |||
@@ -162,12 +165,12 @@ public class UnknownElement extends Task | |||
*/ | |||
protected void handleChildren( Object parent, | |||
RuntimeConfigurable parentWrapper ) | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( parent instanceof TaskAdapter ) | |||
{ | |||
parent = ( ( TaskAdapter )parent ).getProxy(); | |||
parent = ( (TaskAdapter)parent ).getProxy(); | |||
} | |||
Class parentClass = parent.getClass(); | |||
@@ -176,13 +179,13 @@ public class UnknownElement extends Task | |||
for( int i = 0; i < children.size(); i++ ) | |||
{ | |||
RuntimeConfigurable childWrapper = parentWrapper.getChild( i ); | |||
UnknownElement child = ( UnknownElement )children.elementAt( i ); | |||
UnknownElement child = (UnknownElement)children.elementAt( i ); | |||
Object realChild = null; | |||
if( parent instanceof TaskContainer ) | |||
{ | |||
realChild = makeTask( child, childWrapper, false ); | |||
( ( TaskContainer )parent ).addTask( ( Task )realChild ); | |||
( (TaskContainer)parent ).addTask( (Task)realChild ); | |||
} | |||
else | |||
{ | |||
@@ -192,14 +195,14 @@ public class UnknownElement extends Task | |||
childWrapper.setProxy( realChild ); | |||
if( parent instanceof TaskContainer ) | |||
{ | |||
( ( Task )realChild ).setRuntimeConfigurableWrapper( childWrapper ); | |||
( (Task)realChild ).setRuntimeConfigurableWrapper( childWrapper ); | |||
} | |||
child.handleChildren( realChild, childWrapper ); | |||
if( parent instanceof TaskContainer ) | |||
{ | |||
( ( Task )realChild ).maybeConfigure(); | |||
( (Task)realChild ).maybeConfigure(); | |||
} | |||
} | |||
} | |||
@@ -213,6 +216,7 @@ public class UnknownElement extends Task | |||
* @return Description of the Returned Value | |||
*/ | |||
protected Object makeObject( UnknownElement ue, RuntimeConfigurable w ) | |||
throws TaskException | |||
{ | |||
Object o = makeTask( ue, w, true ); | |||
if( o == null ) | |||
@@ -236,6 +240,7 @@ public class UnknownElement extends Task | |||
*/ | |||
protected Task makeTask( UnknownElement ue, RuntimeConfigurable w, | |||
boolean onTopLevel ) | |||
throws TaskException | |||
{ | |||
Task task = project.createTask( ue.getTag() ); | |||
if( task == null && !onTopLevel ) | |||
@@ -22,6 +22,7 @@ import org.apache.tools.ant.ProjectComponent; | |||
import org.apache.tools.ant.ProjectHelper; | |||
import org.apache.tools.ant.Task; | |||
import org.apache.tools.ant.util.FileUtils; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* Call Ant in a sub-project <pre> | |||
@@ -178,10 +179,10 @@ public class Ant extends Task | |||
/** | |||
* Do the execution. | |||
* | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
public void execute() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
try | |||
{ | |||
@@ -234,7 +235,7 @@ public class Ant extends Task | |||
target.equals( this.getOwningTarget().getName() ) ) | |||
{ | |||
throw new BuildException( "ant task calling its own parent target" ); | |||
throw new TaskException( "ant task calling its own parent target" ); | |||
} | |||
newProject.executeTarget( target ); | |||
@@ -283,10 +284,10 @@ public class Ant extends Task | |||
* project. Also copy over all references that don't override existing | |||
* references in the new project if inheritall has been requested. | |||
* | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
private void addReferences() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
Hashtable thisReferences = ( Hashtable )project.getReferences().clone(); | |||
Hashtable newReferences = newProject.getReferences(); | |||
@@ -299,7 +300,7 @@ public class Ant extends Task | |||
String refid = ref.getRefId(); | |||
if( refid == null ) | |||
{ | |||
throw new BuildException( "the refid attribute is required for reference elements" ); | |||
throw new TaskException( "the refid attribute is required for reference elements" ); | |||
} | |||
if( !thisReferences.containsKey( refid ) ) | |||
{ | |||
@@ -387,7 +388,7 @@ public class Ant extends Task | |||
{ | |||
String msg = "Error setting new project instance for reference with id " | |||
+ oldKey; | |||
throw new BuildException( msg, e2, location ); | |||
throw new TaskException( msg, e2, location ); | |||
} | |||
} | |||
newProject.addReference( newKey, copy ); | |||
@@ -482,10 +483,10 @@ public class Ant extends Task | |||
* Override the properties in the new project with the one explicitly | |||
* defined as nested elements here. | |||
* | |||
* @exception BuildException Description of Exception | |||
* @exception TaskException Description of Exception | |||
*/ | |||
private void overrideProperties() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
Enumeration e = properties.elements(); | |||
while( e.hasMoreElements() ) | |||
@@ -58,7 +58,7 @@ public class AntStructure extends Task | |||
if( output == null ) | |||
{ | |||
throw new BuildException( "output attribute is required", location ); | |||
throw new BuildException( "output attribute is required" ); | |||
} | |||
PrintWriter out = null; | |||
@@ -106,7 +106,7 @@ public class AntStructure extends Task | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( "Error writing " + output.getAbsolutePath(), | |||
ioe, location ); | |||
ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -16,6 +16,7 @@ import org.apache.tools.ant.types.EnumeratedAttribute; | |||
import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.types.Reference; | |||
import org.apache.tools.ant.util.FileUtils; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* Will set the given property if the requested resource is available at | |||
@@ -26,7 +27,9 @@ import org.apache.tools.ant.util.FileUtils; | |||
* @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | |||
*/ | |||
public class Available extends Task implements Condition | |||
public class Available | |||
extends Task | |||
implements Condition | |||
{ | |||
private String value = "true"; | |||
private String classname; | |||
@@ -77,22 +80,8 @@ public class Available extends Task implements Condition | |||
this.resource = resource; | |||
} | |||
/** | |||
* @param type The new Type value | |||
* @deprecated setType(String) is deprecated and is replaced with | |||
* setType(Available.FileDir) to make Ant's Introspection mechanism do | |||
* the work and also to encapsulate operations on the type in its own | |||
* class. | |||
*/ | |||
public void setType( String type ) | |||
{ | |||
log( "DEPRECATED - The setType(String) method has been deprecated." | |||
+ " Use setType(Available.FileDir) instead." ); | |||
this.type = new FileDir(); | |||
this.type.setValue( type ); | |||
} | |||
public void setType( FileDir type ) | |||
public void setType( FileDir type ) | |||
{ | |||
this.type = type; | |||
} | |||
@@ -121,18 +110,18 @@ public class Available extends Task implements Condition | |||
} | |||
public boolean eval() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( classname == null && file == null && resource == null ) | |||
{ | |||
throw new BuildException( "At least one of (classname|file|resource) is required", location ); | |||
throw new BuildException( "At least one of (classname|file|resource) is required" ); | |||
} | |||
if( type != null ) | |||
{ | |||
if( file == null ) | |||
{ | |||
throw new BuildException( "The type attribute is only valid when specifying the file attribute." ); | |||
throw new TaskException( "The type attribute is only valid when specifying the file attribute." ); | |||
} | |||
} | |||
@@ -176,24 +165,21 @@ public class Available extends Task implements Condition | |||
} | |||
public void execute() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( property == null ) | |||
{ | |||
throw new BuildException( "property attribute is required", location ); | |||
throw new BuildException( "property attribute is required"); | |||
} | |||
if( eval() ) | |||
{ | |||
String lSep = System.getProperty( "line.separator" ); | |||
if( null != project.getProperty( property ) ) | |||
if( null == project.getProperty( property ) ) | |||
{ | |||
log( "DEPRECATED - <available> used to overide an existing property. " | |||
+ lSep | |||
+ " Build writer should not reuse the same property name for " | |||
+ lSep + "different values." ); | |||
this.project.setProperty( property, value ); | |||
} | |||
this.project.setProperty( property, value ); | |||
//else ignore | |||
} | |||
} | |||
@@ -235,7 +221,7 @@ public class Available extends Task implements Condition | |||
{ | |||
if( filepath == null ) | |||
{ | |||
return checkFile( project.resolveFile( file ), file ); | |||
return checkFile( resolveFile( file ), file ); | |||
} | |||
else | |||
{ | |||
@@ -49,12 +49,12 @@ public class BUnzip2 extends Unpack | |||
int b = bis.read(); | |||
if( b != 'B' ) | |||
{ | |||
throw new BuildException( "Invalid bz2 file.", location ); | |||
throw new BuildException( "Invalid bz2 file." ); | |||
} | |||
b = bis.read(); | |||
if( b != 'Z' ) | |||
{ | |||
throw new BuildException( "Invalid bz2 file.", location ); | |||
throw new BuildException( "Invalid bz2 file." ); | |||
} | |||
zIn = new CBZip2InputStream( bis ); | |||
byte[] buffer = new byte[8 * 1024]; | |||
@@ -68,7 +68,7 @@ public class BUnzip2 extends Unpack | |||
catch( IOException ioe ) | |||
{ | |||
String msg = "Problem expanding bzip2 " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -37,7 +37,7 @@ public class BZip2 extends Pack | |||
catch( IOException ioe ) | |||
{ | |||
String msg = "Problem creating bzip2 " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -14,6 +14,7 @@ import java.io.IOException; | |||
import java.io.PrintWriter; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.Task; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* CVSLogin Adds an new entry to a CVS password file | |||
@@ -105,9 +106,9 @@ public class CVSPass extends Task | |||
throws BuildException | |||
{ | |||
if( cvsRoot == null ) | |||
throw new BuildException( "cvsroot is required" ); | |||
throw new TaskException( "cvsroot is required" ); | |||
if( password == null ) | |||
throw new BuildException( "password is required" ); | |||
throw new TaskException( "password is required" ); | |||
log( "cvsRoot: " + cvsRoot, project.MSG_DEBUG ); | |||
log( "password: " + password, project.MSG_DEBUG ); | |||
@@ -147,7 +148,7 @@ public class CVSPass extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -77,8 +77,7 @@ public class CallTarget extends Task | |||
if( subTarget == null ) | |||
{ | |||
throw new BuildException( "Attribute target is required.", | |||
location ); | |||
throw new BuildException( "Attribute target is required." ); | |||
} | |||
callee.setDir( project.getBaseDir() ); | |||
@@ -25,6 +25,7 @@ import org.apache.tools.ant.Project; | |||
import org.apache.tools.ant.taskdefs.MatchingTask; | |||
import org.apache.tools.ant.taskdefs.condition.Condition; | |||
import org.apache.tools.ant.types.FileSet; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* This task can be used to create checksums for files. It can also be used to | |||
@@ -231,7 +232,7 @@ public class Checksum extends MatchingTask implements Condition | |||
+ file.getAbsolutePath() | |||
+ " to generate checksum for."; | |||
log( message ); | |||
throw new BuildException( message, location ); | |||
throw new BuildException( message ); | |||
} | |||
} | |||
} | |||
@@ -328,7 +329,7 @@ public class Checksum extends MatchingTask implements Condition | |||
} | |||
catch( Exception e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
finally | |||
{ | |||
@@ -366,19 +367,19 @@ public class Checksum extends MatchingTask implements Condition | |||
if( file == null && filesets.size() == 0 ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"Specify at least one source - a file or a fileset." ); | |||
} | |||
if( file != null && file.exists() && file.isDirectory() ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"Checksum cannot be generated for directories" ); | |||
} | |||
if( property != null && fileext != null ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"Property and FileExt cannot co-exist." ); | |||
} | |||
@@ -386,7 +387,7 @@ public class Checksum extends MatchingTask implements Condition | |||
{ | |||
if( forceOverwrite ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"ForceOverwrite cannot be used when Property is specified" ); | |||
} | |||
@@ -394,7 +395,7 @@ public class Checksum extends MatchingTask implements Condition | |||
{ | |||
if( filesets.size() > 0 ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"Multiple files cannot be used when Property is specified" ); | |||
} | |||
} | |||
@@ -402,7 +403,7 @@ public class Checksum extends MatchingTask implements Condition | |||
{ | |||
if( filesets.size() > 1 ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"Multiple files cannot be used when Property is specified" ); | |||
} | |||
} | |||
@@ -415,13 +416,13 @@ public class Checksum extends MatchingTask implements Condition | |||
if( verifyProperty != null && forceOverwrite ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"VerifyProperty and ForceOverwrite cannot co-exist." ); | |||
} | |||
if( isCondition && forceOverwrite ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"ForceOverwrite cannot be used when conditions are being used." ); | |||
} | |||
@@ -431,7 +432,7 @@ public class Checksum extends MatchingTask implements Condition | |||
} | |||
else if( fileext.trim().length() == 0 ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"File extension when specified must not be an empty string" ); | |||
} | |||
@@ -444,11 +445,11 @@ public class Checksum extends MatchingTask implements Condition | |||
} | |||
catch( NoSuchAlgorithmException noalgo ) | |||
{ | |||
throw new BuildException( noalgo ); | |||
throw new TaskException( noalgo.toString(), noalgo ); | |||
} | |||
catch( NoSuchProviderException noprovider ) | |||
{ | |||
throw new BuildException( noprovider ); | |||
throw new TaskException( noprovider.toString(), noprovider ); | |||
} | |||
} | |||
else | |||
@@ -459,14 +460,13 @@ public class Checksum extends MatchingTask implements Condition | |||
} | |||
catch( NoSuchAlgorithmException noalgo ) | |||
{ | |||
throw new BuildException( noalgo ); | |||
throw new TaskException( noalgo.toString(), noalgo ); | |||
} | |||
} | |||
if( messageDigest == null ) | |||
{ | |||
throw new BuildException( "Unable to create Message Digest", | |||
location ); | |||
throw new BuildException( "Unable to create Message Digest" ); | |||
} | |||
addToIncludeFileMap( file ); | |||
@@ -40,7 +40,7 @@ public class Chmod extends ExecuteOn | |||
public void setCommand( String e ) | |||
{ | |||
throw new BuildException( taskType + " doesn\'t support the command attribute", location ); | |||
throw new BuildException( taskType + " doesn\'t support the command attribute" ); | |||
} | |||
/** | |||
@@ -75,7 +75,7 @@ public class Chmod extends ExecuteOn | |||
public void setExecutable( String e ) | |||
{ | |||
throw new BuildException( taskType + " doesn\'t support the executable attribute", location ); | |||
throw new BuildException( taskType + " doesn\'t support the executable attribute" ); | |||
} | |||
public void setFile( File src ) | |||
@@ -106,7 +106,7 @@ public class Chmod extends ExecuteOn | |||
public void setSkipEmptyFilesets( boolean skip ) | |||
{ | |||
throw new BuildException( taskType + " doesn\'t support the skipemptyfileset attribute", location ); | |||
throw new BuildException( taskType + " doesn\'t support the skipemptyfileset attribute" ); | |||
} | |||
/** | |||
@@ -161,7 +161,7 @@ public class Chmod extends ExecuteOn | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Execute failed: " + e, e, location ); | |||
throw new BuildException( "Execute failed: " + e, e ); | |||
} | |||
finally | |||
{ | |||
@@ -180,8 +180,7 @@ public class Chmod extends ExecuteOn | |||
{ | |||
if( !havePerm ) | |||
{ | |||
throw new BuildException( "Required attribute perm not set in chmod", | |||
location ); | |||
throw new BuildException( "Required attribute perm not set in chmod" ); | |||
} | |||
if( defaultSetDefined && defaultSet.getDir( project ) != null ) | |||
@@ -9,6 +9,7 @@ package org.apache.tools.ant.taskdefs; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.taskdefs.condition.Condition; | |||
import org.apache.tools.ant.taskdefs.condition.ConditionBase; | |||
import org.apache.myrmidon.api.TaskException; | |||
/** | |||
* <condition> task as a generalization of <available> and | |||
@@ -57,15 +58,15 @@ public class ConditionTask extends ConditionBase | |||
* @since 1.1 | |||
*/ | |||
public void execute() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( countConditions() > 1 ) | |||
{ | |||
throw new BuildException( "You must not nest more than one condition into <condition>" ); | |||
throw new TaskException( "You must not nest more than one condition into <condition>" ); | |||
} | |||
if( countConditions() < 1 ) | |||
{ | |||
throw new BuildException( "You must nest a condition into <condition>" ); | |||
throw new TaskException( "You must nest a condition into <condition>" ); | |||
} | |||
Condition c = ( Condition )getConditions().nextElement(); | |||
if( c.eval() ) | |||
@@ -6,11 +6,13 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.util.Enumeration; | |||
import java.util.Hashtable; | |||
import java.util.Vector; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.DirectoryScanner; | |||
import org.apache.tools.ant.Project; | |||
@@ -120,19 +122,6 @@ public class Copy extends Task | |||
this.forceOverwrite = overwrite; | |||
} | |||
/** | |||
* Give the copied files the same last modified time as the original files. | |||
* | |||
* @param preserve The new PreserveLastModified value | |||
* @deprecated setPreserveLastModified(String) has been deprecated and | |||
* replaced with setPreserveLastModified(boolean) to consistently let | |||
* the Introspection mechanism work. | |||
*/ | |||
public void setPreserveLastModified( String preserve ) | |||
{ | |||
setPreserveLastModified( Project.toBoolean( preserve ) ); | |||
} | |||
/** | |||
* Give the copied files the same last modified time as the original files. | |||
* | |||
@@ -213,8 +202,7 @@ public class Copy extends Task | |||
{ | |||
if( mapperElement != null ) | |||
{ | |||
throw new BuildException( "Cannot define more than one mapper", | |||
location ); | |||
throw new BuildException( "Cannot define more than one mapper" ); | |||
} | |||
mapperElement = new Mapper( project ); | |||
return mapperElement; | |||
@@ -226,7 +214,7 @@ public class Copy extends Task | |||
* @exception BuildException Description of Exception | |||
*/ | |||
public void execute() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
// make sure we don't have an illegal set of options | |||
validateAttributes(); | |||
@@ -249,22 +237,22 @@ public class Copy extends Task | |||
else | |||
{ | |||
log( file + " omitted as " + destFile + " is up to date.", | |||
Project.MSG_VERBOSE ); | |||
Project.MSG_VERBOSE ); | |||
} | |||
} | |||
else | |||
{ | |||
String message = "Could not find file " | |||
+ file.getAbsolutePath() + " to copy."; | |||
+ file.getAbsolutePath() + " to copy."; | |||
log( message ); | |||
throw new BuildException( message ); | |||
throw new TaskException( message ); | |||
} | |||
} | |||
// deal with the filesets | |||
for( int i = 0; i < filesets.size(); i++ ) | |||
{ | |||
FileSet fs = ( FileSet )filesets.elementAt( i ); | |||
FileSet fs = (FileSet)filesets.elementAt( i ); | |||
DirectoryScanner ds = fs.getDirectoryScanner( project ); | |||
File fromDir = fs.getDir( project ); | |||
@@ -272,7 +260,7 @@ public class Copy extends Task | |||
String[] srcDirs = ds.getIncludedDirectories(); | |||
boolean isEverythingIncluded = ds.isEverythingIncluded(); | |||
if( isEverythingIncluded | |||
&& !flatten && mapperElement == null ) | |||
&& !flatten && mapperElement == null ) | |||
{ | |||
completeDirMap.put( fromDir, destDir ); | |||
} | |||
@@ -315,12 +303,12 @@ public class Copy extends Task | |||
Vector v = new Vector(); | |||
for( int i = 0; i < names.length; i++ ) | |||
{ | |||
if( mapper.mapFileName( names[i] ) != null ) | |||
if( mapper.mapFileName( names[ i ] ) != null ) | |||
{ | |||
v.addElement( names[i] ); | |||
v.addElement( names[ i ] ); | |||
} | |||
} | |||
toCopy = new String[v.size()]; | |||
toCopy = new String[ v.size() ]; | |||
v.copyInto( toCopy ); | |||
} | |||
else | |||
@@ -331,8 +319,8 @@ public class Copy extends Task | |||
for( int i = 0; i < toCopy.length; i++ ) | |||
{ | |||
File src = new File( fromDir, toCopy[i] ); | |||
File dest = new File( toDir, mapper.mapFileName( toCopy[i] )[0] ); | |||
File src = new File( fromDir, toCopy[ i ] ); | |||
File dest = new File( toDir, mapper.mapFileName( toCopy[ i ] )[ 0 ] ); | |||
map.put( src.getAbsolutePath(), dest.getAbsolutePath() ); | |||
} | |||
} | |||
@@ -346,14 +334,14 @@ public class Copy extends Task | |||
if( fileCopyMap.size() > 0 ) | |||
{ | |||
log( "Copying " + fileCopyMap.size() + | |||
" file" + ( fileCopyMap.size() == 1 ? "" : "s" ) + | |||
" to " + destDir.getAbsolutePath() ); | |||
" file" + ( fileCopyMap.size() == 1 ? "" : "s" ) + | |||
" to " + destDir.getAbsolutePath() ); | |||
Enumeration e = fileCopyMap.keys(); | |||
while( e.hasMoreElements() ) | |||
{ | |||
String fromFile = ( String )e.nextElement(); | |||
String toFile = ( String )fileCopyMap.get( fromFile ); | |||
String fromFile = (String)e.nextElement(); | |||
String toFile = (String)fileCopyMap.get( fromFile ); | |||
if( fromFile.equals( toFile ) ) | |||
{ | |||
@@ -370,18 +358,18 @@ public class Copy extends Task | |||
{ | |||
executionFilters.addFilterSet( project.getGlobalFilterSet() ); | |||
} | |||
for( Enumeration filterEnum = filterSets.elements(); filterEnum.hasMoreElements(); ) | |||
for( Enumeration filterEnum = filterSets.elements(); filterEnum.hasMoreElements(); ) | |||
{ | |||
executionFilters.addFilterSet( ( FilterSet )filterEnum.nextElement() ); | |||
executionFilters.addFilterSet( (FilterSet)filterEnum.nextElement() ); | |||
} | |||
fileUtils.copyFile( fromFile, toFile, executionFilters, | |||
forceOverwrite, preserveLastModified ); | |||
forceOverwrite, preserveLastModified ); | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
String msg = "Failed to copy " + fromFile + " to " + toFile | |||
+ " due to " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
+ " due to " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
} | |||
} | |||
@@ -392,7 +380,7 @@ public class Copy extends Task | |||
int count = 0; | |||
while( e.hasMoreElements() ) | |||
{ | |||
File d = new File( ( String )e.nextElement() ); | |||
File d = new File( (String)e.nextElement() ); | |||
if( !d.exists() ) | |||
{ | |||
if( !d.mkdirs() ) | |||
@@ -409,9 +397,9 @@ public class Copy extends Task | |||
if( count > 0 ) | |||
{ | |||
log( "Copied " + count + | |||
" empty director" + | |||
( count == 1 ? "y" : "ies" ) + | |||
" to " + destDir.getAbsolutePath() ); | |||
" empty director" + | |||
( count == 1 ? "y" : "ies" ) + | |||
" to " + destDir.getAbsolutePath() ); | |||
} | |||
} | |||
} | |||
@@ -449,9 +437,9 @@ public class Copy extends Task | |||
} | |||
} | |||
//************************************************************************ | |||
// protected and private methods | |||
//************************************************************************ | |||
//************************************************************************ | |||
// protected and private methods | |||
//************************************************************************ | |||
/** | |||
* Ensure we have a consistent and legal set of attributes, and set any | |||
@@ -460,38 +448,38 @@ public class Copy extends Task | |||
* @exception BuildException Description of Exception | |||
*/ | |||
protected void validateAttributes() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
if( file == null && filesets.size() == 0 ) | |||
{ | |||
throw new BuildException( "Specify at least one source - a file or a fileset." ); | |||
throw new TaskException( "Specify at least one source - a file or a fileset." ); | |||
} | |||
if( destFile != null && destDir != null ) | |||
{ | |||
throw new BuildException( "Only one of tofile and todir may be set." ); | |||
throw new TaskException( "Only one of tofile and todir may be set." ); | |||
} | |||
if( destFile == null && destDir == null ) | |||
{ | |||
throw new BuildException( "One of tofile or todir must be set." ); | |||
throw new TaskException( "One of tofile or todir must be set." ); | |||
} | |||
if( file != null && file.exists() && file.isDirectory() ) | |||
{ | |||
throw new BuildException( "Use a fileset to copy directories." ); | |||
throw new TaskException( "Use a fileset to copy directories." ); | |||
} | |||
if( destFile != null && filesets.size() > 0 ) | |||
{ | |||
if( filesets.size() > 1 ) | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"Cannot concatenate multiple files into a single file." ); | |||
} | |||
else | |||
{ | |||
FileSet fs = ( FileSet )filesets.elementAt( 0 ); | |||
FileSet fs = (FileSet)filesets.elementAt( 0 ); | |||
DirectoryScanner ds = fs.getDirectoryScanner( project ); | |||
String[] srcFiles = ds.getIncludedFiles(); | |||
@@ -499,18 +487,18 @@ public class Copy extends Task | |||
{ | |||
if( file == null ) | |||
{ | |||
file = new File( srcFiles[0] ); | |||
file = new File( srcFiles[ 0 ] ); | |||
filesets.removeElementAt( 0 ); | |||
} | |||
else | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"Cannot concatenate multiple files into a single file." ); | |||
} | |||
} | |||
else | |||
{ | |||
throw new BuildException( | |||
throw new TaskException( | |||
"Cannot perform operation from directory to file." ); | |||
} | |||
} | |||
@@ -520,7 +508,5 @@ public class Copy extends Task | |||
{ | |||
destDir = new File( destFile.getParent() );// be 1.1 friendly | |||
} | |||
} | |||
} |
@@ -6,12 +6,14 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
import java.io.BufferedOutputStream; | |||
import java.io.File; | |||
import java.io.FileOutputStream; | |||
import java.io.IOException; | |||
import java.io.OutputStream; | |||
import java.io.PrintStream; | |||
import org.apache.myrmidon.api.TaskException; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.Project; | |||
import org.apache.tools.ant.Task; | |||
@@ -120,7 +122,6 @@ public class Cvs extends Task | |||
this.cvsRsh = rsh; | |||
} | |||
public void setDate( String p ) | |||
{ | |||
if( p != null && p.trim().length() > 0 ) | |||
@@ -185,9 +186,8 @@ public class Cvs extends Task | |||
} | |||
} | |||
public void execute() | |||
throws BuildException | |||
throws TaskException | |||
{ | |||
// XXX: we should use JCVS (www.ice.com/JCVS) instead of command line | |||
@@ -252,7 +252,7 @@ public class Cvs extends Task | |||
if( error == null && output == null ) | |||
{ | |||
streamhandler = new LogStreamHandler( this, Project.MSG_INFO, | |||
Project.MSG_WARN ); | |||
Project.MSG_WARN ); | |||
} | |||
else | |||
{ | |||
@@ -264,7 +264,7 @@ public class Cvs extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new TaskException( e.toString(), e ); | |||
} | |||
} | |||
else | |||
@@ -279,7 +279,7 @@ public class Cvs extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new TaskException( e.toString(), e ); | |||
} | |||
} | |||
else | |||
@@ -290,7 +290,7 @@ public class Cvs extends Task | |||
} | |||
Execute exe = new Execute( streamhandler, | |||
null ); | |||
null ); | |||
exe.setAntRun( project ); | |||
if( dest == null ) | |||
@@ -306,11 +306,11 @@ public class Cvs extends Task | |||
* Throw an exception if cvs exited with error. (Iulian) | |||
*/ | |||
if( failOnError && retCode != 0 ) | |||
throw new BuildException( "cvs exited with error code " + retCode ); | |||
throw new TaskException( "cvs exited with error code " + retCode ); | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new TaskException( e.toString(), e ); | |||
} | |||
finally | |||
{ | |||
@@ -321,7 +321,8 @@ public class Cvs extends Task | |||
outputstream.close(); | |||
} | |||
catch( IOException e ) | |||
{} | |||
{ | |||
} | |||
} | |||
if( error != null ) | |||
{ | |||
@@ -330,7 +331,8 @@ public class Cvs extends Task | |||
errorstream.close(); | |||
} | |||
catch( IOException e ) | |||
{} | |||
{ | |||
} | |||
} | |||
} | |||
} | |||
@@ -72,12 +72,6 @@ public abstract class Definer extends Task | |||
this.resource = res; | |||
} | |||
public void setReverseLoader( boolean reverseLoader ) | |||
{ | |||
this.reverseLoader = reverseLoader; | |||
log( "The reverseloader attribute is DEPRECATED. It will be removed", Project.MSG_WARN ); | |||
} | |||
public String getClassname() | |||
{ | |||
return value; | |||
@@ -120,13 +114,13 @@ public abstract class Definer extends Task | |||
{ | |||
String msg = "You must not specify name or value " | |||
+ "together with file or resource."; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
if( file != null && resource != null ) | |||
{ | |||
String msg = "You must not specify both, file and resource."; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
Properties props = new Properties(); | |||
@@ -169,7 +163,7 @@ public abstract class Definer extends Task | |||
} | |||
catch( IOException ex ) | |||
{ | |||
throw new BuildException( ex); | |||
throw new BuildException( "Error", ex); | |||
} | |||
} | |||
} | |||
@@ -189,13 +183,13 @@ public abstract class Definer extends Task | |||
{ | |||
String msg = getTaskName() + " class " + value + | |||
" cannot be found"; | |||
throw new BuildException( msg, cnfe, location ); | |||
throw new BuildException( msg, cnfe ); | |||
} | |||
catch( NoClassDefFoundError ncdfe ) | |||
{ | |||
String msg = getTaskName() + " class " + value + | |||
" cannot be found"; | |||
throw new BuildException( msg, ncdfe, location ); | |||
throw new BuildException( msg, ncdfe ); | |||
} | |||
} | |||
@@ -242,8 +242,7 @@ public class Delete extends MatchingTask | |||
if( quiet && failonerror ) | |||
{ | |||
throw new BuildException( "quiet and failonerror cannot both be set to true", | |||
location ); | |||
throw new BuildException( "quiet and failonerror cannot both be set to true" ); | |||
} | |||
// delete the single file | |||
@@ -47,13 +47,6 @@ public class Ear extends Jar | |||
super.addFileset( fs ); | |||
} | |||
public void setEarfile( File earFile ) | |||
{ | |||
log( "DEPRECATED - The earfile attribute is deprecated. Use file attribute instead." ); | |||
setFile( earFile ); | |||
} | |||
public void addArchives( ZipFileSet fs ) | |||
{ | |||
// We just set the prefix for this fileset, and pass it up. | |||
@@ -80,7 +73,7 @@ public class Ear extends Jar | |||
// If no webxml file is specified, it's an error. | |||
if( deploymentDescriptor == null && !isInUpdateMode() ) | |||
{ | |||
throw new BuildException( "appxml attribute is required", location ); | |||
throw new BuildException( "appxml attribute is required" ); | |||
} | |||
super.initZipOutputStream( zOut ); | |||
@@ -132,7 +132,7 @@ public class Echo extends Task | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( ioe); | |||
throw new BuildException( "Error", ioe); | |||
} | |||
finally | |||
{ | |||
@@ -52,19 +52,6 @@ public class ExecTask extends Task | |||
private String outputprop; | |||
private String resultProperty; | |||
/** | |||
* The full commandline to execute, executable + arguments. | |||
* | |||
* @param cmdl The new Command value | |||
*/ | |||
public void setCommand( Commandline cmdl ) | |||
{ | |||
log( "The command attribute is deprecated. " + | |||
"Please use the executable attribute and nested arg elements.", | |||
Project.MSG_WARN ); | |||
this.cmdl = cmdl; | |||
} | |||
/** | |||
* The working directory of the process | |||
* | |||
@@ -256,7 +243,7 @@ public class ExecTask extends Task | |||
{ | |||
if( failOnError ) | |||
{ | |||
throw new BuildException( taskType + " returned: " + err, location ); | |||
throw new BuildException( taskType + " returned: " + err ); | |||
} | |||
else | |||
{ | |||
@@ -291,7 +278,7 @@ public class ExecTask extends Task | |||
{ | |||
if( cmdl.getExecutable() == null ) | |||
{ | |||
throw new BuildException( "no executable specified", location ); | |||
throw new BuildException( "no executable specified" ); | |||
} | |||
if( dir != null && !dir.exists() ) | |||
{ | |||
@@ -322,11 +309,11 @@ public class ExecTask extends Task | |||
} | |||
catch( FileNotFoundException fne ) | |||
{ | |||
throw new BuildException( "Cannot write to " + out, fne, location ); | |||
throw new BuildException( "Cannot write to " + out, fne ); | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( "Cannot write to " + out, ioe, location ); | |||
throw new BuildException( "Cannot write to " + out, ioe ); | |||
} | |||
} | |||
else if( outputprop != null ) | |||
@@ -439,7 +426,7 @@ public class ExecTask extends Task | |||
{ | |||
if( failIfExecFails ) | |||
{ | |||
throw new BuildException( "Execute failed: " + e.toString(), e, location ); | |||
throw new BuildException( "Execute failed: " + e.toString(), e ); | |||
} | |||
else | |||
{ | |||
@@ -259,12 +259,12 @@ public class Execute | |||
int retval = exe.execute(); | |||
if( retval != 0 ) | |||
{ | |||
throw new BuildException( cmdline[ 0 ] + " failed with return code " + retval, task.getLocation() ); | |||
throw new BuildException( cmdline[ 0 ] + " failed with return code " + retval ); | |||
} | |||
} | |||
catch( java.io.IOException exc ) | |||
{ | |||
throw new BuildException( "Could not launch " + cmdline[ 0 ] + ": " + exc, task.getLocation() ); | |||
throw new BuildException( "Could not launch " + cmdline[ 0 ] + ": " + exc ); | |||
} | |||
} | |||
@@ -806,7 +806,7 @@ public class Execute | |||
{ | |||
throw new IOException( "Cannot locate antRun script: Property 'ant.home' not found" ); | |||
} | |||
String antRun = project.resolveFile( antHome + File.separator + _script ).toString(); | |||
String antRun = resolveFile( antHome + File.separator + _script ).toString(); | |||
// Build the command | |||
File commandDir = workingDir; | |||
@@ -871,7 +871,7 @@ public class Execute | |||
{ | |||
throw new IOException( "Cannot locate antRun script: Property 'ant.home' not found" ); | |||
} | |||
String antRun = project.resolveFile( antHome + File.separator + _script ).toString(); | |||
String antRun = resolveFile( antHome + File.separator + _script ).toString(); | |||
// Build the command | |||
File commandDir = workingDir; | |||
@@ -37,15 +37,6 @@ public class ExecuteJava | |||
this.javaCommand = javaCommand; | |||
} | |||
/** | |||
* All output (System.out as well as System.err) will be written to this | |||
* Stream. | |||
* | |||
* @param out The new Output value | |||
* @deprecated manage output at the task level | |||
*/ | |||
public void setOutput( PrintStream out ) { } | |||
public void setSystemProperties( CommandlineJava.SysProperties s ) | |||
{ | |||
sysProperties = s; | |||
@@ -95,7 +86,7 @@ public class ExecuteJava | |||
Throwable t = e.getTargetException(); | |||
if( !( t instanceof SecurityException ) ) | |||
{ | |||
throw new BuildException( t ); | |||
throw new BuildException( "Error", t ); | |||
} | |||
else | |||
{ | |||
@@ -104,7 +95,7 @@ public class ExecuteJava | |||
} | |||
catch( Exception e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
finally | |||
{ | |||
@@ -117,8 +117,7 @@ public class ExecuteOn extends ExecTask | |||
{ | |||
if( mapperElement != null ) | |||
{ | |||
throw new BuildException( "Cannot define more than one mapper", | |||
location ); | |||
throw new BuildException( "Cannot define more than one mapper" ); | |||
} | |||
mapperElement = new Mapper( project ); | |||
return mapperElement; | |||
@@ -134,8 +133,7 @@ public class ExecuteOn extends ExecTask | |||
{ | |||
if( srcFilePos != null ) | |||
{ | |||
throw new BuildException( taskType + " doesn\'t support multiple srcfile elements.", | |||
location ); | |||
throw new BuildException( taskType + " doesn\'t support multiple srcfile elements." ); | |||
} | |||
srcFilePos = cmdl.createMarker(); | |||
return srcFilePos; | |||
@@ -151,8 +149,7 @@ public class ExecuteOn extends ExecTask | |||
{ | |||
if( targetFilePos != null ) | |||
{ | |||
throw new BuildException( taskType + " doesn\'t support multiple targetfile elements.", | |||
location ); | |||
throw new BuildException( taskType + " doesn\'t support multiple targetfile elements." ); | |||
} | |||
targetFilePos = cmdl.createMarker(); | |||
srcIsFirst = ( srcFilePos != null ); | |||
@@ -345,15 +342,10 @@ public class ExecuteOn extends ExecTask | |||
protected void checkConfiguration() | |||
{ | |||
if( "execon".equals( taskName ) ) | |||
{ | |||
log( "!! execon is deprecated. Use apply instead. !!" ); | |||
} | |||
super.checkConfiguration(); | |||
if( filesets.size() == 0 ) | |||
{ | |||
throw new BuildException( "no filesets specified", location ); | |||
throw new BuildException( "no filesets specified" ); | |||
} | |||
if( targetFilePos != null || mapperElement != null | |||
@@ -362,12 +354,11 @@ public class ExecuteOn extends ExecTask | |||
if( mapperElement == null ) | |||
{ | |||
throw new BuildException( "no mapper specified", location ); | |||
throw new BuildException( "no mapper specified" ); | |||
} | |||
if( mapperElement == null ) | |||
{ | |||
throw new BuildException( "no dest attribute specified", | |||
location ); | |||
throw new BuildException( "no dest attribute specified" ); | |||
} | |||
mapper = mapperElement.getImplementation(); | |||
} | |||
@@ -448,7 +439,7 @@ public class ExecuteOn extends ExecTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Execute failed: " + e, e, location ); | |||
throw new BuildException( "Execute failed: " + e, e ); | |||
} | |||
finally | |||
{ | |||
@@ -98,11 +98,6 @@ public class Expand extends MatchingTask | |||
public void execute() | |||
throws BuildException | |||
{ | |||
if( "expand".equals( taskType ) ) | |||
{ | |||
log( "!! expand is deprecated. Use unzip instead. !!" ); | |||
} | |||
if( source == null && filesets.size() == 0 ) | |||
{ | |||
throw new BuildException( "src attribute and/or filesets must be specified" ); | |||
@@ -116,7 +111,7 @@ public class Expand extends MatchingTask | |||
if( dest.exists() && !dest.isDirectory() ) | |||
{ | |||
throw new BuildException( "Dest must be a directory.", location ); | |||
throw new BuildException( "Dest must be a directory." ); | |||
} | |||
FileUtils fileUtils = FileUtils.newFileUtils(); | |||
@@ -126,7 +121,7 @@ public class Expand extends MatchingTask | |||
if( source.isDirectory() ) | |||
{ | |||
throw new BuildException( "Src must not be a directory." + | |||
" Use nested filesets instead.", location ); | |||
" Use nested filesets instead." ); | |||
} | |||
else | |||
{ | |||
@@ -51,7 +51,7 @@ public class Filter extends Task | |||
if( !isFiltersFromFile && !isSingleFilter ) | |||
{ | |||
throw new BuildException( "both token and value parameters, or only a filtersFile parameter is required", location ); | |||
throw new BuildException( "both token and value parameters, or only a filtersFile parameter is required" ); | |||
} | |||
if( isSingleFilter ) | |||
@@ -147,35 +147,6 @@ public class FixCRLF extends MatchingTask | |||
} | |||
} | |||
/** | |||
* Specify how carriage return (CR) characters are to be handled | |||
* | |||
* @param attr The new Cr value | |||
* @deprecated use {@link #setEol setEol} instead. | |||
*/ | |||
public void setCr( AddAsisRemove attr ) | |||
{ | |||
log( "DEPRECATED: The cr attribute has been deprecated,", | |||
Project.MSG_WARN ); | |||
log( "Please us the eol attribute instead", Project.MSG_WARN ); | |||
String option = attr.getValue(); | |||
CrLf c = new CrLf(); | |||
if( option.equals( "remove" ) ) | |||
{ | |||
c.setValue( "lf" ); | |||
} | |||
else if( option.equals( "asis" ) ) | |||
{ | |||
c.setValue( "asis" ); | |||
} | |||
else | |||
{ | |||
// must be "add" | |||
c.setValue( "crlf" ); | |||
} | |||
setEol( c ); | |||
} | |||
/** | |||
* Set the destination where the fixed files should be placed. Default is to | |||
* replace the original file. | |||
@@ -306,8 +277,7 @@ public class FixCRLF extends MatchingTask | |||
{ | |||
if( tlength < 2 || tlength > 80 ) | |||
{ | |||
throw new BuildException( "tablength must be between 2 and 80", | |||
location ); | |||
throw new BuildException( "tablength must be between 2 and 80" ); | |||
} | |||
tablength = tlength; | |||
StringBuffer sp = new StringBuffer(); | |||
@@ -522,7 +492,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
}// end of try-catch | |||
} | |||
else | |||
@@ -581,7 +551,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
}// end of try-catch | |||
}// end of else tabs == ADD | |||
@@ -617,7 +587,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
while( lines.hasMoreElements() ) | |||
@@ -631,7 +601,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( NoSuchElementException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
String lineString = line.getLineString(); | |||
@@ -649,7 +619,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
}// end of try-catch | |||
} | |||
@@ -721,7 +691,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
lines.setState( LOOKING ); | |||
@@ -744,7 +714,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
}// end of try-catch | |||
}// end of while (lines.hasNext()) | |||
@@ -763,7 +733,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
finally | |||
{ | |||
@@ -773,7 +743,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -841,7 +811,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
finally | |||
{ | |||
@@ -914,7 +884,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -1043,7 +1013,7 @@ public class FixCRLF extends MatchingTask | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -56,7 +56,7 @@ public class GUnzip extends Unpack | |||
catch( IOException ioe ) | |||
{ | |||
String msg = "Problem expanding gzip " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -34,7 +34,7 @@ public class GZip extends Pack | |||
catch( IOException ioe ) | |||
{ | |||
String msg = "Problem creating gzip " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -132,29 +132,26 @@ public class Get extends Task | |||
{ | |||
if( source == null ) | |||
{ | |||
throw new BuildException( "src attribute is required", location ); | |||
throw new BuildException( "src attribute is required" ); | |||
} | |||
if( dest == null ) | |||
{ | |||
throw new BuildException( "dest attribute is required", location ); | |||
throw new BuildException( "dest attribute is required" ); | |||
} | |||
if( dest.exists() && dest.isDirectory() ) | |||
{ | |||
throw new BuildException( "The specified destination is a directory", | |||
location ); | |||
throw new BuildException( "The specified destination is a directory" ); | |||
} | |||
if( dest.exists() && !dest.canWrite() ) | |||
{ | |||
throw new BuildException( "Can't write to " + dest.getAbsolutePath(), | |||
location ); | |||
throw new BuildException( "Can't write to " + dest.getAbsolutePath() ); | |||
} | |||
try | |||
{ | |||
log( "Getting: " + source ); | |||
//set the timestamp to the file date. | |||
@@ -249,8 +246,7 @@ public class Get extends Task | |||
log( "Can't get " + source + " to " + dest ); | |||
if( ignoreErrors ) | |||
return; | |||
throw new BuildException( "Can't get " + source + " to " + dest, | |||
location ); | |||
throw new BuildException( "Can't get " + source + " to " + dest ); | |||
} | |||
byte[] buffer = new byte[100 * 1024]; | |||
@@ -287,7 +283,7 @@ public class Get extends Task | |||
log( "Error getting " + source + " to " + dest ); | |||
if( ignoreErrors ) | |||
return; | |||
throw new BuildException( ioe); | |||
throw new BuildException( "Error", ioe); | |||
} | |||
} | |||
@@ -63,22 +63,11 @@ public class Jar extends Zip | |||
index = flag; | |||
} | |||
/** | |||
* @param jarFile The new Jarfile value | |||
* @deprecated use setFile(File) instead. | |||
*/ | |||
public void setJarfile( File jarFile ) | |||
{ | |||
log( "DEPRECATED - The jarfile attribute is deprecated. Use file attribute instead." ); | |||
setFile( jarFile ); | |||
} | |||
public void setManifest( File manifestFile ) | |||
{ | |||
if( !manifestFile.exists() ) | |||
{ | |||
throw new BuildException( "Manifest file: " + manifestFile + " does not exist.", | |||
getLocation() ); | |||
throw new BuildException( "Manifest file: " + manifestFile + " does not exist." ); | |||
} | |||
this.manifestFile = manifestFile; | |||
@@ -97,7 +86,7 @@ public class Jar extends Zip | |||
catch( ManifestException e ) | |||
{ | |||
log( "Manifest is invalid: " + e.getMessage(), Project.MSG_ERR ); | |||
throw new BuildException( "Invalid Manifest: " + manifestFile, e, getLocation() ); | |||
throw new BuildException( "Invalid Manifest: " + manifestFile, e ); | |||
} | |||
catch( IOException e ) | |||
{ | |||
@@ -262,7 +251,7 @@ public class Jar extends Zip | |||
catch( ManifestException e ) | |||
{ | |||
log( "Manifest is invalid: " + e.getMessage(), Project.MSG_ERR ); | |||
throw new BuildException( "Invalid Manifest", e, getLocation() ); | |||
throw new BuildException( "Invalid Manifest", e ); | |||
} | |||
} | |||
@@ -391,7 +380,7 @@ public class Jar extends Zip | |||
catch( ManifestException e ) | |||
{ | |||
log( "Manifest is invalid: " + e.getMessage(), Project.MSG_ERR ); | |||
throw new BuildException( "Invalid Manifest", e, getLocation() ); | |||
throw new BuildException( "Invalid Manifest", e ); | |||
} | |||
} | |||
} |
@@ -6,13 +6,13 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
import java.io.File; | |||
import java.io.FileOutputStream; | |||
import java.io.IOException; | |||
import java.io.PrintStream; | |||
import java.util.Vector; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.ExitException; | |||
import org.apache.tools.ant.Project; | |||
import org.apache.tools.ant.Task; | |||
import org.apache.tools.ant.types.Commandline; | |||
@@ -39,19 +39,6 @@ public class Java extends Task | |||
private boolean failOnError = false; | |||
private File out; | |||
/** | |||
* Set the command line arguments for the class. | |||
* | |||
* @param s The new Args value | |||
*/ | |||
public void setArgs( String s ) | |||
{ | |||
log( "The args attribute is deprecated. " + | |||
"Please use nested arg elements.", | |||
Project.MSG_WARN ); | |||
cmdl.createArgument().setLine( s ); | |||
} | |||
/** | |||
* Set the class name. | |||
* | |||
@@ -149,19 +136,6 @@ public class Java extends Task | |||
cmdl.setVm( s ); | |||
} | |||
/** | |||
* Set the command line arguments for the JVM. | |||
* | |||
* @param s The new Jvmargs value | |||
*/ | |||
public void setJvmargs( String s ) | |||
{ | |||
log( "The jvmargs attribute is deprecated. " + | |||
"Please use nested jvmarg elements.", | |||
Project.MSG_WARN ); | |||
cmdl.createVmArgument().setLine( s ); | |||
} | |||
/** | |||
* -mx or -Xmx depending on VM version | |||
* | |||
@@ -243,7 +217,7 @@ public class Java extends Task | |||
{ | |||
if( failOnError ) | |||
{ | |||
throw new BuildException( "Java returned: " + err, location ); | |||
throw new BuildException( "Java returned: " + err ); | |||
} | |||
else | |||
{ | |||
@@ -290,16 +264,9 @@ public class Java extends Task | |||
} | |||
log( "Running in same VM " + cmdl.getJavaCommand().toString(), | |||
Project.MSG_VERBOSE ); | |||
try | |||
{ | |||
run( cmdl ); | |||
return 0; | |||
} | |||
catch( ExitException ex ) | |||
{ | |||
return ex.getStatus(); | |||
} | |||
Project.MSG_VERBOSE ); | |||
run( cmdl ); | |||
return 0; | |||
} | |||
} | |||
@@ -342,7 +309,7 @@ public class Java extends Task | |||
cmdj.setClassname( classname ); | |||
for( int i = 0; i < args.size(); i++ ) | |||
{ | |||
cmdj.createArgument().setValue( ( String )args.elementAt( i ) ); | |||
cmdj.createArgument().setValue( (String)args.elementAt( i ) ); | |||
} | |||
run( cmdj ); | |||
} | |||
@@ -370,7 +337,7 @@ public class Java extends Task | |||
} | |||
catch( IOException io ) | |||
{ | |||
throw new BuildException( io ); | |||
throw new BuildException( "Error", io ); | |||
} | |||
finally | |||
{ | |||
@@ -403,8 +370,8 @@ public class Java extends Task | |||
if( out == null ) | |||
{ | |||
exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, | |||
Project.MSG_WARN ), | |||
null ); | |||
Project.MSG_WARN ), | |||
null ); | |||
} | |||
else | |||
{ | |||
@@ -420,8 +387,7 @@ public class Java extends Task | |||
} | |||
else if( !dir.exists() || !dir.isDirectory() ) | |||
{ | |||
throw new BuildException( dir.getAbsolutePath() + " is not a valid directory", | |||
location ); | |||
throw new BuildException( dir.getAbsolutePath() + " is not a valid directory"); | |||
} | |||
exe.setWorkingDirectory( dir ); | |||
@@ -433,12 +399,12 @@ public class Java extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
catch( IOException io ) | |||
{ | |||
throw new BuildException( io ); | |||
throw new BuildException( "Error", io ); | |||
} | |||
finally | |||
{ | |||
@@ -449,7 +415,8 @@ public class Java extends Task | |||
fos.close(); | |||
} | |||
catch( IOException io ) | |||
{} | |||
{ | |||
} | |||
} | |||
} | |||
} | |||
@@ -6,15 +6,16 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
import java.io.File; | |||
import java.util.Enumeration; | |||
import java.util.Vector; | |||
import org.apache.myrmidon.framework.Os; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.DirectoryScanner; | |||
import org.apache.tools.ant.Project; | |||
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapter; | |||
import org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory; | |||
import org.apache.myrmidon.framework.Os; | |||
import org.apache.tools.ant.types.Commandline; | |||
import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.types.Reference; | |||
@@ -57,9 +58,8 @@ import org.apache.tools.ant.util.SourceFileScanner; | |||
public class Javac extends MatchingTask | |||
{ | |||
private final static String FAIL_MSG | |||
= "Compile failed, messages should have been provided."; | |||
= "Compile failed, messages should have been provided."; | |||
private boolean debug = false; | |||
private boolean optimize = false; | |||
private boolean deprecation = false; | |||
@@ -73,7 +73,7 @@ public class Javac extends MatchingTask | |||
private Vector implementationSpecificArgs = new Vector(); | |||
protected boolean failOnError = true; | |||
protected File[] compileList = new File[0]; | |||
protected File[] compileList = new File[ 0 ]; | |||
private Path bootclasspath; | |||
private Path compileClasspath; | |||
private String debugLevel; | |||
@@ -238,15 +238,15 @@ public class Javac extends MatchingTask | |||
public void setFork( String f ) | |||
{ | |||
if( f.equalsIgnoreCase( "on" ) | |||
|| f.equalsIgnoreCase( "true" ) | |||
|| f.equalsIgnoreCase( "yes" ) ) | |||
|| f.equalsIgnoreCase( "true" ) | |||
|| f.equalsIgnoreCase( "yes" ) ) | |||
{ | |||
fork = "true"; | |||
forkedExecutable = getSystemJavac(); | |||
} | |||
else if( f.equalsIgnoreCase( "off" ) | |||
|| f.equalsIgnoreCase( "false" ) | |||
|| f.equalsIgnoreCase( "no" ) ) | |||
|| f.equalsIgnoreCase( "false" ) | |||
|| f.equalsIgnoreCase( "no" ) ) | |||
{ | |||
fork = "false"; | |||
forkedExecutable = null; | |||
@@ -406,17 +406,17 @@ public class Javac extends MatchingTask | |||
{ | |||
Vector args = new Vector(); | |||
for( Enumeration enum = implementationSpecificArgs.elements(); | |||
enum.hasMoreElements(); | |||
) | |||
enum.hasMoreElements(); | |||
) | |||
{ | |||
String[] curr = | |||
( ( ImplementationSpecificArgument )enum.nextElement() ).getParts(); | |||
( (ImplementationSpecificArgument)enum.nextElement() ).getParts(); | |||
for( int i = 0; i < curr.length; i++ ) | |||
{ | |||
args.addElement( curr[i] ); | |||
args.addElement( curr[ i ] ); | |||
} | |||
} | |||
String[] res = new String[args.size()]; | |||
String[] res = new String[ args.size() ]; | |||
args.copyInto( res ); | |||
return res; | |||
} | |||
@@ -724,17 +724,17 @@ public class Javac extends MatchingTask | |||
if( src == null ) | |||
{ | |||
throw new BuildException( "srcdir attribute must be set!", location ); | |||
throw new BuildException( "srcdir attribute must be set!" ); | |||
} | |||
String[] list = src.list(); | |||
if( list.length == 0 ) | |||
{ | |||
throw new BuildException( "srcdir attribute must be set!", location ); | |||
throw new BuildException( "srcdir attribute must be set!" ); | |||
} | |||
if( destDir != null && !destDir.isDirectory() ) | |||
{ | |||
throw new BuildException( "destination directory \"" + destDir + "\" does not exist or is not a directory", location ); | |||
throw new BuildException( "destination directory \"" + destDir + "\" does not exist or is not a directory" ); | |||
} | |||
// scan source directories and dest directory to build up | |||
@@ -742,10 +742,10 @@ public class Javac extends MatchingTask | |||
resetFileLists(); | |||
for( int i = 0; i < list.length; i++ ) | |||
{ | |||
File srcDir = ( File )project.resolveFile( list[i] ); | |||
File srcDir = (File)resolveFile( list[ i ] ); | |||
if( !srcDir.exists() ) | |||
{ | |||
throw new BuildException( "srcdir \"" + srcDir.getPath() + "\" does not exist!", location ); | |||
throw new BuildException( "srcdir \"" + srcDir.getPath() + "\" does not exist!" ); | |||
} | |||
DirectoryScanner ds = this.getDirectoryScanner( srcDir ); | |||
@@ -765,7 +765,7 @@ public class Javac extends MatchingTask | |||
CompilerAdapter adapter = CompilerAdapterFactory.getCompiler( | |||
compiler, this ); | |||
log( "Compiling " + compileList.length + | |||
" source file" | |||
" source file" | |||
+ ( compileList.length == 1 ? "" : "s" ) | |||
+ ( destDir != null ? " to " + destDir : "" ) ); | |||
@@ -777,7 +777,7 @@ public class Javac extends MatchingTask | |||
{ | |||
if( failOnError ) | |||
{ | |||
throw new BuildException( FAIL_MSG, location ); | |||
throw new BuildException( FAIL_MSG ); | |||
} | |||
else | |||
{ | |||
@@ -799,7 +799,7 @@ public class Javac extends MatchingTask | |||
// PATH. | |||
java.io.File jExecutable = | |||
new java.io.File( System.getProperty( "java.home" ) + | |||
"/../bin/javac" + extension ); | |||
"/../bin/javac" + extension ); | |||
if( jExecutable.exists() && !Os.isFamily( "netware" ) ) | |||
{ | |||
@@ -837,7 +837,7 @@ public class Javac extends MatchingTask | |||
*/ | |||
protected void resetFileLists() | |||
{ | |||
compileList = new File[0]; | |||
compileList = new File[ 0 ]; | |||
} | |||
/** | |||
@@ -858,12 +858,12 @@ public class Javac extends MatchingTask | |||
if( newFiles.length > 0 ) | |||
{ | |||
File[] newCompileList = new File[compileList.length + | |||
newFiles.length]; | |||
File[] newCompileList = new File[ compileList.length + | |||
newFiles.length ]; | |||
System.arraycopy( compileList, 0, newCompileList, 0, | |||
compileList.length ); | |||
compileList.length ); | |||
System.arraycopy( newFiles, 0, newCompileList, | |||
compileList.length, newFiles.length ); | |||
compileList.length, newFiles.length ); | |||
compileList = newCompileList; | |||
} | |||
} | |||
@@ -879,7 +879,7 @@ public class Javac extends MatchingTask | |||
if( isJdkCompiler( compiler ) ) | |||
{ | |||
log( "Since fork is true, ignoring build.compiler setting.", | |||
Project.MSG_WARN ); | |||
Project.MSG_WARN ); | |||
compiler = "extJavac"; | |||
} | |||
else | |||
@@ -915,7 +915,7 @@ public class Javac extends MatchingTask | |||
* @author RT | |||
*/ | |||
public class ImplementationSpecificArgument | |||
extends Commandline.Argument | |||
extends Commandline.Argument | |||
{ | |||
private String impl; | |||
@@ -933,7 +933,7 @@ public class Javac extends MatchingTask | |||
} | |||
else | |||
{ | |||
return new String[0]; | |||
return new String[ 0 ]; | |||
} | |||
} | |||
} | |||
@@ -318,7 +318,7 @@ public class Javadoc extends Task | |||
{ | |||
throw new BuildException( linkOfflineError ); | |||
} | |||
le.setPackagelistLoc( project.resolveFile( tok.nextToken() ) ); | |||
le.setPackagelistLoc( resolveFile( tok.nextToken() ) ); | |||
} | |||
} | |||
@@ -436,7 +436,7 @@ public class Javadoc extends Task | |||
{ | |||
String f = tok.nextToken(); | |||
SourceFile sf = new SourceFile(); | |||
sf.setFile( project.resolveFile( f ) ); | |||
sf.setFile( resolveFile( f ) ); | |||
addSource( sf ); | |||
} | |||
} | |||
@@ -608,11 +608,6 @@ public class Javadoc extends Task | |||
public void execute() | |||
throws BuildException | |||
{ | |||
if( "javadoc2".equals( taskType ) ) | |||
{ | |||
log( "!! javadoc2 is deprecated. Use javadoc instead. !!" ); | |||
} | |||
if( sourcePath == null ) | |||
{ | |||
String msg = "sourcePath attribute must be set!"; | |||
@@ -689,7 +684,7 @@ public class Javadoc extends Task | |||
{ | |||
if( doclet.getName() == null ) | |||
{ | |||
throw new BuildException( "The doclet name must be specified.", location ); | |||
throw new BuildException( "The doclet name must be specified." ); | |||
} | |||
else | |||
{ | |||
@@ -885,8 +880,7 @@ public class Javadoc extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Error creating temporary file", | |||
e, location ); | |||
throw new BuildException( "Error creating temporary file", e ); | |||
} | |||
finally | |||
{ | |||
@@ -923,12 +917,12 @@ public class Javadoc extends Task | |||
int ret = exe.execute(); | |||
if( ret != 0 && failOnError ) | |||
{ | |||
throw new BuildException( "Javadoc returned " + ret, location ); | |||
throw new BuildException( "Javadoc returned " + ret ); | |||
} | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Javadoc failed: " + e, e, location ); | |||
throw new BuildException( "Javadoc failed: " + e, e ); | |||
} | |||
finally | |||
{ | |||
@@ -1117,7 +1111,7 @@ public class Javadoc extends Task | |||
for( int j = 0; j < list.length; j++ ) | |||
{ | |||
File source = project.resolveFile( list[j] ); | |||
File source = resolveFile( list[j] ); | |||
fs.setDir( source ); | |||
DirectoryScanner ds = fs.getDirectoryScanner( project ); | |||
@@ -1160,8 +1154,7 @@ public class Javadoc extends Task | |||
} | |||
catch( IOException ioex ) | |||
{ | |||
throw new BuildException( "Error creating temporary file", | |||
ioex, location ); | |||
throw new BuildException( "Error creating temporary file", ioex ); | |||
} | |||
finally | |||
{ | |||
@@ -42,7 +42,7 @@ public class LogStreamHandler extends PumpStreamHandler | |||
catch( IOException e ) | |||
{ | |||
// plain impossible | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
} |
@@ -320,12 +320,12 @@ public class Manifest extends Task | |||
catch( ManifestException m ) | |||
{ | |||
throw new BuildException( "Existing manifest " + manifestFile | |||
+ " is invalid", m, location ); | |||
+ " is invalid", m ); | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Failed to read " + manifestFile, | |||
e, location ); | |||
throw new | |||
BuildException( "Failed to read " + manifestFile, e ); | |||
} | |||
finally | |||
{ | |||
@@ -347,7 +347,7 @@ public class Manifest extends Task | |||
} | |||
catch( ManifestException m ) | |||
{ | |||
throw new BuildException( "Manifest is invalid", m, location ); | |||
throw new BuildException( "Manifest is invalid", m ); | |||
} | |||
PrintWriter w = null; | |||
@@ -358,8 +358,7 @@ public class Manifest extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Failed to write " + manifestFile, | |||
e, location ); | |||
throw new BuildException( "Failed to write " + manifestFile e ); | |||
} | |||
finally | |||
{ | |||
@@ -88,59 +88,6 @@ public abstract class MatchingTask extends Task | |||
fileset.setIncludesfile( includesfile ); | |||
} | |||
/** | |||
* List of filenames and directory names to not include. They should be | |||
* either , or " " (space) separated. The ignored files will be logged. | |||
* | |||
* @param ignoreString the string containing the files to ignore. | |||
*/ | |||
public void XsetIgnore( String ignoreString ) | |||
{ | |||
log( "The ignore attribute is deprecated." + | |||
"Please use the excludes attribute.", | |||
Project.MSG_WARN ); | |||
if( ignoreString != null && ignoreString.length() > 0 ) | |||
{ | |||
Vector tmpExcludes = new Vector(); | |||
StringTokenizer tok = new StringTokenizer( ignoreString, ", ", false ); | |||
while( tok.hasMoreTokens() ) | |||
{ | |||
createExclude().setName( "**/" + tok.nextToken().trim() + "/**" ); | |||
} | |||
} | |||
} | |||
/** | |||
* Set this to be the items in the base directory that you want to be | |||
* included. You can also specify "*" for the items (ie: items="*") and it | |||
* will include all the items in the base directory. | |||
* | |||
* @param itemString the string containing the files to include. | |||
*/ | |||
public void XsetItems( String itemString ) | |||
{ | |||
log( "The items attribute is deprecated. " + | |||
"Please use the includes attribute.", | |||
Project.MSG_WARN ); | |||
if( itemString == null || itemString.equals( "*" ) | |||
|| itemString.equals( "." ) ) | |||
{ | |||
createInclude().setName( "**" ); | |||
} | |||
else | |||
{ | |||
StringTokenizer tok = new StringTokenizer( itemString, ", " ); | |||
while( tok.hasMoreTokens() ) | |||
{ | |||
String pattern = tok.nextToken().trim(); | |||
if( pattern.length() > 0 ) | |||
{ | |||
createInclude().setName( pattern + "/**" ); | |||
} | |||
} | |||
} | |||
} | |||
/** | |||
* add a name entry on the exclude list | |||
* | |||
@@ -32,7 +32,7 @@ public class Mkdir extends Task | |||
{ | |||
if( dir == null ) | |||
{ | |||
throw new BuildException( "dir attribute is required", location ); | |||
throw new BuildException( "dir attribute is required" ); | |||
} | |||
if( dir.isFile() ) | |||
@@ -47,7 +47,7 @@ public class Mkdir extends Task | |||
{ | |||
String msg = "Directory " + dir.getAbsolutePath() + " creation was not " + | |||
"successful for an unknown reason"; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
log( "Created dir: " + dir.getAbsolutePath() ); | |||
} | |||
@@ -96,7 +96,7 @@ public class Move extends Copy | |||
String msg = "Failed to rename dir " + fromDir | |||
+ " to " + toDir | |||
+ " due to " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
} | |||
} | |||
@@ -135,7 +135,7 @@ public class Move extends Copy | |||
String msg = "Failed to rename " + fromFile | |||
+ " to " + toFile | |||
+ " due to " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
if( !moved ) | |||
@@ -168,7 +168,7 @@ public class Move extends Copy | |||
String msg = "Failed to copy " + fromFile + " to " | |||
+ toFile | |||
+ " due to " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
} | |||
} | |||
@@ -64,18 +64,18 @@ public abstract class Pack extends Task | |||
{ | |||
if( zipFile == null ) | |||
{ | |||
throw new BuildException( "zipfile attribute is required", location ); | |||
throw new BuildException( "zipfile attribute is required" ); | |||
} | |||
if( source == null ) | |||
{ | |||
throw new BuildException( "src attribute is required", location ); | |||
throw new BuildException( "src attribute is required" ); | |||
} | |||
if( source.isDirectory() ) | |||
{ | |||
throw new BuildException( "Src attribute must not " + | |||
"represent a directory!", location ); | |||
"represent a directory!" ); | |||
} | |||
} | |||
@@ -117,12 +117,12 @@ public class Parallel extends Task | |||
} | |||
else | |||
{ | |||
throw new BuildException( firstException ); | |||
throw new BuildException( "Error", firstException ); | |||
} | |||
} | |||
else if( numExceptions > 1 ) | |||
{ | |||
throw new BuildException( exceptionMessage.toString(), firstLocation ); | |||
throw new BuildException( exceptionMessage.toString() ); | |||
} | |||
} | |||
@@ -70,8 +70,7 @@ public class Patch extends Task | |||
{ | |||
if( !file.exists() ) | |||
{ | |||
throw new BuildException( "patchfile " + file + " doesn\'t exist", | |||
location ); | |||
throw new BuildException( "patchfile " + file + " doesn\'t exist" ); | |||
} | |||
cmd.createArgument().setValue( "-i" ); | |||
cmd.createArgument().setFile( file ); | |||
@@ -118,7 +117,7 @@ public class Patch extends Task | |||
{ | |||
if( num < 0 ) | |||
{ | |||
throw new BuildException( "strip has to be >= 0", location ); | |||
throw new BuildException( "strip has to be >= 0" ); | |||
} | |||
cmd.createArgument().setValue( "-p" + num ); | |||
} | |||
@@ -128,8 +127,7 @@ public class Patch extends Task | |||
{ | |||
if( !havePatchfile ) | |||
{ | |||
throw new BuildException( "patchfile argument is required", | |||
location ); | |||
throw new BuildException( "patchfile argument is required" ); | |||
} | |||
Commandline toExecute = ( Commandline )cmd.clone(); | |||
@@ -150,7 +148,7 @@ public class Patch extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -99,17 +99,6 @@ public class Property extends Task | |||
this.resource = resource; | |||
} | |||
/** | |||
* @param userProperty The new UserProperty value | |||
* @deprecated This was never a supported feature and has been deprecated | |||
* without replacement | |||
*/ | |||
public void setUserProperty( boolean userProperty ) | |||
{ | |||
log( "DEPRECATED: Ignoring request to set user property in Property task.", | |||
Project.MSG_WARN ); | |||
} | |||
public void setValue( String value ) | |||
{ | |||
this.value = value; | |||
@@ -161,16 +150,14 @@ public class Property extends Task | |||
{ | |||
if( value == null && ref == null ) | |||
{ | |||
throw new BuildException( "You must specify value, location or refid with the name attribute", | |||
location ); | |||
throw new BuildException( "You must specify value, location or refid with the name attribute" ); | |||
} | |||
} | |||
else | |||
{ | |||
if( file == null && resource == null && env == null ) | |||
{ | |||
throw new BuildException( "You must specify file, resource or environment when not using the name attribute", | |||
location ); | |||
throw new BuildException( "You must specify file, resource or environment when not using the name attribute" ); | |||
} | |||
} | |||
@@ -291,7 +278,7 @@ public class Property extends Task | |||
} | |||
catch( IOException ex ) | |||
{ | |||
throw new BuildException( ex ); | |||
throw new BuildException( "Error", ex ); | |||
} | |||
} | |||
@@ -334,7 +321,7 @@ public class Property extends Task | |||
} | |||
catch( IOException ex ) | |||
{ | |||
throw new BuildException( ex ); | |||
throw new BuildException( "Error", ex ); | |||
} | |||
} | |||
@@ -245,23 +245,23 @@ public class Replace extends MatchingTask | |||
if( src == null && dir == null ) | |||
{ | |||
String message = "Either the file or the dir attribute " + "must be specified"; | |||
throw new BuildException( message, location ); | |||
throw new BuildException( message ); | |||
} | |||
if( propertyFile != null && !propertyFile.exists() ) | |||
{ | |||
String message = "Property file " + propertyFile.getPath() + " does not exist."; | |||
throw new BuildException( message, location ); | |||
throw new BuildException( message ); | |||
} | |||
if( token == null && replacefilters.size() == 0 ) | |||
{ | |||
String message = "Either token or a nested replacefilter " | |||
+ "must be specified"; | |||
throw new BuildException( message, location ); | |||
throw new BuildException( message); | |||
} | |||
if( token != null && "".equals( token.getText() ) ) | |||
{ | |||
String message = "The token attribute must not be an empty string."; | |||
throw new BuildException( message, location ); | |||
throw new BuildException( message ); | |||
} | |||
} | |||
@@ -293,7 +293,7 @@ public class Replace extends MatchingTask | |||
{ | |||
if( !src.exists() ) | |||
{ | |||
throw new BuildException( "Replace: source file " + src.getPath() + " doesn't exist", location ); | |||
throw new BuildException( "Replace: source file " + src.getPath() + " doesn't exist" ); | |||
} | |||
File temp = fileUtils.createTempFile( "rep", ".tmp", | |||
@@ -382,7 +382,7 @@ public class Replace extends MatchingTask | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( "IOException in " + src + " - " + | |||
ioe.getClass().getName() + ":" + ioe.getMessage(), ioe, location ); | |||
ioe.getClass().getName() + ":" + ioe.getMessage(), ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -20,6 +20,7 @@ import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.types.Reference; | |||
import org.apache.tools.ant.util.FileNameMapper; | |||
import org.apache.tools.ant.util.SourceFileScanner; | |||
import org.apache.tools.ant.util.FileUtils; | |||
/** | |||
* Task to compile RMI stubs and skeletons. This task can take the following | |||
@@ -518,11 +519,11 @@ public class Rmic extends MatchingTask | |||
{ | |||
if( baseDir == null ) | |||
{ | |||
throw new BuildException( "base attribute must be set!", location ); | |||
throw new BuildException( "base attribute must be set!" ); | |||
} | |||
if( !baseDir.exists() ) | |||
{ | |||
throw new BuildException( "base does not exist!", location ); | |||
throw new BuildException( "base does not exist!" ); | |||
} | |||
if( verify ) | |||
@@ -565,7 +566,7 @@ public class Rmic extends MatchingTask | |||
// finally, lets execute the compiler!! | |||
if( !adapter.execute() ) | |||
{ | |||
throw new BuildException( FAIL_MSG, location ); | |||
throw new BuildException( FAIL_MSG ); | |||
} | |||
} | |||
@@ -672,14 +673,14 @@ public class Rmic extends MatchingTask | |||
File newFile = new File( sourceBaseFile, sourceFileName ); | |||
try | |||
{ | |||
project.copyFile( oldFile, newFile, filtering ); | |||
FileUtils.newFileUtils().copyFile( oldFile, newFile, filtering ); | |||
oldFile.delete(); | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
String msg = "Failed to copy " + oldFile + " to " + | |||
newFile + " due to " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
} | |||
} | |||
@@ -400,7 +400,7 @@ public class SQLExec extends Task | |||
{ | |||
if( transactions.size() == 0 ) | |||
{ | |||
throw new BuildException( "Source file or fileset, transactions or sql statement must be set!", location ); | |||
throw new BuildException( "Source file or fileset, transactions or sql statement must be set!" ); | |||
} | |||
} | |||
else | |||
@@ -430,23 +430,23 @@ public class SQLExec extends Task | |||
if( driver == null ) | |||
{ | |||
throw new BuildException( "Driver attribute must be set!", location ); | |||
throw new BuildException( "Driver attribute must be set!" ); | |||
} | |||
if( userId == null ) | |||
{ | |||
throw new BuildException( "User Id attribute must be set!", location ); | |||
throw new BuildException( "User Id attribute must be set!" ); | |||
} | |||
if( password == null ) | |||
{ | |||
throw new BuildException( "Password attribute must be set!", location ); | |||
throw new BuildException( "Password attribute must be set!" ); | |||
} | |||
if( url == null ) | |||
{ | |||
throw new BuildException( "Url attribute must be set!", location ); | |||
throw new BuildException( "Url attribute must be set!" ); | |||
} | |||
if( srcFile != null && !srcFile.exists() ) | |||
{ | |||
throw new BuildException( "Source file does not exist!", location ); | |||
throw new BuildException( "Source file does not exist!" ); | |||
} | |||
Driver driverInstance = null; | |||
// Load the driver using the | |||
@@ -470,15 +470,15 @@ public class SQLExec extends Task | |||
} | |||
catch( ClassNotFoundException e ) | |||
{ | |||
throw new BuildException( "Class Not Found: JDBC driver " + driver + " could not be loaded", location ); | |||
throw new BuildException( "Class Not Found: JDBC driver " + driver + " could not be loaded" ); | |||
} | |||
catch( IllegalAccessException e ) | |||
{ | |||
throw new BuildException( "Illegal Access: JDBC driver " + driver + " could not be loaded", location ); | |||
throw new BuildException( "Illegal Access: JDBC driver " + driver + " could not be loaded" ); | |||
} | |||
catch( InstantiationException e ) | |||
{ | |||
throw new BuildException( "Instantiation Exception: JDBC driver " + driver + " could not be loaded", location ); | |||
throw new BuildException( "Instantiation Exception: JDBC driver " + driver + " could not be loaded" ); | |||
} | |||
try | |||
@@ -543,7 +543,7 @@ public class SQLExec extends Task | |||
catch( SQLException ex ) | |||
{} | |||
} | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
catch( SQLException e ) | |||
{ | |||
@@ -556,7 +556,7 @@ public class SQLExec extends Task | |||
catch( SQLException ex ) | |||
{} | |||
} | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
finally | |||
{ | |||
@@ -201,7 +201,7 @@ public class SendEmail extends Task | |||
while( t.hasMoreTokens() ) | |||
{ | |||
files.addElement( project.resolveFile( t.nextToken() ) ); | |||
files.addElement( resolveFile( t.nextToken() ) ); | |||
} | |||
} | |||
@@ -394,7 +394,7 @@ public class SendEmail extends Task | |||
String err = "IO error sending mail " + ioe.toString(); | |||
if( failOnError ) | |||
{ | |||
throw new BuildException( err, ioe, location ); | |||
throw new BuildException( err, ioe ); | |||
} | |||
else | |||
{ | |||
@@ -141,7 +141,7 @@ public class Sleep extends Task | |||
{ | |||
if( failOnError ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
else | |||
{ | |||
@@ -6,6 +6,7 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.FileOutputStream; | |||
@@ -34,33 +35,6 @@ import org.apache.tools.tar.TarOutputStream; | |||
public class Tar extends MatchingTask | |||
{ | |||
/** | |||
* @deprecated Tar.WARN is deprecated and is replaced with | |||
* Tar.TarLongFileMode.WARN | |||
*/ | |||
public final static String WARN = "warn"; | |||
/** | |||
* @deprecated Tar.FAIL is deprecated and is replaced with | |||
* Tar.TarLongFileMode.FAIL | |||
*/ | |||
public final static String FAIL = "fail"; | |||
/** | |||
* @deprecated Tar.TRUNCATE is deprecated and is replaced with | |||
* Tar.TarLongFileMode.TRUNCATE | |||
*/ | |||
public final static String TRUNCATE = "truncate"; | |||
/** | |||
* @deprecated Tar.GNU is deprecated and is replaced with | |||
* Tar.TarLongFileMode.GNU | |||
*/ | |||
public final static String GNU = "gnu"; | |||
/** | |||
* @deprecated Tar.OMIT is deprecated and is replaced with | |||
* Tar.TarLongFileMode.OMIT | |||
*/ | |||
public final static String OMIT = "omit"; | |||
private TarLongFileMode longFileMode = new TarLongFileMode(); | |||
Vector filesets = new Vector(); | |||
@@ -84,28 +58,6 @@ public class Tar extends MatchingTask | |||
this.baseDir = baseDir; | |||
} | |||
/** | |||
* Set how to handle long files. Allowable values are truncate - paths are | |||
* truncated to the maximum length fail - paths greater than the maximim | |||
* cause a build exception warn - paths greater than the maximum cause a | |||
* warning and GNU is used gnu - GNU extensions are used for any paths | |||
* greater than the maximum. omit - paths greater than the maximum are | |||
* omitted from the archive | |||
* | |||
* @param mode The new Longfile value | |||
* @deprecated setLongFile(String) is deprecated and is replaced with | |||
* setLongFile(Tar.TarLongFileMode) to make Ant's Introspection | |||
* mechanism do the work and also to encapsulate operations on the mode | |||
* in its own class. | |||
*/ | |||
public void setLongfile( String mode ) | |||
{ | |||
log( "DEPRECATED - The setLongfile(String) method has been deprecated." | |||
+ " Use setLongfile(Tar.TarLongFileMode) instead." ); | |||
this.longFileMode = new TarLongFileMode(); | |||
longFileMode.setValue( mode ); | |||
} | |||
/** | |||
* Set how to handle long files. Allowable values are truncate - paths are | |||
* truncated to the maximum length fail - paths greater than the maximim | |||
@@ -121,7 +73,6 @@ public class Tar extends MatchingTask | |||
this.longFileMode = mode; | |||
} | |||
/** | |||
* This is the name/location of where to create the tar file. | |||
* | |||
@@ -144,27 +95,24 @@ public class Tar extends MatchingTask | |||
{ | |||
if( tarFile == null ) | |||
{ | |||
throw new BuildException( "tarfile attribute must be set!", | |||
location ); | |||
throw new BuildException( "tarfile attribute must be set!" ); | |||
} | |||
if( tarFile.exists() && tarFile.isDirectory() ) | |||
{ | |||
throw new BuildException( "tarfile is a directory!", | |||
location ); | |||
throw new BuildException( "tarfile is a directory!" ); | |||
} | |||
if( tarFile.exists() && !tarFile.canWrite() ) | |||
{ | |||
throw new BuildException( "Can not write to the specified tarfile!", | |||
location ); | |||
throw new BuildException( "Can not write to the specified tarfile!" ); | |||
} | |||
if( baseDir != null ) | |||
{ | |||
if( !baseDir.exists() ) | |||
{ | |||
throw new BuildException( "basedir does not exist!", location ); | |||
throw new BuildException( "basedir does not exist!" ); | |||
} | |||
// add the main fileset to the list of filesets to process. | |||
@@ -175,16 +123,15 @@ public class Tar extends MatchingTask | |||
if( filesets.size() == 0 ) | |||
{ | |||
throw new BuildException( "You must supply either a basdir attribute or some nested filesets.", | |||
location ); | |||
throw new BuildException( "You must supply either a basdir attribute or some nested filesets." ); | |||
} | |||
// check if tr is out of date with respect to each | |||
// fileset | |||
boolean upToDate = true; | |||
for( Enumeration e = filesets.elements(); e.hasMoreElements(); ) | |||
for( Enumeration e = filesets.elements(); e.hasMoreElements(); ) | |||
{ | |||
TarFileSet fs = ( TarFileSet )e.nextElement(); | |||
TarFileSet fs = (TarFileSet)e.nextElement(); | |||
String[] files = fs.getFiles( project ); | |||
if( !archiveIsUpToDate( files ) ) | |||
@@ -194,9 +141,9 @@ public class Tar extends MatchingTask | |||
for( int i = 0; i < files.length; ++i ) | |||
{ | |||
if( tarFile.equals( new File( fs.getDir( project ), files[i] ) ) ) | |||
if( tarFile.equals( new File( fs.getDir( project ), files[ i ] ) ) ) | |||
{ | |||
throw new BuildException( "A tar file cannot include itself", location ); | |||
throw new BuildException( "A tar file cannot include itself" ); | |||
} | |||
} | |||
} | |||
@@ -204,7 +151,7 @@ public class Tar extends MatchingTask | |||
if( upToDate ) | |||
{ | |||
log( "Nothing to do: " + tarFile.getAbsolutePath() + " is up to date.", | |||
Project.MSG_INFO ); | |||
Project.MSG_INFO ); | |||
return; | |||
} | |||
@@ -231,14 +178,14 @@ public class Tar extends MatchingTask | |||
} | |||
longWarningGiven = false; | |||
for( Enumeration e = filesets.elements(); e.hasMoreElements(); ) | |||
for( Enumeration e = filesets.elements(); e.hasMoreElements(); ) | |||
{ | |||
TarFileSet fs = ( TarFileSet )e.nextElement(); | |||
TarFileSet fs = (TarFileSet)e.nextElement(); | |||
String[] files = fs.getFiles( project ); | |||
for( int i = 0; i < files.length; i++ ) | |||
{ | |||
File f = new File( fs.getDir( project ), files[i] ); | |||
String name = files[i].replace( File.separatorChar, '/' ); | |||
File f = new File( fs.getDir( project ), files[ i ] ); | |||
String name = files[ i ].replace( File.separatorChar, '/' ); | |||
tarFile( f, tOut, name, fs ); | |||
} | |||
} | |||
@@ -246,7 +193,7 @@ public class Tar extends MatchingTask | |||
catch( IOException ioe ) | |||
{ | |||
String msg = "Problem creating TAR: " + ioe.getMessage(); | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -258,7 +205,8 @@ public class Tar extends MatchingTask | |||
tOut.close(); | |||
} | |||
catch( IOException e ) | |||
{} | |||
{ | |||
} | |||
} | |||
} | |||
} | |||
@@ -300,7 +248,7 @@ public class Tar extends MatchingTask | |||
else if( longFileMode.isWarnMode() ) | |||
{ | |||
log( "Entry: " + vPath + " longer than " + | |||
TarConstants.NAMELEN + " characters.", Project.MSG_WARN ); | |||
TarConstants.NAMELEN + " characters.", Project.MSG_WARN ); | |||
if( !longWarningGiven ) | |||
{ | |||
log( "Resulting tar file can only be processed successfully" | |||
@@ -312,7 +260,7 @@ public class Tar extends MatchingTask | |||
{ | |||
throw new BuildException( | |||
"Entry: " + vPath + " longer than " + | |||
TarConstants.NAMELEN + "characters.", location ); | |||
TarConstants.NAMELEN + "characters." ); | |||
} | |||
} | |||
@@ -332,13 +280,13 @@ public class Tar extends MatchingTask | |||
{ | |||
fIn = new FileInputStream( file ); | |||
byte[] buffer = new byte[8 * 1024]; | |||
byte[] buffer = new byte[ 8 * 1024 ]; | |||
int count = 0; | |||
do | |||
{ | |||
tOut.write( buffer, 0, count ); | |||
count = fIn.read( buffer, 0, buffer.length ); | |||
}while ( count != -1 ); | |||
} while( count != -1 ); | |||
} | |||
tOut.closeEntry(); | |||
@@ -359,7 +307,6 @@ public class Tar extends MatchingTask | |||
private String userName = ""; | |||
private String groupName = ""; | |||
public TarFileSet( FileSet fileset ) | |||
{ | |||
super( fileset ); | |||
@@ -399,10 +346,10 @@ public class Tar extends MatchingTask | |||
DirectoryScanner ds = getDirectoryScanner( p ); | |||
String[] directories = ds.getIncludedDirectories(); | |||
String[] filesPerSe = ds.getIncludedFiles(); | |||
files = new String[directories.length + filesPerSe.length]; | |||
files = new String[ directories.length + filesPerSe.length ]; | |||
System.arraycopy( directories, 0, files, 0, directories.length ); | |||
System.arraycopy( filesPerSe, 0, files, directories.length, | |||
filesPerSe.length ); | |||
filesPerSe.length ); | |||
} | |||
return files; | |||
@@ -121,7 +121,7 @@ public class Touch extends Task | |||
} | |||
catch( ParseException pe ) | |||
{ | |||
throw new BuildException( pe.getMessage(), pe, location ); | |||
throw new BuildException( pe.getMessage(), pe ); | |||
} | |||
} | |||
@@ -149,8 +149,7 @@ public class Touch extends Task | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( "Could not create " + file, ioe, | |||
location ); | |||
throw new BuildException( "Could not create " + file, ioe ); | |||
} | |||
} | |||
} | |||
@@ -79,7 +79,7 @@ public class Tstamp extends Task | |||
} | |||
catch( Exception e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -165,7 +165,7 @@ public class Tstamp extends Task | |||
country = st.nextToken(); | |||
if( st.hasMoreElements() ) | |||
{ | |||
throw new BuildException( "bad locale format", getLocation() ); | |||
throw new BuildException( "bad locale format" ); | |||
} | |||
} | |||
} | |||
@@ -176,7 +176,7 @@ public class Tstamp extends Task | |||
} | |||
catch( NoSuchElementException e ) | |||
{ | |||
throw new BuildException( "bad locale format", e, getLocation() ); | |||
throw new BuildException( "bad locale format", e ); | |||
} | |||
} | |||
@@ -200,22 +200,6 @@ public class Tstamp extends Task | |||
timeZone = TimeZone.getTimeZone( id ); | |||
} | |||
/** | |||
* @param unit The new Unit value | |||
* @deprecated setUnit(String) is deprecated and is replaced with | |||
* setUnit(Tstamp.Unit) to make Ant's Introspection mechanism do | |||
* the work and also to encapsulate operations on the unit in its | |||
* own class. | |||
*/ | |||
public void setUnit( String unit ) | |||
{ | |||
log( "DEPRECATED - The setUnit(String) method has been deprecated." | |||
+ " Use setUnit(Tstamp.Unit) instead." ); | |||
Unit u = new Unit(); | |||
u.setValue( unit ); | |||
field = u.getCalendarField(); | |||
} | |||
public void setUnit( Unit unit ) | |||
{ | |||
field = unit.getCalendarField(); | |||
@@ -225,12 +209,12 @@ public class Tstamp extends Task | |||
{ | |||
if( propertyName == null ) | |||
{ | |||
throw new BuildException( "property attribute must be provided", location ); | |||
throw new BuildException( "property attribute must be provided" ); | |||
} | |||
if( pattern == null ) | |||
{ | |||
throw new BuildException( "pattern attribute must be provided", location ); | |||
throw new BuildException( "pattern attribute must be provided" ); | |||
} | |||
SimpleDateFormat sdf; | |||
@@ -24,12 +24,12 @@ public abstract class Unpack extends Task | |||
public void setDest( String dest ) | |||
{ | |||
this.dest = project.resolveFile( dest ); | |||
this.dest = resolveFile( dest ); | |||
} | |||
public void setSrc( String src ) | |||
{ | |||
source = project.resolveFile( src ); | |||
source = resolveFile( src ); | |||
} | |||
public void execute() | |||
@@ -65,17 +65,17 @@ public abstract class Unpack extends Task | |||
{ | |||
if( source == null ) | |||
{ | |||
throw new BuildException( "No Src for gunzip specified", location ); | |||
throw new BuildException( "No Src for gunzip specified" ); | |||
} | |||
if( !source.exists() ) | |||
{ | |||
throw new BuildException( "Src doesn't exist", location ); | |||
throw new BuildException( "Src doesn't exist" ); | |||
} | |||
if( source.isDirectory() ) | |||
{ | |||
throw new BuildException( "Cannot expand a directory", location ); | |||
throw new BuildException( "Cannot expand a directory" ); | |||
} | |||
if( dest == null ) | |||
@@ -46,8 +46,7 @@ public class Untar extends Expand | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( "Error while expanding " + srcF.getPath(), | |||
ioe, location ); | |||
throw new BuildException( "Error while expanding " + srcF.getPath(), ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -94,8 +94,7 @@ public class UpToDate extends MatchingTask implements Condition | |||
{ | |||
if( mapperElement != null ) | |||
{ | |||
throw new BuildException( "Cannot define more than one mapper", | |||
location ); | |||
throw new BuildException( "Cannot define more than one mapper" ); | |||
} | |||
mapperElement = new Mapper( project ); | |||
return mapperElement; | |||
@@ -32,12 +32,6 @@ public class War extends Jar | |||
emptyBehavior = "create"; | |||
} | |||
public void setWarfile( File warFile ) | |||
{ | |||
log( "DEPRECATED - The warfile attribute is deprecated. Use file attribute instead." ); | |||
setFile( warFile ); | |||
} | |||
public void setWebxml( File descr ) | |||
{ | |||
deploymentDescriptor = descr; | |||
@@ -89,7 +83,7 @@ public class War extends Jar | |||
// If no webxml file is specified, it's an error. | |||
if( deploymentDescriptor == null && !isInUpdateMode() ) | |||
{ | |||
throw new BuildException( "webxml attribute is required", location ); | |||
throw new BuildException( "webxml attribute is required" ); | |||
} | |||
super.initZipOutputStream( zOut ); | |||
@@ -6,6 +6,7 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
import java.io.File; | |||
import java.util.Enumeration; | |||
import java.util.Vector; | |||
@@ -17,7 +18,6 @@ import org.apache.tools.ant.types.Path; | |||
import org.apache.tools.ant.types.Reference; | |||
import org.apache.tools.ant.util.FileUtils; | |||
/** | |||
* A Task to process via XSLT a set of XML documents. This is useful for | |||
* building views of XML based documentation. arguments: | |||
@@ -169,7 +169,6 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
this.outputtype = type; | |||
} | |||
public void setProcessor( String processor ) | |||
{ | |||
this.processor = processor; | |||
@@ -222,12 +221,12 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
if( xslFile == null ) | |||
{ | |||
throw new BuildException( "no stylesheet specified", location ); | |||
throw new BuildException( "no stylesheet specified" ); | |||
} | |||
if( baseDir == null ) | |||
{ | |||
baseDir = project.resolveFile( "." ); | |||
baseDir = resolveFile( "." ); | |||
} | |||
liaison = getLiaison(); | |||
@@ -235,25 +234,12 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
// check if liaison wants to log errors using us as logger | |||
if( liaison instanceof XSLTLoggerAware ) | |||
{ | |||
( ( XSLTLoggerAware )liaison ).setLogger( this ); | |||
( (XSLTLoggerAware)liaison ).setLogger( this ); | |||
} | |||
log( "Using " + liaison.getClass().toString(), Project.MSG_VERBOSE ); | |||
File stylesheet = project.resolveFile( xslFile ); | |||
if( !stylesheet.exists() ) | |||
{ | |||
stylesheet = fileUtils.resolveFile( baseDir, xslFile ); | |||
/* | |||
* shouldn't throw out deprecation warnings before we know, | |||
* the wrong version has been used. | |||
*/ | |||
if( stylesheet.exists() ) | |||
{ | |||
log( "DEPRECATED - the style attribute should be relative to the project\'s" ); | |||
log( " basedir, not the tasks\'s basedir." ); | |||
} | |||
} | |||
File stylesheet = resolveFile( xslFile ); | |||
// if we have an in file and out then process them | |||
if( inFile != null && outFile != null ) | |||
@@ -279,16 +265,16 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
list = scanner.getIncludedFiles(); | |||
for( int i = 0; i < list.length; ++i ) | |||
{ | |||
process( baseDir, list[i], destDir, stylesheet ); | |||
process( baseDir, list[ i ], destDir, stylesheet ); | |||
} | |||
// Process all the directoried marked for styling | |||
dirs = scanner.getIncludedDirectories(); | |||
for( int j = 0; j < dirs.length; ++j ) | |||
{ | |||
list = new File( baseDir, dirs[j] ).list(); | |||
list = new File( baseDir, dirs[ j ] ).list(); | |||
for( int i = 0; i < list.length; ++i ) | |||
process( baseDir, list[i], destDir, stylesheet ); | |||
process( baseDir, list[ i ], destDir, stylesheet ); | |||
} | |||
} | |||
@@ -306,7 +292,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
} | |||
catch( Exception e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
else | |||
@@ -338,7 +324,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
e4.printStackTrace(); | |||
e3.printStackTrace(); | |||
e2.printStackTrace(); | |||
throw new BuildException( e1 ); | |||
throw new BuildException( "Error", e1 ); | |||
} | |||
} | |||
} | |||
@@ -367,16 +353,16 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
{ | |||
log( "Loading stylesheet " + stylesheet, Project.MSG_INFO ); | |||
liaison.setStylesheet( stylesheet ); | |||
for( Enumeration e = params.elements(); e.hasMoreElements(); ) | |||
for( Enumeration e = params.elements(); e.hasMoreElements(); ) | |||
{ | |||
Param p = ( Param )e.nextElement(); | |||
Param p = (Param)e.nextElement(); | |||
liaison.addParam( p.getName(), p.getExpression() ); | |||
} | |||
} | |||
catch( Exception ex ) | |||
{ | |||
log( "Failed to read stylesheet " + stylesheet, Project.MSG_INFO ); | |||
throw new BuildException( ex ); | |||
throw new BuildException( "Error", ex ); | |||
} | |||
} | |||
@@ -389,7 +375,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
if( !directory.mkdirs() ) | |||
{ | |||
throw new BuildException( "Unable to create directory: " | |||
+ directory.getAbsolutePath() ); | |||
+ directory.getAbsolutePath() ); | |||
} | |||
} | |||
} | |||
@@ -471,7 +457,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
outFile.delete(); | |||
} | |||
throw new BuildException( ex ); | |||
throw new BuildException( "Error", ex ); | |||
} | |||
}//-- processXML | |||
@@ -500,7 +486,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
log( "Failed to process " + inFile, Project.MSG_INFO ); | |||
if( outFile != null ) | |||
outFile.delete(); | |||
throw new BuildException( ex ); | |||
throw new BuildException( "Error", ex ); | |||
} | |||
} | |||
@@ -518,31 +504,17 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger | |||
{ | |||
final Class clazz = | |||
loadClass( "org.apache.tools.ant.taskdefs.optional.TraXLiaison" ); | |||
liaison = ( XSLTLiaison )clazz.newInstance(); | |||
} | |||
else if( proc.equals( "xslp" ) ) | |||
{ | |||
log( "DEPRECATED - xslp processor is deprecated. Use trax or xalan instead." ); | |||
final Class clazz = | |||
loadClass( "org.apache.tools.ant.taskdefs.optional.XslpLiaison" ); | |||
liaison = ( XSLTLiaison )clazz.newInstance(); | |||
liaison = (XSLTLiaison)clazz.newInstance(); | |||
} | |||
else if( proc.equals( "xalan" ) ) | |||
{ | |||
final Class clazz = | |||
loadClass( "org.apache.tools.ant.taskdefs.optional.XalanLiaison" ); | |||
liaison = ( XSLTLiaison )clazz.newInstance(); | |||
} | |||
else if( proc.equals( "adaptx" ) ) | |||
{ | |||
log( "DEPRECATED - adaptx processor is deprecated. Use trax or xalan instead." ); | |||
final Class clazz = | |||
loadClass( "org.apache.tools.ant.taskdefs.optional.AdaptxLiaison" ); | |||
liaison = ( XSLTLiaison )clazz.newInstance(); | |||
liaison = (XSLTLiaison)clazz.newInstance(); | |||
} | |||
else | |||
{ | |||
liaison = ( XSLTLiaison )loadClass( proc ).newInstance(); | |||
liaison = (XSLTLiaison)loadClass( proc ).newInstance(); | |||
} | |||
} | |||
@@ -184,18 +184,6 @@ public class Zip extends MatchingTask | |||
emptyBehavior = we.getValue(); | |||
} | |||
/** | |||
* This is the name/location of where to create the .zip file. | |||
* | |||
* @param zipFile The new Zipfile value | |||
* @deprecated Use setFile() instead | |||
*/ | |||
public void setZipfile( File zipFile ) | |||
{ | |||
log( "DEPRECATED - The zipfile attribute is deprecated. Use file attribute instead." ); | |||
setFile( zipFile ); | |||
} | |||
/** | |||
* Are we updating an existing archive? | |||
* | |||
@@ -383,7 +371,7 @@ public class Zip extends MatchingTask | |||
} | |||
} | |||
throw new BuildException( msg, ioe, location ); | |||
throw new BuildException( msg, ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -439,7 +427,7 @@ public class Zip extends MatchingTask | |||
else if( emptyBehavior.equals( "fail" ) ) | |||
{ | |||
throw new BuildException( "Cannot create " + archiveType + " archive " + zipFile + | |||
": no files were included.", location ); | |||
": no files were included." ); | |||
} | |||
else | |||
{ | |||
@@ -453,7 +441,7 @@ public class Zip extends MatchingTask | |||
{ | |||
if( files[i].equals( zipFile ) ) | |||
{ | |||
throw new BuildException( "A zip file cannot include itself", location ); | |||
throw new BuildException( "A zip file cannot include itself" ); | |||
} | |||
} | |||
@@ -741,7 +729,7 @@ public class Zip extends MatchingTask | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( "Could not create empty ZIP archive", ioe, location ); | |||
throw new BuildException( "Could not create empty ZIP archive", ioe ); | |||
} | |||
return true; | |||
} | |||
@@ -858,7 +846,7 @@ public class Zip extends MatchingTask | |||
{ | |||
if( file.equals( zipFile ) ) | |||
{ | |||
throw new BuildException( "A zip file cannot include itself", location ); | |||
throw new BuildException( "A zip file cannot include itself" ); | |||
} | |||
FileInputStream fIn = new FileInputStream( file ); | |||
@@ -414,7 +414,7 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Error creating temporary file", e, location ); | |||
throw new BuildException( "Error creating temporary file", e ); | |||
} | |||
finally | |||
{ | |||
@@ -448,7 +448,7 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Error running " + args[0] | |||
+ " compiler", e, location ); | |||
+ " compiler", e ); | |||
} | |||
} | |||
finally | |||
@@ -52,7 +52,7 @@ public class Javac12 extends DefaultCompilerAdapter | |||
{ | |||
throw new BuildException( "Cannot use classic compiler, as it is not available" + | |||
" A common solution is to set the environment variable" + | |||
" JAVA_HOME to your jdk directory.", location ); | |||
" JAVA_HOME to your jdk directory." ); | |||
} | |||
catch( Exception ex ) | |||
{ | |||
@@ -62,7 +62,7 @@ public class Javac12 extends DefaultCompilerAdapter | |||
} | |||
else | |||
{ | |||
throw new BuildException( "Error starting classic compiler: ", ex, location ); | |||
throw new BuildException( "Error starting classic compiler: ", ex ); | |||
} | |||
} | |||
finally | |||
@@ -74,7 +74,7 @@ public class Javac12 extends DefaultCompilerAdapter | |||
catch( IOException e ) | |||
{ | |||
// plain impossible | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
} | |||
@@ -55,7 +55,7 @@ public class Javac13 extends DefaultCompilerAdapter | |||
} | |||
else | |||
{ | |||
throw new BuildException( "Error starting modern compiler", ex, location ); | |||
throw new BuildException( "Error starting modern compiler", ex ); | |||
} | |||
} | |||
} | |||
@@ -131,23 +131,6 @@ public class Jikes extends DefaultCompilerAdapter | |||
cmd.createArgument().setValue( "+E" ); | |||
} | |||
/** | |||
* Jikes issues more warnings that javac, for example, when you have | |||
* files in your classpath that don't exist. As this is often the case, | |||
* these warning can be pretty annoying. | |||
*/ | |||
String warningsProperty = project.getProperty( "build.compiler.warnings" ); | |||
if( warningsProperty != null ) | |||
{ | |||
attributes.log( "!! the build.compiler.warnings property is deprecated. !!", | |||
Project.MSG_WARN ); | |||
attributes.log( "!! Use the nowarn attribute instead. !!", | |||
Project.MSG_WARN ); | |||
if( !Project.toBoolean( warningsProperty ) ) | |||
{ | |||
cmd.createArgument().setValue( "-nowarn" ); | |||
} | |||
} | |||
if( attributes.getNowarn() ) | |||
{ | |||
/* | |||
@@ -42,7 +42,7 @@ public class Kjc extends DefaultCompilerAdapter | |||
{ | |||
throw new BuildException( "Cannot use kjc compiler, as it is not available" + | |||
" A common solution is to set the environment variable" + | |||
" CLASSPATH to your kjc archive (kjc.jar).", location ); | |||
" CLASSPATH to your kjc archive (kjc.jar)." ); | |||
} | |||
catch( Exception ex ) | |||
{ | |||
@@ -52,7 +52,7 @@ public class Kjc extends DefaultCompilerAdapter | |||
} | |||
else | |||
{ | |||
throw new BuildException( "Error starting kjc compiler: ", ex, location ); | |||
throw new BuildException( "Error starting kjc compiler: ", ex ); | |||
} | |||
} | |||
} | |||
@@ -132,10 +132,3 @@ jspc=org.apache.tools.ant.taskdefs.optional.jsp.JspC | |||
replaceregexp=org.apache.tools.ant.taskdefs.optional.ReplaceRegExp | |||
translate=org.apache.tools.ant.taskdefs.optional.i18n.Translate | |||
# deprecated ant tasks (kept for back compatibility) | |||
javadoc2=org.apache.tools.ant.taskdefs.Javadoc | |||
#compileTask=org.apache.tools.ant.taskdefs.CompileTask | |||
copydir=org.apache.tools.ant.taskdefs.Copydir | |||
copyfile=org.apache.tools.ant.taskdefs.Copyfile | |||
deltree=org.apache.tools.ant.taskdefs.Deltree | |||
rename=org.apache.tools.ant.taskdefs.Rename |
@@ -6,13 +6,13 @@ | |||
* the LICENSE file. | |||
*/ | |||
package org.apache.tools.ant.taskdefs.optional; | |||
import java.io.BufferedReader; | |||
import java.io.File; | |||
import java.io.FileReader; | |||
import java.io.IOException; | |||
import java.net.URL; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.ExitException; | |||
import org.apache.tools.ant.Project; | |||
import org.apache.tools.ant.Task; | |||
import org.apache.tools.ant.taskdefs.Execute; | |||
@@ -20,7 +20,6 @@ import org.apache.tools.ant.taskdefs.ExecuteJava; | |||
import org.apache.tools.ant.taskdefs.LogStreamHandler; | |||
import org.apache.tools.ant.types.Commandline; | |||
import org.apache.tools.ant.types.CommandlineJava; | |||
import org.apache.tools.ant.types.Environment; | |||
import org.apache.tools.ant.types.Path; | |||
/** | |||
@@ -128,7 +127,7 @@ public class ANTLR extends Task | |||
int err = run( commandline.getCommandline() ); | |||
if( err == 1 ) | |||
{ | |||
throw new BuildException( "ANTLR returned: " + err, location ); | |||
throw new BuildException( "ANTLR returned: " + err ); | |||
} | |||
} | |||
else | |||
@@ -136,17 +135,7 @@ public class ANTLR extends Task | |||
ExecuteJava exe = new ExecuteJava(); | |||
exe.setJavaCommand( commandline.getJavaCommand() ); | |||
exe.setClasspath( commandline.getClasspath() ); | |||
try | |||
{ | |||
exe.execute( project ); | |||
} | |||
catch( ExitException e ) | |||
{ | |||
if( e.getStatus() != 0 ) | |||
{ | |||
throw new BuildException( "ANTLR returned: " + e.getStatus(), location ); | |||
} | |||
} | |||
exe.execute( project ); | |||
} | |||
} | |||
} | |||
@@ -183,7 +172,7 @@ public class ANTLR extends Task | |||
int pling = u.indexOf( "!" ); | |||
String jarName = u.substring( 9, pling ); | |||
log( "Implicitly adding " + jarName + " to classpath", | |||
Project.MSG_DEBUG ); | |||
Project.MSG_DEBUG ); | |||
createClasspath().setLocation( new File( ( new File( jarName ) ).getAbsolutePath() ) ); | |||
} | |||
else if( u.startsWith( "file:" ) ) | |||
@@ -191,13 +180,13 @@ public class ANTLR extends Task | |||
int tail = u.indexOf( resource ); | |||
String dirName = u.substring( 5, tail ); | |||
log( "Implicitly adding " + dirName + " to classpath", | |||
Project.MSG_DEBUG ); | |||
Project.MSG_DEBUG ); | |||
createClasspath().setLocation( new File( ( new File( dirName ) ).getAbsolutePath() ) ); | |||
} | |||
else | |||
{ | |||
log( "Don\'t know how to handle resource URL " + u, | |||
Project.MSG_DEBUG ); | |||
Project.MSG_DEBUG ); | |||
} | |||
} | |||
else | |||
@@ -247,7 +236,7 @@ public class ANTLR extends Task | |||
throws BuildException | |||
{ | |||
Execute exe = new Execute( new LogStreamHandler( this, Project.MSG_INFO, | |||
Project.MSG_WARN ), null ); | |||
Project.MSG_WARN ), null ); | |||
exe.setAntRun( project ); | |||
if( workingdir != null ) | |||
{ | |||
@@ -260,7 +249,7 @@ public class ANTLR extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -897,27 +897,27 @@ public class IContract extends MatchingTask | |||
{ | |||
if( srcDir == null ) | |||
{ | |||
throw new BuildException( "srcdir attribute must be set!", location ); | |||
throw new BuildException( "srcdir attribute must be set!" ); | |||
} | |||
if( !srcDir.exists() ) | |||
{ | |||
throw new BuildException( "srcdir \"" + srcDir.getPath() + "\" does not exist!", location ); | |||
throw new BuildException( "srcdir \"" + srcDir.getPath() + "\" does not exist!"); | |||
} | |||
if( instrumentDir == null ) | |||
{ | |||
throw new BuildException( "instrumentdir attribute must be set!", location ); | |||
throw new BuildException( "instrumentdir attribute must be set!"); | |||
} | |||
if( repositoryDir == null ) | |||
{ | |||
throw new BuildException( "repositorydir attribute must be set!", location ); | |||
throw new BuildException( "repositorydir attribute must be set!" ); | |||
} | |||
if( updateIcontrol == true && classDir == null ) | |||
{ | |||
throw new BuildException( "classdir attribute must be specified when updateicontrol=true!", location ); | |||
throw new BuildException( "classdir attribute must be specified when updateicontrol=true!" ); | |||
} | |||
if( updateIcontrol == true && controlFile == null ) | |||
{ | |||
throw new BuildException( "controlfile attribute must be specified when updateicontrol=true!", location ); | |||
throw new BuildException( "controlfile attribute must be specified when updateicontrol=true!" ); | |||
} | |||
} | |||
@@ -238,23 +238,23 @@ public class Javah extends Task | |||
if( ( cls == null ) && ( classes.size() == 0 ) ) | |||
{ | |||
throw new BuildException( "class attribute must be set!", location ); | |||
throw new BuildException( "class attribute must be set!" ); | |||
} | |||
if( ( cls != null ) && ( classes.size() > 0 ) ) | |||
{ | |||
throw new BuildException( "set class attribute or class element, not both.", location ); | |||
throw new BuildException( "set class attribute or class element, not both." ); | |||
} | |||
if( destDir != null ) | |||
{ | |||
if( !destDir.isDirectory() ) | |||
{ | |||
throw new BuildException( "destination directory \"" + destDir + "\" does not exist or is not a directory", location ); | |||
throw new BuildException( "destination directory \"" + destDir + "\" does not exist or is not a directory" ); | |||
} | |||
if( outputFile != null ) | |||
{ | |||
throw new BuildException( "destdir and outputFile are mutually exclusive", location ); | |||
throw new BuildException( "destdir and outputFile are mutually exclusive"); | |||
} | |||
} | |||
@@ -381,7 +381,7 @@ public class Javah extends Task | |||
{ | |||
if( !old ) | |||
{ | |||
throw new BuildException( "stubs only available in old mode.", location ); | |||
throw new BuildException( "stubs only available in old mode." ); | |||
} | |||
cmd.createArgument().setValue( "-stubs" ); | |||
} | |||
@@ -442,7 +442,7 @@ public class Javah extends Task | |||
} | |||
else | |||
{ | |||
throw new BuildException( "Error starting javah: ", ex, location ); | |||
throw new BuildException( "Error starting javah: ", ex ); | |||
} | |||
} | |||
} | |||
@@ -161,7 +161,7 @@ public class ManifestFile extends Task | |||
{ | |||
if( !checkParam( manifestFile ) ) | |||
{ | |||
throw new BuildException( "file token must not be null.", location ); | |||
throw new BuildException( "file token must not be null." ); | |||
} | |||
} | |||
@@ -100,8 +100,7 @@ public class Native2Ascii extends MatchingTask | |||
{ | |||
if( mapper != null ) | |||
{ | |||
throw new BuildException( "Cannot define more than one mapper", | |||
location ); | |||
throw new BuildException( "Cannot define more than one mapper" ); | |||
} | |||
mapper = new Mapper( project ); | |||
return mapper; | |||
@@ -118,7 +117,7 @@ public class Native2Ascii extends MatchingTask | |||
// default srcDir to basedir | |||
if( srcDir == null ) | |||
{ | |||
srcDir = project.resolveFile( "." ); | |||
srcDir = resolveFile( "." ); | |||
} | |||
// Require destDir | |||
@@ -19,6 +19,7 @@ import netrexx.lang.Rexx; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.DirectoryScanner; | |||
import org.apache.tools.ant.Project; | |||
import org.apache.tools.ant.util.FileUtils; | |||
import org.apache.tools.ant.taskdefs.MatchingTask; | |||
/** | |||
@@ -586,7 +587,7 @@ public class NetRexxC extends MatchingTask | |||
System.getProperty( "path.separator" ), false ); | |||
while( tok.hasMoreTokens() ) | |||
{ | |||
File f = project.resolveFile( tok.nextToken() ); | |||
File f = resolveFile( tok.nextToken() ); | |||
if( f.exists() ) | |||
{ | |||
@@ -619,7 +620,7 @@ public class NetRexxC extends MatchingTask | |||
String toFile = ( String )filecopyList.get( fromFile ); | |||
try | |||
{ | |||
project.copyFile( fromFile, toFile ); | |||
FileUtils.newFileUtils().copyFile( fromFile, toFile ); | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
@@ -204,7 +204,7 @@ public class PropertyFile extends Task | |||
{ | |||
if( !checkParam( m_propertyfile ) ) | |||
{ | |||
throw new BuildException( "file token must not be null.", location ); | |||
throw new BuildException( "file token must not be null." ); | |||
} | |||
} | |||
@@ -293,16 +293,16 @@ public class PropertyFile extends Task | |||
catch( InvocationTargetException ite ) | |||
{ | |||
Throwable t = ite.getTargetException(); | |||
throw new BuildException( t ); | |||
throw new BuildException( "Error", t ); | |||
} | |||
catch( IllegalAccessException iae ) | |||
{ | |||
// impossible | |||
throw new BuildException( iae ); | |||
throw new BuildException( "Error", iae ); | |||
} | |||
catch( IOException ioe ) | |||
{ | |||
throw new BuildException( ioe ); | |||
throw new BuildException( "Error", ioe ); | |||
} | |||
finally | |||
{ | |||
@@ -102,7 +102,7 @@ public class Rpm extends Task | |||
{ | |||
if( ( sf == null ) || ( sf.trim().equals( "" ) ) ) | |||
{ | |||
throw new BuildException( "You must specify a spec file", location ); | |||
throw new BuildException( "You must specify a spec file" ); | |||
} | |||
this.specFile = sf; | |||
} | |||
@@ -160,7 +160,7 @@ public class Rpm extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
else | |||
@@ -175,7 +175,7 @@ public class Rpm extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
else | |||
@@ -200,7 +200,7 @@ public class Rpm extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
finally | |||
{ | |||
@@ -59,7 +59,7 @@ public class Script extends Task | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
script += new String( data ); | |||
@@ -121,7 +121,7 @@ public class Script extends Task | |||
t = te; | |||
} | |||
} | |||
throw new BuildException( t ); | |||
throw new BuildException( "Error", t ); | |||
} | |||
} | |||
@@ -127,7 +127,7 @@ public class CCMCheck extends Continuus | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -280,7 +280,7 @@ public class CCMCreateTask extends Continuus implements ExecuteStreamHandler | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
//create task ok, set this task as the default one | |||
@@ -295,7 +295,7 @@ public class CCMCreateTask extends Continuus implements ExecuteStreamHandler | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing: " + commandLine2.toString(); | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg); | |||
} | |||
} | |||
@@ -133,7 +133,7 @@ public class CCMReconfigure extends Continuus | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -120,7 +120,7 @@ public abstract class Continuus extends Task | |||
} | |||
catch( java.io.IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -348,7 +348,7 @@ public class CCCheckin extends ClearCase | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -435,7 +435,7 @@ public class CCCheckout extends ClearCase | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -139,7 +139,7 @@ public class CCUnCheckout extends ClearCase | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -352,7 +352,7 @@ public class CCUpdate extends ClearCase | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing: " + commandLine.toString(); | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -116,7 +116,7 @@ public abstract class ClearCase extends Task | |||
} | |||
catch( java.io.IOException e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -201,7 +201,7 @@ public class Depend extends MatchingTask | |||
String[] srcPathList = srcPath.list(); | |||
if( srcPathList.length == 0 ) | |||
{ | |||
throw new BuildException( "srcdir attribute must be set!", location ); | |||
throw new BuildException( "srcdir attribute must be set!" ); | |||
} | |||
if( destPath == null ) | |||
@@ -261,7 +261,7 @@ public class Depend extends MatchingTask | |||
outOfDateClasses = new Hashtable(); | |||
for( int i = 0; i < srcPathList.length; i++ ) | |||
{ | |||
File srcDir = ( File )project.resolveFile( srcPathList[i] ); | |||
File srcDir = ( File )resolveFile( srcPathList[i] ); | |||
if( srcDir.exists() ) | |||
{ | |||
DirectoryScanner ds = this.getDirectoryScanner( srcDir ); | |||
@@ -310,7 +310,7 @@ public class Depend extends MatchingTask | |||
} | |||
catch( Exception e ) | |||
{ | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -649,7 +649,7 @@ public class CSharp | |||
throws BuildException | |||
{ | |||
if( _srcDir == null ) | |||
_srcDir = project.resolveFile( "." ); | |||
_srcDir = resolveFile( "." ); | |||
NetCommand command = new NetCommand( this, "CSC", csc_exe_name ); | |||
command.setFailOnError( getFailFailOnError() ); | |||
@@ -310,7 +310,7 @@ public class Ilasm | |||
throws BuildException | |||
{ | |||
if( _srcDir == null ) | |||
_srcDir = project.resolveFile( "." ); | |||
_srcDir = resolveFile( "." ); | |||
//get dependencies list. | |||
DirectoryScanner scanner = super.getDirectoryScanner( _srcDir ); | |||
@@ -158,7 +158,7 @@ public class NetCommand | |||
{ | |||
if( _failOnError ) | |||
{ | |||
throw new BuildException( _title + " returned: " + err, _owner.getLocation() ); | |||
throw new BuildException( _title + " returned: " + err ); | |||
} | |||
else | |||
{ | |||
@@ -168,7 +168,7 @@ public class NetCommand | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( _title + " failed: " + e, e, _owner.getLocation() ); | |||
throw new BuildException( _title + " failed: " + e, e ); | |||
} | |||
} | |||
@@ -396,13 +396,13 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exec | |||
if( result != 0 ) | |||
{ | |||
String msg = "Failed executing java2iiop (ret code is " + result + ")"; | |||
throw new BuildException( msg, getTask().getLocation() ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
catch( java.io.IOException e ) | |||
{ | |||
log( "java2iiop exception :" + e.getMessage(), Project.MSG_ERR ); | |||
throw new BuildException( e ); | |||
throw new BuildException( "Error", e ); | |||
} | |||
} | |||
@@ -307,7 +307,7 @@ public class GenericDeploymentTool implements EJBDeploymentTool | |||
{ | |||
String msg = "A valid destination directory must be specified " | |||
+ "using the \"destdir\" attribute."; | |||
throw new BuildException( msg, getLocation() ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -859,8 +859,7 @@ public class GenericDeploymentTool implements EJBDeploymentTool | |||
in = new FileInputStream( config.manifest ); | |||
if( in == null ) | |||
{ | |||
throw new BuildException( "Could not find manifest file: " + config.manifest, | |||
getLocation() ); | |||
throw new BuildException( "Could not find manifest file: " + config.manifest ); | |||
} | |||
} | |||
else | |||
@@ -869,8 +868,7 @@ public class GenericDeploymentTool implements EJBDeploymentTool | |||
in = this.getClass().getResourceAsStream( defaultManifest ); | |||
if( in == null ) | |||
{ | |||
throw new BuildException( "Could not find default manifest: " + defaultManifest, | |||
getLocation() ); | |||
throw new BuildException( "Could not find default manifest: " + defaultManifest ); | |||
} | |||
} | |||
@@ -878,7 +876,7 @@ public class GenericDeploymentTool implements EJBDeploymentTool | |||
} | |||
catch( IOException e ) | |||
{ | |||
throw new BuildException( "Unable to read manifest", e, getLocation() ); | |||
throw new BuildException( "Unable to read manifest", e ); | |||
} | |||
finally | |||
{ | |||
@@ -218,7 +218,7 @@ public class IPlanetDeploymentTool extends GenericDeploymentTool | |||
+ " descriptor should be prepended with the JAR " | |||
+ "name or it should be specified using the " | |||
+ "attribute \"basejarname\" in the \"ejbjar\" task."; | |||
throw new BuildException( msg, getLocation() ); | |||
throw new BuildException( msg ); | |||
} | |||
File iasDescriptor = new File( getConfig().descriptorDir, | |||
@@ -227,14 +227,14 @@ public class IPlanetDeploymentTool extends GenericDeploymentTool | |||
{ | |||
String msg = "The iAS-specific EJB descriptor (" | |||
+ iasDescriptor + ") was not found."; | |||
throw new BuildException( msg, getLocation() ); | |||
throw new BuildException( msg ); | |||
} | |||
if( ( iashome != null ) && ( !iashome.isDirectory() ) ) | |||
{ | |||
String msg = "If \"iashome\" is specified, it must be a valid " | |||
+ "directory (it was set to " + iashome + ")."; | |||
throw new BuildException( msg, getLocation() ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -287,7 +287,7 @@ public class IPlanetDeploymentTool extends GenericDeploymentTool | |||
catch( IPlanetEjbc.EjbcException e ) | |||
{ | |||
throw new BuildException( "An error has occurred while trying to " | |||
+ "execute the iAS ejbc utility", e, getLocation() ); | |||
+ "execute the iAS ejbc utility", e ); | |||
} | |||
displayName = ejbc.getDisplayName(); | |||
@@ -313,7 +313,7 @@ public class IPlanetDeploymentTool extends GenericDeploymentTool | |||
if( !cmpFile.exists() ) | |||
{ | |||
throw new BuildException( "The CMP descriptor file (" | |||
+ cmpFile + ") could not be found.", getLocation() ); | |||
+ cmpFile + ") could not be found." ); | |||
} | |||
files.put( cmpDescriptors[i], cmpFile ); | |||
} | |||
@@ -229,12 +229,12 @@ public class IPlanetEjbcTask extends Task | |||
catch( SAXException e ) | |||
{ | |||
String msg = "Unable to create a SAXParser: " + e.getMessage(); | |||
throw new BuildException( msg, e, location ); | |||
throw new BuildException( msg, e ); | |||
} | |||
catch( ParserConfigurationException e ) | |||
{ | |||
String msg = "Unable to create a SAXParser: " + e.getMessage(); | |||
throw new BuildException( msg, e, location ); | |||
throw new BuildException( msg, e ); | |||
} | |||
return saxParser; | |||
@@ -253,46 +253,46 @@ public class IPlanetEjbcTask extends Task | |||
{ | |||
String msg = "The standard EJB descriptor must be specified using " | |||
+ "the \"ejbdescriptor\" attribute."; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
if( ( !ejbdescriptor.exists() ) || ( !ejbdescriptor.isFile() ) ) | |||
{ | |||
String msg = "The standard EJB descriptor (" + ejbdescriptor | |||
+ ") was not found or isn't a file."; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
if( iasdescriptor == null ) | |||
{ | |||
String msg = "The iAS-speific XML descriptor must be specified using" | |||
+ " the \"iasdescriptor\" attribute."; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
if( ( !iasdescriptor.exists() ) || ( !iasdescriptor.isFile() ) ) | |||
{ | |||
String msg = "The iAS-specific XML descriptor (" + iasdescriptor | |||
+ ") was not found or isn't a file."; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
if( dest == null ) | |||
{ | |||
String msg = "The destination directory must be specified using " | |||
+ "the \"dest\" attribute."; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
if( ( !dest.exists() ) || ( !dest.isDirectory() ) ) | |||
{ | |||
String msg = "The destination directory (" + dest + ") was not " | |||
+ "found or isn't a directory."; | |||
throw new BuildException( msg, location ); | |||
throw new BuildException( msg ); | |||
} | |||
if( ( iashome != null ) && ( !iashome.isDirectory() ) ) | |||
{ | |||
String msg = "If \"iashome\" is specified, it must be a valid " | |||
+ "directory (it was set to " + iashome + ")."; | |||
throw new BuildException( msg, getLocation() ); | |||
throw new BuildException( msg ); | |||
} | |||
} | |||
@@ -327,19 +327,19 @@ public class IPlanetEjbcTask extends Task | |||
{ | |||
String msg = "An IOException occurred while trying to read the XML " | |||
+ "descriptor file: " + e.getMessage(); | |||
throw new BuildException( msg, e, location ); | |||
throw new BuildException( msg, e ); | |||
} | |||
catch( SAXException e ) | |||
{ | |||
String msg = "A SAXException occurred while trying to read the XML " | |||
+ "descriptor file: " + e.getMessage(); | |||
throw new BuildException( msg, e, location ); | |||
throw new BuildException( msg, e ); | |||
} | |||
catch( IPlanetEjbc.EjbcException e ) | |||
{ | |||
String msg = "An exception occurred while trying to run the ejbc " | |||
+ "utility: " + e.getMessage(); | |||
throw new BuildException( msg, e, location ); | |||
throw new BuildException( msg, e ); | |||
} | |||
} | |||
} |