git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272418 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -145,7 +145,7 @@ public class Delete extends MatchingTask { | |||||
| * @param failonerror true or false | * @param failonerror true or false | ||||
| */ | */ | ||||
| public void setFailOnError(boolean failonerror) { | public void setFailOnError(boolean failonerror) { | ||||
| this.failonerror=failonerror; | |||||
| this.failonerror = failonerror; | |||||
| } | } | ||||
| @@ -291,9 +291,9 @@ public class Delete extends MatchingTask { | |||||
| log("Deleting: " + file.getAbsolutePath()); | log("Deleting: " + file.getAbsolutePath()); | ||||
| if (!file.delete()) { | if (!file.delete()) { | ||||
| String message="Unable to delete file " | |||||
| String message = "Unable to delete file " | |||||
| + file.getAbsolutePath(); | + file.getAbsolutePath(); | ||||
| if(failonerror) { | |||||
| if (failonerror) { | |||||
| throw new BuildException(message); | throw new BuildException(message); | ||||
| } else { | } else { | ||||
| log(message, quiet ? Project.MSG_VERBOSE | log(message, quiet ? Project.MSG_VERBOSE | ||||
| @@ -325,7 +325,7 @@ public class Delete extends MatchingTask { | |||||
| } | } | ||||
| // delete the files in the filesets | // delete the files in the filesets | ||||
| for (int i=0; i<filesets.size(); i++) { | |||||
| for (int i = 0; i < filesets.size(); i++) { | |||||
| FileSet fs = (FileSet) filesets.elementAt(i); | FileSet fs = (FileSet) filesets.elementAt(i); | ||||
| try { | try { | ||||
| DirectoryScanner ds = fs.getDirectoryScanner(project); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
| @@ -379,9 +379,9 @@ public class Delete extends MatchingTask { | |||||
| } else { | } else { | ||||
| log("Deleting " + f.getAbsolutePath(), verbosity); | log("Deleting " + f.getAbsolutePath(), verbosity); | ||||
| if (!f.delete()) { | if (!f.delete()) { | ||||
| String message="Unable to delete file " | |||||
| String message = "Unable to delete file " | |||||
| + f.getAbsolutePath(); | + f.getAbsolutePath(); | ||||
| if(failonerror) { | |||||
| if (failonerror) { | |||||
| throw new BuildException(message); | throw new BuildException(message); | ||||
| } else { | } else { | ||||
| log(message, | log(message, | ||||
| @@ -392,9 +392,9 @@ public class Delete extends MatchingTask { | |||||
| } | } | ||||
| log("Deleting directory " + d.getAbsolutePath(), verbosity); | log("Deleting directory " + d.getAbsolutePath(), verbosity); | ||||
| if (!d.delete()) { | if (!d.delete()) { | ||||
| String message="Unable to delete directory " | |||||
| String message = "Unable to delete directory " | |||||
| + dir.getAbsolutePath(); | + dir.getAbsolutePath(); | ||||
| if(failonerror) { | |||||
| if (failonerror) { | |||||
| throw new BuildException(message); | throw new BuildException(message); | ||||
| } else { | } else { | ||||
| log(message, | log(message, | ||||
| @@ -414,13 +414,13 @@ public class Delete extends MatchingTask { | |||||
| if (files.length > 0) { | if (files.length > 0) { | ||||
| log("Deleting " + files.length + " files from " | log("Deleting " + files.length + " files from " | ||||
| + d.getAbsolutePath()); | + d.getAbsolutePath()); | ||||
| for (int j=0; j<files.length; j++) { | |||||
| for (int j = 0; j < files.length; j++) { | |||||
| File f = new File(d, files[j]); | File f = new File(d, files[j]); | ||||
| log("Deleting " + f.getAbsolutePath(), verbosity); | log("Deleting " + f.getAbsolutePath(), verbosity); | ||||
| if (!f.delete()) { | if (!f.delete()) { | ||||
| String message="Unable to delete file " | |||||
| String message = "Unable to delete file " | |||||
| + f.getAbsolutePath(); | + f.getAbsolutePath(); | ||||
| if(failonerror) { | |||||
| if (failonerror) { | |||||
| throw new BuildException(message); | throw new BuildException(message); | ||||
| } else { | } else { | ||||
| log(message, | log(message, | ||||
| @@ -432,15 +432,15 @@ public class Delete extends MatchingTask { | |||||
| if (dirs.length > 0 && includeEmpty) { | if (dirs.length > 0 && includeEmpty) { | ||||
| int dirCount = 0; | int dirCount = 0; | ||||
| for (int j=dirs.length-1; j>=0; j--) { | |||||
| for (int j = dirs.length - 1; j >= 0; j--) { | |||||
| File dir = new File(d, dirs[j]); | File dir = new File(d, dirs[j]); | ||||
| String[] dirFiles = dir.list(); | String[] dirFiles = dir.list(); | ||||
| if (dirFiles == null || dirFiles.length == 0) { | if (dirFiles == null || dirFiles.length == 0) { | ||||
| log("Deleting " + dir.getAbsolutePath(), verbosity); | log("Deleting " + dir.getAbsolutePath(), verbosity); | ||||
| if (!dir.delete()) { | if (!dir.delete()) { | ||||
| String message="Unable to delete directory " | |||||
| String message = "Unable to delete directory " | |||||
| + dir.getAbsolutePath(); | + dir.getAbsolutePath(); | ||||
| if(failonerror) { | |||||
| if (failonerror) { | |||||
| throw new BuildException(message); | throw new BuildException(message); | ||||
| } else { | } else { | ||||
| log(message, | log(message, | ||||
| @@ -454,7 +454,7 @@ public class Delete extends MatchingTask { | |||||
| if (dirCount > 0) { | if (dirCount > 0) { | ||||
| log("Deleted " + dirCount + " director" + | log("Deleted " + dirCount + " director" + | ||||
| (dirCount==1 ? "y" : "ies") + | |||||
| (dirCount == 1 ? "y" : "ies") + | |||||
| " from " + d.getAbsolutePath()); | " from " + d.getAbsolutePath()); | ||||
| } | } | ||||
| } | } | ||||
| @@ -159,12 +159,12 @@ public class DependSet extends MatchingTask { | |||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| if ( (sourceFileSets.size() == 0) && (sourceFileLists.size() == 0) ) { | |||||
| if ((sourceFileSets.size() == 0) && (sourceFileLists.size() == 0)) { | |||||
| throw new BuildException("At least one <srcfileset> or <srcfilelist>" | throw new BuildException("At least one <srcfileset> or <srcfilelist>" | ||||
| + " element must be set"); | + " element must be set"); | ||||
| } | } | ||||
| if ( (targetFileSets.size() == 0) && (targetFileLists.size() == 0) ) { | |||||
| if ((targetFileSets.size() == 0) && (targetFileLists.size() == 0)) { | |||||
| throw new BuildException("At least one <targetfileset> or" | throw new BuildException("At least one <targetfileset> or" | ||||
| + " <targetfilelist> element must be set"); | + " <targetfilelist> element must be set"); | ||||
| } | } | ||||
| @@ -198,7 +198,7 @@ public class DependSet extends MatchingTask { | |||||
| allTargets.addElement(dest); | allTargets.addElement(dest); | ||||
| if (dest.lastModified() > now) { | if (dest.lastModified() > now) { | ||||
| log("Warning: "+targetFiles[i]+" modified in the future.", | |||||
| log("Warning: " + targetFiles[i] + " modified in the future.", | |||||
| Project.MSG_WARN); | Project.MSG_WARN); | ||||
| } | } | ||||
| @@ -224,7 +224,7 @@ public class DependSet extends MatchingTask { | |||||
| File dest = new File(targetFL.getDir(project), targetFiles[i]); | File dest = new File(targetFL.getDir(project), targetFiles[i]); | ||||
| if (!dest.exists()) { | if (!dest.exists()) { | ||||
| log(targetFiles[i]+ " does not exist.", Project.MSG_VERBOSE); | |||||
| log(targetFiles[i] + " does not exist.", Project.MSG_VERBOSE); | |||||
| upToDate = false; | upToDate = false; | ||||
| continue; | continue; | ||||
| } | } | ||||
| @@ -232,7 +232,7 @@ public class DependSet extends MatchingTask { | |||||
| allTargets.addElement(dest); | allTargets.addElement(dest); | ||||
| } | } | ||||
| if (dest.lastModified() > now) { | if (dest.lastModified() > now) { | ||||
| log("Warning: "+targetFiles[i]+" modified in the future.", | |||||
| log("Warning: " + targetFiles[i] + " modified in the future.", | |||||
| Project.MSG_WARN); | Project.MSG_WARN); | ||||
| } | } | ||||
| @@ -261,16 +261,16 @@ public class DependSet extends MatchingTask { | |||||
| FileList sourceFL = (FileList) enumSourceLists.nextElement(); | FileList sourceFL = (FileList) enumSourceLists.nextElement(); | ||||
| String[] sourceFiles = sourceFL.getFiles(project); | String[] sourceFiles = sourceFL.getFiles(project); | ||||
| for (int i=0; upToDate && i < sourceFiles.length; i++) { | |||||
| for (int i = 0; upToDate && i < sourceFiles.length; i++) { | |||||
| File src = new File(sourceFL.getDir(project), sourceFiles[i]); | File src = new File(sourceFL.getDir(project), sourceFiles[i]); | ||||
| if (src.lastModified() > now) { | if (src.lastModified() > now) { | ||||
| log("Warning: "+sourceFiles[i]+" modified in the future.", | |||||
| Project.MSG_WARN); | |||||
| log("Warning: " + sourceFiles[i] | |||||
| + " modified in the future.", Project.MSG_WARN); | |||||
| } | } | ||||
| if (!src.exists()) { | if (!src.exists()) { | ||||
| log(sourceFiles[i]+ " does not exist.", | |||||
| log(sourceFiles[i] + " does not exist.", | |||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| upToDate = false; | upToDate = false; | ||||
| break; | break; | ||||
| @@ -296,12 +296,12 @@ public class DependSet extends MatchingTask { | |||||
| DirectoryScanner sourceDS = sourceFS.getDirectoryScanner(project); | DirectoryScanner sourceDS = sourceFS.getDirectoryScanner(project); | ||||
| String[] sourceFiles = sourceDS.getIncludedFiles(); | String[] sourceFiles = sourceDS.getIncludedFiles(); | ||||
| for (int i=0; upToDate && i < sourceFiles.length; i++) { | |||||
| for (int i = 0; upToDate && i < sourceFiles.length; i++) { | |||||
| File src = new File(sourceFS.getDir(project), sourceFiles[i]); | File src = new File(sourceFS.getDir(project), sourceFiles[i]); | ||||
| if (src.lastModified() > now) { | if (src.lastModified() > now) { | ||||
| log("Warning: "+sourceFiles[i]+" modified in the future.", | |||||
| Project.MSG_WARN); | |||||
| log("Warning: " + sourceFiles[i] | |||||
| + " modified in the future.", Project.MSG_WARN); | |||||
| } | } | ||||
| if (src.lastModified() > oldestTargetTime) { | if (src.lastModified() > oldestTargetTime) { | ||||
| @@ -315,8 +315,8 @@ public class DependSet extends MatchingTask { | |||||
| if (!upToDate) { | if (!upToDate) { | ||||
| log("Deleting all target files. ", Project.MSG_VERBOSE); | log("Deleting all target files. ", Project.MSG_VERBOSE); | ||||
| for (Enumeration e = allTargets.elements(); e.hasMoreElements(); ) { | |||||
| File fileToRemove = (File)e.nextElement(); | |||||
| for (Enumeration e = allTargets.elements(); e.hasMoreElements();) { | |||||
| File fileToRemove = (File) e.nextElement(); | |||||
| log("Deleting file " + fileToRemove.getAbsolutePath(), | log("Deleting file " + fileToRemove.getAbsolutePath(), | ||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| fileToRemove.delete(); | fileToRemove.delete(); | ||||
| @@ -140,7 +140,7 @@ public class Ear extends Jar { | |||||
| if (deploymentDescriptor == null | if (deploymentDescriptor == null | ||||
| || !deploymentDescriptor.equals(file) | || !deploymentDescriptor.equals(file) | ||||
| || descriptorAdded) { | || descriptorAdded) { | ||||
| log("Warning: selected "+archiveType | |||||
| log("Warning: selected " + archiveType | |||||
| + " files include a META-INF/application.xml which will" | + " files include a META-INF/application.xml which will" | ||||
| + " be ignored (please use appxml attribute to " | + " be ignored (please use appxml attribute to " | ||||
| + archiveType + " task)", Project.MSG_WARN); | + archiveType + " task)", Project.MSG_WARN); | ||||
| @@ -148,8 +148,8 @@ public class Exec extends Task { | |||||
| // exec command on system runtime | // exec command on system runtime | ||||
| Process proc = Runtime.getRuntime().exec(command); | Process proc = Runtime.getRuntime().exec(command); | ||||
| if( out!=null ) { | |||||
| fos=new PrintWriter( new FileWriter( out ) ); | |||||
| if (out != null) { | |||||
| fos = new PrintWriter(new FileWriter(out)); | |||||
| log("Output redirected to " + out, Project.MSG_VERBOSE); | log("Output redirected to " + out, Project.MSG_VERBOSE); | ||||
| } | } | ||||
| @@ -176,7 +176,7 @@ public class Exec extends Task { | |||||
| err = proc.exitValue(); | err = proc.exitValue(); | ||||
| if (err != 0) { | if (err != 0) { | ||||
| if (failOnError) { | if (failOnError) { | ||||
| throw new BuildException("Exec returned: "+err, location); | |||||
| throw new BuildException("Exec returned: " + err, location); | |||||
| } else { | } else { | ||||
| log("Result: " + err, Project.MSG_ERR); | log("Result: " + err, Project.MSG_ERR); | ||||
| } | } | ||||
| @@ -96,7 +96,7 @@ public class ExecTask extends Task { | |||||
| private ByteArrayOutputStream baos = null; | private ByteArrayOutputStream baos = null; | ||||
| private String outputprop; | private String outputprop; | ||||
| private String resultProperty; | private String resultProperty; | ||||
| private boolean failIfExecFails=true; | |||||
| private boolean failIfExecFails = true; | |||||
| private boolean append = false; | private boolean append = false; | ||||
| /** | /** | ||||
| @@ -207,7 +207,7 @@ public class ExecTask extends Task { | |||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| */ | */ | ||||
| public void setResultProperty(String resultProperty) { | public void setResultProperty(String resultProperty) { | ||||
| this.resultProperty=resultProperty; | |||||
| this.resultProperty = resultProperty; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -215,9 +215,9 @@ public class ExecTask extends Task { | |||||
| * passed in value if appropriate | * passed in value if appropriate | ||||
| */ | */ | ||||
| protected void maybeSetResultPropertyValue(int result) { | protected void maybeSetResultPropertyValue(int result) { | ||||
| String res=Integer.toString(result); | |||||
| if(resultProperty!=null) { | |||||
| project.setNewProperty(resultProperty,res); | |||||
| String res = Integer.toString(result); | |||||
| if (resultProperty != null) { | |||||
| project.setNewProperty(resultProperty, res); | |||||
| } | } | ||||
| } | } | ||||
| @@ -226,7 +226,7 @@ public class ExecTask extends Task { | |||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| */ | */ | ||||
| public void setFailIfExecutionFails(boolean flag) { | public void setFailIfExecutionFails(boolean flag) { | ||||
| failIfExecFails=flag; | |||||
| failIfExecFails = flag; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -312,8 +312,8 @@ public class ExecTask extends Task { | |||||
| exe.setVMLauncher(vmLauncher); | exe.setVMLauncher(vmLauncher); | ||||
| String[] environment = env.getVariables(); | String[] environment = env.getVariables(); | ||||
| if (environment != null) { | if (environment != null) { | ||||
| for (int i=0; i<environment.length; i++) { | |||||
| log("Setting environment variable: "+environment[i], | |||||
| for (int i = 0; i < environment.length; i++) { | |||||
| log("Setting environment variable: " + environment[i], | |||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| } | } | ||||
| } | } | ||||
| @@ -331,13 +331,13 @@ public class ExecTask extends Task { | |||||
| err = exe.execute(); | err = exe.execute(); | ||||
| //test for and handle a forced process death | //test for and handle a forced process death | ||||
| if(exe.killedProcess()) { | |||||
| log("Timeout: killed the sub-process",Project.MSG_WARN); | |||||
| if (exe.killedProcess()) { | |||||
| log("Timeout: killed the sub-process", Project.MSG_WARN); | |||||
| } | } | ||||
| maybeSetResultPropertyValue(err); | maybeSetResultPropertyValue(err); | ||||
| if (err != 0) { | if (err != 0) { | ||||
| if (failOnError) { | if (failOnError) { | ||||
| throw new BuildException(taskType + " returned: "+err, | |||||
| throw new BuildException(taskType + " returned: " + err, | |||||
| location); | location); | ||||
| } else { | } else { | ||||
| log("Result: " + err, Project.MSG_ERR); | log("Result: " + err, Project.MSG_ERR); | ||||
| @@ -368,10 +368,10 @@ public class ExecTask extends Task { | |||||
| runExecute(exe); | runExecute(exe); | ||||
| } catch (IOException e) { | } catch (IOException e) { | ||||
| if (failIfExecFails) { | if (failIfExecFails) { | ||||
| throw new BuildException("Execute failed: "+e.toString(), e, | |||||
| throw new BuildException("Execute failed: " + e.toString(), e, | |||||
| location); | location); | ||||
| } else { | } else { | ||||
| log("Execute failed: "+e.toString(), Project.MSG_ERR); | |||||
| log("Execute failed: " + e.toString(), Project.MSG_ERR); | |||||
| } | } | ||||
| } finally { | } finally { | ||||
| // close the output file if required | // close the output file if required | ||||
| @@ -383,16 +383,16 @@ public class ExecTask extends Task { | |||||
| * Create the StreamHandler to use with our Execute instance. | * Create the StreamHandler to use with our Execute instance. | ||||
| */ | */ | ||||
| protected ExecuteStreamHandler createHandler() throws BuildException { | protected ExecuteStreamHandler createHandler() throws BuildException { | ||||
| if(out!=null) { | |||||
| if (out != null) { | |||||
| try { | try { | ||||
| fos = new FileOutputStream(out.getAbsolutePath(), append); | fos = new FileOutputStream(out.getAbsolutePath(), append); | ||||
| log("Output redirected to " + out, Project.MSG_VERBOSE); | log("Output redirected to " + out, Project.MSG_VERBOSE); | ||||
| return new PumpStreamHandler(fos); | return new PumpStreamHandler(fos); | ||||
| } catch (FileNotFoundException fne) { | } catch (FileNotFoundException fne) { | ||||
| throw new BuildException("Cannot write to "+out, fne, | |||||
| throw new BuildException("Cannot write to " + out, fne, | |||||
| location); | location); | ||||
| } catch (IOException ioe) { | } catch (IOException ioe) { | ||||
| throw new BuildException("Cannot write to "+out, ioe, | |||||
| throw new BuildException("Cannot write to " + out, ioe, | |||||
| location); | location); | ||||
| } | } | ||||
| } else if (outputprop != null) { | } else if (outputprop != null) { | ||||
| @@ -114,23 +114,23 @@ public class Execute { | |||||
| try { | try { | ||||
| vmLauncher = new Java13CommandLauncher(); | vmLauncher = new Java13CommandLauncher(); | ||||
| } | } | ||||
| catch ( NoSuchMethodException exc ) { | |||||
| // Ignore and keep try | |||||
| catch (NoSuchMethodException exc) { | |||||
| // Ignore and keep trying | |||||
| } | } | ||||
| if ( Os.isFamily("mac") ) { | |||||
| if (Os.isFamily("mac")) { | |||||
| // Mac | // Mac | ||||
| shellLauncher = new MacCommandLauncher(new CommandLauncher()); | shellLauncher = new MacCommandLauncher(new CommandLauncher()); | ||||
| } | } | ||||
| else if ( Os.isFamily("os/2") ) { | |||||
| else if (Os.isFamily("os/2")) { | |||||
| // OS/2 - use same mechanism as Windows 2000 | // OS/2 - use same mechanism as Windows 2000 | ||||
| shellLauncher = new WinNTCommandLauncher(new CommandLauncher()); | shellLauncher = new WinNTCommandLauncher(new CommandLauncher()); | ||||
| } | } | ||||
| else if ( Os.isFamily("windows") ) { | |||||
| else if (Os.isFamily("windows")) { | |||||
| // Windows. Need to determine which JDK we're running in | // Windows. Need to determine which JDK we're running in | ||||
| CommandLauncher baseLauncher; | CommandLauncher baseLauncher; | ||||
| if ( System.getProperty("java.version").startsWith("1.1") ) { | |||||
| if (System.getProperty("java.version").startsWith("1.1")) { | |||||
| // JDK 1.1 | // JDK 1.1 | ||||
| baseLauncher = new Java11CommandLauncher(); | baseLauncher = new Java11CommandLauncher(); | ||||
| } | } | ||||
| @@ -139,7 +139,7 @@ public class Execute { | |||||
| baseLauncher = new CommandLauncher(); | baseLauncher = new CommandLauncher(); | ||||
| } | } | ||||
| if ( !Os.isFamily("win9x") ) { | |||||
| if (!Os.isFamily("win9x")) { | |||||
| // Windows XP/2000/NT | // Windows XP/2000/NT | ||||
| shellLauncher = new WinNTCommandLauncher(baseLauncher); | shellLauncher = new WinNTCommandLauncher(baseLauncher); | ||||
| } | } | ||||
| @@ -148,10 +148,10 @@ public class Execute { | |||||
| shellLauncher = new ScriptCommandLauncher("bin/antRun.bat", baseLauncher); | shellLauncher = new ScriptCommandLauncher("bin/antRun.bat", baseLauncher); | ||||
| } | } | ||||
| } | } | ||||
| else if ( Os.isFamily("netware") ) { | |||||
| else if (Os.isFamily("netware")) { | |||||
| // NetWare. Need to determine which JDK we're running in | // NetWare. Need to determine which JDK we're running in | ||||
| CommandLauncher baseLauncher; | CommandLauncher baseLauncher; | ||||
| if ( System.getProperty("java.version").startsWith("1.1") ) { | |||||
| if (System.getProperty("java.version").startsWith("1.1")) { | |||||
| // JDK 1.1 | // JDK 1.1 | ||||
| baseLauncher = new Java11CommandLauncher(); | baseLauncher = new Java11CommandLauncher(); | ||||
| } | } | ||||
| @@ -184,7 +184,7 @@ public class Execute { | |||||
| // Make sure we do not recurse forever | // Make sure we do not recurse forever | ||||
| exe.setNewenvironment(true); | exe.setNewenvironment(true); | ||||
| int retval = exe.execute(); | int retval = exe.execute(); | ||||
| if ( retval != 0 ) { | |||||
| if (retval != 0) { | |||||
| // Just try to use what we got | // Just try to use what we got | ||||
| } | } | ||||
| @@ -224,15 +224,15 @@ public class Execute { | |||||
| } | } | ||||
| private static String[] getProcEnvCommand() { | private static String[] getProcEnvCommand() { | ||||
| if ( Os.isFamily("os/2") ) { | |||||
| if (Os.isFamily("os/2")) { | |||||
| // OS/2 - use same mechanism as Windows 2000 | // OS/2 - use same mechanism as Windows 2000 | ||||
| // Not sure | // Not sure | ||||
| String[] cmd = {"cmd", "/c", "set" }; | String[] cmd = {"cmd", "/c", "set" }; | ||||
| return cmd; | return cmd; | ||||
| } | } | ||||
| else if ( Os.isFamily("windows") ) { | |||||
| else if (Os.isFamily("windows")) { | |||||
| // Determine if we're running under XP/2000/NT or 98/95 | // Determine if we're running under XP/2000/NT or 98/95 | ||||
| if ( !Os.isFamily("win9x") ) { | |||||
| if (!Os.isFamily("win9x")) { | |||||
| // Windows XP/2000/NT | // Windows XP/2000/NT | ||||
| String[] cmd = {"cmd", "/c", "set" }; | String[] cmd = {"cmd", "/c", "set" }; | ||||
| return cmd; | return cmd; | ||||
| @@ -243,13 +243,13 @@ public class Execute { | |||||
| return cmd; | return cmd; | ||||
| } | } | ||||
| } | } | ||||
| else if ( Os.isFamily("unix") ) { | |||||
| else if (Os.isFamily("unix")) { | |||||
| // Generic UNIX | // Generic UNIX | ||||
| // Alternatively one could use: /bin/sh -c env | // Alternatively one could use: /bin/sh -c env | ||||
| String[] cmd = {"/usr/bin/env"}; | String[] cmd = {"/usr/bin/env"}; | ||||
| return cmd; | return cmd; | ||||
| } | } | ||||
| else if ( Os.isFamily("netware") ) { | |||||
| else if (Os.isFamily("netware")) { | |||||
| String[] cmd = {"env"}; | String[] cmd = {"env"}; | ||||
| return cmd; | return cmd; | ||||
| } | } | ||||
| @@ -478,7 +478,7 @@ public class Execute { | |||||
| * @since 1.5 | * @since 1.5 | ||||
| */ | */ | ||||
| public boolean killedProcess() { | public boolean killedProcess() { | ||||
| return watchdog!=null && watchdog.killedProcess(); | |||||
| return watchdog != null && watchdog.killedProcess(); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -490,10 +490,10 @@ public class Execute { | |||||
| for (int i = 0; i < env.length; i++) { | for (int i = 0; i < env.length; i++) { | ||||
| int pos = env[i].indexOf('='); | int pos = env[i].indexOf('='); | ||||
| // Get key including "=" | // Get key including "=" | ||||
| String key = env[i].substring(0, pos+1); | |||||
| String key = env[i].substring(0, pos + 1); | |||||
| int size = osEnv.size(); | int size = osEnv.size(); | ||||
| for (int j = 0; j < size; j++) { | for (int j = 0; j < size; j++) { | ||||
| if (((String)osEnv.elementAt(j)).startsWith(key)) { | |||||
| if (((String) osEnv.elementAt(j)).startsWith(key)) { | |||||
| osEnv.removeElementAt(j); | osEnv.removeElementAt(j); | ||||
| break; | break; | ||||
| } | } | ||||
| @@ -524,12 +524,14 @@ public class Execute { | |||||
| exe.setAntRun(task.getProject()); | exe.setAntRun(task.getProject()); | ||||
| exe.setCommandline(cmdline); | exe.setCommandline(cmdline); | ||||
| int retval = exe.execute(); | int retval = exe.execute(); | ||||
| if ( retval != 0 ) { | |||||
| throw new BuildException(cmdline[0] + " failed with return code " + retval, task.getLocation()); | |||||
| if (retval != 0) { | |||||
| throw new BuildException(cmdline[0] | |||||
| + " failed with return code " + retval, task.getLocation()); | |||||
| } | } | ||||
| } | } | ||||
| catch (java.io.IOException exc) { | 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, task.getLocation()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -548,8 +550,8 @@ public class Execute { | |||||
| * @param env The environment for the new process. If null, | * @param env The environment for the new process. If null, | ||||
| * the environment of the current proccess is used. | * the environment of the current proccess is used. | ||||
| */ | */ | ||||
| public Process exec(Project project, String[] cmd, String[] env) throws IOException | |||||
| { | |||||
| public Process exec(Project project, String[] cmd, String[] env) | |||||
| throws IOException { | |||||
| if (project != null) { | if (project != null) { | ||||
| project.log("Execute:CommandLauncher: " + | project.log("Execute:CommandLauncher: " + | ||||
| Commandline.toString(cmd), Project.MSG_DEBUG); | Commandline.toString(cmd), Project.MSG_DEBUG); | ||||
| @@ -568,12 +570,13 @@ public class Execute { | |||||
| * @param workingDir The directory to start the command in. If null, | * @param workingDir The directory to start the command in. If null, | ||||
| * the current directory is used | * the current directory is used | ||||
| */ | */ | ||||
| public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | |||||
| { | |||||
| if ( workingDir == null ) { | |||||
| public Process exec(Project project, String[] cmd, String[] env, | |||||
| File workingDir) throws IOException { | |||||
| if (workingDir == null) { | |||||
| return exec(project, cmd, env); | return exec(project, cmd, env); | ||||
| } | } | ||||
| throw new IOException("Cannot execute a process in different directory under this JVM"); | |||||
| throw new IOException("Cannot execute a process in different " | |||||
| + "directory under this JVM"); | |||||
| } | } | ||||
| } | } | ||||
| @@ -582,17 +585,17 @@ public class Execute { | |||||
| * in Runtime.exec(). Can only launch commands in the current working | * in Runtime.exec(). Can only launch commands in the current working | ||||
| * directory | * directory | ||||
| */ | */ | ||||
| private static class Java11CommandLauncher extends CommandLauncher | |||||
| { | |||||
| private static class Java11CommandLauncher extends CommandLauncher { | |||||
| /** | /** | ||||
| * Launches the given command in a new process. Needs to quote | * Launches the given command in a new process. Needs to quote | ||||
| * arguments | * arguments | ||||
| */ | */ | ||||
| public Process exec(Project project, String[] cmd, String[] env) throws IOException | |||||
| { | |||||
| // Need to quote arguments with spaces, and to escape quote characters | |||||
| public Process exec(Project project, String[] cmd, String[] env) | |||||
| throws IOException { | |||||
| // Need to quote arguments with spaces, and to escape | |||||
| // quote characters | |||||
| String[] newcmd = new String[cmd.length]; | String[] newcmd = new String[cmd.length]; | ||||
| for ( int i = 0; i < cmd.length; i++ ) { | |||||
| for (int i = 0; i < cmd.length; i++) { | |||||
| newcmd[i] = Commandline.quoteArgument(cmd[i]); | newcmd[i] = Commandline.quoteArgument(cmd[i]); | ||||
| } | } | ||||
| if (project != null) { | if (project != null) { | ||||
| @@ -611,8 +614,10 @@ public class Execute { | |||||
| { | { | ||||
| public Java13CommandLauncher() throws NoSuchMethodException | public Java13CommandLauncher() throws NoSuchMethodException | ||||
| { | { | ||||
| // Locate method Runtime.exec(String[] cmdarray, String[] envp, File dir) | |||||
| _execWithCWD = Runtime.class.getMethod("exec", new Class[] {String[].class, String[].class, File.class}); | |||||
| // Locate method Runtime.exec(String[] cmdarray, | |||||
| // String[] envp, File dir) | |||||
| _execWithCWD = Runtime.class.getMethod("exec", | |||||
| new Class[] {String[].class, String[].class, File.class}); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -628,15 +633,16 @@ public class Execute { | |||||
| Commandline.toString(cmd), Project.MSG_DEBUG); | Commandline.toString(cmd), Project.MSG_DEBUG); | ||||
| } | } | ||||
| Object[] arguments = { cmd, env, workingDir }; | Object[] arguments = { cmd, env, workingDir }; | ||||
| return (Process)_execWithCWD.invoke(Runtime.getRuntime(), arguments); | |||||
| return (Process) _execWithCWD.invoke(Runtime.getRuntime(), | |||||
| arguments); | |||||
| } | } | ||||
| catch (InvocationTargetException exc) { | catch (InvocationTargetException exc) { | ||||
| Throwable realexc = exc.getTargetException(); | Throwable realexc = exc.getTargetException(); | ||||
| if ( realexc instanceof ThreadDeath ) { | |||||
| throw (ThreadDeath)realexc; | |||||
| if (realexc instanceof ThreadDeath) { | |||||
| throw (ThreadDeath) realexc; | |||||
| } | } | ||||
| else if ( realexc instanceof IOException ) { | |||||
| throw (IOException)realexc; | |||||
| else if (realexc instanceof IOException) { | |||||
| throw (IOException) realexc; | |||||
| } | } | ||||
| else { | else { | ||||
| throw new BuildException("Unable to execute command", realexc); | throw new BuildException("Unable to execute command", realexc); | ||||
| @@ -694,8 +700,8 @@ public class Execute { | |||||
| public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | ||||
| { | { | ||||
| File commandDir = workingDir; | File commandDir = workingDir; | ||||
| if ( workingDir == null ) { | |||||
| if ( project != null ) { | |||||
| if (workingDir == null) { | |||||
| if (project != null) { | |||||
| commandDir = project.getBaseDir(); | commandDir = project.getBaseDir(); | ||||
| } else { | } else { | ||||
| return exec(project, cmd, env); | return exec(project, cmd, env); | ||||
| @@ -735,7 +741,7 @@ public class Execute { | |||||
| */ | */ | ||||
| public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | ||||
| { | { | ||||
| if ( workingDir == null ) { | |||||
| if (workingDir == null) { | |||||
| return exec(project, cmd, env); | return exec(project, cmd, env); | ||||
| } | } | ||||
| @@ -767,8 +773,8 @@ public class Execute { | |||||
| */ | */ | ||||
| public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | ||||
| { | { | ||||
| if ( project == null ) { | |||||
| if ( workingDir == null ) { | |||||
| if (project == null) { | |||||
| if (workingDir == null) { | |||||
| return exec(project, cmd, env); | return exec(project, cmd, env); | ||||
| } | } | ||||
| throw new IOException("Cannot locate antRun script: No project provided"); | throw new IOException("Cannot locate antRun script: No project provided"); | ||||
| @@ -776,14 +782,14 @@ public class Execute { | |||||
| // Locate the auxiliary script | // Locate the auxiliary script | ||||
| String antHome = project.getProperty("ant.home"); | String antHome = project.getProperty("ant.home"); | ||||
| if ( antHome == null ) { | |||||
| if (antHome == null) { | |||||
| throw new IOException("Cannot locate antRun script: Property 'ant.home' not found"); | throw new IOException("Cannot locate antRun script: Property 'ant.home' not found"); | ||||
| } | } | ||||
| String antRun = project.resolveFile(antHome + File.separator + _script).toString(); | String antRun = project.resolveFile(antHome + File.separator + _script).toString(); | ||||
| // Build the command | // Build the command | ||||
| File commandDir = workingDir; | File commandDir = workingDir; | ||||
| if ( workingDir == null && project != null ) { | |||||
| if (workingDir == null && project != null) { | |||||
| commandDir = project.getBaseDir(); | commandDir = project.getBaseDir(); | ||||
| } | } | ||||
| @@ -816,8 +822,8 @@ public class Execute { | |||||
| */ | */ | ||||
| public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | public Process exec(Project project, String[] cmd, String[] env, File workingDir) throws IOException | ||||
| { | { | ||||
| if ( project == null ) { | |||||
| if ( workingDir == null ) { | |||||
| if (project == null) { | |||||
| if (workingDir == null) { | |||||
| return exec(project, cmd, env); | return exec(project, cmd, env); | ||||
| } | } | ||||
| throw new IOException("Cannot locate antRun script: No project provided"); | throw new IOException("Cannot locate antRun script: No project provided"); | ||||
| @@ -825,14 +831,14 @@ public class Execute { | |||||
| // Locate the auxiliary script | // Locate the auxiliary script | ||||
| String antHome = project.getProperty("ant.home"); | String antHome = project.getProperty("ant.home"); | ||||
| if ( antHome == null ) { | |||||
| if (antHome == null) { | |||||
| throw new IOException("Cannot locate antRun script: Property 'ant.home' not found"); | throw new IOException("Cannot locate antRun script: Property 'ant.home' not found"); | ||||
| } | } | ||||
| String antRun = project.resolveFile(antHome + File.separator + _script).toString(); | String antRun = project.resolveFile(antHome + File.separator + _script).toString(); | ||||
| // Build the command | // Build the command | ||||
| File commandDir = workingDir; | File commandDir = workingDir; | ||||
| if ( workingDir == null && project != null ) { | |||||
| if (workingDir == null && project != null) { | |||||
| commandDir = project.getBaseDir(); | commandDir = project.getBaseDir(); | ||||
| } | } | ||||
| @@ -208,14 +208,14 @@ public class ExecuteOn extends ExecTask { | |||||
| Vector fileNames = new Vector(); | Vector fileNames = new Vector(); | ||||
| Vector baseDirs = new Vector(); | Vector baseDirs = new Vector(); | ||||
| for (int i=0; i<filesets.size(); i++) { | |||||
| for (int i = 0; i < filesets.size(); i++) { | |||||
| FileSet fs = (FileSet) filesets.elementAt(i); | FileSet fs = (FileSet) filesets.elementAt(i); | ||||
| File base = fs.getDir(project); | File base = fs.getDir(project); | ||||
| DirectoryScanner ds = fs.getDirectoryScanner(project); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
| if (!"dir".equals(type)) { | if (!"dir".equals(type)) { | ||||
| String[] s = getFiles(base, ds); | String[] s = getFiles(base, ds); | ||||
| for (int j=0; j<s.length; j++) { | |||||
| for (int j = 0; j < s.length; j++) { | |||||
| fileNames.addElement(s[j]); | fileNames.addElement(s[j]); | ||||
| baseDirs.addElement(base); | baseDirs.addElement(base); | ||||
| } | } | ||||
| @@ -223,7 +223,7 @@ public class ExecuteOn extends ExecTask { | |||||
| if (!"file".equals(type)) { | if (!"file".equals(type)) { | ||||
| String[] s = getDirs(base, ds);; | String[] s = getDirs(base, ds);; | ||||
| for (int j=0; j<s.length; j++) { | |||||
| for (int j = 0; j < s.length; j++) { | |||||
| fileNames.addElement(s[j]); | fileNames.addElement(s[j]); | ||||
| baseDirs.addElement(base); | baseDirs.addElement(base); | ||||
| } | } | ||||
| @@ -238,7 +238,7 @@ public class ExecuteOn extends ExecTask { | |||||
| if (!parallel) { | if (!parallel) { | ||||
| String[] s = new String[fileNames.size()]; | String[] s = new String[fileNames.size()]; | ||||
| fileNames.copyInto(s); | fileNames.copyInto(s); | ||||
| for (int j=0; j<s.length; j++) { | |||||
| for (int j = 0; j < s.length; j++) { | |||||
| String[] command = getCommandline(s[j], base); | String[] command = getCommandline(s[j], base); | ||||
| log("Executing " + Commandline.toString(command), | log("Executing " + Commandline.toString(command), | ||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| @@ -280,10 +280,10 @@ public class ExecuteOn extends ExecTask { | |||||
| Vector targets = new Vector(); | Vector targets = new Vector(); | ||||
| if (targetFilePos != null) { | if (targetFilePos != null) { | ||||
| Hashtable addedFiles = new Hashtable(); | Hashtable addedFiles = new Hashtable(); | ||||
| for (int i=0; i<srcFiles.length; i++) { | |||||
| for (int i = 0; i < srcFiles.length; i++) { | |||||
| String[] subTargets = mapper.mapFileName(srcFiles[i]); | String[] subTargets = mapper.mapFileName(srcFiles[i]); | ||||
| if (subTargets != null) { | if (subTargets != null) { | ||||
| for (int j=0; j<subTargets.length; j++) { | |||||
| for (int j = 0; j < subTargets.length; j++) { | |||||
| String name = null; | String name = null; | ||||
| if (!relative) { | if (!relative) { | ||||
| name = | name = | ||||
| @@ -303,7 +303,7 @@ public class ExecuteOn extends ExecTask { | |||||
| targets.copyInto(targetFiles); | targets.copyInto(targetFiles); | ||||
| String[] orig = cmdl.getCommandline(); | String[] orig = cmdl.getCommandline(); | ||||
| String[] result = new String[orig.length+srcFiles.length+targetFiles.length]; | |||||
| String[] result = new String[orig.length + srcFiles.length + targetFiles.length]; | |||||
| int srcIndex = orig.length; | int srcIndex = orig.length; | ||||
| if (srcFilePos != null) { | if (srcFilePos != null) { | ||||
| @@ -366,12 +366,12 @@ public class ExecuteOn extends ExecTask { | |||||
| } | } | ||||
| // fill in source file names | // fill in source file names | ||||
| for (int i=0; i < srcFiles.length; i++) { | |||||
| for (int i = 0; i < srcFiles.length; i++) { | |||||
| if (!relative) { | if (!relative) { | ||||
| result[srcIndex+i] = | |||||
| result[srcIndex + i] = | |||||
| (new File(baseDirs[i], srcFiles[i])).getAbsolutePath(); | (new File(baseDirs[i], srcFiles[i])).getAbsolutePath(); | ||||
| } else { | } else { | ||||
| result[srcIndex+i] = srcFiles[i]; | |||||
| result[srcIndex + i] = srcFiles[i]; | |||||
| } | } | ||||
| } | } | ||||
| return result; | return result; | ||||
| @@ -98,8 +98,8 @@ public class Exit extends Task { | |||||
| * Set a multiline message. | * Set a multiline message. | ||||
| */ | */ | ||||
| public void addText(String msg) { | public void addText(String msg) { | ||||
| if(message==null) { | |||||
| message=""; | |||||
| if (message == null) { | |||||
| message = ""; | |||||
| } | } | ||||
| message += project.replaceProperties(msg); | message += project.replaceProperties(msg); | ||||
| } | } | ||||
| @@ -127,7 +127,7 @@ public class Expand extends MatchingTask { | |||||
| } | } | ||||
| } | } | ||||
| if (filesets.size() > 0) { | if (filesets.size() > 0) { | ||||
| for (int j=0; j < filesets.size(); j++) { | |||||
| for (int j = 0; j < filesets.size(); j++) { | |||||
| FileSet fs = (FileSet) filesets.elementAt(j); | FileSet fs = (FileSet) filesets.elementAt(j); | ||||
| DirectoryScanner ds = fs.getDirectoryScanner(project); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
| File fromDir = fs.getDir(project); | File fromDir = fs.getDir(project); | ||||
| @@ -158,7 +158,7 @@ public class Expand extends MatchingTask { | |||||
| ze.isDirectory()); | ze.isDirectory()); | ||||
| } | } | ||||
| log("expand complete", Project.MSG_VERBOSE ); | |||||
| log("expand complete", Project.MSG_VERBOSE); | |||||
| } catch (IOException ioe) { | } catch (IOException ioe) { | ||||
| throw new BuildException("Error while expanding " + srcF.getPath(), | throw new BuildException("Error while expanding " + srcF.getPath(), | ||||
| ioe); | ioe); | ||||
| @@ -221,10 +221,10 @@ public class Expand extends MatchingTask { | |||||
| return; | return; | ||||
| } | } | ||||
| log("expanding " + entryName + " to "+ f, | |||||
| log("expanding " + entryName + " to " + f, | |||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| // create intermediary directories - sometimes zip don't add them | // create intermediary directories - sometimes zip don't add them | ||||
| File dirF= fileUtils.getParentFile(f); | |||||
| File dirF = fileUtils.getParentFile(f); | |||||
| dirF.mkdirs(); | dirF.mkdirs(); | ||||
| if (isDirectory) { | if (isDirectory) { | ||||
| @@ -253,7 +253,7 @@ public class Expand extends MatchingTask { | |||||
| } | } | ||||
| fileUtils.setFileLastModified(f, entryDate.getTime()); | fileUtils.setFileLastModified(f, entryDate.getTime()); | ||||
| } catch( FileNotFoundException ex ) { | |||||
| } catch (FileNotFoundException ex) { | |||||
| log("Unable to expand to file " + f.getPath(), Project.MSG_WARN); | log("Unable to expand to file " + f.getPath(), Project.MSG_WARN); | ||||
| } | } | ||||
| @@ -266,7 +266,7 @@ public class Expand extends MatchingTask { | |||||
| * @param d Path to the directory. | * @param d Path to the directory. | ||||
| */ | */ | ||||
| public void setDest(File d) { | public void setDest(File d) { | ||||
| this.dest=d; | |||||
| this.dest = d; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -297,7 +297,7 @@ public class FixCRLF extends MatchingTask { | |||||
| * @param tlength specify the length of tab in spaces, | * @param tlength specify the length of tab in spaces, | ||||
| */ | */ | ||||
| public void setTablength(int tlength) throws BuildException { | public void setTablength(int tlength) throws BuildException { | ||||
| if (tlength < 2 || tlength >80) { | |||||
| if (tlength < 2 || tlength > 80) { | |||||
| throw new BuildException("tablength must be between 2 and 80", | throw new BuildException("tablength must be between 2 and 80", | ||||
| location); | location); | ||||
| } | } | ||||
| @@ -366,9 +366,9 @@ public class FixCRLF extends MatchingTask { | |||||
| // log options used | // log options used | ||||
| log("options:" + | log("options:" + | ||||
| " eol=" + | " eol=" + | ||||
| (eol==ASIS ? "asis" : eol==CR ? "cr" : eol==LF ? "lf" : "crlf") + | |||||
| " tab=" + (tabs==TABS ? "add" : tabs==ASIS ? "asis" : "remove") + | |||||
| " eof=" + (ctrlz==ADD ? "add" : ctrlz==ASIS ? "asis" : "remove") + | |||||
| (eol == ASIS ? "asis" : eol == CR ? "cr" : eol == LF ? "lf" : "crlf") + | |||||
| " tab=" + (tabs == TABS ? "add" : tabs == ASIS ? "asis" : "remove") + | |||||
| " eof=" + (ctrlz == ADD ? "add" : ctrlz == ASIS ? "asis" : "remove") + | |||||
| " tablength=" + tablength + | " tablength=" + tablength + | ||||
| " encoding=" + (encoding == null ? "default" : encoding), | " encoding=" + (encoding == null ? "default" : encoding), | ||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| @@ -418,7 +418,7 @@ public class FixCRLF extends MatchingTask { | |||||
| int endComment; | int endComment; | ||||
| try { | try { | ||||
| line = (OneLiner.BufferLine)lines.nextElement(); | |||||
| line = (OneLiner.BufferLine) lines.nextElement(); | |||||
| } catch (NoSuchElementException e) { | } catch (NoSuchElementException e) { | ||||
| throw new BuildException(e); | throw new BuildException(e); | ||||
| } | } | ||||
| @@ -449,14 +449,13 @@ public class FixCRLF extends MatchingTask { | |||||
| break; | break; | ||||
| case IN_MULTI_COMMENT: | case IN_MULTI_COMMENT: | ||||
| if ((endComment = | |||||
| lineString.indexOf("*/", line.getNext()) | |||||
| ) >= 0) | |||||
| { | |||||
| // End of multiLineComment on this line | |||||
| endComment += 2; // Include the end token | |||||
| lines.setState(LOOKING); | |||||
| } | |||||
| endComment | |||||
| = lineString.indexOf("*/", line.getNext()); | |||||
| if (endComment >= 0) { | |||||
| // End of multiLineComment on this line | |||||
| endComment += 2; // Include the end token | |||||
| lines.setState(LOOKING); | |||||
| } | |||||
| else { | else { | ||||
| endComment = linelen; | endComment = linelen; | ||||
| } | } | ||||
| @@ -604,7 +603,7 @@ public class FixCRLF extends MatchingTask { | |||||
| lines.close(); | lines.close(); | ||||
| } | } | ||||
| } catch (IOException io) { | } catch (IOException io) { | ||||
| log("Error closing "+srcFile, Project.MSG_ERR); | |||||
| log("Error closing " + srcFile, Project.MSG_ERR); | |||||
| } // end of catch | } // end of catch | ||||
| if (tmpFile != null) { | if (tmpFile != null) { | ||||
| @@ -767,14 +766,12 @@ public class FixCRLF extends MatchingTask { | |||||
| nextStop += tablength; | nextStop += tablength; | ||||
| } | } | ||||
| for ( ; nextStop - placediff <= linestring.length() | |||||
| ; nextStop += tablength) | |||||
| { | |||||
| for (; nextStop - placediff <= linestring.length() | |||||
| ; nextStop += tablength) { | |||||
| for (tabCol = nextStop; | for (tabCol = nextStop; | ||||
| --tabCol - placediff >= place | --tabCol - placediff >= place | ||||
| && linestring.charAt(tabCol - placediff) == ' ' | && linestring.charAt(tabCol - placediff) == ' ' | ||||
| ;) | |||||
| { | |||||
| ;) { | |||||
| ; // Loop for the side-effects | ; // Loop for the side-effects | ||||
| } | } | ||||
| // tabCol is column index of the last non-space character | // tabCol is column index of the last non-space character | ||||
| @@ -863,7 +860,7 @@ public class FixCRLF extends MatchingTask { | |||||
| reader.mark(2); | reader.mark(2); | ||||
| switch ((ch = reader.read())) { | switch ((ch = reader.read())) { | ||||
| case '\r': | case '\r': | ||||
| if ((char)(ch = reader.read()) == '\n') { | |||||
| if ((char) (ch = reader.read()) == '\n') { | |||||
| eolcount += 2; | eolcount += 2; | ||||
| eolStr.append("\r\n"); | eolStr.append("\r\n"); | ||||
| } | } | ||||
| @@ -935,7 +932,7 @@ public class FixCRLF extends MatchingTask { | |||||
| public Object nextElement() | public Object nextElement() | ||||
| throws NoSuchElementException | throws NoSuchElementException | ||||
| { | { | ||||
| if (! hasMoreElements()) { | |||||
| if (!hasMoreElements()) { | |||||
| throw new NoSuchElementException("OneLiner"); | throw new NoSuchElementException("OneLiner"); | ||||
| } | } | ||||
| BufferLine tmpLine = | BufferLine tmpLine = | ||||
| @@ -84,7 +84,7 @@ public class GUnzip extends Unpack { | |||||
| protected void extract() { | protected void extract() { | ||||
| if (source.lastModified() > dest.lastModified()) { | if (source.lastModified() > dest.lastModified()) { | ||||
| log("Expanding "+ source.getAbsolutePath() + " to " | |||||
| log("Expanding " + source.getAbsolutePath() + " to " | |||||
| + dest.getAbsolutePath()); | + dest.getAbsolutePath()); | ||||
| FileOutputStream out = null; | FileOutputStream out = null; | ||||
| @@ -111,25 +111,25 @@ public class GenerateKey extends Task { | |||||
| final StringBuffer sb = new StringBuffer(); | final StringBuffer sb = new StringBuffer(); | ||||
| boolean firstPass = true; | boolean firstPass = true; | ||||
| for( int i = 0; i < size; i++ ) { | |||||
| if( !firstPass ) { | |||||
| for (int i = 0; i < size; i++) { | |||||
| if (!firstPass) { | |||||
| sb.append(" ,"); | sb.append(" ,"); | ||||
| } | } | ||||
| firstPass = false; | firstPass = false; | ||||
| final DnameParam param = (DnameParam)params.elementAt( i ); | |||||
| sb.append( encode( param.getName() ) ); | |||||
| sb.append( '=' ); | |||||
| sb.append( encode( param.getValue() ) ); | |||||
| final DnameParam param = (DnameParam) params.elementAt(i); | |||||
| sb.append(encode(param.getName())); | |||||
| sb.append('='); | |||||
| sb.append(encode(param.getValue())); | |||||
| } | } | ||||
| return sb.toString(); | return sb.toString(); | ||||
| } | } | ||||
| public String encode( final String string ) { | |||||
| public String encode(final String string) { | |||||
| int end = string.indexOf(','); | int end = string.indexOf(','); | ||||
| if( -1 == end ) { | |||||
| if (-1 == end) { | |||||
| return string; | return string; | ||||
| } | } | ||||
| @@ -137,15 +137,15 @@ public class GenerateKey extends Task { | |||||
| int start = 0; | int start = 0; | ||||
| while( -1 != end ) | |||||
| while (-1 != end) | |||||
| { | { | ||||
| sb.append( string.substring( start, end ) ); | |||||
| sb.append( "\\," ); | |||||
| sb.append(string.substring(start, end)); | |||||
| sb.append("\\,"); | |||||
| start = end + 1; | start = end + 1; | ||||
| end = string.indexOf( ',', start ); | |||||
| end = string.indexOf(',', start); | |||||
| } | } | ||||
| sb.append( string.substring( start ) ); | |||||
| sb.append(string.substring(start)); | |||||
| return sb.toString(); | return sb.toString(); | ||||
| } | } | ||||
| @@ -173,24 +173,24 @@ public class GenerateKey extends Task { | |||||
| protected boolean verbose; | protected boolean verbose; | ||||
| public DistinguishedName createDname() throws BuildException { | public DistinguishedName createDname() throws BuildException { | ||||
| if( null != expandedDname ) { | |||||
| throw new BuildException( "DName sub-element can only be " | |||||
| + "specified once." ); | |||||
| if (null != expandedDname) { | |||||
| throw new BuildException("DName sub-element can only be " | |||||
| + "specified once."); | |||||
| } | } | ||||
| if( null != dname ) { | |||||
| throw new BuildException( "It is not possible to specify dname " + | |||||
| " both " + | |||||
| "as attribute and element." ); | |||||
| if (null != dname) { | |||||
| throw new BuildException("It is not possible to specify dname " + | |||||
| " both " + | |||||
| "as attribute and element."); | |||||
| } | } | ||||
| expandedDname = new DistinguishedName(); | expandedDname = new DistinguishedName(); | ||||
| return expandedDname; | return expandedDname; | ||||
| } | } | ||||
| public void setDname(final String dname) { | public void setDname(final String dname) { | ||||
| if( null != expandedDname ) { | |||||
| throw new BuildException( "It is not possible to specify dname " + | |||||
| " both " + | |||||
| "as attribute and element." ); | |||||
| if (null != expandedDname) { | |||||
| throw new BuildException("It is not possible to specify dname " + | |||||
| " both " + | |||||
| "as attribute and element."); | |||||
| } | } | ||||
| this.dname = dname; | this.dname = dname; | ||||
| } | } | ||||
| @@ -224,18 +224,18 @@ public class GenerateKey extends Task { | |||||
| } | } | ||||
| public void setKeysize(final String keysize) throws BuildException { | public void setKeysize(final String keysize) throws BuildException { | ||||
| try { this.keysize = Integer.parseInt(keysize); } | |||||
| catch(final NumberFormatException nfe) | |||||
| { | |||||
| throw new BuildException( "KeySize attribute should be a integer" ); | |||||
| try { | |||||
| this.keysize = Integer.parseInt(keysize); | |||||
| } catch (final NumberFormatException nfe) { | |||||
| throw new BuildException("KeySize attribute should be a integer"); | |||||
| } | } | ||||
| } | } | ||||
| public void setValidity(final String validity) throws BuildException { | public void setValidity(final String validity) throws BuildException { | ||||
| try { this.validity = Integer.parseInt(validity); } | |||||
| catch(final NumberFormatException nfe) | |||||
| { | |||||
| throw new BuildException( "Validity attribute should be a integer" ); | |||||
| try { | |||||
| this.validity = Integer.parseInt(validity); | |||||
| } catch (final NumberFormatException nfe) { | |||||
| throw new BuildException("Validity attribute should be a integer"); | |||||
| } | } | ||||
| } | } | ||||
| @@ -245,20 +245,20 @@ public class GenerateKey extends Task { | |||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| if (Project.getJavaVersion().equals(Project.JAVA_1_1)) { | if (Project.getJavaVersion().equals(Project.JAVA_1_1)) { | ||||
| throw new BuildException( "The genkey task is only available on JDK" | |||||
| + " versions 1.2 or greater" ); | |||||
| throw new BuildException("The genkey task is only available on JDK" | |||||
| + " versions 1.2 or greater"); | |||||
| } | } | ||||
| if (null == alias) { | if (null == alias) { | ||||
| throw new BuildException( "alias attribute must be set" ); | |||||
| throw new BuildException("alias attribute must be set"); | |||||
| } | } | ||||
| if (null == storepass) { | if (null == storepass) { | ||||
| throw new BuildException( "storepass attribute must be set" ); | |||||
| throw new BuildException("storepass attribute must be set"); | |||||
| } | } | ||||
| if (null == dname && null == expandedDname) { | if (null == dname && null == expandedDname) { | ||||
| throw new BuildException( "dname must be set" ); | |||||
| throw new BuildException("dname must be set"); | |||||
| } | } | ||||
| final StringBuffer sb = new StringBuffer(); | final StringBuffer sb = new StringBuffer(); | ||||
| @@ -337,13 +337,13 @@ public class GenerateKey extends Task { | |||||
| sb.append("\" "); | sb.append("\" "); | ||||
| } | } | ||||
| log("Generating Key for " + alias ); | |||||
| log("Generating Key for " + alias); | |||||
| final ExecTask cmd = (ExecTask) project.createTask("exec"); | final ExecTask cmd = (ExecTask) project.createTask("exec"); | ||||
| cmd.setExecutable("keytool"); | cmd.setExecutable("keytool"); | ||||
| Commandline.Argument arg=cmd.createArg(); | |||||
| Commandline.Argument arg = cmd.createArg(); | |||||
| arg.setLine(sb.toString()); | arg.setLine(sb.toString()); | ||||
| cmd.setFailonerror(true); | cmd.setFailonerror(true); | ||||
| cmd.setTaskName( getTaskName() ); | |||||
| cmd.setTaskName(getTaskName()); | |||||
| cmd.execute(); | cmd.execute(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -119,24 +119,24 @@ public class Get extends Task { | |||||
| log("Getting: " + source); | log("Getting: " + source); | ||||
| //set the timestamp to the file date. | //set the timestamp to the file date. | ||||
| long timestamp=0; | |||||
| long timestamp = 0; | |||||
| boolean hasTimestamp=false; | |||||
| if(useTimestamp && dest.exists()) { | |||||
| timestamp=dest.lastModified(); | |||||
| if (verbose) { | |||||
| Date t=new Date(timestamp); | |||||
| log("local file date : "+t.toString()); | |||||
| boolean hasTimestamp = false; | |||||
| if (useTimestamp && dest.exists()) { | |||||
| timestamp = dest.lastModified(); | |||||
| if (verbose) { | |||||
| Date t = new Date(timestamp); | |||||
| log("local file date : " + t.toString()); | |||||
| } | } | ||||
| hasTimestamp=true; | |||||
| hasTimestamp = true; | |||||
| } | } | ||||
| //set up the URL connection | //set up the URL connection | ||||
| URLConnection connection=source.openConnection(); | |||||
| URLConnection connection = source.openConnection(); | |||||
| //modify the headers | //modify the headers | ||||
| //NB: things like user authentication could go in here too. | //NB: things like user authentication could go in here too. | ||||
| if(useTimestamp && hasTimestamp) { | |||||
| if (useTimestamp && hasTimestamp) { | |||||
| connection.setIfModifiedSince(timestamp); | connection.setIfModifiedSince(timestamp); | ||||
| } | } | ||||
| // prepare Java 1.1 style credentials | // prepare Java 1.1 style credentials | ||||
| @@ -162,10 +162,11 @@ public class Get extends Task { | |||||
| //connect to the remote site (may take some time) | //connect to the remote site (may take some time) | ||||
| connection.connect(); | connection.connect(); | ||||
| //next test for a 304 result (HTTP only) | //next test for a 304 result (HTTP only) | ||||
| if(connection instanceof HttpURLConnection) { | |||||
| HttpURLConnection httpConnection=(HttpURLConnection)connection; | |||||
| if(httpConnection.getResponseCode() | |||||
| == HttpURLConnection.HTTP_NOT_MODIFIED) { | |||||
| if (connection instanceof HttpURLConnection) { | |||||
| HttpURLConnection httpConnection | |||||
| = (HttpURLConnection) connection; | |||||
| if (httpConnection.getResponseCode() | |||||
| == HttpURLConnection.HTTP_NOT_MODIFIED) { | |||||
| //not modified so no file download. just return | //not modified so no file download. just return | ||||
| //instead and trace out something so the user | //instead and trace out something so the user | ||||
| //doesn't think that the download happened when it | //doesn't think that the download happened when it | ||||
| @@ -174,8 +175,8 @@ public class Get extends Task { | |||||
| return; | return; | ||||
| } | } | ||||
| // test for 401 result (HTTP only) | // test for 401 result (HTTP only) | ||||
| if(httpConnection.getResponseCode() | |||||
| == HttpURLConnection.HTTP_UNAUTHORIZED) { | |||||
| if (httpConnection.getResponseCode() | |||||
| == HttpURLConnection.HTTP_UNAUTHORIZED) { | |||||
| log("Not authorized - check " + dest + " for details"); | log("Not authorized - check " + dest + " for details"); | ||||
| return; | return; | ||||
| } | } | ||||
| @@ -190,21 +191,21 @@ public class Get extends Task { | |||||
| FileOutputStream fos = new FileOutputStream(dest); | FileOutputStream fos = new FileOutputStream(dest); | ||||
| InputStream is=null; | |||||
| for( int i=0; i< 3 ; i++ ) { | |||||
| InputStream is = null; | |||||
| for (int i = 0; i < 3 ; i++) { | |||||
| try { | try { | ||||
| is = connection.getInputStream(); | is = connection.getInputStream(); | ||||
| break; | break; | ||||
| } catch( IOException ex ) { | |||||
| log( "Error opening connection " + ex ); | |||||
| } catch (IOException ex) { | |||||
| log("Error opening connection " + ex); | |||||
| } | } | ||||
| } | } | ||||
| if( is==null ) { | |||||
| log( "Can't get " + source + " to " + dest); | |||||
| if(ignoreErrors) { | |||||
| if (is == null) { | |||||
| log("Can't get " + source + " to " + dest); | |||||
| if (ignoreErrors) { | |||||
| return; | return; | ||||
| } | } | ||||
| throw new BuildException( "Can't get " + source + " to " + dest, | |||||
| throw new BuildException("Can't get " + source + " to " + dest, | |||||
| location); | location); | ||||
| } | } | ||||
| @@ -217,7 +218,7 @@ public class Get extends Task { | |||||
| System.out.print("."); | System.out.print("."); | ||||
| } | } | ||||
| } | } | ||||
| if(verbose) { | |||||
| if (verbose) { | |||||
| System.out.println(); | System.out.println(); | ||||
| } | } | ||||
| fos.close(); | fos.close(); | ||||
| @@ -226,23 +227,23 @@ public class Get extends Task { | |||||
| //if (and only if) the use file time option is set, then | //if (and only if) the use file time option is set, then | ||||
| //the saved file now has its timestamp set to that of the | //the saved file now has its timestamp set to that of the | ||||
| //downloaded file | //downloaded file | ||||
| if(useTimestamp) { | |||||
| long remoteTimestamp=connection.getLastModified(); | |||||
| if (useTimestamp) { | |||||
| long remoteTimestamp = connection.getLastModified(); | |||||
| if (verbose) { | if (verbose) { | ||||
| Date t=new Date(remoteTimestamp); | |||||
| log("last modified = "+t.toString() | |||||
| +((remoteTimestamp==0) | |||||
| Date t = new Date(remoteTimestamp); | |||||
| log("last modified = " + t.toString() | |||||
| + ((remoteTimestamp == 0) | |||||
| ? " - using current time instead" | ? " - using current time instead" | ||||
| : "")); | : "")); | ||||
| } | } | ||||
| if(remoteTimestamp!=0) { | |||||
| if (remoteTimestamp != 0) { | |||||
| FileUtils.newFileUtils() | FileUtils.newFileUtils() | ||||
| .setFileLastModified(dest, remoteTimestamp); | .setFileLastModified(dest, remoteTimestamp); | ||||
| } | } | ||||
| } | } | ||||
| } catch (IOException ioe) { | } catch (IOException ioe) { | ||||
| log("Error getting " + source + " to " + dest ); | |||||
| if(ignoreErrors) { | |||||
| log("Error getting " + source + " to " + dest); | |||||
| if (ignoreErrors) { | |||||
| return; | return; | ||||
| } | } | ||||
| throw new BuildException(ioe, location); | throw new BuildException(ioe, location); | ||||
| @@ -352,67 +353,67 @@ public class Get extends Task { | |||||
| '4', '5', '6', '7', '8', '9', '+', '/' }; // 56 to 63 | '4', '5', '6', '7', '8', '9', '+', '/' }; // 56 to 63 | ||||
| public String encode ( String s ) | |||||
| public String encode(String s) | |||||
| { | { | ||||
| return encode ( s.getBytes ( ) ); | |||||
| return encode (s.getBytes()); | |||||
| } | } | ||||
| public String encode ( byte [ ] octetString ) | |||||
| public String encode(byte[ ] octetString) | |||||
| { | { | ||||
| int bits24; | int bits24; | ||||
| int bits6; | int bits6; | ||||
| char [ ] out | char [ ] out | ||||
| = new char [ ( ( octetString.length - 1 ) / 3 + 1 ) * 4 ]; | |||||
| = new char[((octetString.length - 1) / 3 + 1) * 4]; | |||||
| int outIndex = 0; | int outIndex = 0; | ||||
| int i = 0; | |||||
| int i = 0; | |||||
| while ( ( i + 3 ) <= octetString.length ) { | |||||
| while ((i + 3) <= octetString.length) { | |||||
| // store the octets | // store the octets | ||||
| bits24=( octetString [ i++ ] & 0xFF ) << 16; | |||||
| bits24 |=( octetString [ i++ ] & 0xFF ) << 8; | |||||
| bits6=( bits24 & 0x00FC0000 )>> 18; | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits6 = ( bits24 & 0x0003F000 ) >> 12; | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits6 = ( bits24 & 0x00000FC0 ) >> 6; | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits6 = ( bits24 & 0x0000003F ); | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits24 = (octetString[i++] & 0xFF) << 16; | |||||
| bits24 |= (octetString[i++] & 0xFF) << 8; | |||||
| bits6 = (bits24 & 0x00FC0000) >> 18; | |||||
| out[outIndex++] = alphabet[bits6]; | |||||
| bits6 = (bits24 & 0x0003F000) >> 12; | |||||
| out[outIndex++] = alphabet[bits6]; | |||||
| bits6 = (bits24 & 0x00000FC0) >> 6; | |||||
| out[outIndex++] = alphabet[bits6]; | |||||
| bits6 = (bits24 & 0x0000003F); | |||||
| out[outIndex++] = alphabet[bits6]; | |||||
| } | } | ||||
| if ( octetString.length - i == 2 ) | |||||
| if (octetString.length - i == 2) | |||||
| { | { | ||||
| // store the octets | // store the octets | ||||
| bits24 = ( octetString [ i ] & 0xFF ) << 16; | |||||
| bits24 |=( octetString [ i + 1 ] & 0xFF ) << 8; | |||||
| bits6=( bits24 & 0x00FC0000 )>> 18; | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits6 = ( bits24 & 0x0003F000 ) >> 12; | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits6 = ( bits24 & 0x00000FC0 ) >> 6; | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits24 = (octetString[i] & 0xFF) << 16; | |||||
| bits24 |= (octetString[i + 1] & 0xFF) << 8; | |||||
| bits6 = (bits24 & 0x00FC0000) >> 18; | |||||
| out[outIndex++] = alphabet[bits6]; | |||||
| bits6 = (bits24 & 0x0003F000) >> 12; | |||||
| out[outIndex++] = alphabet[bits6]; | |||||
| bits6 = (bits24 & 0x00000FC0) >> 6; | |||||
| out[outIndex++] = alphabet[bits6]; | |||||
| // padding | // padding | ||||
| out [ outIndex++ ] = '='; | |||||
| out[outIndex++] = '='; | |||||
| } | } | ||||
| else if ( octetString.length - i == 1 ) | |||||
| else if (octetString.length - i == 1) | |||||
| { | { | ||||
| // store the octets | // store the octets | ||||
| bits24 = ( octetString [ i ] & 0xFF ) << 16; | |||||
| bits6=( bits24 & 0x00FC0000 )>> 18; | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits6 = ( bits24 & 0x0003F000 ) >> 12; | |||||
| out [ outIndex++ ] = alphabet [ bits6 ]; | |||||
| bits24 = (octetString[i] & 0xFF) << 16; | |||||
| bits6 = (bits24 & 0x00FC0000) >> 18; | |||||
| out[outIndex++] = alphabet[bits6]; | |||||
| bits6 = (bits24 & 0x0003F000) >> 12; | |||||
| out[outIndex++] = alphabet[ bits6 ]; | |||||
| // padding | // padding | ||||
| out [ outIndex++ ] = '='; | |||||
| out [ outIndex++ ] = '='; | |||||
| out[outIndex++] = '='; | |||||
| out[outIndex++] = '='; | |||||
| } | } | ||||
| return new String ( out ); | |||||
| return new String(out); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -214,7 +214,7 @@ public class Jar extends Zip { | |||||
| public void setFilesetmanifest(FilesetManifestConfig config) { | public void setFilesetmanifest(FilesetManifestConfig config) { | ||||
| String filesetManifestConfig = config.getValue(); | String filesetManifestConfig = config.getValue(); | ||||
| mergeManifests = ! "skip".equals(filesetManifestConfig); | |||||
| mergeManifests = !("skip".equals(filesetManifestConfig)); | |||||
| mergeManifestsMain = "merge".equals(filesetManifestConfig); | mergeManifestsMain = "merge".equals(filesetManifestConfig); | ||||
| } | } | ||||
| @@ -239,28 +239,28 @@ public class Jar extends Zip { | |||||
| manifest = getManifest(manifestFile); | manifest = getManifest(manifestFile); | ||||
| finalManifest.merge(filesetManifest); | finalManifest.merge(filesetManifest); | ||||
| finalManifest.merge(configuredManifest); | finalManifest.merge(configuredManifest); | ||||
| finalManifest.merge(manifest, ! mergeManifestsMain); | |||||
| finalManifest.merge(manifest, !mergeManifestsMain); | |||||
| } | } | ||||
| else if (configuredManifest != null) { | else if (configuredManifest != null) { | ||||
| // configuredManifest is the final merge | // configuredManifest is the final merge | ||||
| finalManifest.merge(filesetManifest); | finalManifest.merge(filesetManifest); | ||||
| finalManifest.merge(configuredManifest, | finalManifest.merge(configuredManifest, | ||||
| ! mergeManifestsMain); | |||||
| !mergeManifestsMain); | |||||
| } | } | ||||
| else if (filesetManifest != null) { | else if (filesetManifest != null) { | ||||
| // filesetManifest is the final (and only) merge | // filesetManifest is the final (and only) merge | ||||
| finalManifest.merge(filesetManifest, ! mergeManifestsMain); | |||||
| finalManifest.merge(filesetManifest, !mergeManifestsMain); | |||||
| } | } | ||||
| } else { | } else { | ||||
| // manifest is the final merge | // manifest is the final merge | ||||
| finalManifest.merge(filesetManifest); | finalManifest.merge(filesetManifest); | ||||
| finalManifest.merge(configuredManifest); | finalManifest.merge(configuredManifest); | ||||
| finalManifest.merge(manifest, ! mergeManifestsMain); | |||||
| finalManifest.merge(manifest, !mergeManifestsMain); | |||||
| } | } | ||||
| for (Enumeration e = finalManifest.getWarnings(); | for (Enumeration e = finalManifest.getWarnings(); | ||||
| e.hasMoreElements(); ) { | |||||
| log("Manifest warning: " + (String)e.nextElement(), | |||||
| e.hasMoreElements();) { | |||||
| log("Manifest warning: " + (String) e.nextElement(), | |||||
| Project.MSG_WARN); | Project.MSG_WARN); | ||||
| } | } | ||||
| @@ -325,7 +325,7 @@ public class Jar extends Zip { | |||||
| // since it will be read into a hashtable by the classloader. | // since it will be read into a hashtable by the classloader. | ||||
| Enumeration enum = addedDirs.keys(); | Enumeration enum = addedDirs.keys(); | ||||
| while (enum.hasMoreElements()) { | while (enum.hasMoreElements()) { | ||||
| String dir = (String)enum.nextElement(); | |||||
| String dir = (String) enum.nextElement(); | |||||
| // try to be smart, not to be fooled by a weird directory name | // try to be smart, not to be fooled by a weird directory name | ||||
| // @fixme do we need to check for directories starting by ./ ? | // @fixme do we need to check for directories starting by ./ ? | ||||
| @@ -338,7 +338,7 @@ public class Jar extends Zip { | |||||
| // looks like nothing from META-INF should be added | // looks like nothing from META-INF should be added | ||||
| // and the check is not case insensitive. | // and the check is not case insensitive. | ||||
| // see sun.misc.JarIndex | // see sun.misc.JarIndex | ||||
| if ( dir.startsWith("META-INF") ){ | |||||
| if (dir.startsWith("META-INF")) { | |||||
| continue; | continue; | ||||
| } | } | ||||
| // name newline | // name newline | ||||
| @@ -106,7 +106,7 @@ public class Java extends Task { | |||||
| try { | try { | ||||
| if ((err = executeJava()) != 0) { | if ((err = executeJava()) != 0) { | ||||
| if (failOnError) { | if (failOnError) { | ||||
| throw new BuildException("Java returned: "+err, location); | |||||
| throw new BuildException("Java returned: " + err, location); | |||||
| } else { | } else { | ||||
| log("Java Result: " + err, Project.MSG_ERR); | log("Java Result: " + err, Project.MSG_ERR); | ||||
| } | } | ||||
| @@ -207,7 +207,7 @@ public class Java extends Task { | |||||
| * set the jar name... | * set the jar name... | ||||
| */ | */ | ||||
| public void setJar(File jarfile) throws BuildException { | public void setJar(File jarfile) throws BuildException { | ||||
| if ( cmdl.getClassname() != null ){ | |||||
| if (cmdl.getClassname() != null){ | |||||
| throw new BuildException("Cannot use 'jar' and 'classname' " | throw new BuildException("Cannot use 'jar' and 'classname' " | ||||
| + "attributes in same command."); | + "attributes in same command."); | ||||
| } | } | ||||
| @@ -218,7 +218,7 @@ public class Java extends Task { | |||||
| * Set the class name. | * Set the class name. | ||||
| */ | */ | ||||
| public void setClassname(String s) throws BuildException { | public void setClassname(String s) throws BuildException { | ||||
| if ( cmdl.getJar() != null ){ | |||||
| if (cmdl.getJar() != null){ | |||||
| throw new BuildException("Cannot use 'jar' and 'classname' " | throw new BuildException("Cannot use 'jar' and 'classname' " | ||||
| + "attributes in same command"); | + "attributes in same command"); | ||||
| } | } | ||||
| @@ -431,7 +431,7 @@ public class Java extends Task { | |||||
| dir = project.getBaseDir(); | dir = project.getBaseDir(); | ||||
| } else if (!dir.exists() || !dir.isDirectory()) { | } else if (!dir.exists() || !dir.isDirectory()) { | ||||
| throw new BuildException(dir.getAbsolutePath() | throw new BuildException(dir.getAbsolutePath() | ||||
| +" is not a valid directory", | |||||
| + " is not a valid directory", | |||||
| location); | location); | ||||
| } | } | ||||
| @@ -439,8 +439,8 @@ public class Java extends Task { | |||||
| String[] environment = env.getVariables(); | String[] environment = env.getVariables(); | ||||
| if (environment != null) { | if (environment != null) { | ||||
| for (int i=0; i<environment.length; i++) { | |||||
| log("Setting environment variable: "+environment[i], | |||||
| for (int i = 0; i < environment.length; i++) { | |||||
| log("Setting environment variable: " + environment[i], | |||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| } | } | ||||
| } | } | ||||
| @@ -450,8 +450,8 @@ public class Java extends Task { | |||||
| exe.setCommandline(command); | exe.setCommandline(command); | ||||
| try { | try { | ||||
| int rc = exe.execute(); | int rc = exe.execute(); | ||||
| if(exe.killedProcess()) { | |||||
| log("Timeout: killed the sub-process",Project.MSG_WARN); | |||||
| if (exe.killedProcess()) { | |||||
| log("Timeout: killed the sub-process", Project.MSG_WARN); | |||||
| } | } | ||||
| return rc; | return rc; | ||||
| } catch (IOException e) { | } catch (IOException e) { | ||||
| @@ -473,7 +473,7 @@ public class Java extends Task { | |||||
| protected void run(String classname, Vector args) throws BuildException { | protected void run(String classname, Vector args) throws BuildException { | ||||
| CommandlineJava cmdj = new CommandlineJava(); | CommandlineJava cmdj = new CommandlineJava(); | ||||
| cmdj.setClassname(classname); | cmdj.setClassname(classname); | ||||
| for (int i=0; i<args.size(); i++) { | |||||
| for (int i = 0; i < args.size(); i++) { | |||||
| cmdj.createArgument().setValue((String) args.elementAt(i)); | cmdj.createArgument().setValue((String) args.elementAt(i)); | ||||
| } | } | ||||
| run(cmdj); | run(cmdj); | ||||
| @@ -518,7 +518,7 @@ public class Javac extends MatchingTask { | |||||
| /** | /** | ||||
| * Include ant's own classpath in this task's classpath? | * Include ant's own classpath in this task's classpath? | ||||
| */ | */ | ||||
| public void setIncludeantruntime( boolean include ) { | |||||
| public void setIncludeantruntime(boolean include) { | |||||
| includeAntRuntime = include; | includeAntRuntime = include; | ||||
| } | } | ||||
| @@ -534,7 +534,7 @@ public class Javac extends MatchingTask { | |||||
| * Sets whether or not to include the java runtime libraries to this | * Sets whether or not to include the java runtime libraries to this | ||||
| * task's classpath. | * task's classpath. | ||||
| */ | */ | ||||
| public void setIncludejavaruntime( boolean include ) { | |||||
| public void setIncludejavaruntime(boolean include) { | |||||
| includeJavaRuntime = include; | includeJavaRuntime = include; | ||||
| } | } | ||||
| @@ -615,12 +615,11 @@ public class Javac extends MatchingTask { | |||||
| public String[] getCurrentCompilerArgs() { | public String[] getCurrentCompilerArgs() { | ||||
| Vector args = new Vector(); | Vector args = new Vector(); | ||||
| for (Enumeration enum = implementationSpecificArgs.elements(); | for (Enumeration enum = implementationSpecificArgs.elements(); | ||||
| enum.hasMoreElements(); | |||||
| ) { | |||||
| enum.hasMoreElements();) { | |||||
| ImplementationSpecificArgument arg = | ImplementationSpecificArgument arg = | ||||
| ((ImplementationSpecificArgument) enum.nextElement()); | ((ImplementationSpecificArgument) enum.nextElement()); | ||||
| String[] curr = arg.getParts(); | String[] curr = arg.getParts(); | ||||
| for (int i=0; i<curr.length; i++) { | |||||
| for (int i = 0; i < curr.length; i++) { | |||||
| args.addElement(curr[i]); | args.addElement(curr[i]); | ||||
| } | } | ||||
| } | } | ||||
| @@ -639,7 +638,7 @@ public class Javac extends MatchingTask { | |||||
| // scan source directories and dest directory to build up | // scan source directories and dest directory to build up | ||||
| // compile lists | // compile lists | ||||
| String[] list = src.list(); | String[] list = src.list(); | ||||
| for (int i=0; i<list.length; i++) { | |||||
| for (int i = 0; i < list.length; i++) { | |||||
| File srcDir = project.resolveFile(list[i]); | File srcDir = project.resolveFile(list[i]); | ||||
| if (!srcDir.exists()) { | if (!srcDir.exists()) { | ||||
| throw new BuildException("srcdir \"" | throw new BuildException("srcdir \"" | ||||
| @@ -792,7 +791,7 @@ public class Javac extends MatchingTask { | |||||
| + (destDir != null ? " to " + destDir : "")); | + (destDir != null ? " to " + destDir : "")); | ||||
| if (listFiles) { | if (listFiles) { | ||||
| for (int i=0 ; i < compileList.length ; i++) | |||||
| for (int i = 0 ; i < compileList.length ; i++) | |||||
| { | { | ||||
| String filename = compileList[i].getAbsolutePath(); | String filename = compileList[i].getAbsolutePath(); | ||||
| log(filename) ; | log(filename) ; | ||||
| @@ -306,9 +306,9 @@ public class Javadoc extends Task { | |||||
| } | } | ||||
| public void setMaxmemory(String max){ | public void setMaxmemory(String max){ | ||||
| if(javadoc1){ | |||||
| if (javadoc1) { | |||||
| cmd.createArgument().setValue("-J-mx" + max); | cmd.createArgument().setValue("-J-mx" + max); | ||||
| } else{ | |||||
| } else { | |||||
| cmd.createArgument().setValue("-J-Xmx" + max); | cmd.createArgument().setValue("-J-Xmx" + max); | ||||
| } | } | ||||
| } | } | ||||
| @@ -704,17 +704,17 @@ public class Javadoc extends Task { | |||||
| */ | */ | ||||
| public class TagArgument { | public class TagArgument { | ||||
| /** Name of the tag. */ | /** Name of the tag. */ | ||||
| private String name=null; | |||||
| private String name = null; | |||||
| /** Description of the tag to place in the JavaDocs. */ | /** Description of the tag to place in the JavaDocs. */ | ||||
| private String description=null; | |||||
| private String description = null; | |||||
| /** Whether or not the tag is enabled. */ | /** Whether or not the tag is enabled. */ | ||||
| private boolean enabled=true; | |||||
| private boolean enabled = true; | |||||
| /** | /** | ||||
| * Scope string of the tag. This will form the middle | * Scope string of the tag. This will form the middle | ||||
| * argument of the -tag parameter when the tag is enabled | * argument of the -tag parameter when the tag is enabled | ||||
| * (with an X prepended for and is parsed from human-readable form. | * (with an X prepended for and is parsed from human-readable form. | ||||
| */ | */ | ||||
| private String scope="a"; | |||||
| private String scope = "a"; | |||||
| /** Sole constructor. */ | /** Sole constructor. */ | ||||
| public TagArgument () { | public TagArgument () { | ||||
| @@ -727,7 +727,7 @@ public class Javadoc extends Task { | |||||
| * Must not be <code>null</code> or empty. | * Must not be <code>null</code> or empty. | ||||
| */ | */ | ||||
| public void setName (String name) { | public void setName (String name) { | ||||
| this.name=name; | |||||
| this.name = name; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -738,7 +738,7 @@ public class Javadoc extends Task { | |||||
| * Must not be <code>null</code> or empty. | * Must not be <code>null</code> or empty. | ||||
| */ | */ | ||||
| public void setDescription (String description) { | public void setDescription (String description) { | ||||
| this.description=description; | |||||
| this.description = description; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -758,12 +758,12 @@ public class Javadoc extends Task { | |||||
| * specified. | * specified. | ||||
| */ | */ | ||||
| public void setScope (String verboseScope) throws BuildException { | public void setScope (String verboseScope) throws BuildException { | ||||
| verboseScope=verboseScope.toLowerCase (Locale.US); | |||||
| verboseScope = verboseScope.toLowerCase(Locale.US); | |||||
| boolean[] elements=new boolean[SCOPE_ELEMENTS.length]; | |||||
| boolean[] elements = new boolean[SCOPE_ELEMENTS.length]; | |||||
| boolean gotAll=false; | |||||
| boolean gotNotAll=false; | |||||
| boolean gotAll = false; | |||||
| boolean gotNotAll = false; | |||||
| // Go through the tokens one at a time, updating the | // Go through the tokens one at a time, updating the | ||||
| // elements array and issuing warnings where appropriate. | // elements array and issuing warnings where appropriate. | ||||
| @@ -775,15 +775,15 @@ public class Javadoc extends Task { | |||||
| getProject().log ("Repeated tag scope element: all", | getProject().log ("Repeated tag scope element: all", | ||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| } | } | ||||
| gotAll=true; | |||||
| gotAll = true; | |||||
| } | } | ||||
| else { | else { | ||||
| int i; | int i; | ||||
| for (i=0; i < SCOPE_ELEMENTS.length; i++) { | |||||
| for (i = 0; i < SCOPE_ELEMENTS.length; i++) { | |||||
| if (next.equals (SCOPE_ELEMENTS[i])) | if (next.equals (SCOPE_ELEMENTS[i])) | ||||
| break; | break; | ||||
| } | } | ||||
| if (i==SCOPE_ELEMENTS.length) { | |||||
| if (i == SCOPE_ELEMENTS.length) { | |||||
| throw new BuildException ("Unrecognised scope element: " | throw new BuildException ("Unrecognised scope element: " | ||||
| + next); | + next); | ||||
| } | } | ||||
| @@ -792,8 +792,8 @@ public class Javadoc extends Task { | |||||
| getProject().log ("Repeated tag scope element: " | getProject().log ("Repeated tag scope element: " | ||||
| + next, Project.MSG_VERBOSE); | + next, Project.MSG_VERBOSE); | ||||
| } | } | ||||
| elements[i]=true; | |||||
| gotNotAll=true; | |||||
| elements[i] = true; | |||||
| gotNotAll = true; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -807,16 +807,16 @@ public class Javadoc extends Task { | |||||
| + "parameter."); | + "parameter."); | ||||
| } | } | ||||
| if (gotAll) { | if (gotAll) { | ||||
| this.scope="a"; | |||||
| this.scope = "a"; | |||||
| } | } | ||||
| else { | else { | ||||
| StringBuffer buff = new StringBuffer (elements.length); | StringBuffer buff = new StringBuffer (elements.length); | ||||
| for (int i=0; i < elements.length; i++) { | |||||
| for (int i = 0; i < elements.length; i++) { | |||||
| if (elements[i]) { | if (elements[i]) { | ||||
| buff.append (SCOPE_ELEMENTS[i].charAt(0)); | buff.append (SCOPE_ELEMENTS[i].charAt(0)); | ||||
| } | } | ||||
| } | } | ||||
| this.scope=buff.toString(); | |||||
| this.scope = buff.toString(); | |||||
| } | } | ||||
| } | } | ||||
| @@ -826,7 +826,7 @@ public class Javadoc extends Task { | |||||
| * @param enabled Whether or not this tag is enabled. | * @param enabled Whether or not this tag is enabled. | ||||
| */ | */ | ||||
| public void setEnabled (boolean enabled) { | public void setEnabled (boolean enabled) { | ||||
| this.enabled=enabled; | |||||
| this.enabled = enabled; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -836,15 +836,16 @@ public class Javadoc extends Task { | |||||
| * is <code>null</code> or empty. | * is <code>null</code> or empty. | ||||
| */ | */ | ||||
| public String getParameter () throws BuildException { | public String getParameter () throws BuildException { | ||||
| if (name==null || name.equals ("")) { | |||||
| if (name == null || name.equals("")) { | |||||
| throw new BuildException ("No name specified for custom tag."); | throw new BuildException ("No name specified for custom tag."); | ||||
| } | } | ||||
| if (description==null || description.equals ("")){ | |||||
| if (description == null || description.equals("")){ | |||||
| throw new BuildException | throw new BuildException | ||||
| ("No description specified for custom tag "+name); | |||||
| ("No description specified for custom tag " + name); | |||||
| } | } | ||||
| return name+":"+(enabled ? "" : "X")+scope+":"+description; | |||||
| return name + ":" + (enabled ? "" : "X") | |||||
| + scope + ":" + description; | |||||
| } | } | ||||
| } | } | ||||
| @@ -890,10 +891,10 @@ public class Javadoc extends Task { | |||||
| public String getPackages() { | public String getPackages() { | ||||
| StringBuffer p = new StringBuffer(); | StringBuffer p = new StringBuffer(); | ||||
| for (int i = 0; i < packages.size(); i++) { | for (int i = 0; i < packages.size(); i++) { | ||||
| if ( i > 0 ) { | |||||
| p.append( ":" ); | |||||
| if (i > 0) { | |||||
| p.append(":"); | |||||
| } | } | ||||
| p.append( packages.elementAt(i).toString() ); | |||||
| p.append(packages.elementAt(i).toString()); | |||||
| } | } | ||||
| return p.toString(); | return p.toString(); | ||||
| } | } | ||||
| @@ -936,7 +937,7 @@ public class Javadoc extends Task { | |||||
| log("Generating Javadoc", Project.MSG_INFO); | log("Generating Javadoc", Project.MSG_INFO); | ||||
| Commandline toExecute = (Commandline)cmd.clone(); | |||||
| Commandline toExecute = (Commandline) cmd.clone(); | |||||
| toExecute.setExecutable(JavaEnvUtils.getJdkExecutable("javadoc")); | toExecute.setExecutable(JavaEnvUtils.getJdkExecutable("javadoc")); | ||||
| // ------------------------------------------------ general javadoc arguments | // ------------------------------------------------ general javadoc arguments | ||||
| @@ -1011,7 +1012,7 @@ public class Javadoc extends Task { | |||||
| } | } | ||||
| for (Enumeration e = doclet.getParams(); | for (Enumeration e = doclet.getParams(); | ||||
| e.hasMoreElements();) { | e.hasMoreElements();) { | ||||
| DocletParam param = (DocletParam)e.nextElement(); | |||||
| DocletParam param = (DocletParam) e.nextElement(); | |||||
| if (param.getName() == null) { | if (param.getName() == null) { | ||||
| throw new BuildException("Doclet parameters must " | throw new BuildException("Doclet parameters must " | ||||
| + "have a name"); | + "have a name"); | ||||
| @@ -1032,8 +1033,8 @@ public class Javadoc extends Task { | |||||
| // add the links arguments | // add the links arguments | ||||
| if (links.size() != 0) { | if (links.size() != 0) { | ||||
| for (Enumeration e = links.elements(); e.hasMoreElements(); ) { | |||||
| LinkArgument la = (LinkArgument)e.nextElement(); | |||||
| for (Enumeration e = links.elements(); e.hasMoreElements();) { | |||||
| LinkArgument la = (LinkArgument) e.nextElement(); | |||||
| if (la.getHref() == null) { | if (la.getHref() == null) { | ||||
| throw new BuildException("Links must provide the URL " | throw new BuildException("Links must provide the URL " | ||||
| @@ -1100,8 +1101,8 @@ public class Javadoc extends Task { | |||||
| // add the group arguments | // add the group arguments | ||||
| if (groups.size() != 0) { | if (groups.size() != 0) { | ||||
| for (Enumeration e = groups.elements(); e.hasMoreElements(); ) { | |||||
| GroupArgument ga = (GroupArgument)e.nextElement(); | |||||
| for (Enumeration e = groups.elements(); e.hasMoreElements();) { | |||||
| GroupArgument ga = (GroupArgument) e.nextElement(); | |||||
| String title = ga.getTitle(); | String title = ga.getTitle(); | ||||
| String packages = ga.getPackages(); | String packages = ga.getPackages(); | ||||
| if (title == null || packages == null) { | if (title == null || packages == null) { | ||||
| @@ -1117,7 +1118,7 @@ public class Javadoc extends Task { | |||||
| // JavaDoc 1.4 parameters | // JavaDoc 1.4 parameters | ||||
| if (javadoc4) { | if (javadoc4) { | ||||
| for (Enumeration e = tags.elements(); e.hasMoreElements(); ) { | |||||
| for (Enumeration e = tags.elements(); e.hasMoreElements();) { | |||||
| Object element = e.nextElement(); | Object element = e.nextElement(); | ||||
| if (element instanceof TagArgument) { | if (element instanceof TagArgument) { | ||||
| TagArgument ta = (TagArgument) element; | TagArgument ta = (TagArgument) element; | ||||
| @@ -1244,7 +1245,7 @@ public class Javadoc extends Task { | |||||
| exe.setCommandline(toExecute.getCommandline()); | exe.setCommandline(toExecute.getCommandline()); | ||||
| int ret = exe.execute(); | int ret = exe.execute(); | ||||
| if (ret != 0 && failOnError) { | if (ret != 0 && failOnError) { | ||||
| throw new BuildException("Javadoc returned "+ret, location); | |||||
| throw new BuildException("Javadoc returned " + ret, location); | |||||
| } | } | ||||
| } catch (IOException e) { | } catch (IOException e) { | ||||
| throw new BuildException("Javadoc failed: " + e, e, location); | throw new BuildException("Javadoc failed: " + e, e, location); | ||||
| @@ -1273,7 +1274,7 @@ public class Javadoc extends Task { | |||||
| Vector packages, Vector excludePackages) { | Vector packages, Vector excludePackages) { | ||||
| log("Source path = " + sourcePath.toString(), Project.MSG_VERBOSE); | log("Source path = " + sourcePath.toString(), Project.MSG_VERBOSE); | ||||
| StringBuffer msg = new StringBuffer("Packages = "); | StringBuffer msg = new StringBuffer("Packages = "); | ||||
| for (int i=0; i<packages.size(); i++) { | |||||
| for (int i = 0; i < packages.size(); i++) { | |||||
| if (i > 0) { | if (i > 0) { | ||||
| msg.append(","); | msg.append(","); | ||||
| } | } | ||||
| @@ -1283,7 +1284,7 @@ public class Javadoc extends Task { | |||||
| msg.setLength(0); | msg.setLength(0); | ||||
| msg.append("Exclude Packages = "); | msg.append("Exclude Packages = "); | ||||
| for (int i=0; i<excludePackages.size(); i++) { | |||||
| for (int i = 0; i < excludePackages.size(); i++) { | |||||
| if (i > 0) { | if (i > 0) { | ||||
| msg.append(","); | msg.append(","); | ||||
| } | } | ||||
| @@ -1303,8 +1304,8 @@ public class Javadoc extends Task { | |||||
| Enumeration e = packages.elements(); | Enumeration e = packages.elements(); | ||||
| while (e.hasMoreElements()) { | while (e.hasMoreElements()) { | ||||
| String pkg = (String)e.nextElement(); | |||||
| pkg = pkg.replace('.','/'); | |||||
| String pkg = (String) e.nextElement(); | |||||
| pkg = pkg.replace('.', '/'); | |||||
| if (pkg.endsWith("*")) { | if (pkg.endsWith("*")) { | ||||
| pkg += "*"; | pkg += "*"; | ||||
| } | } | ||||
| @@ -1314,8 +1315,8 @@ public class Javadoc extends Task { | |||||
| e = excludePackages.elements(); | e = excludePackages.elements(); | ||||
| while (e.hasMoreElements()) { | while (e.hasMoreElements()) { | ||||
| String pkg = (String)e.nextElement(); | |||||
| pkg = pkg.replace('.','/'); | |||||
| String pkg = (String) e.nextElement(); | |||||
| pkg = pkg.replace('.', '/'); | |||||
| if (pkg.endsWith("*")) { | if (pkg.endsWith("*")) { | ||||
| pkg += "*"; | pkg += "*"; | ||||
| } | } | ||||
| @@ -1332,14 +1333,14 @@ public class Javadoc extends Task { | |||||
| packageListWriter = new PrintWriter(new FileWriter(tmpList)); | packageListWriter = new PrintWriter(new FileWriter(tmpList)); | ||||
| } | } | ||||
| for (int j=0; j<list.length; j++) { | |||||
| for (int j = 0; j < list.length; j++) { | |||||
| File source = project.resolveFile(list[j]); | File source = project.resolveFile(list[j]); | ||||
| fs.setDir(source); | fs.setDir(source); | ||||
| DirectoryScanner ds = fs.getDirectoryScanner(project); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
| String[] packageDirs = ds.getIncludedDirectories(); | String[] packageDirs = ds.getIncludedDirectories(); | ||||
| for (int i=0; i<packageDirs.length; i++) { | |||||
| for (int i = 0; i < packageDirs.length; i++) { | |||||
| File pd = new File(source, packageDirs[i]); | File pd = new File(source, packageDirs[i]); | ||||
| String[] files = pd.list(new FilenameFilter () { | String[] files = pd.list(new FilenameFilter () { | ||||
| public boolean accept(File dir1, String name) { | public boolean accept(File dir1, String name) { | ||||
| @@ -1352,7 +1353,7 @@ public class Javadoc extends Task { | |||||
| if (files.length > 0) { | if (files.length > 0) { | ||||
| String pkgDir = | String pkgDir = | ||||
| packageDirs[i].replace('/','.').replace('\\','.'); | |||||
| packageDirs[i].replace('/', '.').replace('\\', '.'); | |||||
| if (!addedPackages.contains(pkgDir)) { | if (!addedPackages.contains(pkgDir)) { | ||||
| if (useExternalFile) { | if (useExternalFile) { | ||||
| packageListWriter.println(pkgDir); | packageListWriter.println(pkgDir); | ||||
| @@ -84,7 +84,7 @@ public class Jikes { | |||||
| * @param jop - Parser to send jike's output to | * @param jop - Parser to send jike's output to | ||||
| * @param command - name of jikes executeable | * @param command - name of jikes executeable | ||||
| */ | */ | ||||
| protected Jikes(JikesOutputParser jop,String command, Project project) { | |||||
| protected Jikes(JikesOutputParser jop, String command, Project project) { | |||||
| super(); | super(); | ||||
| System.err.println("As of Ant 1.2 released in October 2000, the Jikes class"); | System.err.println("As of Ant 1.2 released in October 2000, the Jikes class"); | ||||
| @@ -116,7 +116,7 @@ public class Jikes { | |||||
| && args.length > 250) { | && args.length > 250) { | ||||
| PrintWriter out = null; | PrintWriter out = null; | ||||
| try { | try { | ||||
| tmpFile = new File("jikes"+(new Random(System.currentTimeMillis())).nextLong()); | |||||
| tmpFile = new File("jikes" + (new Random(System.currentTimeMillis())).nextLong()); | |||||
| out = new PrintWriter(new FileWriter(tmpFile)); | out = new PrintWriter(new FileWriter(tmpFile)); | ||||
| for (int i = 0; i < args.length; i++) { | for (int i = 0; i < args.length; i++) { | ||||
| out.println(args[i]); | out.println(args[i]); | ||||
| @@ -132,9 +132,9 @@ public class Jikes { | |||||
| } | } | ||||
| } | } | ||||
| } else { | } else { | ||||
| commandArray = new String[args.length+1]; | |||||
| commandArray = new String[args.length + 1]; | |||||
| commandArray[0] = command; | commandArray[0] = command; | ||||
| System.arraycopy(args,0,commandArray,1,args.length); | |||||
| System.arraycopy(args, 0, commandArray, 1, args.length); | |||||
| } | } | ||||
| // We assume, that everything jikes writes goes to | // We assume, that everything jikes writes goes to | ||||
| @@ -77,7 +77,8 @@ import java.io.InputStreamReader; | |||||
| public class JikesOutputParser implements ExecuteStreamHandler { | public class JikesOutputParser implements ExecuteStreamHandler { | ||||
| protected Task task; | protected Task task; | ||||
| protected boolean errorFlag = false; // no errors so far | protected boolean errorFlag = false; // no errors so far | ||||
| protected int errors,warnings; | |||||
| protected int errors; | |||||
| protected int warnings; | |||||
| protected boolean error = false; | protected boolean error = false; | ||||
| protected boolean emacsMode; | protected boolean emacsMode; | ||||
| @@ -182,7 +183,7 @@ public class JikesOutputParser implements ExecuteStreamHandler { | |||||
| private void setError(boolean err) { | private void setError(boolean err) { | ||||
| error = err; | error = err; | ||||
| if(error) { | |||||
| if (error) { | |||||
| errorFlag = true; | errorFlag = true; | ||||
| } | } | ||||
| } | } | ||||
| @@ -88,7 +88,7 @@ public class KeySubst extends Task { | |||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| log("!! KeySubst is deprecated. Use Filter + Copy instead. !!"); | log("!! KeySubst is deprecated. Use Filter + Copy instead. !!"); | ||||
| log("Performing Substitions"); | log("Performing Substitions"); | ||||
| if ( source == null || dest == null ) { | |||||
| if (source == null || dest == null) { | |||||
| log("Source and destinations must not be null"); | log("Source and destinations must not be null"); | ||||
| return; | return; | ||||
| } | } | ||||
| @@ -103,11 +103,11 @@ public class KeySubst extends Task { | |||||
| String newline = null; | String newline = null; | ||||
| line = br.readLine(); | line = br.readLine(); | ||||
| while (line != null) { | while (line != null) { | ||||
| if ( line.length() == 0 ) { | |||||
| if (line.length() == 0) { | |||||
| bw.newLine(); | bw.newLine(); | ||||
| } else { | } else { | ||||
| newline = KeySubst.replace ( line, replacements ); | |||||
| bw.write ( newline ); | |||||
| newline = KeySubst.replace(line, replacements); | |||||
| bw.write(newline); | |||||
| bw.newLine(); | bw.newLine(); | ||||
| } | } | ||||
| line = br.readLine(); | line = br.readLine(); | ||||
| @@ -173,7 +173,7 @@ public class KeySubst extends Task { | |||||
| String name = itok.nextToken(); | String name = itok.nextToken(); | ||||
| String value = itok.nextToken(); | String value = itok.nextToken(); | ||||
| replacements.put ( name, value ); | |||||
| replacements.put(name, value); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -181,14 +181,13 @@ public class KeySubst extends Task { | |||||
| public static void main(String[] args) | public static void main(String[] args) | ||||
| { | { | ||||
| try{ | |||||
| Hashtable hash = new Hashtable(); | |||||
| hash.put ( "VERSION", "1.0.3" ); | |||||
| hash.put ( "b", "ffff" ); | |||||
| System.out.println ( KeySubst.replace ( "$f ${VERSION} f ${b} jj $", | |||||
| hash ) ); | |||||
| }catch ( Exception e) | |||||
| { | |||||
| try { | |||||
| Hashtable hash = new Hashtable(); | |||||
| hash.put("VERSION", "1.0.3"); | |||||
| hash.put("b", "ffff"); | |||||
| System.out.println(KeySubst.replace("$f ${VERSION} f ${b} jj $", | |||||
| hash)); | |||||
| } catch (Exception e) { | |||||
| e.printStackTrace(); | e.printStackTrace(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -198,23 +197,23 @@ public class KeySubst extends Task { | |||||
| @return the string with the replacements in it. | @return the string with the replacements in it. | ||||
| */ | */ | ||||
| public static String replace ( String origString, Hashtable keys ) | |||||
| public static String replace(String origString, Hashtable keys) | |||||
| throws BuildException | throws BuildException | ||||
| { | { | ||||
| StringBuffer finalString=new StringBuffer(); | |||||
| int index=0; | |||||
| StringBuffer finalString = new StringBuffer(); | |||||
| int index = 0; | |||||
| int i = 0; | int i = 0; | ||||
| String key = null; | String key = null; | ||||
| while ((index = origString.indexOf("${", i)) > -1) { | while ((index = origString.indexOf("${", i)) > -1) { | ||||
| key = origString.substring(index + 2, origString.indexOf("}", | key = origString.substring(index + 2, origString.indexOf("}", | ||||
| index+3)); | |||||
| index + 3)); | |||||
| finalString.append (origString.substring(i, index)); | finalString.append (origString.substring(i, index)); | ||||
| if ( keys.containsKey ( key ) ) { | |||||
| if (keys.containsKey(key)) { | |||||
| finalString.append (keys.get(key)); | finalString.append (keys.get(key)); | ||||
| } else { | } else { | ||||
| finalString.append ( "${" ); | |||||
| finalString.append ( key ); | |||||
| finalString.append ( "}" ); | |||||
| finalString.append ("${"); | |||||
| finalString.append (key); | |||||
| finalString.append ("}"); | |||||
| } | } | ||||
| i = index + 3 + key.length(); | i = index + 3 + key.length(); | ||||
| } | } | ||||
| @@ -166,12 +166,13 @@ public final class LoadFile extends Task { | |||||
| FileInputStream fis = null; | FileInputStream fis = null; | ||||
| BufferedInputStream bis = null; | BufferedInputStream bis = null; | ||||
| Reader instream = null; | Reader instream = null; | ||||
| log("loading "+srcFile+" into property "+property,Project.MSG_VERBOSE); | |||||
| log("loading " + srcFile + " into property " + property, | |||||
| Project.MSG_VERBOSE); | |||||
| try { | try { | ||||
| final long len = srcFile.length(); | final long len = srcFile.length(); | ||||
| log("file size = "+len,Project.MSG_DEBUG); | |||||
| log("file size = " + len, Project.MSG_DEBUG); | |||||
| //discard most of really big files | //discard most of really big files | ||||
| final int size=(int) len; | |||||
| final int size = (int) len; | |||||
| //open up the file | //open up the file | ||||
| fis = new FileInputStream(srcFile); | fis = new FileInputStream(srcFile); | ||||
| bis = new BufferedInputStream(fis); | bis = new BufferedInputStream(fis); | ||||
| @@ -195,7 +196,7 @@ public final class LoadFile extends Task { | |||||
| project.setNewProperty(property, text); | project.setNewProperty(property, text); | ||||
| log("loaded " + text.length() + " characters", | log("loaded " + text.length() + " characters", | ||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| log(property+" := "+text,Project.MSG_DEBUG); | |||||
| log(property + " := " + text, Project.MSG_DEBUG); | |||||
| } | } | ||||
| } catch (final IOException ioe) { | } catch (final IOException ioe) { | ||||
| @@ -99,7 +99,7 @@ public class LogOutputStream extends OutputStream { | |||||
| * @param cc data to log (byte). | * @param cc data to log (byte). | ||||
| */ | */ | ||||
| public void write(int cc) throws IOException { | public void write(int cc) throws IOException { | ||||
| final byte c = (byte)cc; | |||||
| final byte c = (byte) cc; | |||||
| if ((c == '\n') || (c == '\r')) { | if ((c == '\n') || (c == '\r')) { | ||||
| if (!skip) { | if (!skip) { | ||||
| processBuffer(); | processBuffer(); | ||||
| @@ -152,7 +152,7 @@ public abstract class MatchingTask extends Task { | |||||
| while (tok.hasMoreTokens()) { | while (tok.hasMoreTokens()) { | ||||
| String pattern = tok.nextToken().trim(); | String pattern = tok.nextToken().trim(); | ||||
| if (pattern.length() > 0) { | if (pattern.length() > 0) { | ||||
| createInclude().setName(pattern+"/**"); | |||||
| createInclude().setName(pattern + "/**"); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -182,7 +182,7 @@ public abstract class MatchingTask extends Task { | |||||
| StringTokenizer tok = new StringTokenizer(ignoreString, ", ", | StringTokenizer tok = new StringTokenizer(ignoreString, ", ", | ||||
| false); | false); | ||||
| while (tok.hasMoreTokens()) { | while (tok.hasMoreTokens()) { | ||||
| createExclude().setName("**/"+tok.nextToken().trim()+"/**"); | |||||
| createExclude().setName("**/" + tok.nextToken().trim() + "/**"); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -120,14 +120,14 @@ public class Move extends Copy { | |||||
| } | } | ||||
| if (fileCopyMap.size() > 0) { // files to move | if (fileCopyMap.size() > 0) { // files to move | ||||
| log("Moving " + fileCopyMap.size() + " files to " + | log("Moving " + fileCopyMap.size() + " files to " + | ||||
| destDir.getAbsolutePath() ); | |||||
| destDir.getAbsolutePath()); | |||||
| Enumeration e = fileCopyMap.keys(); | Enumeration e = fileCopyMap.keys(); | ||||
| while (e.hasMoreElements()) { | while (e.hasMoreElements()) { | ||||
| String fromFile = (String) e.nextElement(); | String fromFile = (String) e.nextElement(); | ||||
| String toFile = (String) fileCopyMap.get(fromFile); | String toFile = (String) fileCopyMap.get(fromFile); | ||||
| if( fromFile.equals( toFile ) ) { | |||||
| if (fromFile.equals(toFile)) { | |||||
| log("Skipping self-move of " + fromFile, verbosity); | log("Skipping self-move of " + fromFile, verbosity); | ||||
| continue; | continue; | ||||
| } | } | ||||
| @@ -164,7 +164,7 @@ public class Move extends Copy { | |||||
| getFilterSets().elements(); | getFilterSets().elements(); | ||||
| filterEnum.hasMoreElements();) { | filterEnum.hasMoreElements();) { | ||||
| executionFilters | executionFilters | ||||
| .addFilterSet((FilterSet)filterEnum | |||||
| .addFilterSet((FilterSet) filterEnum | |||||
| .nextElement()); | .nextElement()); | ||||
| } | } | ||||
| getFileUtils().copyFile(f, d, executionFilters, | getFileUtils().copyFile(f, d, executionFilters, | ||||
| @@ -194,7 +194,7 @@ public class Move extends Copy { | |||||
| Enumeration e = dirCopyMap.elements(); | Enumeration e = dirCopyMap.elements(); | ||||
| int count = 0; | int count = 0; | ||||
| while (e.hasMoreElements()) { | while (e.hasMoreElements()) { | ||||
| File d = new File((String)e.nextElement()); | |||||
| File d = new File((String) e.nextElement()); | |||||
| if (!d.exists()) { | if (!d.exists()) { | ||||
| if (!d.mkdirs()) { | if (!d.mkdirs()) { | ||||
| log("Unable to create directory " | log("Unable to create directory " | ||||
| @@ -214,7 +214,7 @@ public class Move extends Copy { | |||||
| if (filesets.size() > 0) { | if (filesets.size() > 0) { | ||||
| Enumeration e = filesets.elements(); | Enumeration e = filesets.elements(); | ||||
| while (e.hasMoreElements()) { | while (e.hasMoreElements()) { | ||||
| FileSet fs = (FileSet)e.nextElement(); | |||||
| FileSet fs = (FileSet) e.nextElement(); | |||||
| File dir = fs.getDir(project); | File dir = fs.getDir(project); | ||||
| if (okToDelete(dir)) { | if (okToDelete(dir)) { | ||||
| @@ -107,10 +107,10 @@ public abstract class Pack extends Task { | |||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| validate(); | validate(); | ||||
| if(zipFile.lastModified() < source.lastModified()){ | |||||
| if (zipFile.lastModified() < source.lastModified()) { | |||||
| log("Building: " + zipFile.getAbsolutePath()); | log("Building: " + zipFile.getAbsolutePath()); | ||||
| pack(); | pack(); | ||||
| }else{ | |||||
| } else { | |||||
| log("Nothing to do: " + zipFile.getAbsolutePath() + | log("Nothing to do: " + zipFile.getAbsolutePath() + | ||||
| " is up to date."); | " is up to date."); | ||||
| } | } | ||||
| @@ -127,7 +127,7 @@ class ProcessDestroyer | |||||
| */ | */ | ||||
| public void run() | public void run() | ||||
| { | { | ||||
| synchronized(processes) | |||||
| synchronized (processes) | |||||
| { | { | ||||
| Enumeration e = processes.elements(); | Enumeration e = processes.elements(); | ||||
| while (e.hasMoreElements()) | while (e.hasMoreElements()) | ||||
| @@ -255,7 +255,7 @@ public class Property extends Task { | |||||
| log("Unable to find property file: " + file.getAbsolutePath(), | log("Unable to find property file: " + file.getAbsolutePath(), | ||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| } | } | ||||
| } catch(IOException ex) { | |||||
| } catch (IOException ex) { | |||||
| throw new BuildException(ex, location); | throw new BuildException(ex, location); | ||||
| } | } | ||||
| } | } | ||||
| @@ -297,15 +297,15 @@ public class Property extends Task { | |||||
| } | } | ||||
| protected void loadEnvironment( String prefix ) { | |||||
| protected void loadEnvironment(String prefix) { | |||||
| Properties props = new Properties(); | Properties props = new Properties(); | ||||
| if (!prefix.endsWith(".")) { | if (!prefix.endsWith(".")) { | ||||
| prefix += "."; | prefix += "."; | ||||
| } | } | ||||
| log("Loading Environment " + prefix, Project.MSG_VERBOSE); | log("Loading Environment " + prefix, Project.MSG_VERBOSE); | ||||
| Vector osEnv = Execute.getProcEnvironment(); | Vector osEnv = Execute.getProcEnvironment(); | ||||
| for (Enumeration e = osEnv.elements(); e.hasMoreElements(); ) { | |||||
| String entry = (String)e.nextElement(); | |||||
| for (Enumeration e = osEnv.elements(); e.hasMoreElements();) { | |||||
| String entry = (String) e.nextElement(); | |||||
| int pos = entry.indexOf('='); | int pos = entry.indexOf('='); | ||||
| if (pos == -1) { | if (pos == -1) { | ||||
| log("Ignoring: " + entry, Project.MSG_WARN); | log("Ignoring: " + entry, Project.MSG_WARN); | ||||
| @@ -335,7 +335,7 @@ public class Property extends Task { | |||||
| } | } | ||||
| protected void addProperty(String n, String v) { | protected void addProperty(String n, String v) { | ||||
| if( userProperty ) { | |||||
| if (userProperty) { | |||||
| if (project.getUserProperty(n) == null) { | if (project.getUserProperty(n) == null) { | ||||
| project.setUserProperty(n, v); | project.setUserProperty(n, v); | ||||
| } else { | } else { | ||||
| @@ -348,7 +348,7 @@ public class Property extends Task { | |||||
| private void resolveAllProperties(Properties props) throws BuildException { | private void resolveAllProperties(Properties props) throws BuildException { | ||||
| for (Enumeration e = props.keys(); e.hasMoreElements();) { | for (Enumeration e = props.keys(); e.hasMoreElements();) { | ||||
| String name = (String)e.nextElement(); | |||||
| String name = (String) e.nextElement(); | |||||
| String value = props.getProperty(name); | String value = props.getProperty(name); | ||||
| boolean resolved = false; | boolean resolved = false; | ||||
| @@ -364,9 +364,9 @@ public class Property extends Task { | |||||
| Enumeration i = fragments.elements(); | Enumeration i = fragments.elements(); | ||||
| Enumeration j = propertyRefs.elements(); | Enumeration j = propertyRefs.elements(); | ||||
| while (i.hasMoreElements()) { | while (i.hasMoreElements()) { | ||||
| String fragment = (String)i.nextElement(); | |||||
| String fragment = (String) i.nextElement(); | |||||
| if (fragment == null) { | if (fragment == null) { | ||||
| String propertyName = (String)j.nextElement(); | |||||
| String propertyName = (String) j.nextElement(); | |||||
| if (propertyName.equals(name)) { | if (propertyName.equals(name)) { | ||||
| throw new BuildException("Property " + name | throw new BuildException("Property " + name | ||||
| + " was circularly " | + " was circularly " | ||||
| @@ -110,10 +110,10 @@ public class PumpStreamHandler implements ExecuteStreamHandler { | |||||
| public void stop() { | public void stop() { | ||||
| try { | try { | ||||
| inputThread.join(); | inputThread.join(); | ||||
| } catch(InterruptedException e) {} | |||||
| } catch (InterruptedException e) {} | |||||
| try { | try { | ||||
| errorThread.join(); | errorThread.join(); | ||||
| } catch(InterruptedException e) {} | |||||
| } catch (InterruptedException e) {} | |||||
| try { | try { | ||||
| err.flush(); | err.flush(); | ||||
| } catch (IOException e) {} | } catch (IOException e) {} | ||||
| @@ -51,7 +51,6 @@ | |||||
| * information on the Apache Software Foundation, please see | * information on the Apache Software Foundation, please see | ||||
| * <http://www.apache.org/>. | * <http://www.apache.org/>. | ||||
| */ | */ | ||||
| package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| @@ -59,7 +58,6 @@ import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
| import org.apache.tools.ant.types.EnumeratedAttribute; | import org.apache.tools.ant.types.EnumeratedAttribute; | ||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import java.io.PrintStream; | import java.io.PrintStream; | ||||
| @@ -69,11 +67,12 @@ import java.io.IOException; | |||||
| import java.util.Hashtable; | import java.util.Hashtable; | ||||
| /** | /** | ||||
| * This task is the manager for RecorderEntry's. It is this class | |||||
| * that holds all entries, modifies them every time the <recorder> | |||||
| * task is called, and addes them to the build listener process. | |||||
| * @see RecorderEntry | |||||
| * This task is the manager for RecorderEntry's. It is this class that holds | |||||
| * all entries, modifies them every time the <recorder> task is called, | |||||
| * and addes them to the build listener process. | |||||
| * | |||||
| * @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | * @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | ||||
| * @see RecorderEntry | |||||
| * @version 0.5 | * @version 0.5 | ||||
| * @since Ant 1.4 | * @since Ant 1.4 | ||||
| * @ant.task name="record" category="utility" | * @ant.task name="record" category="utility" | ||||
| @@ -85,19 +84,18 @@ public class Recorder extends Task { | |||||
| /** The name of the file to record to. */ | /** The name of the file to record to. */ | ||||
| private String filename = null; | private String filename = null; | ||||
| /** Whether or not to append. Need Boolean to record an unset | |||||
| * state (null). | |||||
| /** | |||||
| * Whether or not to append. Need Boolean to record an unset state (null). | |||||
| */ | */ | ||||
| private Boolean append = null; | private Boolean append = null; | ||||
| /** Whether to start or stop recording. Need Boolean to record an | |||||
| * unset state (null). | |||||
| /** | |||||
| * Whether to start or stop recording. Need Boolean to record an unset | |||||
| * state (null). | |||||
| */ | */ | ||||
| private Boolean start = null; | private Boolean start = null; | ||||
| /** The level to log at. A level of -1 means not initialized yet. */ | /** The level to log at. A level of -1 means not initialized yet. */ | ||||
| private int loglevel = -1; | private int loglevel = -1; | ||||
| /** | |||||
| * Strip task banners if true. | |||||
| */ | |||||
| /** Strip task banners if true. */ | |||||
| private boolean emacsMode = false; | private boolean emacsMode = false; | ||||
| /** The list of recorder entries. */ | /** The list of recorder entries. */ | ||||
| private static Hashtable recorderEntries = new Hashtable(); | private static Hashtable recorderEntries = new Hashtable(); | ||||
| @@ -109,52 +107,59 @@ public class Recorder extends Task { | |||||
| // ACCESSOR METHODS | // ACCESSOR METHODS | ||||
| /** | /** | ||||
| * Sets the name of the file to log to, and the name of the recorder entry. | |||||
| * Sets the name of the file to log to, and the name of the recorder | |||||
| * entry. | |||||
| * | |||||
| * @param fname File name of logfile. | * @param fname File name of logfile. | ||||
| */ | */ | ||||
| public void setName( String fname ) { | |||||
| public void setName(String fname) { | |||||
| filename = fname; | filename = fname; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the action for the associated recorder entry. | * Sets the action for the associated recorder entry. | ||||
| * | |||||
| * @param action The action for the entry to take: start or stop. | * @param action The action for the entry to take: start or stop. | ||||
| */ | */ | ||||
| public void setAction( ActionChoices action ) { | |||||
| if ( action.getValue().equalsIgnoreCase( "start" ) ) { | |||||
| public void setAction(ActionChoices action) { | |||||
| if (action.getValue().equalsIgnoreCase("start")) { | |||||
| start = Boolean.TRUE; | start = Boolean.TRUE; | ||||
| } else { | } else { | ||||
| start = Boolean.FALSE; | start = Boolean.FALSE; | ||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * Whether or not the logger should append to a previous file. | |||||
| */ | |||||
| public void setAppend( boolean append ) { | |||||
| /** Whether or not the logger should append to a previous file. */ | |||||
| public void setAppend(boolean append) { | |||||
| this.append = new Boolean(append); | this.append = new Boolean(append); | ||||
| } | } | ||||
| public void setEmacsMode(boolean emacsMode) { | public void setEmacsMode(boolean emacsMode) { | ||||
| this.emacsMode = emacsMode; | this.emacsMode = emacsMode; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the level to which this recorder entry should log to. | * Sets the level to which this recorder entry should log to. | ||||
| * | |||||
| * @see VerbosityLevelChoices | * @see VerbosityLevelChoices | ||||
| */ | */ | ||||
| public void setLoglevel( VerbosityLevelChoices level ){ | |||||
| public void setLoglevel(VerbosityLevelChoices level) { | |||||
| //I hate cascading if/elseif clauses !!! | //I hate cascading if/elseif clauses !!! | ||||
| String lev = level.getValue(); | String lev = level.getValue(); | ||||
| if ( lev.equalsIgnoreCase("error") ) { | |||||
| if (lev.equalsIgnoreCase("error")) { | |||||
| loglevel = Project.MSG_ERR; | loglevel = Project.MSG_ERR; | ||||
| } else if ( lev.equalsIgnoreCase("warn") ){ | |||||
| } else if (lev.equalsIgnoreCase("warn")) { | |||||
| loglevel = Project.MSG_WARN; | loglevel = Project.MSG_WARN; | ||||
| } else if ( lev.equalsIgnoreCase("info") ){ | |||||
| } else if (lev.equalsIgnoreCase("info")) { | |||||
| loglevel = Project.MSG_INFO; | loglevel = Project.MSG_INFO; | ||||
| } else if ( lev.equalsIgnoreCase("verbose") ){ | |||||
| } else if (lev.equalsIgnoreCase("verbose")) { | |||||
| loglevel = Project.MSG_VERBOSE; | loglevel = Project.MSG_VERBOSE; | ||||
| } else if ( lev.equalsIgnoreCase("debug") ){ | |||||
| } else if (lev.equalsIgnoreCase("debug")) { | |||||
| loglevel = Project.MSG_DEBUG; | loglevel = Project.MSG_DEBUG; | ||||
| } | } | ||||
| } | } | ||||
| @@ -162,23 +167,21 @@ public class Recorder extends Task { | |||||
| ////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////// | ||||
| // CORE / MAIN BODY | // CORE / MAIN BODY | ||||
| /** | |||||
| * The main execution. | |||||
| */ | |||||
| /** The main execution. */ | |||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| if ( filename == null ) { | |||||
| throw new BuildException( "No filename specified" ); | |||||
| if (filename == null) { | |||||
| throw new BuildException("No filename specified"); | |||||
| } | } | ||||
| getProject().log( "setting a recorder for name " + filename, | |||||
| Project.MSG_DEBUG ); | |||||
| getProject().log("setting a recorder for name " + filename, | |||||
| Project.MSG_DEBUG); | |||||
| // get the recorder entry | // get the recorder entry | ||||
| RecorderEntry recorder = getRecorder( filename, getProject() ); | |||||
| RecorderEntry recorder = getRecorder(filename, getProject()); | |||||
| // set the values on the recorder | // set the values on the recorder | ||||
| recorder.setMessageOutputLevel( loglevel ); | |||||
| recorder.setRecordState( start ); | |||||
| recorder.setEmacsMode( emacsMode ); | |||||
| recorder.setMessageOutputLevel(loglevel); | |||||
| recorder.setRecordState(start); | |||||
| recorder.setEmacsMode(emacsMode); | |||||
| } | } | ||||
| ////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////// | ||||
| @@ -190,37 +193,46 @@ public class Recorder extends Task { | |||||
| */ | */ | ||||
| public static class ActionChoices extends EnumeratedAttribute { | public static class ActionChoices extends EnumeratedAttribute { | ||||
| private final static String[] values = {"start", "stop"}; | private final static String[] values = {"start", "stop"}; | ||||
| public String[] getValues() { | public String[] getValues() { | ||||
| return values; | return values; | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * A list of possible values for the <code>setLoglevel()</code> method. | * A list of possible values for the <code>setLoglevel()</code> method. | ||||
| * Possible values include: error, warn, info, verbose, debug. | * Possible values include: error, warn, info, verbose, debug. | ||||
| */ | */ | ||||
| public static class VerbosityLevelChoices extends EnumeratedAttribute { | public static class VerbosityLevelChoices extends EnumeratedAttribute { | ||||
| private final static String[] values = { "error", "warn", "info", | |||||
| private final static String[] values = {"error", "warn", "info", | |||||
| "verbose", "debug"}; | "verbose", "debug"}; | ||||
| public String[] getValues() { | public String[] getValues() { | ||||
| return values; | return values; | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Gets the recorder that's associated with the passed in name. | |||||
| * If the recorder doesn't exist, then a new one is created. | |||||
| * Gets the recorder that's associated with the passed in name. If the | |||||
| * recorder doesn't exist, then a new one is created. | |||||
| */ | */ | ||||
| protected RecorderEntry getRecorder( String name, Project proj ) | |||||
| throws BuildException { | |||||
| protected RecorderEntry getRecorder(String name, Project proj) | |||||
| throws BuildException { | |||||
| Object o = recorderEntries.get(name); | Object o = recorderEntries.get(name); | ||||
| RecorderEntry entry; | RecorderEntry entry; | ||||
| if ( o == null ) { | |||||
| if (o == null) { | |||||
| // create a recorder entry | // create a recorder entry | ||||
| try { | try { | ||||
| entry = new RecorderEntry( name ); | |||||
| entry = new RecorderEntry(name); | |||||
| PrintStream out = null; | PrintStream out = null; | ||||
| if ( append == null ) { | |||||
| if (append == null) { | |||||
| out = new PrintStream( | out = new PrintStream( | ||||
| new FileOutputStream(name)); | new FileOutputStream(name)); | ||||
| } else { | } else { | ||||
| @@ -229,9 +241,9 @@ public class Recorder extends Task { | |||||
| } | } | ||||
| entry.setErrorPrintStream(out); | entry.setErrorPrintStream(out); | ||||
| entry.setOutputPrintStream(out); | entry.setOutputPrintStream(out); | ||||
| } catch ( IOException ioe ) { | |||||
| throw new BuildException( "Problems creating a recorder entry", | |||||
| ioe ); | |||||
| } catch (IOException ioe) { | |||||
| throw new BuildException("Problems creating a recorder entry", | |||||
| ioe); | |||||
| } | } | ||||
| proj.addBuildListener(entry); | proj.addBuildListener(entry); | ||||
| recorderEntries.put(name, entry); | recorderEntries.put(name, entry); | ||||
| @@ -242,3 +254,4 @@ public class Recorder extends Task { | |||||
| } | } | ||||
| } | } | ||||
| @@ -51,7 +51,6 @@ | |||||
| * information on the Apache Software Foundation, please see | * information on the Apache Software Foundation, please see | ||||
| * <http://www.apache.org/>. | * <http://www.apache.org/>. | ||||
| */ | */ | ||||
| package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
| import org.apache.tools.ant.BuildLogger; | import org.apache.tools.ant.BuildLogger; | ||||
| @@ -62,42 +61,30 @@ import org.apache.tools.ant.util.StringUtils; | |||||
| import java.io.PrintStream; | import java.io.PrintStream; | ||||
| /** | /** | ||||
| * This is a class that represents a recorder. This is the listener | |||||
| * to the build process. | |||||
| * This is a class that represents a recorder. This is the listener to the | |||||
| * build process. | |||||
| * | |||||
| * @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | * @author <a href="mailto:jayglanville@home.com">J D Glanville</a> | ||||
| * @version 0.5 | * @version 0.5 | ||||
| * @since Ant 1.4 | * @since Ant 1.4 | ||||
| */ | */ | ||||
| public class RecorderEntry implements BuildLogger { | |||||
| public class RecorderEntry implements BuildLogger { | |||||
| ////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////// | ||||
| // ATTRIBUTES | // ATTRIBUTES | ||||
| /** | |||||
| * The name of the file associated with this recorder entry. | |||||
| */ | |||||
| /** The name of the file associated with this recorder entry. */ | |||||
| private String filename = null; | private String filename = null; | ||||
| /** | |||||
| * The state of the recorder (recorder on or off). | |||||
| */ | |||||
| /** The state of the recorder (recorder on or off). */ | |||||
| private boolean record = true; | private boolean record = true; | ||||
| /** | |||||
| * The current verbosity level to record at. | |||||
| */ | |||||
| /** The current verbosity level to record at. */ | |||||
| private int loglevel = Project.MSG_INFO; | private int loglevel = Project.MSG_INFO; | ||||
| /** | |||||
| * The output PrintStream to record to. | |||||
| */ | |||||
| /** The output PrintStream to record to. */ | |||||
| private PrintStream out = null; | private PrintStream out = null; | ||||
| /** | |||||
| * The start time of the last know target. | |||||
| */ | |||||
| /** The start time of the last know target. */ | |||||
| private long targetStartTime = 0l; | private long targetStartTime = 0l; | ||||
| /** | |||||
| * Strip task banners if true. | |||||
| */ | |||||
| /** Strip task banners if true. */ | |||||
| private boolean emacsMode = false; | private boolean emacsMode = false; | ||||
| ////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////// | ||||
| @@ -105,9 +92,8 @@ public class RecorderEntry implements BuildLogger { | |||||
| /** | /** | ||||
| * @param name The name of this recorder (used as the filename). | * @param name The name of this recorder (used as the filename). | ||||
| * | |||||
| */ | */ | ||||
| protected RecorderEntry( String name ) { | |||||
| protected RecorderEntry(String name) { | |||||
| filename = name; | filename = name; | ||||
| } | } | ||||
| @@ -121,108 +107,129 @@ public class RecorderEntry implements BuildLogger { | |||||
| return filename; | return filename; | ||||
| } | } | ||||
| /** | /** | ||||
| * Turns off or on this recorder. | * Turns off or on this recorder. | ||||
| * | |||||
| * @param state true for on, false for off, null for no change. | * @param state true for on, false for off, null for no change. | ||||
| */ | */ | ||||
| public void setRecordState( Boolean state ) { | |||||
| if ( state != null ) { | |||||
| public void setRecordState(Boolean state) { | |||||
| if (state != null) { | |||||
| record = state.booleanValue(); | record = state.booleanValue(); | ||||
| } | } | ||||
| } | } | ||||
| public void buildStarted(BuildEvent event) { | public void buildStarted(BuildEvent event) { | ||||
| log( "> BUILD STARTED", Project.MSG_DEBUG ); | |||||
| log("> BUILD STARTED", Project.MSG_DEBUG); | |||||
| } | } | ||||
| public void buildFinished(BuildEvent event) { | public void buildFinished(BuildEvent event) { | ||||
| log( "< BUILD FINISHED", Project.MSG_DEBUG ); | |||||
| log("< BUILD FINISHED", Project.MSG_DEBUG); | |||||
| Throwable error = event.getException(); | Throwable error = event.getException(); | ||||
| if (error == null) { | if (error == null) { | ||||
| out.println(StringUtils.LINE_SEP + "BUILD SUCCESSFUL"); | out.println(StringUtils.LINE_SEP + "BUILD SUCCESSFUL"); | ||||
| } else { | } else { | ||||
| out.println(StringUtils.LINE_SEP + "BUILD FAILED" | |||||
| + StringUtils.LINE_SEP); | |||||
| out.println(StringUtils.LINE_SEP + "BUILD FAILED" | |||||
| + StringUtils.LINE_SEP); | |||||
| error.printStackTrace(out); | error.printStackTrace(out); | ||||
| } | } | ||||
| out.flush(); | out.flush(); | ||||
| out.close(); | out.close(); | ||||
| } | } | ||||
| public void targetStarted(BuildEvent event) { | public void targetStarted(BuildEvent event) { | ||||
| log( ">> TARGET STARTED -- " + event.getTarget(), Project.MSG_DEBUG ); | |||||
| log( StringUtils.LINE_SEP + event.getTarget().getName() + ":", | |||||
| Project.MSG_INFO ); | |||||
| log(">> TARGET STARTED -- " + event.getTarget(), Project.MSG_DEBUG); | |||||
| log(StringUtils.LINE_SEP + event.getTarget().getName() + ":", | |||||
| Project.MSG_INFO); | |||||
| targetStartTime = System.currentTimeMillis(); | targetStartTime = System.currentTimeMillis(); | ||||
| } | } | ||||
| public void targetFinished(BuildEvent event) { | public void targetFinished(BuildEvent event) { | ||||
| log( "<< TARGET FINISHED -- " + event.getTarget(), Project.MSG_DEBUG ); | |||||
| log("<< TARGET FINISHED -- " + event.getTarget(), Project.MSG_DEBUG); | |||||
| String time = formatTime(System.currentTimeMillis() - targetStartTime); | String time = formatTime(System.currentTimeMillis() - targetStartTime); | ||||
| log( event.getTarget() + ": duration " + time, Project.MSG_VERBOSE ); | |||||
| log(event.getTarget() + ": duration " + time, Project.MSG_VERBOSE); | |||||
| out.flush(); | out.flush(); | ||||
| } | } | ||||
| public void taskStarted(BuildEvent event) { | public void taskStarted(BuildEvent event) { | ||||
| log( ">>> TASK STARTED -- " + event.getTask(), Project.MSG_DEBUG ); | |||||
| log(">>> TASK STARTED -- " + event.getTask(), Project.MSG_DEBUG); | |||||
| } | } | ||||
| public void taskFinished(BuildEvent event) { | public void taskFinished(BuildEvent event) { | ||||
| log( "<<< TASK FINISHED -- " + event.getTask(), Project.MSG_DEBUG ); | |||||
| log("<<< TASK FINISHED -- " + event.getTask(), Project.MSG_DEBUG); | |||||
| out.flush(); | out.flush(); | ||||
| } | } | ||||
| public void messageLogged(BuildEvent event) { | public void messageLogged(BuildEvent event) { | ||||
| log( "--- MESSAGE LOGGED", Project.MSG_DEBUG ); | |||||
| log("--- MESSAGE LOGGED", Project.MSG_DEBUG); | |||||
| StringBuffer buf = new StringBuffer(); | StringBuffer buf = new StringBuffer(); | ||||
| if ( event.getTask() != null ) { | |||||
| if (event.getTask() != null) { | |||||
| String name = event.getTask().getTaskName(); | String name = event.getTask().getTaskName(); | ||||
| if (!emacsMode) { | if (!emacsMode) { | ||||
| String label = "[" + name + "] "; | String label = "[" + name + "] "; | ||||
| int size = DefaultLogger.LEFT_COLUMN_SIZE - label.length(); | int size = DefaultLogger.LEFT_COLUMN_SIZE - label.length(); | ||||
| for (int i = 0; i < size; i++) { | for (int i = 0; i < size; i++) { | ||||
| buf.append(" "); | buf.append(" "); | ||||
| } // for | |||||
| }// for | |||||
| buf.append(label); | buf.append(label); | ||||
| } // if | |||||
| } // if | |||||
| buf.append( event.getMessage() ); | |||||
| }// if | |||||
| }// if | |||||
| buf.append(event.getMessage()); | |||||
| log( buf.toString(), event.getPriority() ); | |||||
| log(buf.toString(), event.getPriority()); | |||||
| } | } | ||||
| /** | /** | ||||
| * The thing that actually sends the information to the output. | * The thing that actually sends the information to the output. | ||||
| * | |||||
| * @param mesg The message to log. | * @param mesg The message to log. | ||||
| * @param level The verbosity level of the message. | * @param level The verbosity level of the message. | ||||
| */ | */ | ||||
| private void log( String mesg, int level ) { | |||||
| if ( record && (level <= loglevel) ) { | |||||
| private void log(String mesg, int level) { | |||||
| if (record && (level <= loglevel)) { | |||||
| out.println(mesg); | out.println(mesg); | ||||
| } | } | ||||
| } | } | ||||
| public void setMessageOutputLevel(int level) { | public void setMessageOutputLevel(int level) { | ||||
| if ( level >= Project.MSG_ERR && level <= Project.MSG_DEBUG ) { | |||||
| if (level >= Project.MSG_ERR && level <= Project.MSG_DEBUG) { | |||||
| loglevel = level; | loglevel = level; | ||||
| } | } | ||||
| } | } | ||||
| public void setOutputPrintStream(PrintStream output) { | public void setOutputPrintStream(PrintStream output) { | ||||
| out = output; | out = output; | ||||
| } | } | ||||
| public void setEmacsMode(boolean emacsMode) { | public void setEmacsMode(boolean emacsMode) { | ||||
| this.emacsMode = emacsMode; | this.emacsMode = emacsMode; | ||||
| } | } | ||||
| public void setErrorPrintStream(PrintStream err) { | public void setErrorPrintStream(PrintStream err) { | ||||
| out = err; | out = err; | ||||
| } | } | ||||
| private static String formatTime(long millis) { | private static String formatTime(long millis) { | ||||
| long seconds = millis / 1000; | long seconds = millis / 1000; | ||||
| long minutes = seconds / 60; | long minutes = seconds / 60; | ||||
| @@ -230,14 +237,14 @@ public class RecorderEntry implements BuildLogger { | |||||
| if (minutes > 0) { | if (minutes > 0) { | ||||
| return Long.toString(minutes) + " minute" | return Long.toString(minutes) + " minute" | ||||
| + (minutes == 1 ? " " : "s ") | |||||
| + Long.toString(seconds%60) + " second" | |||||
| + (seconds%60 == 1 ? "" : "s"); | |||||
| } | |||||
| else { | |||||
| + (minutes == 1 ? " " : "s ") | |||||
| + Long.toString(seconds % 60) + " second" | |||||
| + (seconds % 60 == 1 ? "" : "s"); | |||||
| } else { | |||||
| return Long.toString(seconds) + " second" | return Long.toString(seconds) + " second" | ||||
| + (seconds%60 == 1 ? "" : "s"); | |||||
| + (seconds % 60 == 1 ? "" : "s"); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -228,7 +228,7 @@ public class Replace extends MatchingTask { | |||||
| if (replaceFilterFile != null) { | if (replaceFilterFile != null) { | ||||
| Properties props = getProperties(replaceFilterFile); | Properties props = getProperties(replaceFilterFile); | ||||
| Enumeration enum = props.keys(); | Enumeration enum = props.keys(); | ||||
| while(enum.hasMoreElements()){ | |||||
| while (enum.hasMoreElements()){ | |||||
| String token = enum.nextElement().toString(); | String token = enum.nextElement().toString(); | ||||
| Replacefilter replaceFilter = createReplacefilter(); | Replacefilter replaceFilter = createReplacefilter(); | ||||
| replaceFilter.setToken(token); | replaceFilter.setToken(token); | ||||
| @@ -254,8 +254,8 @@ public class Replace extends MatchingTask { | |||||
| DirectoryScanner ds = super.getDirectoryScanner(dir); | DirectoryScanner ds = super.getDirectoryScanner(dir); | ||||
| String[] srcs = ds.getIncludedFiles(); | String[] srcs = ds.getIncludedFiles(); | ||||
| for(int i=0; i<srcs.length; i++) { | |||||
| File file = new File(dir,srcs[i]); | |||||
| for (int i = 0; i < srcs.length; i++) { | |||||
| File file = new File(dir, srcs[i]); | |||||
| processFile(file); | processFile(file); | ||||
| } | } | ||||
| } | } | ||||
| @@ -294,7 +294,7 @@ public class Replace extends MatchingTask { | |||||
| throw new BuildException(message, location); | throw new BuildException(message, location); | ||||
| } | } | ||||
| if (token != null && "".equals(token.getText())) { | if (token != null && "".equals(token.getText())) { | ||||
| String message ="The token attribute must not be an empty string."; | |||||
| String message = "The token attribute must not be an empty string."; | |||||
| throw new BuildException(message, location); | throw new BuildException(message, location); | ||||
| } | } | ||||
| } | } | ||||
| @@ -367,14 +367,14 @@ public class Replace extends MatchingTask { | |||||
| // when multibyte characters exist in the source file | // when multibyte characters exist in the source file | ||||
| // but then again, it might be smaller than needed on | // but then again, it might be smaller than needed on | ||||
| // platforms like Windows where length can't be trusted | // platforms like Windows where length can't be trusted | ||||
| int fileLengthInBytes = (int)(src.length()); | |||||
| int fileLengthInBytes = (int) src.length(); | |||||
| StringBuffer tmpBuf = new StringBuffer(fileLengthInBytes); | StringBuffer tmpBuf = new StringBuffer(fileLengthInBytes); | ||||
| int readChar = 0; | int readChar = 0; | ||||
| int totread = 0; | int totread = 0; | ||||
| while (true) { | while (true) { | ||||
| readChar = br.read(); | readChar = br.read(); | ||||
| if (readChar < 0) { break; } | if (readChar < 0) { break; } | ||||
| tmpBuf.append((char)readChar); | |||||
| tmpBuf.append((char) readChar); | |||||
| totread++; | totread++; | ||||
| } | } | ||||
| @@ -406,7 +406,7 @@ public class Replace extends MatchingTask { | |||||
| boolean changes = !newString.equals(buf); | boolean changes = !newString.equals(buf); | ||||
| if (changes) { | if (changes) { | ||||
| bw.write(newString,0,newString.length()); | |||||
| bw.write(newString, 0, newString.length()); | |||||
| bw.flush(); | bw.flush(); | ||||
| } | } | ||||
| @@ -571,7 +571,7 @@ public class Replace extends MatchingTask { | |||||
| // search again | // search again | ||||
| start = found + str1.length(); | start = found + str1.length(); | ||||
| found = str.indexOf(str1,start); | |||||
| found = str.indexOf(str1, start); | |||||
| ++replaceCount; | ++replaceCount; | ||||
| } | } | ||||
| @@ -301,7 +301,7 @@ public class Rmic extends MatchingTask { | |||||
| /** | /** | ||||
| * Include ant's own classpath in this task's classpath? | * Include ant's own classpath in this task's classpath? | ||||
| */ | */ | ||||
| public void setIncludeantruntime( boolean include ) { | |||||
| public void setIncludeantruntime(boolean include) { | |||||
| includeAntRuntime = include; | includeAntRuntime = include; | ||||
| } | } | ||||
| @@ -317,7 +317,7 @@ public class Rmic extends MatchingTask { | |||||
| * Sets whether or not to include the java runtime libraries to this | * Sets whether or not to include the java runtime libraries to this | ||||
| * task's classpath. | * task's classpath. | ||||
| */ | */ | ||||
| public void setIncludejavaruntime( boolean include ) { | |||||
| public void setIncludejavaruntime(boolean include) { | |||||
| includeJavaRuntime = include; | includeJavaRuntime = include; | ||||
| } | } | ||||
| @@ -379,7 +379,7 @@ public class Rmic extends MatchingTask { | |||||
| RmicAdapter adapter = RmicAdapterFactory.getRmic(compiler, this); | RmicAdapter adapter = RmicAdapterFactory.getRmic(compiler, this); | ||||
| // now we need to populate the compiler adapter | // now we need to populate the compiler adapter | ||||
| adapter.setRmic( this ); | |||||
| adapter.setRmic(this); | |||||
| Path classpath = adapter.getClasspath(); | Path classpath = adapter.getClasspath(); | ||||
| loader = new AntClassLoader(project, classpath); | loader = new AntClassLoader(project, classpath); | ||||
| @@ -403,7 +403,7 @@ public class Rmic extends MatchingTask { | |||||
| int fileCount = compileList.size(); | int fileCount = compileList.size(); | ||||
| if (fileCount > 0) { | if (fileCount > 0) { | ||||
| log("RMI Compiling " + fileCount + | log("RMI Compiling " + fileCount + | ||||
| " class"+ (fileCount > 1 ? "es" : "")+" to " + baseDir, | |||||
| " class" + (fileCount > 1 ? "es" : "") + " to " + baseDir, | |||||
| Project.MSG_INFO); | Project.MSG_INFO); | ||||
| // finally, lets execute the compiler!! | // finally, lets execute the compiler!! | ||||
| @@ -453,7 +453,7 @@ public class Rmic extends MatchingTask { | |||||
| String[] generatedFiles = | String[] generatedFiles = | ||||
| adapter.getMapper().mapFileName(classFileName); | adapter.getMapper().mapFileName(classFileName); | ||||
| for (int i=0; i<generatedFiles.length; i++) { | |||||
| for (int i = 0; i < generatedFiles.length; i++) { | |||||
| if (!generatedFiles[i].endsWith(".class")) { | if (!generatedFiles[i].endsWith(".class")) { | ||||
| // don't know how to handle that - a IDL file doesn't | // don't know how to handle that - a IDL file doesn't | ||||
| // have a corresponding Java source for example. | // have a corresponding Java source for example. | ||||
| @@ -461,7 +461,7 @@ public class Rmic extends MatchingTask { | |||||
| } | } | ||||
| String sourceFileName = | String sourceFileName = | ||||
| generatedFiles[i].substring(0, classFileName.length()-6) | |||||
| generatedFiles[i].substring(0, classFileName.length() - 6) | |||||
| + ".java"; | + ".java"; | ||||
| File oldFile = new File(baseDir, sourceFileName); | File oldFile = new File(baseDir, sourceFileName); | ||||
| @@ -570,7 +570,8 @@ public class Rmic extends MatchingTask { | |||||
| /** | /** | ||||
| * Classloader for the user-specified classpath. | * Classloader for the user-specified classpath. | ||||
| */ | */ | ||||
| public ClassLoader getLoader() {return loader;} | |||||
| public ClassLoader getLoader() { | |||||
| return loader; | |||||
| } | |||||
| } | } | ||||
| @@ -142,7 +142,7 @@ public class SQLExec extends Task { | |||||
| /** | /** | ||||
| * Autocommit flag. Default value is false | * Autocommit flag. Default value is false | ||||
| */ | */ | ||||
| private boolean autocommit=false; | |||||
| private boolean autocommit = false; | |||||
| /** | /** | ||||
| * SQL statement | * SQL statement | ||||
| @@ -426,7 +426,7 @@ public class SQLExec extends Task { | |||||
| sqlCommand = sqlCommand.trim(); | sqlCommand = sqlCommand.trim(); | ||||
| try { | try { | ||||
| if (srcFile == null && sqlCommand.length()==0 | |||||
| if (srcFile == null && sqlCommand.length() == 0 | |||||
| && filesets.isEmpty()) { | && filesets.isEmpty()) { | ||||
| if (transactions.size() == 0) { | if (transactions.size() == 0) { | ||||
| throw new BuildException("Source file or fileset, " | throw new BuildException("Source file or fileset, " | ||||
| @@ -466,13 +466,13 @@ public class SQLExec extends Task { | |||||
| // in most cases. | // in most cases. | ||||
| synchronized (loaderMap){ | synchronized (loaderMap){ | ||||
| if (caching){ | if (caching){ | ||||
| loader = (AntClassLoader)loaderMap.get(driver); | |||||
| loader = (AntClassLoader) loaderMap.get(driver); | |||||
| } | } | ||||
| if (loader == null){ | if (loader == null){ | ||||
| log( "Loading " + driver | |||||
| + " using AntClassLoader with classpath " | |||||
| + classpath, | |||||
| Project.MSG_VERBOSE ); | |||||
| log("Loading " + driver | |||||
| + " using AntClassLoader with classpath " | |||||
| + classpath, | |||||
| Project.MSG_VERBOSE); | |||||
| loader = new AntClassLoader(project, classpath); | loader = new AntClassLoader(project, classpath); | ||||
| if (caching){ | if (caching){ | ||||
| loaderMap.put(driver, loader); | loaderMap.put(driver, loader); | ||||
| @@ -491,22 +491,22 @@ public class SQLExec extends Task { | |||||
| dc = Class.forName(driver); | dc = Class.forName(driver); | ||||
| } | } | ||||
| driverInstance = (Driver) dc.newInstance(); | driverInstance = (Driver) dc.newInstance(); | ||||
| }catch(ClassNotFoundException e){ | |||||
| } catch (ClassNotFoundException e){ | |||||
| throw new BuildException("Class Not Found: JDBC driver " | throw new BuildException("Class Not Found: JDBC driver " | ||||
| + driver + " could not be loaded", | + driver + " could not be loaded", | ||||
| location); | location); | ||||
| }catch(IllegalAccessException e){ | |||||
| } catch (IllegalAccessException e){ | |||||
| throw new BuildException("Illegal Access: JDBC driver " | throw new BuildException("Illegal Access: JDBC driver " | ||||
| + driver + " could not be loaded", | + driver + " could not be loaded", | ||||
| location); | location); | ||||
| }catch(InstantiationException e) { | |||||
| } catch (InstantiationException e) { | |||||
| throw new BuildException("Instantiation Exception: JDBC driver " | throw new BuildException("Instantiation Exception: JDBC driver " | ||||
| + driver + " could not be loaded", | + driver + " could not be loaded", | ||||
| location); | location); | ||||
| } | } | ||||
| // deal with the filesets | // deal with the filesets | ||||
| for (int i=0; i<filesets.size(); i++) { | |||||
| 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); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
| File srcDir = fs.getDir(project); | File srcDir = fs.getDir(project); | ||||
| @@ -514,7 +514,7 @@ public class SQLExec extends Task { | |||||
| String[] srcFiles = ds.getIncludedFiles(); | String[] srcFiles = ds.getIncludedFiles(); | ||||
| // Make a transaction for each file | // Make a transaction for each file | ||||
| for ( int j=0 ; j<srcFiles.length ; j++ ) { | |||||
| for (int j = 0 ; j < srcFiles.length ; j++) { | |||||
| Transaction t = createTransaction(); | Transaction t = createTransaction(); | ||||
| t.setSrc(new File(srcDir, srcFiles[j])); | t.setSrc(new File(srcDir, srcFiles[j])); | ||||
| } | } | ||||
| @@ -525,8 +525,8 @@ public class SQLExec extends Task { | |||||
| t.setSrc(srcFile); | t.setSrc(srcFile); | ||||
| t.addText(sqlCommand); | t.addText(sqlCommand); | ||||
| try{ | |||||
| log("connecting to " + url, Project.MSG_VERBOSE ); | |||||
| try { | |||||
| log("connecting to " + url, Project.MSG_VERBOSE); | |||||
| Properties info = new Properties(); | Properties info = new Properties(); | ||||
| info.put("user", userId); | info.put("user", userId); | ||||
| info.put("password", password); | info.put("password", password); | ||||
| @@ -534,7 +534,7 @@ public class SQLExec extends Task { | |||||
| if (conn == null) { | if (conn == null) { | ||||
| // Driver doesn't understand the URL | // Driver doesn't understand the URL | ||||
| throw new SQLException("No suitable Driver for "+url); | |||||
| throw new SQLException("No suitable Driver for " + url); | |||||
| } | } | ||||
| if (!isValidRdbms(conn)) { | if (!isValidRdbms(conn)) { | ||||
| @@ -574,14 +574,14 @@ public class SQLExec extends Task { | |||||
| out.close(); | out.close(); | ||||
| } | } | ||||
| } | } | ||||
| } catch(IOException e){ | |||||
| } catch (IOException e){ | |||||
| if (!autocommit && conn != null && onError.equals("abort")) { | if (!autocommit && conn != null && onError.equals("abort")) { | ||||
| try { | try { | ||||
| conn.rollback(); | conn.rollback(); | ||||
| } catch (SQLException ex) {} | } catch (SQLException ex) {} | ||||
| } | } | ||||
| throw new BuildException(e, location); | throw new BuildException(e, location); | ||||
| } catch(SQLException e){ | |||||
| } catch (SQLException e){ | |||||
| if (!autocommit && conn != null && onError.equals("abort")) { | if (!autocommit && conn != null && onError.equals("abort")) { | ||||
| try { | try { | ||||
| conn.rollback(); | conn.rollback(); | ||||
| @@ -616,7 +616,7 @@ public class SQLExec extends Task { | |||||
| BufferedReader in = new BufferedReader(reader); | BufferedReader in = new BufferedReader(reader); | ||||
| while ((line=in.readLine()) != null){ | |||||
| while ((line = in.readLine()) != null){ | |||||
| line = line.trim(); | line = line.trim(); | ||||
| line = project.replaceProperties(line); | line = project.replaceProperties(line); | ||||
| if (line.startsWith("//")) { | if (line.startsWith("//")) { | ||||
| @@ -656,7 +656,7 @@ public class SQLExec extends Task { | |||||
| } | } | ||||
| // Catch any statements not followed by ; | // Catch any statements not followed by ; | ||||
| if(!sql.equals("")){ | |||||
| if (!sql.equals("")){ | |||||
| execSQL(sql, out); | execSQL(sql, out); | ||||
| } | } | ||||
| } | } | ||||
| @@ -677,7 +677,8 @@ public class SQLExec extends Task { | |||||
| log("RDBMS = " + theVendor, Project.MSG_VERBOSE); | log("RDBMS = " + theVendor, Project.MSG_VERBOSE); | ||||
| if (theVendor == null || theVendor.indexOf(rdbms) < 0) { | if (theVendor == null || theVendor.indexOf(rdbms) < 0) { | ||||
| log("Not the required RDBMS: "+rdbms, Project.MSG_VERBOSE); | |||||
| log("Not the required RDBMS: " + rdbms, | |||||
| Project.MSG_VERBOSE); | |||||
| return false; | return false; | ||||
| } | } | ||||
| } | } | ||||
| @@ -692,7 +693,7 @@ public class SQLExec extends Task { | |||||
| !(theVersion.startsWith(version) || | !(theVersion.startsWith(version) || | ||||
| theVersion.indexOf(" " + version) >= 0)) { | theVersion.indexOf(" " + version) >= 0)) { | ||||
| log("Not the required version: \"" | log("Not the required version: \"" | ||||
| + version +"\"", Project.MSG_VERBOSE); | |||||
| + version + "\"", Project.MSG_VERBOSE); | |||||
| return false; | return false; | ||||
| } | } | ||||
| } | } | ||||
| @@ -718,7 +719,7 @@ public class SQLExec extends Task { | |||||
| try { | try { | ||||
| totalSql++; | totalSql++; | ||||
| if (!statement.execute(sql)) { | if (!statement.execute(sql)) { | ||||
| log(statement.getUpdateCount()+" rows affected", | |||||
| log(statement.getUpdateCount() + " rows affected", | |||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| } | } | ||||
| else { | else { | ||||
| @@ -728,9 +729,9 @@ public class SQLExec extends Task { | |||||
| } | } | ||||
| SQLWarning warning = conn.getWarnings(); | SQLWarning warning = conn.getWarnings(); | ||||
| while(warning!=null){ | |||||
| while (warning != null){ | |||||
| log(warning + " sql warning", Project.MSG_VERBOSE); | log(warning + " sql warning", Project.MSG_VERBOSE); | ||||
| warning=warning.getNextWarning(); | |||||
| warning = warning.getNextWarning(); | |||||
| } | } | ||||
| conn.clearWarnings(); | conn.clearWarnings(); | ||||
| goodSql++; | goodSql++; | ||||
| @@ -118,8 +118,7 @@ public class SendEmail extends EmailTask | |||||
| * | * | ||||
| * @deprecated Use {@link #setMailport(int)} instead. | * @deprecated Use {@link #setMailport(int)} instead. | ||||
| */ | */ | ||||
| public void setMailport( Integer value ) | |||||
| { | |||||
| setMailport( value.intValue() ); | |||||
| public void setMailport(Integer value) { | |||||
| setMailport(value.intValue()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -90,7 +90,7 @@ public class Sequential extends Task | |||||
| */ | */ | ||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| for (Enumeration e = nestedTasks.elements(); e.hasMoreElements();) { | for (Enumeration e = nestedTasks.elements(); e.hasMoreElements();) { | ||||
| Task nestedTask = (Task)e.nextElement(); | |||||
| Task nestedTask = (Task) e.nextElement(); | |||||
| nestedTask.perform(); | nestedTask.perform(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -172,20 +172,19 @@ public class SignJar extends Task { | |||||
| throw new BuildException("jar must be set through jar attribute " | throw new BuildException("jar must be set through jar attribute " | ||||
| + "or nested filesets"); | + "or nested filesets"); | ||||
| } | } | ||||
| if( null != jar ) { | |||||
| if (null != jar) { | |||||
| doOneJar(jar, signedjar); | doOneJar(jar, signedjar); | ||||
| return; | return; | ||||
| } else { | } else { | ||||
| //Assume null != filesets | //Assume null != filesets | ||||
| // deal with the filesets | // deal with the filesets | ||||
| for (int i=0; i<filesets.size(); i++) { | |||||
| 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); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
| String[] jarFiles = ds.getIncludedFiles(); | String[] jarFiles = ds.getIncludedFiles(); | ||||
| for(int j=0; j<jarFiles.length; j++) { | |||||
| doOneJar( new File( fs.getDir(project), jarFiles[j] ), | |||||
| null); | |||||
| for (int j = 0; j < jarFiles.length; j++) { | |||||
| doOneJar(new File(fs.getDir(project), jarFiles[j]), null); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -206,7 +205,7 @@ public class SignJar extends Task { | |||||
| throw new BuildException("storepass attribute must be set"); | throw new BuildException("storepass attribute must be set"); | ||||
| } | } | ||||
| if(isUpToDate(jarSource, jarTarget)) { | |||||
| if (isUpToDate(jarSource, jarTarget)) { | |||||
| return; | return; | ||||
| } | } | ||||
| @@ -215,7 +214,7 @@ public class SignJar extends Task { | |||||
| if (null != keystore) { | if (null != keystore) { | ||||
| cmd.createArg().setValue("-keystore"); | cmd.createArg().setValue("-keystore"); | ||||
| cmd.createArg().setValue( keystore.toString() ); | |||||
| cmd.createArg().setValue(keystore.toString()); | |||||
| } | } | ||||
| if (null != storepass) { | if (null != storepass) { | ||||
| @@ -235,12 +234,12 @@ public class SignJar extends Task { | |||||
| if (null != sigfile) { | if (null != sigfile) { | ||||
| cmd.createArg().setValue("-sigfile"); | cmd.createArg().setValue("-sigfile"); | ||||
| cmd.createArg().setValue( sigfile.toString() ); | |||||
| cmd.createArg().setValue(sigfile.toString()); | |||||
| } | } | ||||
| if (null != jarTarget) { | if (null != jarTarget) { | ||||
| cmd.createArg().setValue("-signedjar"); | cmd.createArg().setValue("-signedjar"); | ||||
| cmd.createArg().setValue( jarTarget.toString() ); | |||||
| cmd.createArg().setValue(jarTarget.toString()); | |||||
| } | } | ||||
| if (verbose) { | if (verbose) { | ||||
| @@ -255,37 +254,37 @@ public class SignJar extends Task { | |||||
| cmd.createArg().setValue("-sectionsonly"); | cmd.createArg().setValue("-sectionsonly"); | ||||
| } | } | ||||
| cmd.createArg().setValue( jarSource.toString() ); | |||||
| cmd.createArg().setValue(jarSource.toString()); | |||||
| cmd.createArg().setValue(alias); | cmd.createArg().setValue(alias); | ||||
| log("Signing Jar : " + jarSource.getAbsolutePath()); | log("Signing Jar : " + jarSource.getAbsolutePath()); | ||||
| cmd.setFailonerror(true); | cmd.setFailonerror(true); | ||||
| cmd.setTaskName( getTaskName() ); | |||||
| cmd.setTaskName(getTaskName()); | |||||
| cmd.execute(); | cmd.execute(); | ||||
| } | } | ||||
| protected boolean isUpToDate(File jarFile, File signedjarFile) { | protected boolean isUpToDate(File jarFile, File signedjarFile) { | ||||
| if( null == jarFile ) { | |||||
| if (null == jarFile) { | |||||
| return false; | return false; | ||||
| } | } | ||||
| if( null != signedjarFile ) { | |||||
| if (null != signedjarFile) { | |||||
| if(!jarFile.exists()) { | |||||
| if (!jarFile.exists()) { | |||||
| return false; | return false; | ||||
| } | } | ||||
| if(!signedjarFile.exists()) { | |||||
| if (!signedjarFile.exists()) { | |||||
| return false; | return false; | ||||
| } | } | ||||
| if(jarFile.equals(signedjarFile)) { | |||||
| if (jarFile.equals(signedjarFile)) { | |||||
| return false; | return false; | ||||
| } | } | ||||
| if(signedjarFile.lastModified() > jarFile.lastModified()) { | |||||
| if (signedjarFile.lastModified() > jarFile.lastModified()) { | |||||
| return true; | return true; | ||||
| } | } | ||||
| } else { | } else { | ||||
| if( lazy ) { | |||||
| if (lazy) { | |||||
| return isSigned(jarFile); | return isSigned(jarFile); | ||||
| } | } | ||||
| } | } | ||||
| @@ -297,33 +296,35 @@ public class SignJar extends Task { | |||||
| final String SIG_START = "META-INF/"; | final String SIG_START = "META-INF/"; | ||||
| final String SIG_END = ".SF"; | final String SIG_END = ".SF"; | ||||
| if( !file.exists() ) { | |||||
| if (!file.exists()) { | |||||
| return false; | return false; | ||||
| } | } | ||||
| ZipFile jarFile = null; | ZipFile jarFile = null; | ||||
| try { | try { | ||||
| jarFile = new ZipFile(file); | jarFile = new ZipFile(file); | ||||
| if(null == alias) { | |||||
| if (null == alias) { | |||||
| Enumeration entries = jarFile.entries(); | Enumeration entries = jarFile.entries(); | ||||
| while(entries.hasMoreElements()) { | |||||
| String name = ((ZipEntry)entries.nextElement()).getName(); | |||||
| if(name.startsWith(SIG_START) && name.endsWith(SIG_END)) { | |||||
| while (entries.hasMoreElements()) { | |||||
| String name = ((ZipEntry) entries.nextElement()).getName(); | |||||
| if (name.startsWith(SIG_START) && name.endsWith(SIG_END)) { | |||||
| return true; | return true; | ||||
| } | } | ||||
| } | } | ||||
| return false; | return false; | ||||
| } else { | } else { | ||||
| return jarFile.getEntry(SIG_START+alias.toUpperCase()+ | |||||
| return jarFile.getEntry(SIG_START + alias.toUpperCase() + | |||||
| SIG_END) != null; | SIG_END) != null; | ||||
| } | } | ||||
| } catch(IOException e) { | |||||
| } catch (IOException e) { | |||||
| return false; | return false; | ||||
| } finally { | } finally { | ||||
| if(jarFile != null) { | |||||
| try {jarFile.close();} catch(IOException e) {} | |||||
| if (jarFile != null) { | |||||
| try { | |||||
| jarFile.close(); | |||||
| } catch (IOException e) { | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -197,8 +197,8 @@ public class Sleep extends Task { | |||||
| throws BuildException { | throws BuildException { | ||||
| try { | try { | ||||
| validate(); | validate(); | ||||
| long sleepTime=getSleepTime(); | |||||
| log("sleeping for "+sleepTime+" milliseconds", | |||||
| long sleepTime = getSleepTime(); | |||||
| log("sleeping for " + sleepTime + " milliseconds", | |||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| doSleep(sleepTime); | doSleep(sleepTime); | ||||
| } | } | ||||
| @@ -93,7 +93,7 @@ public class StreamPumper implements Runnable { | |||||
| * Terminates as soon as the input stream is closed or an error occurs. | * Terminates as soon as the input stream is closed or an error occurs. | ||||
| */ | */ | ||||
| public void run() { | public void run() { | ||||
| synchronized(this) { | |||||
| synchronized (this) { | |||||
| // Just in case this object is reused in the future | // Just in case this object is reused in the future | ||||
| finished = false; | finished = false; | ||||
| } | } | ||||
| @@ -108,9 +108,9 @@ public class StreamPumper implements Runnable { | |||||
| Thread.sleep(SLEEP); | Thread.sleep(SLEEP); | ||||
| } catch (InterruptedException e) {} | } catch (InterruptedException e) {} | ||||
| } | } | ||||
| } catch(IOException e) { | |||||
| } catch (IOException e) { | |||||
| } finally { | } finally { | ||||
| synchronized(this) { | |||||
| synchronized (this) { | |||||
| finished = true; | finished = true; | ||||
| notify(); | notify(); | ||||
| } | } | ||||
| @@ -132,7 +132,7 @@ public class StreamPumper implements Runnable { | |||||
| public synchronized void waitFor() | public synchronized void waitFor() | ||||
| throws InterruptedException | throws InterruptedException | ||||
| { | { | ||||
| while(!isFinished()) { | |||||
| while (!isFinished()) { | |||||
| wait(); | wait(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -231,7 +231,7 @@ public class Tar extends MatchingTask { | |||||
| // fileset | // fileset | ||||
| boolean upToDate = true; | 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); | String[] files = fs.getFiles(project); | ||||
| if (!archiveIsUpToDate(files)) { | if (!archiveIsUpToDate(files)) { | ||||
| @@ -248,12 +248,12 @@ public class Tar extends MatchingTask { | |||||
| } | } | ||||
| if (upToDate) { | if (upToDate) { | ||||
| log("Nothing to do: "+tarFile.getAbsolutePath() | |||||
| +" is up to date.", Project.MSG_INFO); | |||||
| log("Nothing to do: " + tarFile.getAbsolutePath() | |||||
| + " is up to date.", Project.MSG_INFO); | |||||
| return; | return; | ||||
| } | } | ||||
| log("Building tar: "+ tarFile.getAbsolutePath(), Project.MSG_INFO); | |||||
| log("Building tar: " + tarFile.getAbsolutePath(), Project.MSG_INFO); | |||||
| TarOutputStream tOut = null; | TarOutputStream tOut = null; | ||||
| try { | try { | ||||
| @@ -274,7 +274,7 @@ public class Tar extends MatchingTask { | |||||
| longWarningGiven = false; | longWarningGiven = false; | ||||
| for (Enumeration e = filesets.elements(); | for (Enumeration e = filesets.elements(); | ||||
| e.hasMoreElements();) { | e.hasMoreElements();) { | ||||
| TarFileSet fs = (TarFileSet)e.nextElement(); | |||||
| TarFileSet fs = (TarFileSet) e.nextElement(); | |||||
| String[] files = fs.getFiles(project); | String[] files = fs.getFiles(project); | ||||
| if (files.length > 1 && fs.getFullpath().length() > 0) { | if (files.length > 1 && fs.getFullpath().length() > 0) { | ||||
| throw new BuildException("fullpath attribute may only " | throw new BuildException("fullpath attribute may only " | ||||
| @@ -284,7 +284,7 @@ public class Tar extends MatchingTask { | |||||
| } | } | ||||
| for (int i = 0; i < files.length; i++) { | for (int i = 0; i < files.length; i++) { | ||||
| File f = new File(fs.getDir(project), files[i]); | File f = new File(fs.getDir(project), files[i]); | ||||
| String name = files[i].replace(File.separatorChar,'/'); | |||||
| String name = files[i].replace(File.separatorChar, '/'); | |||||
| tarFile(f, tOut, name, fs); | tarFile(f, tOut, name, fs); | ||||
| } | } | ||||
| } | } | ||||
| @@ -344,10 +344,10 @@ public class Tar extends MatchingTask { | |||||
| try { | try { | ||||
| if (vPath.length() >= TarConstants.NAMELEN) { | if (vPath.length() >= TarConstants.NAMELEN) { | ||||
| if (longFileMode.isOmitMode()) { | if (longFileMode.isOmitMode()) { | ||||
| log("Omitting: "+ vPath, Project.MSG_INFO); | |||||
| log("Omitting: " + vPath, Project.MSG_INFO); | |||||
| return; | return; | ||||
| } else if (longFileMode.isWarnMode()) { | } else if (longFileMode.isWarnMode()) { | ||||
| log("Entry: "+ vPath + " longer than " + | |||||
| log("Entry: " + vPath + " longer than " + | |||||
| TarConstants.NAMELEN + " characters.", | TarConstants.NAMELEN + " characters.", | ||||
| Project.MSG_WARN); | Project.MSG_WARN); | ||||
| if (!longWarningGiven) { | if (!longWarningGiven) { | ||||
| @@ -358,7 +358,7 @@ public class Tar extends MatchingTask { | |||||
| } | } | ||||
| } else if (longFileMode.isFailMode()) { | } else if (longFileMode.isFailMode()) { | ||||
| throw new BuildException( | throw new BuildException( | ||||
| "Entry: "+ vPath + " longer than " + | |||||
| "Entry: " + vPath + " longer than " + | |||||
| TarConstants.NAMELEN + "characters.", location); | TarConstants.NAMELEN + "characters.", location); | ||||
| } | } | ||||
| } | } | ||||
| @@ -103,7 +103,7 @@ public class TaskOutputStream extends OutputStream { | |||||
| */ | */ | ||||
| public void write(int c) throws IOException { | public void write(int c) throws IOException { | ||||
| char cc = (char)c; | |||||
| char cc = (char) c; | |||||
| if (cc == '\r' || cc == '\n') { | if (cc == '\r' || cc == '\n') { | ||||
| // line feed | // line feed | ||||
| if (line.length() > 0) { | if (line.length() > 0) { | ||||
| @@ -179,11 +179,11 @@ public class Touch extends Task { | |||||
| protected void touch() throws BuildException { | protected void touch() throws BuildException { | ||||
| if (file != null) { | if (file != null) { | ||||
| if (!file.exists()) { | if (!file.exists()) { | ||||
| log("Creating "+file, Project.MSG_INFO); | |||||
| log("Creating " + file, Project.MSG_INFO); | |||||
| try { | try { | ||||
| fileUtils.createNewFile(file); | fileUtils.createNewFile(file); | ||||
| } catch (IOException ioe) { | } catch (IOException ioe) { | ||||
| throw new BuildException("Could not create "+file, ioe, | |||||
| throw new BuildException("Could not create " + file, ioe, | |||||
| location); | location); | ||||
| } | } | ||||
| } | } | ||||
| @@ -206,7 +206,7 @@ public class Touch extends Task { | |||||
| } | } | ||||
| // deal with the filesets | // deal with the filesets | ||||
| for (int i=0; i < filesets.size(); i++) { | |||||
| 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); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
| File fromDir = fs.getDir(project); | File fromDir = fs.getDir(project); | ||||
| @@ -214,11 +214,11 @@ public class Touch extends Task { | |||||
| String[] srcFiles = ds.getIncludedFiles(); | String[] srcFiles = ds.getIncludedFiles(); | ||||
| String[] srcDirs = ds.getIncludedDirectories(); | String[] srcDirs = ds.getIncludedDirectories(); | ||||
| for(int j=0; j < srcFiles.length ; j++) { | |||||
| for (int j = 0; j < srcFiles.length ; j++) { | |||||
| touch(new File(fromDir, srcFiles[j])); | touch(new File(fromDir, srcFiles[j])); | ||||
| } | } | ||||
| for(int j=0; j < srcDirs.length ; j++) { | |||||
| for (int j = 0; j < srcDirs.length ; j++) { | |||||
| touch(new File(fromDir, srcDirs[j])); | touch(new File(fromDir, srcDirs[j])); | ||||
| } | } | ||||
| } | } | ||||
| @@ -111,9 +111,9 @@ public class Tstamp extends Task { | |||||
| project.setNewProperty(prefix + "TODAY", today.format(d)); | project.setNewProperty(prefix + "TODAY", today.format(d)); | ||||
| Enumeration i = customFormats.elements(); | Enumeration i = customFormats.elements(); | ||||
| while(i.hasMoreElements()) { | |||||
| CustomFormat cts = (CustomFormat)i.nextElement(); | |||||
| cts.execute(project,d, location); | |||||
| while (i.hasMoreElements()) { | |||||
| CustomFormat cts = (CustomFormat) i.nextElement(); | |||||
| cts.execute(project, d, location); | |||||
| } | } | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| @@ -138,7 +138,7 @@ public class Tstamp extends Task { | |||||
| private String variant; | private String variant; | ||||
| private int offset = 0; | private int offset = 0; | ||||
| private int field = Calendar.DATE; | private int field = Calendar.DATE; | ||||
| private String prefix=""; | |||||
| private String prefix = ""; | |||||
| public CustomFormat(String prefix) | public CustomFormat(String prefix) | ||||
| { | { | ||||
| @@ -157,7 +157,7 @@ public class Tstamp extends Task { | |||||
| public void setLocale(String locale) | public void setLocale(String locale) | ||||
| { | { | ||||
| StringTokenizer st = new StringTokenizer( locale, " \t\n\r\f,"); | |||||
| StringTokenizer st = new StringTokenizer(locale, " \t\n\r\f,"); | |||||
| try { | try { | ||||
| language = st.nextToken(); | language = st.nextToken(); | ||||
| if (st.hasMoreElements()) { | if (st.hasMoreElements()) { | ||||
| @@ -165,7 +165,7 @@ public class Tstamp extends Task { | |||||
| if (st.hasMoreElements()) { | if (st.hasMoreElements()) { | ||||
| variant = st.nextToken(); | variant = st.nextToken(); | ||||
| if (st.hasMoreElements()) { | if (st.hasMoreElements()) { | ||||
| throw new BuildException( "bad locale format", | |||||
| throw new BuildException("bad locale format", | |||||
| getLocation()); | getLocation()); | ||||
| } | } | ||||
| } | } | ||||
| @@ -175,8 +175,8 @@ public class Tstamp extends Task { | |||||
| } | } | ||||
| } | } | ||||
| catch (NoSuchElementException e) { | catch (NoSuchElementException e) { | ||||
| throw new BuildException( "bad locale format", e, | |||||
| getLocation()); | |||||
| throw new BuildException("bad locale format", e, | |||||
| getLocation()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -132,9 +132,9 @@ public abstract class Unpack extends Task { | |||||
| int len = sourceName.length(); | int len = sourceName.length(); | ||||
| if (defaultExtension != null | if (defaultExtension != null | ||||
| && len > defaultExtension.length() | && len > defaultExtension.length() | ||||
| && defaultExtension.equalsIgnoreCase(sourceName.substring(len-defaultExtension.length()))) { | |||||
| && defaultExtension.equalsIgnoreCase(sourceName.substring(len - defaultExtension.length()))) { | |||||
| dest = new File(dest, sourceName.substring(0, | dest = new File(dest, sourceName.substring(0, | ||||
| len-defaultExtension.length())); | |||||
| len - defaultExtension.length())); | |||||
| } else { | } else { | ||||
| dest = new File(dest, sourceName); | dest = new File(dest, sourceName); | ||||
| } | } | ||||
| @@ -88,7 +88,7 @@ public class Untar extends Expand { | |||||
| extractFile(fileUtils, srcF, dir, tis, | extractFile(fileUtils, srcF, dir, tis, | ||||
| te.getName(), te.getModTime(), te.isDirectory()); | te.getName(), te.getModTime(), te.isDirectory()); | ||||
| } | } | ||||
| log("expand complete", Project.MSG_VERBOSE ); | |||||
| log("expand complete", Project.MSG_VERBOSE); | |||||
| } catch (IOException ioe) { | } catch (IOException ioe) { | ||||
| throw new BuildException("Error while expanding " + srcF.getPath(), | throw new BuildException("Error while expanding " + srcF.getPath(), | ||||
| @@ -116,7 +116,7 @@ public class UpToDate extends Task implements Condition { | |||||
| * Returns the value, or "true" if a specific value wasn't provided. | * Returns the value, or "true" if a specific value wasn't provided. | ||||
| */ | */ | ||||
| private String getValue() { | private String getValue() { | ||||
| return ( _value != null ) ? _value : "true"; | |||||
| return (_value != null) ? _value : "true"; | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -193,7 +193,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| // check if liaison wants to log errors using us as logger | // check if liaison wants to log errors using us as logger | ||||
| if (liaison instanceof XSLTLoggerAware) { | if (liaison instanceof XSLTLoggerAware) { | ||||
| ((XSLTLoggerAware)liaison).setLogger(this); | |||||
| ((XSLTLoggerAware) liaison).setLogger(this); | |||||
| } | } | ||||
| log("Using " + liaison.getClass().toString(), Project.MSG_VERBOSE); | log("Using " + liaison.getClass().toString(), Project.MSG_VERBOSE); | ||||
| @@ -224,7 +224,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| */ | */ | ||||
| //-- make sure Source directory exists... | //-- make sure Source directory exists... | ||||
| if (destDir == null ) { | |||||
| if (destDir == null) { | |||||
| String msg = "destdir attributes must be set!"; | String msg = "destdir attributes must be set!"; | ||||
| throw new BuildException(msg); | throw new BuildException(msg); | ||||
| } | } | ||||
| @@ -234,7 +234,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| // Process all the files marked for styling | // Process all the files marked for styling | ||||
| list = scanner.getIncludedFiles(); | list = scanner.getIncludedFiles(); | ||||
| for (int i = 0; i < list.length; ++i) { | for (int i = 0; i < list.length; ++i) { | ||||
| process( baseDir, list[i], destDir, stylesheet ); | |||||
| process(baseDir, list[i], destDir, stylesheet); | |||||
| } | } | ||||
| if (performDirectoryScan) { | if (performDirectoryScan) { | ||||
| // Process all the directories marked for styling | // Process all the directories marked for styling | ||||
| @@ -242,7 +242,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| for (int j = 0; j < dirs.length; ++j){ | 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) { | for (int i = 0; i < list.length; ++i) { | ||||
| process( baseDir, list[i], destDir, stylesheet ); | |||||
| process(baseDir, list[i], destDir, stylesheet); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -359,7 +359,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| private void resolveProcessor(String proc) throws Exception { | private void resolveProcessor(String proc) throws Exception { | ||||
| if (proc.equals("trax")) { | if (proc.equals("trax")) { | ||||
| final Class clazz = loadClass(TRAX_LIAISON_CLASS); | final Class clazz = loadClass(TRAX_LIAISON_CLASS); | ||||
| liaison = (XSLTLiaison)clazz.newInstance(); | |||||
| liaison = (XSLTLiaison) clazz.newInstance(); | |||||
| } else if (proc.equals("xslp")) { | } else if (proc.equals("xslp")) { | ||||
| log("DEPRECATED - xslp processor is deprecated. Use trax or " | log("DEPRECATED - xslp processor is deprecated. Use trax or " | ||||
| + "xalan instead."); | + "xalan instead."); | ||||
| @@ -367,7 +367,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| liaison = (XSLTLiaison) clazz.newInstance(); | liaison = (XSLTLiaison) clazz.newInstance(); | ||||
| } else if (proc.equals("xalan")) { | } else if (proc.equals("xalan")) { | ||||
| final Class clazz = loadClass(XALAN_LIASON_CLASS); | final Class clazz = loadClass(XALAN_LIASON_CLASS); | ||||
| liaison = (XSLTLiaison)clazz.newInstance(); | |||||
| liaison = (XSLTLiaison) clazz.newInstance(); | |||||
| } else { | } else { | ||||
| liaison = (XSLTLiaison) loadClass(proc).newInstance(); | liaison = (XSLTLiaison) loadClass(proc).newInstance(); | ||||
| } | } | ||||
| @@ -448,7 +448,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| if (force || | if (force || | ||||
| inFile.lastModified() > outFile.lastModified() || | inFile.lastModified() > outFile.lastModified() || | ||||
| styleSheetLastModified > outFile.lastModified()) { | styleSheetLastModified > outFile.lastModified()) { | ||||
| ensureDirectoryFor( outFile ); | |||||
| ensureDirectoryFor(outFile); | |||||
| log("Processing " + inFile + " to " + outFile); | log("Processing " + inFile + " to " + outFile); | ||||
| configureLiaison(stylesheet); | configureLiaison(stylesheet); | ||||
| @@ -489,7 +489,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| if (force || | if (force || | ||||
| inFile.lastModified() > outFile.lastModified() || | inFile.lastModified() > outFile.lastModified() || | ||||
| styleSheetLastModified > outFile.lastModified()) { | styleSheetLastModified > outFile.lastModified()) { | ||||
| ensureDirectoryFor( outFile ); | |||||
| ensureDirectoryFor(outFile); | |||||
| log("Processing " + inFile + " to " + outFile, | log("Processing " + inFile + " to " + outFile, | ||||
| Project.MSG_INFO); | Project.MSG_INFO); | ||||
| configureLiaison(stylesheet); | configureLiaison(stylesheet); | ||||
| @@ -516,7 +516,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| if (!directory.exists()) { | if (!directory.exists()) { | ||||
| if (!directory.mkdirs()) { | if (!directory.mkdirs()) { | ||||
| throw new BuildException("Unable to create directory: " | throw new BuildException("Unable to create directory: " | ||||
| + directory.getAbsolutePath() ); | |||||
| + directory.getAbsolutePath()); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -647,11 +647,11 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger { | |||||
| stylesheetLoaded = true; | stylesheetLoaded = true; | ||||
| try { | try { | ||||
| log( "Loading stylesheet " + stylesheet, Project.MSG_INFO); | |||||
| liaison.setStylesheet( stylesheet ); | |||||
| for (Enumeration e = params.elements(); e.hasMoreElements(); ) { | |||||
| Param p = (Param)e.nextElement(); | |||||
| liaison.addParam( p.getName(), p.getExpression() ); | |||||
| log("Loading stylesheet " + stylesheet, Project.MSG_INFO); | |||||
| liaison.setStylesheet(stylesheet); | |||||
| for (Enumeration e = params.elements(); e.hasMoreElements();) { | |||||
| Param p = (Param) e.nextElement(); | |||||
| liaison.addParam(p.getName(), p.getExpression()); | |||||
| } | } | ||||
| // if liaison is a TraxLiason, use XMLCatalog as the entity | // if liaison is a TraxLiason, use XMLCatalog as the entity | ||||
| // resolver | // resolver | ||||
| @@ -265,9 +265,9 @@ public class Zip extends MatchingTask { | |||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| if (baseDir == null && filesets.size() == 0 | if (baseDir == null && filesets.size() == 0 | ||||
| && groupfilesets.size() == 0 && "zip".equals(archiveType)) { | && groupfilesets.size() == 0 && "zip".equals(archiveType)) { | ||||
| throw new BuildException( "basedir attribute must be set, " | |||||
| + "or at least " | |||||
| + "one fileset must be given!" ); | |||||
| throw new BuildException("basedir attribute must be set, " | |||||
| + "or at least " | |||||
| + "one fileset must be given!"); | |||||
| } | } | ||||
| if (zipFile == null) { | if (zipFile == null) { | ||||
| @@ -304,14 +304,14 @@ public class Zip extends MatchingTask { | |||||
| } | } | ||||
| // Add the files found in groupfileset to fileset | // Add the files found in groupfileset to fileset | ||||
| for (int i=0; i<groupfilesets.size(); i++) { | |||||
| for (int i = 0; i < groupfilesets.size(); i++) { | |||||
| log("Processing groupfileset ", Project.MSG_VERBOSE); | log("Processing groupfileset ", Project.MSG_VERBOSE); | ||||
| FileSet fs = (FileSet) groupfilesets.elementAt(i); | FileSet fs = (FileSet) groupfilesets.elementAt(i); | ||||
| FileScanner scanner = fs.getDirectoryScanner(project); | FileScanner scanner = fs.getDirectoryScanner(project); | ||||
| String[] files = scanner.getIncludedFiles(); | String[] files = scanner.getIncludedFiles(); | ||||
| File basedir = scanner.getBasedir(); | File basedir = scanner.getBasedir(); | ||||
| for (int j=0; j<files.length; j++) { | |||||
| for (int j = 0; j < files.length; j++) { | |||||
| log("Adding file " + files[j] + " to fileset", | log("Adding file " + files[j] + " to fileset", | ||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| @@ -327,7 +327,7 @@ public class Zip extends MatchingTask { | |||||
| if (baseDir != null) { | if (baseDir != null) { | ||||
| dss.addElement(getDirectoryScanner(baseDir)); | dss.addElement(getDirectoryScanner(baseDir)); | ||||
| } | } | ||||
| for (int i=0; i<filesets.size(); i++) { | |||||
| for (int i = 0; i < filesets.size(); i++) { | |||||
| FileSet fs = (FileSet) filesets.elementAt(i); | FileSet fs = (FileSet) filesets.elementAt(i); | ||||
| dss.addElement (fs.getDirectoryScanner(project)); | dss.addElement (fs.getDirectoryScanner(project)); | ||||
| } | } | ||||
| @@ -345,7 +345,7 @@ public class Zip extends MatchingTask { | |||||
| String action = doUpdate ? "Updating " : "Building "; | String action = doUpdate ? "Updating " : "Building "; | ||||
| log(action + archiveType +": "+ zipFile.getAbsolutePath()); | |||||
| log(action + archiveType + ": " + zipFile.getAbsolutePath()); | |||||
| ZipOutputStream zOut = | ZipOutputStream zOut = | ||||
| new ZipOutputStream(new FileOutputStream(zipFile)); | new ZipOutputStream(new FileOutputStream(zipFile)); | ||||
| @@ -369,10 +369,10 @@ public class Zip extends MatchingTask { | |||||
| ZipFileSet oldFiles = new ZipFileSet(); | ZipFileSet oldFiles = new ZipFileSet(); | ||||
| oldFiles.setSrc(renamedFile); | oldFiles.setSrc(renamedFile); | ||||
| for (int i=0; i < addedFiles.size(); i++) | |||||
| for (int i = 0; i < addedFiles.size(); i++) | |||||
| { | { | ||||
| PatternSet.NameEntry ne = oldFiles.createExclude(); | PatternSet.NameEntry ne = oldFiles.createExclude(); | ||||
| ne.setName((String)addedFiles.elementAt(i)); | |||||
| ne.setName((String) addedFiles.elementAt(i)); | |||||
| } | } | ||||
| Vector tmp = new Vector(1); | Vector tmp = new Vector(1); | ||||
| tmp.addElement(oldFiles); | tmp.addElement(oldFiles); | ||||
| @@ -395,7 +395,7 @@ public class Zip extends MatchingTask { | |||||
| if (zOut != null) { | if (zOut != null) { | ||||
| zOut.close(); | zOut.close(); | ||||
| } | } | ||||
| } catch(IOException ex) { | |||||
| } catch (IOException ex) { | |||||
| // If we're in this finally clause because of an | // If we're in this finally clause because of an | ||||
| // exception, we don't really care if there's an | // exception, we don't really care if there's an | ||||
| // exception when closing the stream. E.g. if it | // exception when closing the stream. E.g. if it | ||||
| @@ -422,8 +422,8 @@ public class Zip extends MatchingTask { | |||||
| if (doUpdate) { | if (doUpdate) { | ||||
| if (!renamedFile.renameTo(zipFile)) { | if (!renamedFile.renameTo(zipFile)) { | ||||
| msg+=" (and I couldn't rename the temporary file "+ | |||||
| renamedFile.getName()+" back)"; | |||||
| msg += " (and I couldn't rename the temporary file " + | |||||
| renamedFile.getName() + " back)"; | |||||
| } | } | ||||
| } | } | ||||
| @@ -469,7 +469,7 @@ public class Zip extends MatchingTask { | |||||
| if ("".equals(dirs[i])) { | if ("".equals(dirs[i])) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| String name = dirs[i].replace(File.separatorChar,'/'); | |||||
| String name = dirs[i].replace(File.separatorChar, '/'); | |||||
| if (!name.endsWith("/")) { | if (!name.endsWith("/")) { | ||||
| name += "/"; | name += "/"; | ||||
| } | } | ||||
| @@ -494,9 +494,9 @@ public class Zip extends MatchingTask { | |||||
| else | else | ||||
| { | { | ||||
| // Add this file with the specified prefix. | // Add this file with the specified prefix. | ||||
| String name = files[i].replace(File.separatorChar,'/'); | |||||
| String name = files[i].replace(File.separatorChar, '/'); | |||||
| addParentDirs(thisBaseDir, name, zOut, prefix); | addParentDirs(thisBaseDir, name, zOut, prefix); | ||||
| zipFile(f, zOut, prefix+name); | |||||
| zipFile(f, zOut, prefix + name); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -531,8 +531,8 @@ public class Zip extends MatchingTask { | |||||
| zipFile(in, zOut, fullpath, entry.getTime(), zipSrc); | zipFile(in, zOut, fullpath, entry.getTime(), zipSrc); | ||||
| } else { | } else { | ||||
| addParentDirs(null, vPath, zOut, prefix); | addParentDirs(null, vPath, zOut, prefix); | ||||
| if (! entry.isDirectory()) { | |||||
| zipFile(in, zOut, prefix+vPath, entry.getTime(), | |||||
| if (!entry.isDirectory()) { | |||||
| zipFile(in, zOut, prefix + vPath, entry.getTime(), | |||||
| zipSrc); | zipSrc); | ||||
| } | } | ||||
| } | } | ||||
| @@ -564,7 +564,7 @@ public class Zip extends MatchingTask { | |||||
| // In this case using java.util.zip will not work | // In this case using java.util.zip will not work | ||||
| // because it does not permit a zero-entry archive. | // because it does not permit a zero-entry archive. | ||||
| // Must create it manually. | // Must create it manually. | ||||
| log("Note: creating empty "+archiveType+" archive " + zipFile, | |||||
| log("Note: creating empty " + archiveType + " archive " + zipFile, | |||||
| Project.MSG_INFO); | Project.MSG_INFO); | ||||
| OutputStream os = null; | OutputStream os = null; | ||||
| try { | try { | ||||
| @@ -609,12 +609,12 @@ public class Zip extends MatchingTask { | |||||
| File[] files = grabFiles(scanners, fileNames); | File[] files = grabFiles(scanners, fileNames); | ||||
| if (files.length == 0) { | if (files.length == 0) { | ||||
| if (emptyBehavior.equals("skip")) { | if (emptyBehavior.equals("skip")) { | ||||
| log("Warning: skipping "+archiveType+" archive " + zipFile + | |||||
| log("Warning: skipping " + archiveType + " archive " + zipFile + | |||||
| " because no files were included.", Project.MSG_WARN); | " because no files were included.", Project.MSG_WARN); | ||||
| return true; | return true; | ||||
| } else if (emptyBehavior.equals("fail")) { | } else if (emptyBehavior.equals("fail")) { | ||||
| throw new BuildException("Cannot create "+archiveType | |||||
| +" archive " + zipFile + | |||||
| throw new BuildException("Cannot create " + archiveType | |||||
| + " archive " + zipFile + | |||||
| ": no files were included.", location); | ": no files were included.", location); | ||||
| } else { | } else { | ||||
| // Create. | // Create. | ||||
| @@ -635,7 +635,7 @@ public class Zip extends MatchingTask { | |||||
| SourceFileScanner sfs = new SourceFileScanner(this); | SourceFileScanner sfs = new SourceFileScanner(this); | ||||
| MergingMapper mm = new MergingMapper(); | MergingMapper mm = new MergingMapper(); | ||||
| mm.setTo(zipFile.getAbsolutePath()); | mm.setTo(zipFile.getAbsolutePath()); | ||||
| for (int i=0; i<scanners.length; i++) { | |||||
| for (int i = 0; i < scanners.length; i++) { | |||||
| if (sfs.restrict(fileNames[i], scanners[i].getBasedir(), null, | if (sfs.restrict(fileNames[i], scanners[i].getBasedir(), null, | ||||
| mm).length > 0) { | mm).length > 0) { | ||||
| return false; | return false; | ||||
| @@ -665,7 +665,7 @@ public class Zip extends MatchingTask { | |||||
| protected static String[][] grabFileNames(FileScanner[] scanners) { | protected static String[][] grabFileNames(FileScanner[] scanners) { | ||||
| String[][] result = new String[scanners.length][]; | String[][] result = new String[scanners.length][]; | ||||
| for (int i=0; i<scanners.length; i++) { | |||||
| for (int i = 0; i < scanners.length; i++) { | |||||
| String[] files = scanners[i].getIncludedFiles(); | String[] files = scanners[i].getIncludedFiles(); | ||||
| String[] dirs = scanners[i].getIncludedDirectories(); | String[] dirs = scanners[i].getIncludedDirectories(); | ||||
| result[i] = new String[files.length + dirs.length]; | result[i] = new String[files.length + dirs.length]; | ||||
| @@ -815,13 +815,13 @@ public class Zip extends MatchingTask { | |||||
| protected void addParentDirs(File baseDir, String entry, | protected void addParentDirs(File baseDir, String entry, | ||||
| ZipOutputStream zOut, String prefix) | ZipOutputStream zOut, String prefix) | ||||
| throws IOException { | throws IOException { | ||||
| if( !doFilesonly ) { | |||||
| if (!doFilesonly) { | |||||
| Stack directories = new Stack(); | Stack directories = new Stack(); | ||||
| int slashPos = entry.length(); | int slashPos = entry.length(); | ||||
| while ((slashPos = entry.lastIndexOf('/', slashPos-1)) != -1) { | |||||
| String dir = entry.substring(0, slashPos+1); | |||||
| if (addedDirs.get(prefix+dir) != null) { | |||||
| while ((slashPos = entry.lastIndexOf('/', slashPos - 1)) != -1) { | |||||
| String dir = entry.substring(0, slashPos + 1); | |||||
| if (addedDirs.get(prefix + dir) != null) { | |||||
| break; | break; | ||||
| } | } | ||||
| directories.push(dir); | directories.push(dir); | ||||
| @@ -835,7 +835,7 @@ public class Zip extends MatchingTask { | |||||
| } else { | } else { | ||||
| f = new File(dir); | f = new File(dir); | ||||
| } | } | ||||
| zipDir(f, zOut, prefix+dir); | |||||
| zipDir(f, zOut, prefix + dir); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -848,7 +848,7 @@ public class Zip extends MatchingTask { | |||||
| protected void addFiles(Vector filesets, ZipOutputStream zOut) | protected void addFiles(Vector filesets, ZipOutputStream zOut) | ||||
| throws IOException { | throws IOException { | ||||
| // Add each fileset in the Vector. | // Add each fileset in the Vector. | ||||
| for (int i = 0; i<filesets.size(); i++) { | |||||
| 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); | DirectoryScanner ds = fs.getDirectoryScanner(project); | ||||
| @@ -94,11 +94,11 @@ public class CompilerAdapterFactory { | |||||
| */ | */ | ||||
| public static CompilerAdapter getCompiler(String compilerType, Task task) | public static CompilerAdapter getCompiler(String compilerType, Task task) | ||||
| throws BuildException { | throws BuildException { | ||||
| boolean isClassicCompilerSupported=true; | |||||
| boolean isClassicCompilerSupported = true; | |||||
| //as new versions of java come out, add them to this test | //as new versions of java come out, add them to this test | ||||
| if(Project.getJavaVersion()==Project.JAVA_1_4) { | |||||
| isClassicCompilerSupported=false; | |||||
| } | |||||
| if (Project.getJavaVersion() == Project.JAVA_1_4) { | |||||
| isClassicCompilerSupported = false; | |||||
| } | |||||
| if (compilerType.equalsIgnoreCase("jikes")) { | if (compilerType.equalsIgnoreCase("jikes")) { | ||||
| return new Jikes(); | return new Jikes(); | ||||
| @@ -109,12 +109,12 @@ public class CompilerAdapterFactory { | |||||
| if (compilerType.equalsIgnoreCase("classic") || | if (compilerType.equalsIgnoreCase("classic") || | ||||
| compilerType.equalsIgnoreCase("javac1.1") || | compilerType.equalsIgnoreCase("javac1.1") || | ||||
| compilerType.equalsIgnoreCase("javac1.2")) { | compilerType.equalsIgnoreCase("javac1.2")) { | ||||
| if(isClassicCompilerSupported) { | |||||
| if (isClassicCompilerSupported) { | |||||
| return new Javac12(); | return new Javac12(); | ||||
| } | } | ||||
| else { | else { | ||||
| throw new BuildException("This version of java does " | throw new BuildException("This version of java does " | ||||
| +"not support the classic compiler"); | |||||
| + "not support the classic compiler"); | |||||
| } | } | ||||
| } | } | ||||
| @@ -124,18 +124,18 @@ public class CompilerAdapterFactory { | |||||
| compilerType.equalsIgnoreCase("javac1.3") || | compilerType.equalsIgnoreCase("javac1.3") || | ||||
| compilerType.equalsIgnoreCase("javac1.4")) { | compilerType.equalsIgnoreCase("javac1.4")) { | ||||
| // does the modern compiler exist? | // does the modern compiler exist? | ||||
| if(doesModernCompilerExist()) { | |||||
| if (doesModernCompilerExist()) { | |||||
| return new Javac13(); | return new Javac13(); | ||||
| } else { | } else { | ||||
| if(isClassicCompilerSupported) { | |||||
| if (isClassicCompilerSupported) { | |||||
| task.log("Modern compiler not found - looking for " | task.log("Modern compiler not found - looking for " | ||||
| + "classic compiler", Project.MSG_WARN); | + "classic compiler", Project.MSG_WARN); | ||||
| return new Javac12(); | return new Javac12(); | ||||
| } | } | ||||
| else { | else { | ||||
| throw new BuildException("Unable to find a javac compiler;\n" | throw new BuildException("Unable to find a javac compiler;\n" | ||||
| +"com.sun.tools.javac.Main is not on the classpath.\n" | |||||
| +"Perhaps JAVA_HOME does not point to the JDK"); | |||||
| + "com.sun.tools.javac.Main is not on the classpath.\n" | |||||
| + "Perhaps JAVA_HOME does not point to the JDK"); | |||||
| } | } | ||||
| } | } | ||||
| @@ -81,7 +81,9 @@ public abstract class ConditionBase extends ProjectComponent { | |||||
| * | * | ||||
| * @since 1.1 | * @since 1.1 | ||||
| */ | */ | ||||
| protected int countConditions() {return conditions.size();} | |||||
| protected int countConditions() { | |||||
| return conditions.size(); | |||||
| } | |||||
| /** | /** | ||||
| * Iterate through all conditions. | * Iterate through all conditions. | ||||
| @@ -114,12 +114,12 @@ public class FilesMatch implements Condition { | |||||
| } | } | ||||
| //#now match the files | //#now match the files | ||||
| boolean matches=false; | |||||
| boolean matches = false; | |||||
| try { | try { | ||||
| matches=fu.contentEquals(file1, file2); | |||||
| } catch(IOException ioe) { | |||||
| throw new BuildException("when comparing files: "+ioe.getMessage(), | |||||
| ioe); | |||||
| matches = fu.contentEquals(file1, file2); | |||||
| } catch (IOException ioe) { | |||||
| throw new BuildException("when comparing files: " | |||||
| + ioe.getMessage(), ioe); | |||||
| } | } | ||||
| return matches; | return matches; | ||||
| } | } | ||||
| @@ -220,7 +220,7 @@ public class Os implements Condition { | |||||
| isFamily = isFamily("windows") && | isFamily = isFamily("windows") && | ||||
| !(osName.indexOf("nt") >= 0 || | !(osName.indexOf("nt") >= 0 || | ||||
| osName.indexOf("2000") >= 0 || | osName.indexOf("2000") >= 0 || | ||||
| osName.indexOf("xp") >= 0 ); | |||||
| osName.indexOf("xp") >= 0); | |||||
| } else { | } else { | ||||
| throw new BuildException( | throw new BuildException( | ||||
| "Don\'t know how to detect os family \"" | "Don\'t know how to detect os family \"" | ||||
| @@ -63,52 +63,44 @@ import java.util.Date; | |||||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
| * @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
| */ | */ | ||||
| class CVSEntry | |||||
| { | |||||
| class CVSEntry { | |||||
| private Date m_date; | private Date m_date; | ||||
| private final String m_author; | private final String m_author; | ||||
| private final String m_comment; | private final String m_comment; | ||||
| private final Vector m_files = new Vector(); | private final Vector m_files = new Vector(); | ||||
| public CVSEntry( Date date, String author, String comment ) | |||||
| { | |||||
| public CVSEntry(Date date, String author, String comment) { | |||||
| m_date = date; | m_date = date; | ||||
| m_author = author; | m_author = author; | ||||
| m_comment = comment; | m_comment = comment; | ||||
| } | } | ||||
| public void addFile( String file, String revision ) | |||||
| { | |||||
| m_files.addElement( new RCSFile( file, revision ) ); | |||||
| public void addFile(String file, String revision) { | |||||
| m_files.addElement(new RCSFile(file, revision)); | |||||
| } | } | ||||
| public void addFile( String file, String revision, String previousRevision ) | |||||
| { | |||||
| m_files.addElement( new RCSFile( file, revision, previousRevision ) ); | |||||
| public void addFile(String file, String revision, String previousRevision) { | |||||
| m_files.addElement(new RCSFile(file, revision, previousRevision)); | |||||
| } | } | ||||
| Date getDate() | |||||
| { | |||||
| Date getDate() { | |||||
| return m_date; | return m_date; | ||||
| } | } | ||||
| String getAuthor() | |||||
| { | |||||
| String getAuthor() { | |||||
| return m_author; | return m_author; | ||||
| } | } | ||||
| String getComment() | |||||
| { | |||||
| String getComment() { | |||||
| return m_comment; | return m_comment; | ||||
| } | } | ||||
| Vector getFiles() | |||||
| { | |||||
| Vector getFiles() { | |||||
| return m_files; | return m_files; | ||||
| } | } | ||||
| public String toString() | |||||
| { | |||||
| return getAuthor() + "\n" + getDate() + "\n" + getFiles() + "\n" + getComment(); | |||||
| public String toString() { | |||||
| return getAuthor() + "\n" + getDate() + "\n" + getFiles() + "\n" | |||||
| + getComment(); | |||||
| } | } | ||||
| } | } | ||||
| @@ -66,8 +66,7 @@ import java.util.Properties; | |||||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
| * @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
| */ | */ | ||||
| class ChangeLogParser | |||||
| { | |||||
| class ChangeLogParser { | |||||
| //private static final int GET_ENTRY = 0; | //private static final int GET_ENTRY = 0; | ||||
| private static final int GET_FILE = 1; | private static final int GET_FILE = 1; | ||||
| private static final int GET_DATE = 2; | private static final int GET_DATE = 2; | ||||
| @@ -76,7 +75,8 @@ class ChangeLogParser | |||||
| private static final int GET_PREVIOUS_REV = 5; | private static final int GET_PREVIOUS_REV = 5; | ||||
| /** input format for dates read in from cvs log */ | /** input format for dates read in from cvs log */ | ||||
| private static final SimpleDateFormat c_inputDate = new SimpleDateFormat( "yyyy/MM/dd hh:mm:ss" ); | |||||
| private static final SimpleDateFormat c_inputDate | |||||
| = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); | |||||
| //The following is data used while processing stdout of CVS command | //The following is data used while processing stdout of CVS command | ||||
| private String m_file; | private String m_file; | ||||
| @@ -98,8 +98,7 @@ class ChangeLogParser | |||||
| * | * | ||||
| * @param userList the userlist | * @param userList the userlist | ||||
| */ | */ | ||||
| public ChangeLogParser( Properties userList ) | |||||
| { | |||||
| public ChangeLogParser(Properties userList) { | |||||
| m_userList = userList; | m_userList = userList; | ||||
| } | } | ||||
| @@ -108,8 +107,7 @@ class ChangeLogParser | |||||
| * | * | ||||
| * @return a list of rcs entrys as an array | * @return a list of rcs entrys as an array | ||||
| */ | */ | ||||
| CVSEntry[] getEntrySetAsArray() | |||||
| { | |||||
| CVSEntry[] getEntrySetAsArray() { | |||||
| final CVSEntry[] array = new CVSEntry[ m_entries.size() ]; | final CVSEntry[] array = new CVSEntry[ m_entries.size() ]; | ||||
| Enumeration enum = m_entries.elements(); | Enumeration enum = m_entries.elements(); | ||||
| int i = 0; | int i = 0; | ||||
| @@ -123,27 +121,25 @@ class ChangeLogParser | |||||
| * Receive notification about the process writing | * Receive notification about the process writing | ||||
| * to standard output. | * to standard output. | ||||
| */ | */ | ||||
| public void stdout( final String line ) | |||||
| { | |||||
| switch( m_status ) | |||||
| { | |||||
| public void stdout(final String line) { | |||||
| switch(m_status) { | |||||
| case GET_FILE: | case GET_FILE: | ||||
| processFile( line ); | |||||
| processFile(line); | |||||
| break; | break; | ||||
| case GET_REVISION: | case GET_REVISION: | ||||
| processRevision( line ); | |||||
| processRevision(line); | |||||
| break; | break; | ||||
| case GET_DATE: | case GET_DATE: | ||||
| processDate( line ); | |||||
| processDate(line); | |||||
| break; | break; | ||||
| case GET_COMMENT: | case GET_COMMENT: | ||||
| processComment( line ); | |||||
| processComment(line); | |||||
| break; | break; | ||||
| case GET_PREVIOUS_REV: | case GET_PREVIOUS_REV: | ||||
| processGetPreviousRevision( line ); | |||||
| processGetPreviousRevision(line); | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| @@ -153,22 +149,19 @@ class ChangeLogParser | |||||
| * | * | ||||
| * @param line the line | * @param line the line | ||||
| */ | */ | ||||
| private void processComment( final String line ) | |||||
| { | |||||
| final String lineSeparator = System.getProperty( "line.separator" ); | |||||
| if( line.startsWith( "======" ) ) | |||||
| { | |||||
| private void processComment(final String line) { | |||||
| final String lineSeparator = System.getProperty("line.separator"); | |||||
| if (line.startsWith("======")) { | |||||
| //We have ended changelog for that particular file | //We have ended changelog for that particular file | ||||
| //so we can save it | //so we can save it | ||||
| final int end = m_comment.length() - lineSeparator.length(); //was -1 | final int end = m_comment.length() - lineSeparator.length(); //was -1 | ||||
| m_comment = m_comment.substring( 0, end ); | |||||
| m_comment = m_comment.substring(0, end); | |||||
| saveEntry(); | saveEntry(); | ||||
| m_status = GET_FILE; | m_status = GET_FILE; | ||||
| } | } | ||||
| else if( line.startsWith( "------" ) ) | |||||
| { | |||||
| else if (line.startsWith("------")) { | |||||
| final int end = m_comment.length() - lineSeparator.length(); //was -1 | final int end = m_comment.length() - lineSeparator.length(); //was -1 | ||||
| m_comment = m_comment.substring( 0, end ); | |||||
| m_comment = m_comment.substring(0, end); | |||||
| m_status = GET_PREVIOUS_REV; | m_status = GET_PREVIOUS_REV; | ||||
| } | } | ||||
| else | else | ||||
| @@ -182,11 +175,9 @@ class ChangeLogParser | |||||
| * | * | ||||
| * @param line the line | * @param line the line | ||||
| */ | */ | ||||
| private void processFile( final String line ) | |||||
| { | |||||
| if( line.startsWith( "Working file:" ) ) | |||||
| { | |||||
| m_file = line.substring( 14, line.length() ); | |||||
| private void processFile(final String line) { | |||||
| if (line.startsWith("Working file:")) { | |||||
| m_file = line.substring(14, line.length()); | |||||
| m_status = GET_REVISION; | m_status = GET_REVISION; | ||||
| } | } | ||||
| } | } | ||||
| @@ -196,15 +187,12 @@ class ChangeLogParser | |||||
| * | * | ||||
| * @param line the line | * @param line the line | ||||
| */ | */ | ||||
| private void processRevision( final String line ) | |||||
| { | |||||
| if( line.startsWith( "revision" ) ) | |||||
| { | |||||
| m_revision = line.substring( 9 ); | |||||
| private void processRevision(final String line) { | |||||
| if (line.startsWith("revision")) { | |||||
| m_revision = line.substring(9); | |||||
| m_status = GET_DATE; | m_status = GET_DATE; | ||||
| } | } | ||||
| else if( line.startsWith( "======" ) ) | |||||
| { | |||||
| else if (line.startsWith("======")) { | |||||
| //There was no revisions in this changelog | //There was no revisions in this changelog | ||||
| //entry so lets move unto next file | //entry so lets move unto next file | ||||
| m_status = GET_FILE; | m_status = GET_FILE; | ||||
| @@ -216,17 +204,14 @@ class ChangeLogParser | |||||
| * | * | ||||
| * @param line the line | * @param line the line | ||||
| */ | */ | ||||
| private void processDate( final String line ) | |||||
| { | |||||
| if( line.startsWith( "date:" ) ) | |||||
| { | |||||
| m_date = line.substring( 6, 25 ); | |||||
| String lineData = line.substring( line.indexOf( ";" ) + 1 ); | |||||
| m_author = lineData.substring( 10, lineData.indexOf( ";" ) ); | |||||
| private void processDate(final String line) { | |||||
| if (line.startsWith("date:")) { | |||||
| m_date = line.substring(6, 25); | |||||
| String lineData = line.substring(line.indexOf(";") + 1); | |||||
| m_author = lineData.substring(10, lineData.indexOf(";")); | |||||
| if( m_userList.containsKey( m_author ) ) | |||||
| { | |||||
| m_author = m_userList.getProperty( m_author ); | |||||
| if (m_userList.containsKey(m_author)) { | |||||
| m_author = m_userList.getProperty(m_author); | |||||
| } | } | ||||
| m_status = GET_COMMENT; | m_status = GET_COMMENT; | ||||
| @@ -242,13 +227,12 @@ class ChangeLogParser | |||||
| * | * | ||||
| * @param line the line | * @param line the line | ||||
| */ | */ | ||||
| private void processGetPreviousRevision( final String line ) | |||||
| { | |||||
| if( !line.startsWith( "revision" ) ) | |||||
| { | |||||
| throw new IllegalStateException( "Unexpected line from CVS: " + line ); | |||||
| private void processGetPreviousRevision(final String line) { | |||||
| if (!line.startsWith("revision")) { | |||||
| throw new IllegalStateException("Unexpected line from CVS: " | |||||
| + line); | |||||
| } | } | ||||
| m_previousRevision = line.substring( 9 ); | |||||
| m_previousRevision = line.substring(9); | |||||
| saveEntry(); | saveEntry(); | ||||
| @@ -259,21 +243,17 @@ class ChangeLogParser | |||||
| /** | /** | ||||
| * Utility method that saves the current entry. | * Utility method that saves the current entry. | ||||
| */ | */ | ||||
| private void saveEntry() | |||||
| { | |||||
| private void saveEntry() { | |||||
| final String entryKey = m_date + m_author + m_comment; | final String entryKey = m_date + m_author + m_comment; | ||||
| CVSEntry entry; | CVSEntry entry; | ||||
| if( !m_entries.containsKey( entryKey ) ) | |||||
| { | |||||
| entry = new CVSEntry( parseDate( m_date ), m_author, m_comment ); | |||||
| m_entries.put( entryKey, entry ); | |||||
| } | |||||
| else | |||||
| { | |||||
| entry = (CVSEntry)m_entries.get( entryKey ); | |||||
| if (!m_entries.containsKey(entryKey)) { | |||||
| entry = new CVSEntry(parseDate(m_date), m_author, m_comment); | |||||
| m_entries.put(entryKey, entry); | |||||
| } else { | |||||
| entry = (CVSEntry) m_entries.get(entryKey); | |||||
| } | } | ||||
| entry.addFile( m_file, m_revision, m_previousRevision ); | |||||
| entry.addFile(m_file, m_revision, m_previousRevision); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -282,14 +262,10 @@ class ChangeLogParser | |||||
| * @param date the string holding dat | * @param date the string holding dat | ||||
| * @return the date object or null if unknown date format | * @return the date object or null if unknown date format | ||||
| */ | */ | ||||
| private Date parseDate( final String date ) | |||||
| { | |||||
| try | |||||
| { | |||||
| return c_inputDate.parse( date ); | |||||
| } | |||||
| catch( ParseException e ) | |||||
| { | |||||
| private Date parseDate(final String date) { | |||||
| try { | |||||
| return c_inputDate.parse(date); | |||||
| } catch (ParseException e) { | |||||
| //final String message = REZ.getString( "changelog.bat-date.error", date ); | //final String message = REZ.getString( "changelog.bat-date.error", date ); | ||||
| //getContext().error( message ); | //getContext().error( message ); | ||||
| return null; | return null; | ||||
| @@ -104,9 +104,7 @@ import org.apache.tools.ant.types.FileSet; | |||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| * @ant.task name="changelog" | * @ant.task name="changelog" | ||||
| */ | */ | ||||
| public class ChangeLogTask | |||||
| extends Task | |||||
| { | |||||
| public class ChangeLogTask extends Task { | |||||
| /** User list */ | /** User list */ | ||||
| private File m_usersFile; | private File m_usersFile; | ||||
| @@ -119,14 +117,10 @@ public class ChangeLogTask | |||||
| /** Output file */ | /** Output file */ | ||||
| private File m_destfile; | private File m_destfile; | ||||
| /** | |||||
| * The earliest date at which to start processing entrys. | |||||
| */ | |||||
| /** The earliest date at which to start processing entrys. */ | |||||
| private Date m_start; | private Date m_start; | ||||
| /** | |||||
| * The latest date at which to stop processing entrys. | |||||
| */ | |||||
| /** The latest date at which to stop processing entrys. */ | |||||
| private Date m_stop; | private Date m_stop; | ||||
| /** | /** | ||||
| @@ -136,287 +130,297 @@ public class ChangeLogTask | |||||
| */ | */ | ||||
| private final Vector m_filesets = new Vector(); | private final Vector m_filesets = new Vector(); | ||||
| /** | /** | ||||
| * Set the base dir for cvs. | * Set the base dir for cvs. | ||||
| * | |||||
| * @param dir The new dir value | |||||
| */ | */ | ||||
| public void setDir( final File dir ) | |||||
| { | |||||
| public void setDir(final File dir) { | |||||
| m_dir = dir; | m_dir = dir; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set the output file for the log. | * Set the output file for the log. | ||||
| * | |||||
| * @param destfile The new destfile value | |||||
| */ | */ | ||||
| public void setDestfile( final File destfile ) | |||||
| { | |||||
| public void setDestfile(final File destfile) { | |||||
| m_destfile = destfile; | m_destfile = destfile; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set a lookup list of user names & addresses | * Set a lookup list of user names & addresses | ||||
| * | |||||
| * @param usersFile The file containing the users info. | |||||
| */ | */ | ||||
| public void setUsersfile( final File usersFile ) | |||||
| { | |||||
| public void setUsersfile(final File usersFile) { | |||||
| m_usersFile = usersFile; | m_usersFile = usersFile; | ||||
| } | } | ||||
| /** | /** | ||||
| * Add a user to list changelog knows about. | * Add a user to list changelog knows about. | ||||
| * | * | ||||
| * @param user the user | * @param user the user | ||||
| */ | */ | ||||
| public void addUser( final CvsUser user ) | |||||
| { | |||||
| m_cvsUsers.addElement( user ); | |||||
| public void addUser(final CvsUser user) { | |||||
| m_cvsUsers.addElement(user); | |||||
| } | } | ||||
| /** | /** | ||||
| * Set the date at which the changelog should start. | * Set the date at which the changelog should start. | ||||
| * | * | ||||
| * @param start The date at which the changelog should start. | * @param start The date at which the changelog should start. | ||||
| */ | */ | ||||
| public void setStart( final Date start ) | |||||
| { | |||||
| public void setStart(final Date start) { | |||||
| m_start = start; | m_start = start; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set the date at which the changelog should stop. | * Set the date at which the changelog should stop. | ||||
| * | * | ||||
| * @param stop The date at which the changelog should stop. | * @param stop The date at which the changelog should stop. | ||||
| */ | */ | ||||
| public void setEnd( final Date stop ) | |||||
| { | |||||
| public void setEnd(final Date stop) { | |||||
| m_stop = stop; | m_stop = stop; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set the numbers of days worth of log entries to process. | * Set the numbers of days worth of log entries to process. | ||||
| * | |||||
| * @param days the number of days of log to process. | |||||
| */ | */ | ||||
| public void setDaysinpast( final int days ) | |||||
| { | |||||
| final long time = System.currentTimeMillis() | |||||
| - (long)days * 24 * 60 * 60 * 1000; | |||||
| setStart( new Date( time ) ); | |||||
| public void setDaysinpast(final int days) { | |||||
| final long time = System.currentTimeMillis() | |||||
| - (long) days * 24 * 60 * 60 * 1000; | |||||
| setStart(new Date(time)); | |||||
| } | } | ||||
| /** | /** | ||||
| * Adds a set of files about which cvs logs will be generated. | * Adds a set of files about which cvs logs will be generated. | ||||
| * | * | ||||
| * @param fileSet a set of files about which cvs logs will be generated. | * @param fileSet a set of files about which cvs logs will be generated. | ||||
| */ | */ | ||||
| public void addFileset( final FileSet fileSet ) | |||||
| { | |||||
| m_filesets.addElement( fileSet ); | |||||
| public void addFileset(final FileSet fileSet) { | |||||
| m_filesets.addElement(fileSet); | |||||
| } | } | ||||
| /** | /** | ||||
| * Execute task | * Execute task | ||||
| * | |||||
| * @exception BuildException if something goes wrong executing the | |||||
| * cvs command | |||||
| */ | */ | ||||
| public void execute() throws BuildException | |||||
| { | |||||
| File savedDir = m_dir; // may be altered in validate | |||||
| public void execute() throws BuildException { | |||||
| File savedDir = m_dir;// may be altered in validate | |||||
| try { | try { | ||||
| validate(); | validate(); | ||||
| final Properties userList = new Properties(); | final Properties userList = new Properties(); | ||||
| loadUserlist( userList ); | |||||
| for( Enumeration e = m_cvsUsers.elements(); | |||||
| e.hasMoreElements(); ) { | |||||
| final CvsUser user = (CvsUser)e.nextElement(); | |||||
| loadUserlist(userList); | |||||
| for (Enumeration e = m_cvsUsers.elements(); | |||||
| e.hasMoreElements();) { | |||||
| final CvsUser user = (CvsUser) e.nextElement(); | |||||
| user.validate(); | user.validate(); | ||||
| userList.put( user.getUserID(), user.getDisplayname() ); | |||||
| userList.put(user.getUserID(), user.getDisplayname()); | |||||
| } | } | ||||
| final Commandline command = new Commandline(); | final Commandline command = new Commandline(); | ||||
| command.setExecutable( "cvs" ); | |||||
| command.createArgument().setValue( "log" ); | |||||
| if( null != m_start ) { | |||||
| command.setExecutable("cvs"); | |||||
| command.createArgument().setValue("log"); | |||||
| if (null != m_start) { | |||||
| final SimpleDateFormat outputDate = | final SimpleDateFormat outputDate = | ||||
| new SimpleDateFormat( "yyyy-MM-dd" ); | |||||
| new SimpleDateFormat("yyyy-MM-dd"); | |||||
| // We want something of the form: -d ">=YYYY-MM-dd" | // We want something of the form: -d ">=YYYY-MM-dd" | ||||
| final String dateRange = "-d >=" | |||||
| + outputDate.format( m_start ); | |||||
| command.createArgument().setValue( dateRange ); | |||||
| } | |||||
| final String dateRange = "-d >=" | |||||
| + outputDate.format(m_start); | |||||
| command.createArgument().setValue(dateRange); | |||||
| } | |||||
| // Check if list of files to check has been specified | // Check if list of files to check has been specified | ||||
| if( !m_filesets.isEmpty() ) { | |||||
| if (!m_filesets.isEmpty()) { | |||||
| final Enumeration e = m_filesets.elements(); | final Enumeration e = m_filesets.elements(); | ||||
| while( e.hasMoreElements() ) { | |||||
| final FileSet fileSet = (FileSet)e.nextElement(); | |||||
| final DirectoryScanner scanner = | |||||
| fileSet.getDirectoryScanner( project ); | |||||
| while (e.hasMoreElements()) { | |||||
| final FileSet fileSet = (FileSet) e.nextElement(); | |||||
| final DirectoryScanner scanner = | |||||
| fileSet.getDirectoryScanner(project); | |||||
| final String[] files = scanner.getIncludedFiles(); | final String[] files = scanner.getIncludedFiles(); | ||||
| for( int i = 0; i < files.length; i++ ) { | |||||
| command.createArgument().setValue( files[ i ] ); | |||||
| for (int i = 0; i < files.length; i++) { | |||||
| command.createArgument().setValue(files[i]); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| final ChangeLogParser parser = new ChangeLogParser( userList ); | |||||
| final ChangeLogParser parser = new ChangeLogParser(userList); | |||||
| final RedirectingStreamHandler handler = | final RedirectingStreamHandler handler = | ||||
| new RedirectingStreamHandler( parser ); | |||||
| new RedirectingStreamHandler(parser); | |||||
| log( "ChangeLog command: [" + command.toString() + "]", | |||||
| Project.MSG_VERBOSE ); | |||||
| log("ChangeLog command: [" + command.toString() + "]", | |||||
| Project.MSG_VERBOSE); | |||||
| final Execute exe = new Execute( handler ); | |||||
| exe.setWorkingDirectory( m_dir ); | |||||
| exe.setCommandline( command.getCommandline() ); | |||||
| exe.setAntRun( getProject() ); | |||||
| final Execute exe = new Execute(handler); | |||||
| exe.setWorkingDirectory(m_dir); | |||||
| exe.setCommandline(command.getCommandline()); | |||||
| exe.setAntRun(getProject()); | |||||
| try { | try { | ||||
| final int resultCode = exe.execute(); | final int resultCode = exe.execute(); | ||||
| if( 0 != resultCode ) { | |||||
| throw new BuildException( "Error running cvs log" ); | |||||
| if (0 != resultCode) { | |||||
| throw new BuildException("Error running cvs log"); | |||||
| } | } | ||||
| } catch( final IOException ioe ) { | |||||
| throw new BuildException( ioe.toString() ); | |||||
| } catch (final IOException ioe) { | |||||
| throw new BuildException(ioe.toString()); | |||||
| } | } | ||||
| final String errors = handler.getErrors(); | final String errors = handler.getErrors(); | ||||
| if( null != errors ) { | |||||
| log( errors, Project.MSG_ERR ); | |||||
| if (null != errors) { | |||||
| log(errors, Project.MSG_ERR); | |||||
| } | } | ||||
| final CVSEntry[] entrySet = parser.getEntrySetAsArray(); | final CVSEntry[] entrySet = parser.getEntrySetAsArray(); | ||||
| final CVSEntry[] filteredEntrySet = filterEntrySet( entrySet ); | |||||
| writeChangeLog( filteredEntrySet ); | |||||
| final CVSEntry[] filteredEntrySet = filterEntrySet(entrySet); | |||||
| writeChangeLog(filteredEntrySet); | |||||
| } finally { | } finally { | ||||
| m_dir = savedDir; | m_dir = savedDir; | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Validate the parameters specified for task. | * Validate the parameters specified for task. | ||||
| * | * | ||||
| * @throws BuildException if fails validation checks | * @throws BuildException if fails validation checks | ||||
| */ | */ | ||||
| private void validate() | private void validate() | ||||
| throws BuildException | |||||
| { | |||||
| if( null == m_dir ) | |||||
| { | |||||
| throws BuildException { | |||||
| if (null == m_dir) { | |||||
| m_dir = getProject().getBaseDir(); | m_dir = getProject().getBaseDir(); | ||||
| } | } | ||||
| if( null == m_destfile ) | |||||
| { | |||||
| if (null == m_destfile) { | |||||
| final String message = "Destfile must be set."; | final String message = "Destfile must be set."; | ||||
| throw new BuildException( message ); | |||||
| throw new BuildException(message); | |||||
| } | } | ||||
| if( !m_dir.exists() ) | |||||
| { | |||||
| final String message = "Cannot find base dir " | |||||
| + m_dir.getAbsolutePath(); | |||||
| throw new BuildException( message ); | |||||
| if (!m_dir.exists()) { | |||||
| final String message = "Cannot find base dir " | |||||
| + m_dir.getAbsolutePath(); | |||||
| throw new BuildException(message); | |||||
| } | } | ||||
| if( null != m_usersFile && !m_usersFile.exists() ) | |||||
| { | |||||
| final String message = "Cannot find user lookup list " | |||||
| + m_usersFile.getAbsolutePath(); | |||||
| throw new BuildException( message ); | |||||
| if (null != m_usersFile && !m_usersFile.exists()) { | |||||
| final String message = "Cannot find user lookup list " | |||||
| + m_usersFile.getAbsolutePath(); | |||||
| throw new BuildException(message); | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Load the userli4st from the userList file (if specified) and | |||||
| * add to list of users. | |||||
| * Load the userlist from the userList file (if specified) and add to | |||||
| * list of users. | |||||
| * | * | ||||
| * @param userList the file of users | |||||
| * @throws BuildException if file can not be loaded for some reason | * @throws BuildException if file can not be loaded for some reason | ||||
| */ | */ | ||||
| private void loadUserlist( final Properties userList ) | |||||
| throws BuildException | |||||
| { | |||||
| if( null != m_usersFile ) | |||||
| { | |||||
| try | |||||
| { | |||||
| userList.load( new FileInputStream( m_usersFile ) ); | |||||
| } | |||||
| catch( final IOException ioe ) | |||||
| { | |||||
| throw new BuildException( ioe.toString(), ioe ); | |||||
| private void loadUserlist(final Properties userList) | |||||
| throws BuildException { | |||||
| if (null != m_usersFile) { | |||||
| try { | |||||
| userList.load(new FileInputStream(m_usersFile)); | |||||
| } catch (final IOException ioe) { | |||||
| throw new BuildException(ioe.toString(), ioe); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Filter the specified entrys accoridn to an appropriate | |||||
| * rule. | |||||
| * Filter the specified entrys accoridn to an appropriate rule. | |||||
| * | * | ||||
| * @param entrySet the entry set to filter | * @param entrySet the entry set to filter | ||||
| * @return the filtered entry set | * @return the filtered entry set | ||||
| */ | */ | ||||
| private CVSEntry[] filterEntrySet( final CVSEntry[] entrySet ) | |||||
| { | |||||
| private CVSEntry[] filterEntrySet(final CVSEntry[] entrySet) { | |||||
| final Vector results = new Vector(); | final Vector results = new Vector(); | ||||
| for( int i = 0; i < entrySet.length; i++ ) | |||||
| { | |||||
| final CVSEntry cvsEntry = entrySet[ i ]; | |||||
| for (int i = 0; i < entrySet.length; i++) { | |||||
| final CVSEntry cvsEntry = entrySet[i]; | |||||
| final Date date = cvsEntry.getDate(); | final Date date = cvsEntry.getDate(); | ||||
| if( null != m_start && m_start.after( date ) ) | |||||
| { | |||||
| if (null != m_start && m_start.after(date)) { | |||||
| //Skip dates that are too early | //Skip dates that are too early | ||||
| continue; | continue; | ||||
| } | } | ||||
| if( null != m_stop && m_stop.before( date ) ) | |||||
| { | |||||
| if (null != m_stop && m_stop.before(date)) { | |||||
| //Skip dates that are too late | //Skip dates that are too late | ||||
| continue; | continue; | ||||
| } | } | ||||
| results.addElement( cvsEntry ); | |||||
| results.addElement(cvsEntry); | |||||
| } | } | ||||
| final CVSEntry[] resultArray = new CVSEntry[ results.size() ]; | |||||
| results.copyInto( resultArray ); | |||||
| final CVSEntry[] resultArray = new CVSEntry[results.size()]; | |||||
| results.copyInto(resultArray); | |||||
| return resultArray; | return resultArray; | ||||
| } | } | ||||
| /** | /** | ||||
| * Print changelog to file specified in task. | * Print changelog to file specified in task. | ||||
| * | * | ||||
| * @throws BuildException if theres an error writing changelog | |||||
| * @param entrySet the entry set to write. | |||||
| * @throws BuildException if theres an error writing changelog. | |||||
| */ | */ | ||||
| private void writeChangeLog( final CVSEntry[] entrySet ) | |||||
| throws BuildException | |||||
| { | |||||
| private void writeChangeLog(final CVSEntry[] entrySet) | |||||
| throws BuildException { | |||||
| FileOutputStream output = null; | FileOutputStream output = null; | ||||
| try | |||||
| { | |||||
| output = new FileOutputStream( m_destfile ); | |||||
| try { | |||||
| output = new FileOutputStream(m_destfile); | |||||
| final PrintWriter writer = | final PrintWriter writer = | ||||
| new PrintWriter( new OutputStreamWriter( output, "UTF-8" ) ); | |||||
| new PrintWriter(new OutputStreamWriter(output, "UTF-8")); | |||||
| final ChangeLogWriter serializer = new ChangeLogWriter(); | final ChangeLogWriter serializer = new ChangeLogWriter(); | ||||
| serializer.printChangeLog( writer, entrySet ); | |||||
| } | |||||
| catch( final UnsupportedEncodingException uee ) | |||||
| { | |||||
| getProject().log( uee.toString(), Project.MSG_ERR ); | |||||
| } | |||||
| catch( final IOException ioe ) | |||||
| { | |||||
| throw new BuildException( ioe.toString(), ioe ); | |||||
| } | |||||
| finally | |||||
| { | |||||
| if( null != output ) | |||||
| { | |||||
| try | |||||
| { | |||||
| serializer.printChangeLog(writer, entrySet); | |||||
| } catch (final UnsupportedEncodingException uee) { | |||||
| getProject().log(uee.toString(), Project.MSG_ERR); | |||||
| } catch (final IOException ioe) { | |||||
| throw new BuildException(ioe.toString(), ioe); | |||||
| } finally { | |||||
| if (null != output) { | |||||
| try { | |||||
| output.close(); | output.close(); | ||||
| } | |||||
| catch( final IOException ioe ) | |||||
| { | |||||
| } catch (final IOException ioe) { | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -63,60 +63,65 @@ import java.util.Enumeration; | |||||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
| * @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
| */ | */ | ||||
| class ChangeLogWriter | |||||
| { | |||||
| class ChangeLogWriter { | |||||
| /** output format for dates writtn to xml file */ | /** output format for dates writtn to xml file */ | ||||
| private static final SimpleDateFormat c_outputDate = new SimpleDateFormat( "yyyy-MM-dd" ); | |||||
| private static final SimpleDateFormat c_outputDate = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| /** output format for times writtn to xml file */ | /** output format for times writtn to xml file */ | ||||
| private static final SimpleDateFormat c_outputTime = new SimpleDateFormat( "hh:mm" ); | |||||
| private static final SimpleDateFormat c_outputTime = new SimpleDateFormat("hh:mm"); | |||||
| /** | /** | ||||
| * Print out the specifed entrys. | * Print out the specifed entrys. | ||||
| * | |||||
| * @param output writer to which to send output. | |||||
| * @param entries the entries to be written. | |||||
| */ | */ | ||||
| public void printChangeLog( final PrintWriter output, | |||||
| final CVSEntry[] entries ) | |||||
| { | |||||
| output.println( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ); | |||||
| output.println( "<changelog>" ); | |||||
| for( int i = 0; i < entries.length; i++ ) | |||||
| { | |||||
| final CVSEntry entry = entries[ i ]; | |||||
| printEntry( output, entry ); | |||||
| public void printChangeLog(final PrintWriter output, | |||||
| final CVSEntry[] entries) { | |||||
| output.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); | |||||
| output.println("<changelog>"); | |||||
| for (int i = 0; i < entries.length; i++) { | |||||
| final CVSEntry entry = entries[i]; | |||||
| printEntry(output, entry); | |||||
| } | } | ||||
| output.println( "</changelog>" ); | |||||
| output.println("</changelog>"); | |||||
| output.flush(); | output.flush(); | ||||
| output.close(); | output.close(); | ||||
| } | } | ||||
| /** | /** | ||||
| * Print out an individual entry in changelog. | * Print out an individual entry in changelog. | ||||
| * | * | ||||
| * @param entry the entry to print | * @param entry the entry to print | ||||
| * @param output writer to which to send output. | |||||
| */ | */ | ||||
| private void printEntry( final PrintWriter output, final CVSEntry entry ) | |||||
| { | |||||
| output.println( "\t<entry>" ); | |||||
| output.println( "\t\t<date>" + c_outputDate.format( entry.getDate() ) + "</date>" ); | |||||
| output.println( "\t\t<time>" + c_outputTime.format( entry.getDate() ) + "</time>" ); | |||||
| output.println( "\t\t<author><![CDATA[" + entry.getAuthor() + "]]></author>" ); | |||||
| private void printEntry(final PrintWriter output, final CVSEntry entry) { | |||||
| output.println("\t<entry>"); | |||||
| output.println("\t\t<date>" + c_outputDate.format(entry.getDate()) + "</date>"); | |||||
| output.println("\t\t<time>" + c_outputTime.format(entry.getDate()) + "</time>"); | |||||
| output.println("\t\t<author><![CDATA[" + entry.getAuthor() + "]]></author>"); | |||||
| final Enumeration enumeration = entry.getFiles().elements(); | final Enumeration enumeration = entry.getFiles().elements(); | ||||
| while( enumeration.hasMoreElements() ) | |||||
| { | |||||
| final RCSFile file = (RCSFile)enumeration.nextElement(); | |||||
| output.println( "\t\t<file>" ); | |||||
| output.println( "\t\t\t<name>" + file.getName() + "</name>" ); | |||||
| output.println( "\t\t\t<revision>" + file.getRevision() + "</revision>" ); | |||||
| while (enumeration.hasMoreElements()) { | |||||
| final RCSFile file = (RCSFile) enumeration.nextElement(); | |||||
| output.println("\t\t<file>"); | |||||
| output.println("\t\t\t<name>" + file.getName() + "</name>"); | |||||
| output.println("\t\t\t<revision>" + file.getRevision() + "</revision>"); | |||||
| final String previousRevision = file.getPreviousRevision(); | final String previousRevision = file.getPreviousRevision(); | ||||
| if( previousRevision != null ) | |||||
| { | |||||
| output.println( "\t\t\t<prevrevision>" + previousRevision + "</prevrevision>" ); | |||||
| if (previousRevision != null) { | |||||
| output.println("\t\t\t<prevrevision>" + previousRevision + "</prevrevision>"); | |||||
| } | } | ||||
| output.println( "\t\t</file>" ); | |||||
| output.println("\t\t</file>"); | |||||
| } | } | ||||
| output.println( "\t\t<msg><![CDATA[" + entry.getComment() + "]]></msg>" ); | |||||
| output.println( "\t</entry>" ); | |||||
| output.println("\t\t<msg><![CDATA[" + entry.getComment() + "]]></msg>"); | |||||
| output.println("\t</entry>"); | |||||
| } | } | ||||
| } | } | ||||
| @@ -62,44 +62,71 @@ import org.apache.tools.ant.BuildException; | |||||
| * @author <a href="mailto:jeff.martin@synamic.co.uk">Jeff Martin</a> | * @author <a href="mailto:jeff.martin@synamic.co.uk">Jeff Martin</a> | ||||
| * @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
| */ | */ | ||||
| public class CvsUser | |||||
| { | |||||
| public class CvsUser { | |||||
| /** The user's Id */ | |||||
| private String m_userID; | private String m_userID; | ||||
| /** The user's full name */ | |||||
| private String m_displayName; | private String m_displayName; | ||||
| public void setDisplayname( final String displayName ) | |||||
| { | |||||
| /** | |||||
| * Set the user's fullname | |||||
| * | |||||
| * @param displayName the user's full name | |||||
| */ | |||||
| public void setDisplayname(final String displayName) { | |||||
| m_displayName = displayName; | m_displayName = displayName; | ||||
| } | } | ||||
| public void setUserid( final String userID ) | |||||
| { | |||||
| /** | |||||
| * Set the user's id | |||||
| * | |||||
| * @param userID the user's new id value. | |||||
| */ | |||||
| public void setUserid(final String userID) { | |||||
| m_userID = userID; | m_userID = userID; | ||||
| } | } | ||||
| String getUserID() | |||||
| { | |||||
| /** | |||||
| * Get the user's id. | |||||
| * | |||||
| * @return The userID value | |||||
| */ | |||||
| String getUserID() { | |||||
| return m_userID; | return m_userID; | ||||
| } | } | ||||
| String getDisplayname() | |||||
| { | |||||
| /** | |||||
| * Get the user's full name | |||||
| * | |||||
| * @return the usre's full name | |||||
| */ | |||||
| String getDisplayname() { | |||||
| return m_displayName; | return m_displayName; | ||||
| } | } | ||||
| void validate() | |||||
| throws BuildException | |||||
| { | |||||
| if( null == m_userID ) | |||||
| { | |||||
| /** | |||||
| * validate that this objetc is configured. | |||||
| * | |||||
| * @exception BuildException if the instance has not be correctly | |||||
| * configured. | |||||
| */ | |||||
| void validate() throws BuildException { | |||||
| if (null == m_userID) { | |||||
| final String message = "Username attribute must be set."; | final String message = "Username attribute must be set."; | ||||
| throw new BuildException( message ); | |||||
| throw new BuildException(message); | |||||
| } | } | ||||
| if( null == m_displayName ) | |||||
| { | |||||
| if (null == m_displayName) { | |||||
| final String message = | final String message = | ||||
| "Displayname attribute must be set for userID " + m_userID; | "Displayname attribute must be set for userID " + m_userID; | ||||
| throw new BuildException( message ); | |||||
| throw new BuildException(message); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -60,41 +60,40 @@ package org.apache.tools.ant.taskdefs.cvslib; | |||||
| * @author <a href="mailto:jeff.martin@synamic.co.uk">Jeff Martin</a> | * @author <a href="mailto:jeff.martin@synamic.co.uk">Jeff Martin</a> | ||||
| * @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
| */ | */ | ||||
| class RCSFile | |||||
| { | |||||
| class RCSFile { | |||||
| private String m_name; | private String m_name; | ||||
| private String m_revision; | private String m_revision; | ||||
| private String m_previousRevision; | private String m_previousRevision; | ||||
| RCSFile( final String name, final String rev ) | |||||
| { | |||||
| this( name, rev, null ); | |||||
| RCSFile(final String name, final String rev) { | |||||
| this(name, rev, null); | |||||
| } | } | ||||
| RCSFile( final String name, | |||||
| final String revision, | |||||
| final String previousRevision ) | |||||
| { | |||||
| RCSFile(final String name, | |||||
| final String revision, | |||||
| final String previousRevision) { | |||||
| m_name = name; | m_name = name; | ||||
| m_revision = revision; | m_revision = revision; | ||||
| if( !revision.equals( previousRevision ) ) | |||||
| { | |||||
| if (!revision.equals(previousRevision)) { | |||||
| m_previousRevision = previousRevision; | m_previousRevision = previousRevision; | ||||
| } | } | ||||
| } | } | ||||
| String getName() | |||||
| { | |||||
| String getName() { | |||||
| return m_name; | return m_name; | ||||
| } | } | ||||
| String getRevision() | |||||
| { | |||||
| String getRevision() { | |||||
| return m_revision; | return m_revision; | ||||
| } | } | ||||
| String getPreviousRevision() | |||||
| { | |||||
| String getPreviousRevision() { | |||||
| return m_previousRevision; | return m_previousRevision; | ||||
| } | } | ||||
| } | } | ||||
| @@ -51,7 +51,6 @@ | |||||
| * information on the Apache Software Foundation, please see | * information on the Apache Software Foundation, please see | ||||
| * <http://www.apache.org/>. | * <http://www.apache.org/>. | ||||
| */ | */ | ||||
| package org.apache.tools.ant.taskdefs.cvslib; | package org.apache.tools.ant.taskdefs.cvslib; | ||||
| import org.apache.tools.ant.taskdefs.LogOutputStream; | import org.apache.tools.ant.taskdefs.LogOutputStream; | ||||
| @@ -62,28 +61,29 @@ import org.apache.tools.ant.taskdefs.LogOutputStream; | |||||
| * @author <a href="mailto:peter@apache.org">Peter Donald</a> | * @author <a href="mailto:peter@apache.org">Peter Donald</a> | ||||
| * @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
| */ | */ | ||||
| class RedirectingOutputStream | |||||
| extends LogOutputStream | |||||
| { | |||||
| class RedirectingOutputStream | |||||
| extends LogOutputStream { | |||||
| private final ChangeLogParser m_parser; | private final ChangeLogParser m_parser; | ||||
| /** | /** | ||||
| * Creates a new instance of this class. | * Creates a new instance of this class. | ||||
| * | * | ||||
| * @param parser the parser to which output is sent. | |||||
| */ | */ | ||||
| public RedirectingOutputStream( final ChangeLogParser parser ) | |||||
| { | |||||
| super( null, 0 ); | |||||
| public RedirectingOutputStream(final ChangeLogParser parser) { | |||||
| super(null, 0); | |||||
| m_parser = parser; | m_parser = parser; | ||||
| } | } | ||||
| /** | /** | ||||
| * Logs a line to the log system of ant. | * Logs a line to the log system of ant. | ||||
| * | * | ||||
| * @param line the line to log. | * @param line the line to log. | ||||
| */ | */ | ||||
| protected void processLine( final String line ) | |||||
| { | |||||
| m_parser.stdout( line ); | |||||
| protected void processLine(final String line) { | |||||
| m_parser.stdout(line); | |||||
| } | } | ||||
| } | } | ||||
| @@ -65,40 +65,33 @@ import org.apache.tools.ant.BuildException; | |||||
| * @version $Revision$ $Date$ | * @version $Revision$ $Date$ | ||||
| */ | */ | ||||
| class RedirectingStreamHandler | class RedirectingStreamHandler | ||||
| extends PumpStreamHandler | |||||
| { | |||||
| RedirectingStreamHandler( final ChangeLogParser parser ) | |||||
| { | |||||
| super( new RedirectingOutputStream( parser ), | |||||
| new ByteArrayOutputStream() ); | |||||
| extends PumpStreamHandler { | |||||
| RedirectingStreamHandler(final ChangeLogParser parser) { | |||||
| super(new RedirectingOutputStream(parser), | |||||
| new ByteArrayOutputStream()); | |||||
| } | } | ||||
| String getErrors() | |||||
| { | |||||
| try | |||||
| { | |||||
| final ByteArrayOutputStream error = (ByteArrayOutputStream)getErr(); | |||||
| return error.toString( "ASCII" ); | |||||
| } | |||||
| catch( final Exception e ) | |||||
| { | |||||
| String getErrors() { | |||||
| try { | |||||
| final ByteArrayOutputStream error = (ByteArrayOutputStream) getErr(); | |||||
| return error.toString("ASCII"); | |||||
| } catch (final Exception e) { | |||||
| return null; | return null; | ||||
| } | } | ||||
| } | } | ||||
| public void stop() | |||||
| { | |||||
| public void stop() { | |||||
| super.stop(); | super.stop(); | ||||
| try | |||||
| { | |||||
| try { | |||||
| getErr().close(); | getErr().close(); | ||||
| getOut().close(); | getOut().close(); | ||||
| } | |||||
| catch( final IOException e ) | |||||
| { | |||||
| } catch (final IOException e) { | |||||
| // plain impossible | // plain impossible | ||||
| throw new BuildException( e ); | |||||
| throw new BuildException(e); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -59,75 +59,77 @@ package org.apache.tools.ant.taskdefs.email; | |||||
| * @author roxspring@yahoo.com Rob Oxspring | * @author roxspring@yahoo.com Rob Oxspring | ||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| */ | */ | ||||
| public class EmailAddress | |||||
| { | |||||
| public class EmailAddress { | |||||
| private String name; | private String name; | ||||
| private String address; | private String address; | ||||
| /** Creates an empty email address | |||||
| */ | |||||
| public EmailAddress() | |||||
| { | |||||
| /** Creates an empty email address */ | |||||
| public EmailAddress() { | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Creates a new email address based on the given string | * Creates a new email address based on the given string | ||||
| * | |||||
| * @param address the email address | * @param address the email address | ||||
| */ | */ | ||||
| public EmailAddress( String address ) | |||||
| { | |||||
| public EmailAddress(String address) { | |||||
| this.address = address; | this.address = address; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the personal / display name of the address | * Sets the personal / display name of the address | ||||
| * | |||||
| * @param name the display name | * @param name the display name | ||||
| */ | */ | ||||
| public void setName( String name ) | |||||
| { | |||||
| public void setName(String name) { | |||||
| this.name = name; | this.name = name; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the email address | * Sets the email address | ||||
| * | |||||
| * @param address the actual email address | * @param address the actual email address | ||||
| */ | */ | ||||
| public void setAddress( String address ) | |||||
| { | |||||
| public void setAddress(String address) { | |||||
| this.address = address; | this.address = address; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Constructs a string "name <address>" or "address" | * Constructs a string "name <address>" or "address" | ||||
| * | |||||
| * @return a string representation of the address | * @return a string representation of the address | ||||
| */ | */ | ||||
| public String toString() | |||||
| { | |||||
| if( name == null ) | |||||
| { | |||||
| public String toString() { | |||||
| if (name == null) { | |||||
| return address; | return address; | ||||
| } | |||||
| else | |||||
| { | |||||
| } else { | |||||
| return name + " <" + address + ">"; | return name + " <" + address + ">"; | ||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Returns the address | * Returns the address | ||||
| * | |||||
| * @return the address part | * @return the address part | ||||
| */ | */ | ||||
| public String getAddress() | |||||
| { | |||||
| public String getAddress() { | |||||
| return address; | return address; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Returns the display name | * Returns the display name | ||||
| * | |||||
| * @return the display name part | * @return the display name part | ||||
| */ | */ | ||||
| public String getName() | |||||
| { | |||||
| public String getName() { | |||||
| return name; | return name; | ||||
| } | } | ||||
| } | } | ||||
| @@ -67,8 +67,8 @@ import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
| import org.apache.tools.ant.types.FileSet; | import org.apache.tools.ant.types.FileSet; | ||||
| /** | /** | ||||
| * A task to send SMTP email. This is a refactoring of the SendMail | |||||
| * and MimeMail tasks such that both are within a single task. | |||||
| * A task to send SMTP email. This is a refactoring of the SendMail and | |||||
| * MimeMail tasks such that both are within a single task. | |||||
| * | * | ||||
| * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | * @author <a href="mailto:umagesh@apache.org">Magesh Umasankar</a> | ||||
| * @author glenn_twiggs@bmc.com | * @author glenn_twiggs@bmc.com | ||||
| @@ -77,480 +77,443 @@ import org.apache.tools.ant.types.FileSet; | |||||
| * @author paulo.gaspar@krankikom.de Paulo Gaspar | * @author paulo.gaspar@krankikom.de Paulo Gaspar | ||||
| * @author roxspring@yahoo.com Rob Oxspring | * @author roxspring@yahoo.com Rob Oxspring | ||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| * | |||||
| * @ant.task name="mail" category="network" | * @ant.task name="mail" category="network" | ||||
| */ | */ | ||||
| public class EmailTask | public class EmailTask | ||||
| extends Task | |||||
| { | |||||
| /** Constant to show that the best available mailer should be used. | |||||
| */ | |||||
| extends Task { | |||||
| /** Constant to show that the best available mailer should be used. */ | |||||
| public final static String AUTO = "auto"; | public final static String AUTO = "auto"; | ||||
| /** Constant to allow the Mime mailer to be requested | |||||
| */ | |||||
| /** Constant to allow the Mime mailer to be requested */ | |||||
| public final static String MIME = "mime"; | public final static String MIME = "mime"; | ||||
| /** Constant to allow the UU mailer to be requested | |||||
| */ | |||||
| /** Constant to allow the UU mailer to be requested */ | |||||
| public final static String UU = "uu"; | public final static String UU = "uu"; | ||||
| /** Constant to allow the plaintext mailer to be requested | |||||
| */ | |||||
| /** Constant to allow the plaintext mailer to be requested */ | |||||
| public final static String PLAIN = "plain"; | public final static String PLAIN = "plain"; | ||||
| /** Enumerates the encoding constants | |||||
| /** | |||||
| * Enumerates the encoding constants | |||||
| */ | */ | ||||
| public static class Encoding extends EnumeratedAttribute | |||||
| { | |||||
| /** finds the valid encoding values | |||||
| public static class Encoding extends EnumeratedAttribute { | |||||
| /** | |||||
| * finds the valid encoding values | |||||
| * | |||||
| * @return a list of valid entries | * @return a list of valid entries | ||||
| */ | */ | ||||
| public String[] getValues() | |||||
| { | |||||
| public String[] getValues() { | |||||
| return new String[] | return new String[] | ||||
| {AUTO, MIME, UU, PLAIN}; | |||||
| {AUTO, MIME, UU, PLAIN}; | |||||
| } | } | ||||
| } | } | ||||
| private String encoding = AUTO; | private String encoding = AUTO; | ||||
| /** | |||||
| * host running SMTP | |||||
| */ | |||||
| /** host running SMTP */ | |||||
| private String host = "localhost"; | private String host = "localhost"; | ||||
| private int port = 25; | private int port = 25; | ||||
| /** | |||||
| * subject field | |||||
| */ | |||||
| /** subject field */ | |||||
| private String subject = null; | private String subject = null; | ||||
| /** | |||||
| * any text | |||||
| */ | |||||
| /** any text */ | |||||
| private Message message = null; | private Message message = null; | ||||
| /** failure flag */ | /** failure flag */ | ||||
| private boolean failOnError = true; | private boolean failOnError = true; | ||||
| private boolean includeFileNames = false; | private boolean includeFileNames = false; | ||||
| private String messageMimeType = null; | private String messageMimeType = null; | ||||
| /** | |||||
| * sender | |||||
| */ | |||||
| /** sender */ | |||||
| private EmailAddress from = null; | private EmailAddress from = null; | ||||
| /** | |||||
| * TO recipients | |||||
| */ | |||||
| /** TO recipients */ | |||||
| private Vector toList = new Vector(); | private Vector toList = new Vector(); | ||||
| /** | |||||
| * CC (Carbon Copy) recipients | |||||
| */ | |||||
| /** CC (Carbon Copy) recipients */ | |||||
| private Vector ccList = new Vector(); | private Vector ccList = new Vector(); | ||||
| /** | |||||
| * BCC (Blind Carbon Copy) recipients | |||||
| */ | |||||
| /** BCC (Blind Carbon Copy) recipients */ | |||||
| private Vector bccList = new Vector(); | private Vector bccList = new Vector(); | ||||
| /** | |||||
| * file list | |||||
| */ | |||||
| /** file list */ | |||||
| private Vector files = new Vector(); | private Vector files = new Vector(); | ||||
| private Vector filesets = new Vector(); | private Vector filesets = new Vector(); | ||||
| /** | |||||
| /** | |||||
| * Allows the build writer to choose the preferred encoding method | * Allows the build writer to choose the preferred encoding method | ||||
| * | |||||
| * @param encoding The encoding (one of AUTO,MIME,UU,PLAIN) | * @param encoding The encoding (one of AUTO,MIME,UU,PLAIN) | ||||
| */ | */ | ||||
| public void setEncoding( Encoding encoding ) | |||||
| { | |||||
| public void setEncoding(Encoding encoding) { | |||||
| this.encoding = encoding.getValue(); | this.encoding = encoding.getValue(); | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the mail server port | * Sets the mail server port | ||||
| * | |||||
| * @param port The port to use | * @param port The port to use | ||||
| */ | */ | ||||
| public void setMailport( int port ) | |||||
| { | |||||
| public void setMailport(int port) { | |||||
| this.port = port; | this.port = port; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the host | * Sets the host | ||||
| * | |||||
| * @param host The host to connect to | * @param host The host to connect to | ||||
| */ | */ | ||||
| public void setMailhost( String host ) | |||||
| { | |||||
| public void setMailhost(String host) { | |||||
| this.host = host; | this.host = host; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the subject line of the email | * Sets the subject line of the email | ||||
| * | * | ||||
| * @param subject Subject of this email. | * @param subject Subject of this email. | ||||
| */ | */ | ||||
| public void setSubject( String subject ) | |||||
| { | |||||
| public void setSubject(String subject) { | |||||
| this.subject = subject; | this.subject = subject; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Shorthand method to set the message | * Shorthand method to set the message | ||||
| * | |||||
| * @param message Message body of this email. | * @param message Message body of this email. | ||||
| */ | */ | ||||
| public void setMessage( String message ) | |||||
| { | |||||
| if( this.message != null ) | |||||
| { | |||||
| throw new BuildException( "Only one message can be sent in an " | |||||
| + "email" ); | |||||
| public void setMessage(String message) { | |||||
| if (this.message != null) { | |||||
| throw new BuildException("Only one message can be sent in an " | |||||
| + "email"); | |||||
| } | } | ||||
| this.message = new Message( message ); | |||||
| this.message = new Message(message); | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Shorthand method to set the message from a file | * Shorthand method to set the message from a file | ||||
| * | |||||
| * @param file The file from which to take the message | * @param file The file from which to take the message | ||||
| */ | */ | ||||
| public void setMessageFile( File file ) | |||||
| { | |||||
| if( this.message != null ) | |||||
| { | |||||
| throw new BuildException( "Only one message can be sent in an " | |||||
| + "email" ); | |||||
| public void setMessageFile(File file) { | |||||
| if (this.message != null) { | |||||
| throw new BuildException("Only one message can be sent in an " | |||||
| + "email"); | |||||
| } | } | ||||
| this.message = new Message( file ); | |||||
| this.message = new Message(file); | |||||
| } | } | ||||
| /** | |||||
| * Shorthand method to set type of the text message, text/plain by | |||||
| * default but text/html or text/xml is quite feasible. | |||||
| /** | |||||
| * Shorthand method to set type of the text message, text/plain by default | |||||
| * but text/html or text/xml is quite feasible. | |||||
| * | * | ||||
| * @param type The new MessageMimeType value | * @param type The new MessageMimeType value | ||||
| */ | */ | ||||
| public void setMessageMimeType( String type ) | |||||
| { | |||||
| public void setMessageMimeType(String type) { | |||||
| this.messageMimeType = type; | this.messageMimeType = type; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Add a message elemnt | * Add a message elemnt | ||||
| * | |||||
| * @param message The message object | * @param message The message object | ||||
| * @throws BuildException if a message has already been added | * @throws BuildException if a message has already been added | ||||
| */ | */ | ||||
| public void addMessage( Message message ) | |||||
| throws BuildException | |||||
| { | |||||
| if( this.message != null ) | |||||
| { | |||||
| throw new BuildException( "Only one message can be sent in an " | |||||
| + "email" ); | |||||
| public void addMessage(Message message) | |||||
| throws BuildException { | |||||
| if (this.message != null) { | |||||
| throw new BuildException("Only one message can be sent in an " | |||||
| + "email"); | |||||
| } | } | ||||
| this.message = message; | this.message = message; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds a from address element | * Adds a from address element | ||||
| * | |||||
| * @param address The address to send from | * @param address The address to send from | ||||
| */ | */ | ||||
| public void addFrom( EmailAddress address ) | |||||
| { | |||||
| if( this.from != null ) | |||||
| { | |||||
| throw new BuildException( "Emails can only be from one address" ); | |||||
| public void addFrom(EmailAddress address) { | |||||
| if (this.from != null) { | |||||
| throw new BuildException("Emails can only be from one address"); | |||||
| } | } | ||||
| this.from = address; | this.from = address; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Shorthand to set the from address element | * Shorthand to set the from address element | ||||
| * | * | ||||
| * @param address The address to send mail from | * @param address The address to send mail from | ||||
| */ | */ | ||||
| public void setFrom( String address ) | |||||
| { | |||||
| if( this.from != null ) | |||||
| { | |||||
| throw new BuildException( "Emails can only be from one address" ); | |||||
| public void setFrom(String address) { | |||||
| if (this.from != null) { | |||||
| throw new BuildException("Emails can only be from one address"); | |||||
| } | } | ||||
| this.from = new EmailAddress( address ); | |||||
| this.from = new EmailAddress(address); | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds a to address element | * Adds a to address element | ||||
| * | |||||
| * @param address An email address | * @param address An email address | ||||
| */ | */ | ||||
| public void addTo( EmailAddress address ) | |||||
| { | |||||
| toList.addElement( address ); | |||||
| public void addTo(EmailAddress address) { | |||||
| toList.addElement(address); | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds "to" address elements | * Adds "to" address elements | ||||
| * | * | ||||
| * @param list Comma separated list of addresses | * @param list Comma separated list of addresses | ||||
| */ | */ | ||||
| public void setToList( String list ) | |||||
| { | |||||
| StringTokenizer tokens = new StringTokenizer( list, "," ); | |||||
| public void setToList(String list) { | |||||
| StringTokenizer tokens = new StringTokenizer(list, ","); | |||||
| while( tokens.hasMoreTokens() ) | |||||
| { | |||||
| toList.addElement( new EmailAddress( tokens.nextToken() ) ); | |||||
| while (tokens.hasMoreTokens()) { | |||||
| toList.addElement(new EmailAddress(tokens.nextToken())); | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds "cc" address element | * Adds "cc" address element | ||||
| * | |||||
| * @param address The email address | * @param address The email address | ||||
| */ | */ | ||||
| public void addCc( EmailAddress address ) | |||||
| { | |||||
| ccList.addElement( address ); | |||||
| public void addCc(EmailAddress address) { | |||||
| ccList.addElement(address); | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds "cc" address elements | * Adds "cc" address elements | ||||
| * | * | ||||
| * @param list Comma separated list of addresses | * @param list Comma separated list of addresses | ||||
| */ | */ | ||||
| public void setCcList( String list ) | |||||
| { | |||||
| StringTokenizer tokens = new StringTokenizer( list, "," ); | |||||
| public void setCcList(String list) { | |||||
| StringTokenizer tokens = new StringTokenizer(list, ","); | |||||
| while( tokens.hasMoreTokens() ) | |||||
| { | |||||
| ccList.addElement( new EmailAddress( tokens.nextToken() ) ); | |||||
| while (tokens.hasMoreTokens()) { | |||||
| ccList.addElement(new EmailAddress(tokens.nextToken())); | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds "bcc" address elements | * Adds "bcc" address elements | ||||
| * | |||||
| * @param address The email address | * @param address The email address | ||||
| */ | */ | ||||
| public void addBcc( EmailAddress address ) | |||||
| { | |||||
| bccList.addElement( address ); | |||||
| public void addBcc(EmailAddress address) { | |||||
| bccList.addElement(address); | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds "bcc" address elements | * Adds "bcc" address elements | ||||
| * | * | ||||
| * @param list comma separated list of addresses | * @param list comma separated list of addresses | ||||
| */ | */ | ||||
| public void setBccList( String list ) | |||||
| { | |||||
| StringTokenizer tokens = new StringTokenizer( list, "," ); | |||||
| public void setBccList(String list) { | |||||
| StringTokenizer tokens = new StringTokenizer(list, ","); | |||||
| while( tokens.hasMoreTokens() ) | |||||
| { | |||||
| bccList.addElement( new EmailAddress( tokens.nextToken() ) ); | |||||
| while (tokens.hasMoreTokens()) { | |||||
| bccList.addElement(new EmailAddress(tokens.nextToken())); | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Indicates whether BuildExceptions should be passed back to the core | * Indicates whether BuildExceptions should be passed back to the core | ||||
| * | * | ||||
| * @param failOnError The new FailOnError value | * @param failOnError The new FailOnError value | ||||
| */ | */ | ||||
| public void setFailOnError( boolean failOnError ) | |||||
| { | |||||
| public void setFailOnError(boolean failOnError) { | |||||
| this.failOnError = failOnError; | this.failOnError = failOnError; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds a list of files to be attached | * Adds a list of files to be attached | ||||
| * | * | ||||
| * @param filenames Comma separated list of files | * @param filenames Comma separated list of files | ||||
| */ | */ | ||||
| public void setFiles( String filenames ) | |||||
| { | |||||
| StringTokenizer t = new StringTokenizer( filenames, ", " ); | |||||
| public void setFiles(String filenames) { | |||||
| StringTokenizer t = new StringTokenizer(filenames, ", "); | |||||
| while( t.hasMoreTokens() ) | |||||
| { | |||||
| files.addElement( project.resolveFile( t.nextToken() ) ); | |||||
| while (t.hasMoreTokens()) { | |||||
| files.addElement(project.resolveFile(t.nextToken())); | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds a set of files (nested fileset attribute). | * Adds a set of files (nested fileset attribute). | ||||
| * | |||||
| * @param fs The fileset | * @param fs The fileset | ||||
| */ | */ | ||||
| public void addFileset( FileSet fs ) | |||||
| { | |||||
| filesets.addElement( fs ); | |||||
| public void addFileset(FileSet fs) { | |||||
| filesets.addElement(fs); | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets Includefilenames attribute | * Sets Includefilenames attribute | ||||
| * | * | ||||
| * @param includeFileNames Whether to include filenames in the | |||||
| * text of the message | |||||
| * @param includeFileNames Whether to include filenames in the text of the | |||||
| * message | |||||
| */ | */ | ||||
| public void setIncludefilenames( boolean includeFileNames ) | |||||
| { | |||||
| public void setIncludefilenames(boolean includeFileNames) { | |||||
| this.includeFileNames = includeFileNames; | this.includeFileNames = includeFileNames; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Identifies whether file names should be included | * Identifies whether file names should be included | ||||
| * | |||||
| * @return Identifies whether file names should be included | * @return Identifies whether file names should be included | ||||
| */ | */ | ||||
| public boolean getIncludeFileNames() | |||||
| { | |||||
| public boolean getIncludeFileNames() { | |||||
| return includeFileNames; | return includeFileNames; | ||||
| } | } | ||||
| /** | |||||
| * Sends an email | |||||
| */ | |||||
| public void execute() | |||||
| { | |||||
| /** Sends an email */ | |||||
| public void execute() { | |||||
| Message savedMessage = message; | Message savedMessage = message; | ||||
| Vector savedFiles = (Vector) files.clone(); | Vector savedFiles = (Vector) files.clone(); | ||||
| try | |||||
| { | |||||
| try { | |||||
| Mailer mailer = null; | Mailer mailer = null; | ||||
| // prepare for the auto select mechanism | // prepare for the auto select mechanism | ||||
| boolean autoFound = false; | boolean autoFound = false; | ||||
| // try MIME format | // try MIME format | ||||
| if( encoding.equals( MIME ) | |||||
| || ( encoding.equals( AUTO ) && !autoFound ) ) | |||||
| { | |||||
| try | |||||
| { | |||||
| mailer = | |||||
| (Mailer) Class.forName( "org.apache.tools.ant.taskdefs.email.MimeMailer" ) | |||||
| if (encoding.equals(MIME) | |||||
| || (encoding.equals(AUTO) && !autoFound)) { | |||||
| try { | |||||
| mailer = | |||||
| (Mailer) Class.forName("org.apache.tools.ant.taskdefs.email.MimeMailer") | |||||
| .newInstance(); | .newInstance(); | ||||
| autoFound = true; | autoFound = true; | ||||
| log( "Using MIME mail", Project.MSG_VERBOSE ); | |||||
| } | |||||
| catch( Throwable e ) | |||||
| { | |||||
| log( "Failed to initialise MIME mail", Project.MSG_WARN ); | |||||
| log("Using MIME mail", Project.MSG_VERBOSE); | |||||
| } catch (Throwable e) { | |||||
| log("Failed to initialise MIME mail", Project.MSG_WARN); | |||||
| } | } | ||||
| } | } | ||||
| // try UU format | // try UU format | ||||
| if( encoding.equals( UU ) | |||||
| || ( encoding.equals( AUTO ) && !autoFound ) ) | |||||
| { | |||||
| try | |||||
| { | |||||
| mailer = | |||||
| (Mailer)Class.forName( "org.apache.tools.ant.taskdefs.email.UUMailer" ) | |||||
| if (encoding.equals(UU) | |||||
| || (encoding.equals(AUTO) && !autoFound)) { | |||||
| try { | |||||
| mailer = | |||||
| (Mailer) Class.forName("org.apache.tools.ant.taskdefs.email.UUMailer") | |||||
| .newInstance(); | .newInstance(); | ||||
| autoFound = true; | autoFound = true; | ||||
| log( "Using UU mail", Project.MSG_VERBOSE ); | |||||
| } | |||||
| catch( Throwable e ) | |||||
| { | |||||
| log( "Failed to initialise UU mail", Project.MSG_WARN ); | |||||
| log("Using UU mail", Project.MSG_VERBOSE); | |||||
| } catch (Throwable e) { | |||||
| log("Failed to initialise UU mail", Project.MSG_WARN); | |||||
| } | } | ||||
| } | } | ||||
| // try plain format | // try plain format | ||||
| if( encoding.equals( PLAIN ) | |||||
| || ( encoding.equals( AUTO ) && !autoFound ) ) | |||||
| { | |||||
| if (encoding.equals(PLAIN) | |||||
| || (encoding.equals(AUTO) && !autoFound)) { | |||||
| mailer = new PlainMailer(); | mailer = new PlainMailer(); | ||||
| autoFound = true; | autoFound = true; | ||||
| log( "Using plain mail", Project.MSG_VERBOSE ); | |||||
| log("Using plain mail", Project.MSG_VERBOSE); | |||||
| } | } | ||||
| // a valid mailer must be present by now | // a valid mailer must be present by now | ||||
| if( mailer == null ) | |||||
| { | |||||
| throw new BuildException( "Failed to initialise encoding: " | |||||
| + encoding ); | |||||
| if (mailer == null) { | |||||
| throw new BuildException("Failed to initialise encoding: " | |||||
| + encoding); | |||||
| } | } | ||||
| // a valid message is required | // a valid message is required | ||||
| if( message == null ) | |||||
| { | |||||
| if (message == null) { | |||||
| message = new Message(); | message = new Message(); | ||||
| } | } | ||||
| // an address to send from is required | // an address to send from is required | ||||
| if( from == null || from.getAddress() == null ) | |||||
| { | |||||
| throw new BuildException( "A from element is required" ); | |||||
| if (from == null || from.getAddress() == null) { | |||||
| throw new BuildException("A from element is required"); | |||||
| } | } | ||||
| // at least one address to send to/cc/bcc is required | // at least one address to send to/cc/bcc is required | ||||
| if( toList.isEmpty() && ccList.isEmpty() && bccList.isEmpty() ) | |||||
| { | |||||
| throw new BuildException( "At least one of to,cc or bcc must " | |||||
| + "be supplied" ); | |||||
| if (toList.isEmpty() && ccList.isEmpty() && bccList.isEmpty()) { | |||||
| throw new BuildException("At least one of to,cc or bcc must " | |||||
| + "be supplied"); | |||||
| } | } | ||||
| // set the mimetype if not done already (and required) | // set the mimetype if not done already (and required) | ||||
| if( messageMimeType != null ) | |||||
| { | |||||
| if( message.isMimeTypeSpecified() ) | |||||
| { | |||||
| throw new BuildException( "The mime type can only be " | |||||
| + "specified in one location" ); | |||||
| } | |||||
| else | |||||
| { | |||||
| message.setMimeType( messageMimeType ); | |||||
| if (messageMimeType != null) { | |||||
| if (message.isMimeTypeSpecified()) { | |||||
| throw new BuildException("The mime type can only be " | |||||
| + "specified in one location"); | |||||
| } else { | |||||
| message.setMimeType(messageMimeType); | |||||
| } | } | ||||
| } | } | ||||
| // identify which files should be attached | // identify which files should be attached | ||||
| Enumeration e = filesets.elements(); | Enumeration e = filesets.elements(); | ||||
| while( e.hasMoreElements() ) | |||||
| { | |||||
| FileSet fs = (FileSet)e.nextElement(); | |||||
| DirectoryScanner ds = fs.getDirectoryScanner( project ); | |||||
| while (e.hasMoreElements()) { | |||||
| FileSet fs = (FileSet) e.nextElement(); | |||||
| DirectoryScanner ds = fs.getDirectoryScanner(project); | |||||
| String[] includedFiles = ds.getIncludedFiles(); | String[] includedFiles = ds.getIncludedFiles(); | ||||
| File baseDir = ds.getBasedir(); | File baseDir = ds.getBasedir(); | ||||
| for( int j = 0; j < includedFiles.length; ++j ) | |||||
| { | |||||
| File file = new File( baseDir, includedFiles[ j ] ); | |||||
| files.addElement( file ); | |||||
| for (int j = 0; j < includedFiles.length; ++j) { | |||||
| File file = new File(baseDir, includedFiles[j]); | |||||
| files.addElement(file); | |||||
| } | } | ||||
| } | } | ||||
| // let the user know what's going to happen | // let the user know what's going to happen | ||||
| log( "Sending email: " + subject, Project.MSG_INFO ); | |||||
| log( "From " + from, Project.MSG_VERBOSE ); | |||||
| log( "To " + toList, Project.MSG_VERBOSE ); | |||||
| log( "Cc " + ccList, Project.MSG_VERBOSE ); | |||||
| log( "Bcc " + bccList, Project.MSG_VERBOSE ); | |||||
| log("Sending email: " + subject, Project.MSG_INFO); | |||||
| log("From " + from, Project.MSG_VERBOSE); | |||||
| log("To " + toList, Project.MSG_VERBOSE); | |||||
| log("Cc " + ccList, Project.MSG_VERBOSE); | |||||
| log("Bcc " + bccList, Project.MSG_VERBOSE); | |||||
| // pass the params to the mailer | // pass the params to the mailer | ||||
| mailer.setHost( host ); | |||||
| mailer.setPort( port ); | |||||
| mailer.setMessage( message ); | |||||
| mailer.setFrom( from ); | |||||
| mailer.setToList( toList ); | |||||
| mailer.setCcList( ccList ); | |||||
| mailer.setBccList( bccList ); | |||||
| mailer.setFiles( files ); | |||||
| mailer.setSubject( subject ); | |||||
| mailer.setTask( this ); | |||||
| mailer.setIncludeFileNames( includeFileNames ); | |||||
| mailer.setHost(host); | |||||
| mailer.setPort(port); | |||||
| mailer.setMessage(message); | |||||
| mailer.setFrom(from); | |||||
| mailer.setToList(toList); | |||||
| mailer.setCcList(ccList); | |||||
| mailer.setBccList(bccList); | |||||
| mailer.setFiles(files); | |||||
| mailer.setSubject(subject); | |||||
| mailer.setTask(this); | |||||
| mailer.setIncludeFileNames(includeFileNames); | |||||
| // send the email | // send the email | ||||
| mailer.send(); | mailer.send(); | ||||
| // let the user know what happened | // let the user know what happened | ||||
| int count = files.size(); | int count = files.size(); | ||||
| log( "Sent email with " + count + " attachment" | |||||
| + ( count == 1?"":"s" ), Project.MSG_INFO ); | |||||
| } | |||||
| catch( BuildException e ) | |||||
| { | |||||
| log( "Failed to send email", Project.MSG_WARN ); | |||||
| if( failOnError ) | |||||
| { | |||||
| log("Sent email with " + count + " attachment" | |||||
| + (count == 1 ? "" : "s"), Project.MSG_INFO); | |||||
| } catch (BuildException e) { | |||||
| log("Failed to send email", Project.MSG_WARN); | |||||
| if (failOnError) { | |||||
| throw e; | throw e; | ||||
| } | } | ||||
| } finally { | } finally { | ||||
| @@ -63,8 +63,7 @@ import org.apache.tools.ant.Task; | |||||
| * @author roxspring@yahoo.com Rob Oxspring | * @author roxspring@yahoo.com Rob Oxspring | ||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| */ | */ | ||||
| abstract class Mailer | |||||
| { | |||||
| abstract class Mailer { | |||||
| protected String host = null; | protected String host = null; | ||||
| protected int port = -1; | protected int port = -1; | ||||
| protected Message message; | protected Message message; | ||||
| @@ -77,109 +76,123 @@ abstract class Mailer | |||||
| protected Task task; | protected Task task; | ||||
| protected boolean includeFileNames = false; | protected boolean includeFileNames = false; | ||||
| /** | |||||
| /** | |||||
| * Sets the mail server | * Sets the mail server | ||||
| * | |||||
| * @param host | * @param host | ||||
| */ | */ | ||||
| public void setHost( String host ) | |||||
| { | |||||
| public void setHost(String host) { | |||||
| this.host = host; | this.host = host; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the smtp port | * Sets the smtp port | ||||
| * | |||||
| * @param port | * @param port | ||||
| */ | */ | ||||
| public void setPort( int port ) | |||||
| { | |||||
| public void setPort(int port) { | |||||
| this.port = port; | this.port = port; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the message | * Sets the message | ||||
| * | |||||
| * @param m | * @param m | ||||
| */ | */ | ||||
| public void setMessage( Message m ) | |||||
| { | |||||
| public void setMessage(Message m) { | |||||
| this.message = m; | this.message = m; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the address to send from | * Sets the address to send from | ||||
| * | |||||
| * @param from | * @param from | ||||
| */ | */ | ||||
| public void setFrom( EmailAddress from ) | |||||
| { | |||||
| public void setFrom(EmailAddress from) { | |||||
| this.from = from; | this.from = from; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Set the to addresses | * Set the to addresses | ||||
| * | |||||
| * @param list | * @param list | ||||
| */ | */ | ||||
| public void setToList( Vector list ) | |||||
| { | |||||
| public void setToList(Vector list) { | |||||
| this.toList = list; | this.toList = list; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the cc addresses | * Sets the cc addresses | ||||
| * | |||||
| * @param list | * @param list | ||||
| */ | */ | ||||
| public void setCcList( Vector list ) | |||||
| { | |||||
| public void setCcList(Vector list) { | |||||
| this.ccList = list; | this.ccList = list; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the bcc addresses | * Sets the bcc addresses | ||||
| * | |||||
| * @param list | * @param list | ||||
| */ | */ | ||||
| public void setBccList( Vector list ) | |||||
| { | |||||
| public void setBccList(Vector list) { | |||||
| this.bccList = list; | this.bccList = list; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the files to attach | * Sets the files to attach | ||||
| * | |||||
| * @param files | * @param files | ||||
| */ | */ | ||||
| public void setFiles( Vector files ) | |||||
| { | |||||
| public void setFiles(Vector files) { | |||||
| this.files = files; | this.files = files; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the subject | * Sets the subject | ||||
| * | |||||
| * @param subject | * @param subject | ||||
| */ | */ | ||||
| public void setSubject( String subject ) | |||||
| { | |||||
| public void setSubject(String subject) { | |||||
| this.subject = subject; | this.subject = subject; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the owning task | * Sets the owning task | ||||
| * | |||||
| * @param task | * @param task | ||||
| */ | */ | ||||
| public void setTask( Task task ) | |||||
| { | |||||
| public void setTask(Task task) { | |||||
| this.task = task; | this.task = task; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Indicates whether filenames should be listed in the body | * Indicates whether filenames should be listed in the body | ||||
| * | |||||
| * @param b | * @param b | ||||
| */ | */ | ||||
| public void setIncludeFileNames( boolean b ) | |||||
| { | |||||
| public void setIncludeFileNames(boolean b) { | |||||
| this.includeFileNames = b; | this.includeFileNames = b; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * This method should send the email | * This method should send the email | ||||
| * | |||||
| * @throws BuildException | * @throws BuildException | ||||
| */ | */ | ||||
| public abstract void send() | public abstract void send() | ||||
| throws BuildException; | |||||
| throws BuildException; | |||||
| } | } | ||||
| @@ -65,113 +65,114 @@ import java.io.PrintStream; | |||||
| * @author roxspring@yahoo.com Rob Oxspring | * @author roxspring@yahoo.com Rob Oxspring | ||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| */ | */ | ||||
| public class Message | |||||
| { | |||||
| public class Message { | |||||
| private File messageSource = null; | private File messageSource = null; | ||||
| private StringBuffer buffer = new StringBuffer(); | private StringBuffer buffer = new StringBuffer(); | ||||
| private String mimeType = "text/plain"; | private String mimeType = "text/plain"; | ||||
| private boolean specified = false; | private boolean specified = false; | ||||
| /** | |||||
| * Creates a new empty message | |||||
| */ | |||||
| public Message() | |||||
| { | |||||
| /** Creates a new empty message */ | |||||
| public Message() { | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Creates a new message based on the given string | * Creates a new message based on the given string | ||||
| * | |||||
| * @param text the message | * @param text the message | ||||
| */ | */ | ||||
| public Message( String text ) | |||||
| { | |||||
| addText( text ); | |||||
| public Message(String text) { | |||||
| addText(text); | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Creates a new message using the contents of the given file. | * Creates a new message using the contents of the given file. | ||||
| * | |||||
| * @param file the source of the message | * @param file the source of the message | ||||
| */ | */ | ||||
| public Message( File file ) | |||||
| { | |||||
| public Message(File file) { | |||||
| messageSource = file; | messageSource = file; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Adds a textual part of the message | * Adds a textual part of the message | ||||
| * | |||||
| * @param text some text to add | * @param text some text to add | ||||
| */ | */ | ||||
| public void addText( String text ) | |||||
| { | |||||
| buffer.append( text ); | |||||
| public void addText(String text) { | |||||
| buffer.append(text); | |||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the source file of the message | * Sets the source file of the message | ||||
| * | |||||
| * @param src the source of the message | * @param src the source of the message | ||||
| */ | */ | ||||
| public void setSrc( File src ) | |||||
| { | |||||
| public void setSrc(File src) { | |||||
| this.messageSource = src; | this.messageSource = src; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Sets the content type for the message | * Sets the content type for the message | ||||
| * | |||||
| * @param mimeType a mime type e.g. "text/plain" | * @param mimeType a mime type e.g. "text/plain" | ||||
| */ | */ | ||||
| public void setMimeType( String mimeType ) | |||||
| { | |||||
| public void setMimeType(String mimeType) { | |||||
| this.mimeType = mimeType; | this.mimeType = mimeType; | ||||
| specified = true; | specified = true; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Returns the content type | * Returns the content type | ||||
| * | |||||
| * @return the mime type | * @return the mime type | ||||
| */ | */ | ||||
| public String getMimeType() | |||||
| { | |||||
| public String getMimeType() { | |||||
| return mimeType; | return mimeType; | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Prints the message onto an output stream | * Prints the message onto an output stream | ||||
| * | |||||
| * @param out The print stream to write to | * @param out The print stream to write to | ||||
| * @throws IOException if an error occurs | * @throws IOException if an error occurs | ||||
| */ | */ | ||||
| public void print( PrintStream out ) | |||||
| throws IOException | |||||
| { | |||||
| if( messageSource != null ) | |||||
| { | |||||
| public void print(PrintStream out) | |||||
| throws IOException { | |||||
| if (messageSource != null) { | |||||
| // Read message from a file | // Read message from a file | ||||
| FileReader freader = new FileReader( messageSource ); | |||||
| try | |||||
| { | |||||
| BufferedReader in = new BufferedReader( freader ); | |||||
| FileReader freader = new FileReader(messageSource); | |||||
| try { | |||||
| BufferedReader in = new BufferedReader(freader); | |||||
| String line = null; | String line = null; | ||||
| while( ( line = in.readLine() ) != null ) | |||||
| { | |||||
| out.println( line ); | |||||
| while ((line = in.readLine()) != null) { | |||||
| out.println(line); | |||||
| } | } | ||||
| } | |||||
| finally { | |||||
| } finally { | |||||
| freader.close(); | freader.close(); | ||||
| } | } | ||||
| } | |||||
| else | |||||
| { | |||||
| out.println( buffer ); | |||||
| } else { | |||||
| out.println(buffer); | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Returns true iff the mimeType has been set. | * Returns true iff the mimeType has been set. | ||||
| * | |||||
| * @return false if the default value is in use | * @return false if the default value is in use | ||||
| */ | */ | ||||
| public boolean isMimeTypeSpecified() | |||||
| { | |||||
| public boolean isMimeTypeSpecified() { | |||||
| return specified; | return specified; | ||||
| } | } | ||||
| } | } | ||||
| @@ -80,112 +80,101 @@ import org.apache.tools.ant.BuildException; | |||||
| * @author roxspring@yahoo.com Rob Oxspring | * @author roxspring@yahoo.com Rob Oxspring | ||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| */ | */ | ||||
| class MimeMailer | |||||
| extends Mailer | |||||
| { | |||||
| /** Sends the email | |||||
| */ | |||||
| public void send() | |||||
| { | |||||
| try | |||||
| { | |||||
| class MimeMailer extends Mailer { | |||||
| /** Sends the email */ | |||||
| public void send() { | |||||
| try { | |||||
| Properties props = new Properties(); | Properties props = new Properties(); | ||||
| props.put( "mail.smtp.host", host ); | |||||
| props.put( "mail.smtp.port", String.valueOf( port ) ); | |||||
| props.put("mail.smtp.host", host); | |||||
| props.put("mail.smtp.port", String.valueOf(port)); | |||||
| // Aside, the JDK is clearly unaware of the scottish | // Aside, the JDK is clearly unaware of the scottish | ||||
| // 'session', which //involves excessive quantities of | // 'session', which //involves excessive quantities of | ||||
| // alcohol :-) | // alcohol :-) | ||||
| Session sesh = Session.getDefaultInstance( props, null ); | |||||
| Session sesh = Session.getDefaultInstance(props, null); | |||||
| //create the message | //create the message | ||||
| MimeMessage msg = new MimeMessage( sesh ); | |||||
| MimeMessage msg = new MimeMessage(sesh); | |||||
| MimeMultipart attachments = new MimeMultipart(); | MimeMultipart attachments = new MimeMultipart(); | ||||
| //set the sender | //set the sender | ||||
| if( from.getName() == null ) | |||||
| { | |||||
| msg.setFrom( new InternetAddress( from.getAddress() ) ); | |||||
| } | |||||
| else | |||||
| { | |||||
| msg.setFrom( new InternetAddress( from.getAddress(), | |||||
| from.getName() ) ); | |||||
| if (from.getName() == null) { | |||||
| msg.setFrom(new InternetAddress(from.getAddress())); | |||||
| } else { | |||||
| msg.setFrom(new InternetAddress(from.getAddress(), | |||||
| from.getName())); | |||||
| } | } | ||||
| msg.setRecipients( Message.RecipientType.TO, | |||||
| internetAddresses( toList ) ); | |||||
| msg.setRecipients( Message.RecipientType.CC, | |||||
| internetAddresses( ccList ) ); | |||||
| msg.setRecipients( Message.RecipientType.BCC, | |||||
| internetAddresses( bccList ) ); | |||||
| msg.setRecipients(Message.RecipientType.TO, | |||||
| internetAddresses(toList)); | |||||
| msg.setRecipients(Message.RecipientType.CC, | |||||
| internetAddresses(ccList)); | |||||
| msg.setRecipients(Message.RecipientType.BCC, | |||||
| internetAddresses(bccList)); | |||||
| if( subject != null ) | |||||
| { | |||||
| msg.setSubject( subject ); | |||||
| if (subject != null) { | |||||
| msg.setSubject(subject); | |||||
| } | } | ||||
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); | ByteArrayOutputStream baos = new ByteArrayOutputStream(); | ||||
| PrintStream out = new PrintStream( baos ); | |||||
| message.print( out ); | |||||
| PrintStream out = new PrintStream(baos); | |||||
| message.print(out); | |||||
| out.close(); | out.close(); | ||||
| MimeBodyPart textbody = new MimeBodyPart(); | MimeBodyPart textbody = new MimeBodyPart(); | ||||
| textbody.setContent( baos.toString(), message.getMimeType() ); | |||||
| attachments.addBodyPart( textbody ); | |||||
| textbody.setContent(baos.toString(), message.getMimeType()); | |||||
| attachments.addBodyPart(textbody); | |||||
| Enumeration e = files.elements(); | Enumeration e = files.elements(); | ||||
| while( e.hasMoreElements() ) | |||||
| { | |||||
| File file = (File)e.nextElement(); | |||||
| while (e.hasMoreElements()) { | |||||
| File file = (File) e.nextElement(); | |||||
| MimeBodyPart body; | MimeBodyPart body; | ||||
| body = new MimeBodyPart(); | body = new MimeBodyPart(); | ||||
| if( !file.exists() || !file.canRead() ) | |||||
| { | |||||
| throw new BuildException( "File \"" + file.getAbsolutePath() | |||||
| + "\" does not exist or is not " | |||||
| + "readable." ); | |||||
| if (!file.exists() || !file.canRead()) { | |||||
| throw new BuildException("File \"" + file.getAbsolutePath() | |||||
| + "\" does not exist or is not " | |||||
| + "readable."); | |||||
| } | } | ||||
| FileDataSource fileData = new FileDataSource( file ); | |||||
| DataHandler fileDataHandler = new DataHandler( fileData ); | |||||
| body.setDataHandler( fileDataHandler ); | |||||
| body.setFileName( file.getName() ); | |||||
| attachments.addBodyPart( body ); | |||||
| FileDataSource fileData = new FileDataSource(file); | |||||
| DataHandler fileDataHandler = new DataHandler(fileData); | |||||
| body.setDataHandler(fileDataHandler); | |||||
| body.setFileName(file.getName()); | |||||
| attachments.addBodyPart(body); | |||||
| } | } | ||||
| msg.setContent( attachments ); | |||||
| Transport.send( msg ); | |||||
| } | |||||
| catch( MessagingException e ) | |||||
| { | |||||
| throw new BuildException( "Problem while sending mime mail:", e ); | |||||
| } | |||||
| catch( IOException e ) | |||||
| { | |||||
| throw new BuildException( "Problem while sending mime mail:", e ); | |||||
| msg.setContent(attachments); | |||||
| Transport.send(msg); | |||||
| } catch (MessagingException e) { | |||||
| throw new BuildException("Problem while sending mime mail:", e); | |||||
| } catch (IOException e) { | |||||
| throw new BuildException("Problem while sending mime mail:", e); | |||||
| } | } | ||||
| } | } | ||||
| private static InternetAddress[] internetAddresses( Vector list ) | |||||
| throws AddressException, UnsupportedEncodingException | |||||
| { | |||||
| InternetAddress[] addrs = new InternetAddress[ list.size() ]; | |||||
| for( int i = 0; i < list.size(); ++i ) | |||||
| { | |||||
| EmailAddress addr = (EmailAddress)list.elementAt( i ); | |||||
| if( addr.getName() == null ) | |||||
| { | |||||
| addrs[ i ] = new InternetAddress( addr.getAddress() ); | |||||
| } | |||||
| else | |||||
| { | |||||
| addrs[ i ] = new InternetAddress( addr.getAddress(), | |||||
| addr.getName() ); | |||||
| private static InternetAddress[] internetAddresses(Vector list) | |||||
| throws AddressException, UnsupportedEncodingException { | |||||
| InternetAddress[] addrs = new InternetAddress[list.size()]; | |||||
| for (int i = 0; i < list.size(); ++i) { | |||||
| EmailAddress addr = (EmailAddress) list.elementAt(i); | |||||
| if (addr.getName() == null) { | |||||
| addrs[i] = new InternetAddress(addr.getAddress()); | |||||
| } else { | |||||
| addrs[i] = new InternetAddress(addr.getAddress(), | |||||
| addr.getName()); | |||||
| } | } | ||||
| } | } | ||||
| return addrs; | return addrs; | ||||
| } | } | ||||
| } | } | ||||
| @@ -68,112 +68,103 @@ import org.apache.tools.mail.MailMessage; | |||||
| * @author roxspring@yahoo.com Rob Oxspring | * @author roxspring@yahoo.com Rob Oxspring | ||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| */ | */ | ||||
| class PlainMailer | |||||
| extends Mailer | |||||
| { | |||||
| /** | |||||
| class PlainMailer extends Mailer { | |||||
| /** | |||||
| * Sends the email using the apache MailMessage class. | * Sends the email using the apache MailMessage class. | ||||
| * | |||||
| * @see org.apache.tools.mail.MailMessage | * @see org.apache.tools.mail.MailMessage | ||||
| */ | */ | ||||
| public void send() | |||||
| { | |||||
| try | |||||
| { | |||||
| MailMessage mailMessage = new MailMessage( host ); | |||||
| mailMessage.setPort( port ); | |||||
| public void send() { | |||||
| try { | |||||
| MailMessage mailMessage = new MailMessage(host); | |||||
| mailMessage.from( from.toString() ); | |||||
| mailMessage.setPort(port); | |||||
| mailMessage.from(from.toString()); | |||||
| Enumeration e; | Enumeration e; | ||||
| e = toList.elements(); | e = toList.elements(); | ||||
| while( e.hasMoreElements() ) | |||||
| { | |||||
| mailMessage.to( e.nextElement().toString() ); | |||||
| while (e.hasMoreElements()) { | |||||
| mailMessage.to(e.nextElement().toString()); | |||||
| } | } | ||||
| e = ccList.elements(); | e = ccList.elements(); | ||||
| while( e.hasMoreElements() ) | |||||
| { | |||||
| mailMessage.cc( e.nextElement().toString() ); | |||||
| while (e.hasMoreElements()) { | |||||
| mailMessage.cc(e.nextElement().toString()); | |||||
| } | } | ||||
| e = bccList.elements(); | e = bccList.elements(); | ||||
| while( e.hasMoreElements() ) | |||||
| { | |||||
| mailMessage.bcc( e.nextElement().toString() ); | |||||
| while (e.hasMoreElements()) { | |||||
| mailMessage.bcc(e.nextElement().toString()); | |||||
| } | } | ||||
| if( subject != null ) | |||||
| { | |||||
| mailMessage.setSubject( subject ); | |||||
| if (subject != null) { | |||||
| mailMessage.setSubject(subject); | |||||
| } | } | ||||
| mailMessage.setHeader( "Content-Type", message.getMimeType() ); | |||||
| mailMessage.setHeader("Content-Type", message.getMimeType()); | |||||
| PrintStream out = mailMessage.getPrintStream(); | PrintStream out = mailMessage.getPrintStream(); | ||||
| message.print( out ); | |||||
| message.print(out); | |||||
| e = files.elements(); | e = files.elements(); | ||||
| while( e.hasMoreElements() ) | |||||
| { | |||||
| File file = (File)e.nextElement(); | |||||
| attach( file, out ); | |||||
| while (e.hasMoreElements()) { | |||||
| File file = (File) e.nextElement(); | |||||
| attach(file, out); | |||||
| } | } | ||||
| mailMessage.sendAndClose(); | mailMessage.sendAndClose(); | ||||
| } | |||||
| catch( IOException ioe ) | |||||
| { | |||||
| throw new BuildException( "IO error sending mail", ioe ); | |||||
| } catch (IOException ioe) { | |||||
| throw new BuildException("IO error sending mail", ioe); | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| /** | |||||
| * Attaches a file to this email | * Attaches a file to this email | ||||
| * | |||||
| * @param file The file to attache | * @param file The file to attache | ||||
| * @param out The message stream to add to | * @param out The message stream to add to | ||||
| * @throws IOException if errors occur | * @throws IOException if errors occur | ||||
| */ | */ | ||||
| protected void attach( File file, PrintStream out ) | |||||
| throws IOException | |||||
| { | |||||
| if( !file.exists() || !file.canRead() ) | |||||
| { | |||||
| throw new BuildException( "File \"" + file.getName() | |||||
| + "\" does not exist or is not " | |||||
| + "readable." ); | |||||
| protected void attach(File file, PrintStream out) | |||||
| throws IOException { | |||||
| if (!file.exists() || !file.canRead()) { | |||||
| throw new BuildException("File \"" + file.getName() | |||||
| + "\" does not exist or is not " | |||||
| + "readable."); | |||||
| } | } | ||||
| if( includeFileNames ) | |||||
| { | |||||
| if (includeFileNames) { | |||||
| out.println(); | out.println(); | ||||
| String filename = file.getName(); | String filename = file.getName(); | ||||
| int filenamelength = filename.length(); | int filenamelength = filename.length(); | ||||
| out.println( filename ); | |||||
| for( int star = 0; star < filenamelength; star++ ) | |||||
| { | |||||
| out.print( '=' ); | |||||
| out.println(filename); | |||||
| for (int star = 0; star < filenamelength; star++) { | |||||
| out.print('='); | |||||
| } | } | ||||
| out.println(); | out.println(); | ||||
| } | } | ||||
| int length; | int length; | ||||
| byte[] buf = new byte[ 1024 ]; | |||||
| FileInputStream finstr = new FileInputStream( file ); | |||||
| try | |||||
| { | |||||
| BufferedInputStream in = new BufferedInputStream( finstr, buf.length ); | |||||
| while( ( length = in.read( buf ) ) != -1 ) | |||||
| { | |||||
| out.write( buf, 0, length ); | |||||
| byte[] buf = new byte[1024]; | |||||
| FileInputStream finstr = new FileInputStream(file); | |||||
| try { | |||||
| BufferedInputStream in = new BufferedInputStream(finstr, buf.length); | |||||
| while ((length = in.read(buf)) != -1) { | |||||
| out.write(buf, 0, length); | |||||
| } | } | ||||
| } | |||||
| finally | |||||
| { | |||||
| } finally { | |||||
| finstr.close(); | finstr.close(); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -67,30 +67,26 @@ import sun.misc.UUEncoder; | |||||
| * @author roxspring@yahoo.com Rob Oxspring | * @author roxspring@yahoo.com Rob Oxspring | ||||
| * @since Ant 1.5 | * @since Ant 1.5 | ||||
| */ | */ | ||||
| class UUMailer | |||||
| extends PlainMailer | |||||
| { | |||||
| protected void attach( File file, PrintStream out ) | |||||
| throws IOException | |||||
| { | |||||
| if( !file.exists() || !file.canRead() ) | |||||
| { | |||||
| throw new BuildException( "File \"" + file.getName() | |||||
| + "\" does not exist or is not " | |||||
| + "readable." ); | |||||
| class UUMailer extends PlainMailer { | |||||
| protected void attach(File file, PrintStream out) | |||||
| throws IOException { | |||||
| if (!file.exists() || !file.canRead()) { | |||||
| throw new BuildException("File \"" + file.getName() | |||||
| + "\" does not exist or is not " | |||||
| + "readable."); | |||||
| } | } | ||||
| FileInputStream finstr = new FileInputStream( file ); | |||||
| try | |||||
| { | |||||
| BufferedInputStream in = new BufferedInputStream( finstr ); | |||||
| UUEncoder encoder = new UUEncoder( file.getName() ); | |||||
| encoder.encode( in, out ); | |||||
| FileInputStream finstr = new FileInputStream(file); | |||||
| } | |||||
| finally | |||||
| { | |||||
| try { | |||||
| BufferedInputStream in = new BufferedInputStream(finstr); | |||||
| UUEncoder encoder = new UUEncoder(file.getName()); | |||||
| encoder.encode(in, out); | |||||
| } finally { | |||||
| finstr.close(); | finstr.close(); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -320,12 +320,12 @@ public class Cab extends MatchingTask { | |||||
| outLog.close(); | outLog.close(); | ||||
| errPump.waitFor(); | errPump.waitFor(); | ||||
| errLog.close(); | errLog.close(); | ||||
| } catch(InterruptedException ie) { | |||||
| } catch (InterruptedException ie) { | |||||
| log("Thread interrupted: " + ie); | log("Thread interrupted: " + ie); | ||||
| } | } | ||||
| // Informative summary message in case of errors | // Informative summary message in case of errors | ||||
| if(result != 0) { | |||||
| if (result != 0) { | |||||
| log("Error executing listcab; error code: " + result); | log("Error executing listcab; error code: " + result); | ||||
| } | } | ||||
| } catch (IOException ex) { | } catch (IOException ex) { | ||||
| @@ -211,12 +211,12 @@ public class EchoProperties extends Task { | |||||
| while (enum.hasMoreElements()) { | while (enum.hasMoreElements()) { | ||||
| String name = (String) enum.nextElement(); | String name = (String) enum.nextElement(); | ||||
| String value = (String) allProps.get(name); | String value = (String) allProps.get(name); | ||||
| if (prefix == null || name.indexOf(prefix) == 0 ) { | |||||
| if (prefix == null || name.indexOf(prefix) == 0) { | |||||
| props.put(name, value); | props.put(name, value); | ||||
| } | } | ||||
| } | } | ||||
| try { | try { | ||||
| jdkSaveProperties( props, os, "Ant properties" ); | |||||
| jdkSaveProperties(props, os, "Ant properties"); | |||||
| } finally { | } finally { | ||||
| os.close(); | os.close(); | ||||
| } | } | ||||
| @@ -237,32 +237,31 @@ public class EchoProperties extends Task { | |||||
| *@exception IOException on an I/O error during a write. Only thrown | *@exception IOException on an I/O error during a write. Only thrown | ||||
| * for JDK 1.2+. | * for JDK 1.2+. | ||||
| */ | */ | ||||
| protected void jdkSaveProperties( Properties props, OutputStream os, | |||||
| String header ) | |||||
| throws IOException { | |||||
| protected void jdkSaveProperties(Properties props, OutputStream os, | |||||
| String header) throws IOException { | |||||
| try { | try { | ||||
| java.lang.reflect.Method m = props.getClass().getMethod( | java.lang.reflect.Method m = props.getClass().getMethod( | ||||
| "store", new Class[] { OutputStream.class, String.class } ); | |||||
| m.invoke( props, new Object[] { os, header } ); | |||||
| "store", new Class[]{OutputStream.class, String.class}); | |||||
| m.invoke(props, new Object[]{os, header}); | |||||
| } catch (java.lang.reflect.InvocationTargetException ite) { | } catch (java.lang.reflect.InvocationTargetException ite) { | ||||
| Throwable t = ite.getTargetException(); | Throwable t = ite.getTargetException(); | ||||
| if (t instanceof IOException) { | if (t instanceof IOException) { | ||||
| throw (IOException)t; | |||||
| throw (IOException) t; | |||||
| } | } | ||||
| if (t instanceof RuntimeException) { | if (t instanceof RuntimeException) { | ||||
| throw (RuntimeException)t; | |||||
| throw (RuntimeException) t; | |||||
| } | } | ||||
| // not an expected exception. Resort to JDK 1.0 to execute | // not an expected exception. Resort to JDK 1.0 to execute | ||||
| // this method | // this method | ||||
| jdk10SaveProperties( props, os, header ); | |||||
| jdk10SaveProperties(props, os, header); | |||||
| } catch (ThreadDeath td) { | } catch (ThreadDeath td) { | ||||
| // don't trap thread death errors. | // don't trap thread death errors. | ||||
| throw td; | throw td; | ||||
| } catch (Throwable ex) { | } catch (Throwable ex) { | ||||
| // this 'store' method is not available, so resort to the JDK 1.0 | // this 'store' method is not available, so resort to the JDK 1.0 | ||||
| // compatible method. | // compatible method. | ||||
| jdk10SaveProperties( props, os, header ); | |||||
| jdk10SaveProperties(props, os, header); | |||||
| } | } | ||||
| } | } | ||||
| @@ -275,10 +274,10 @@ public class EchoProperties extends Task { | |||||
| *@param os record the properties to this output stream | *@param os record the properties to this output stream | ||||
| *@param header prepend this header to the property output | *@param header prepend this header to the property output | ||||
| */ | */ | ||||
| protected void jdk10SaveProperties( Properties props, OutputStream os, | |||||
| String header ) | |||||
| protected void jdk10SaveProperties(Properties props, OutputStream os, | |||||
| String header) | |||||
| { | { | ||||
| props.save( os, header ); | |||||
| props.save(os, header); | |||||
| } | } | ||||
| } | } | ||||
| @@ -55,9 +55,6 @@ package org.apache.tools.ant.taskdefs.optional; | |||||
| import java.io.File; | import java.io.File; | ||||
| import java.io.FileInputStream; | import java.io.FileInputStream; | ||||
| import java.io.FileOutputStream; | import java.io.FileOutputStream; | ||||
| @@ -89,7 +86,7 @@ import org.apache.tools.ant.types.Reference; | |||||
| * <p/> | * <p/> | ||||
| * Thanks to Rainer Schmitz for enhancements and comments. | * Thanks to Rainer Schmitz for enhancements and comments. | ||||
| * | * | ||||
| * @author <a href="mailto:aslak.hellesoy@bekk.no">Aslak Hellesøy</a> | |||||
| * @author <a href="mailto:aslak.hellesoy@bekk.no">Aslak Helles�a> | |||||
| * | * | ||||
| * <p/> | * <p/> | ||||
| * <table border="1" cellpadding="2" cellspacing="0"> | * <table border="1" cellpadding="2" cellspacing="0"> | ||||
| @@ -233,7 +230,7 @@ public class IContract extends MatchingTask { | |||||
| "You should probably modify icontrol.properties' classRoot to where comiled (uninstrumented) classes go."; | "You should probably modify icontrol.properties' classRoot to where comiled (uninstrumented) classes go."; | ||||
| /** \ on windows, / on linux/unix */ | /** \ on windows, / on linux/unix */ | ||||
| private final static String ps = System.getProperty( "path.separator" ); | |||||
| private final static String ps = System.getProperty("path.separator"); | |||||
| /** compiler to use for instrumenation */ | /** compiler to use for instrumenation */ | ||||
| private String icCompiler = "javac"; | private String icCompiler = "javac"; | ||||
| @@ -241,7 +238,10 @@ public class IContract extends MatchingTask { | |||||
| /** temporary file with file names of all java files to be instrumented */ | /** temporary file with file names of all java files to be instrumented */ | ||||
| private File targets = null; | private File targets = null; | ||||
| /** will be set to true if any of the sourca files are newer than the instrumented files */ | |||||
| /** | |||||
| * will be set to true if any of the sourca files are newer than the | |||||
| * instrumented files | |||||
| */ | |||||
| private boolean dirty = false; | private boolean dirty = false; | ||||
| /** set to true if the iContract jar is missing */ | /** set to true if the iContract jar is missing */ | ||||
| @@ -297,166 +297,182 @@ public class IContract extends MatchingTask { | |||||
| private boolean instrumentall = false; | private boolean instrumentall = false; | ||||
| /** | /** | ||||
| * Indicates the name of a properties file (intentionally for iControl) where the classpath | |||||
| * property should be updated. | |||||
| * Indicates the name of a properties file (intentionally for iControl) | |||||
| * where the classpath property should be updated. | |||||
| */ | */ | ||||
| private boolean updateIcontrol = false; | private boolean updateIcontrol = false; | ||||
| /** | |||||
| * Regular compilation class root | |||||
| */ | |||||
| /** Regular compilation class root */ | |||||
| private File classDir = null; | private File classDir = null; | ||||
| /** | /** | ||||
| * Sets the source directory | * Sets the source directory | ||||
| * | * | ||||
| * @param srcDir the source directory | * @param srcDir the source directory | ||||
| */ | */ | ||||
| public void setSrcdir( File srcDir ) { | |||||
| public void setSrcdir(File srcDir) { | |||||
| this.srcDir = srcDir; | this.srcDir = srcDir; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the class directory (uninstrumented classes) | * Sets the class directory (uninstrumented classes) | ||||
| * | * | ||||
| * @param srcDir the source directory | * @param srcDir the source directory | ||||
| */ | */ | ||||
| public void setClassdir( File classDir ) { | |||||
| public void setClassdir(File classDir) { | |||||
| this.classDir = classDir; | this.classDir = classDir; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the instrumentation directory | * Sets the instrumentation directory | ||||
| * | * | ||||
| * @param instrumentDir the source directory | * @param instrumentDir the source directory | ||||
| */ | */ | ||||
| public void setInstrumentdir( File instrumentDir ) { | |||||
| public void setInstrumentdir(File instrumentDir) { | |||||
| this.instrumentDir = instrumentDir; | this.instrumentDir = instrumentDir; | ||||
| if ( this.buildDir == null ) { | |||||
| setBuilddir( instrumentDir ); | |||||
| if (this.buildDir == null) { | |||||
| setBuilddir(instrumentDir); | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the build directory for instrumented classes | * Sets the build directory for instrumented classes | ||||
| * | * | ||||
| * @param buildDir the build directory | * @param buildDir the build directory | ||||
| */ | */ | ||||
| public void setBuilddir( File buildDir ) { | |||||
| public void setBuilddir(File buildDir) { | |||||
| this.buildDir = buildDir; | this.buildDir = buildDir; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the build directory for repository classes | * Sets the build directory for repository classes | ||||
| * | * | ||||
| * @param repositoryDir the source directory | * @param repositoryDir the source directory | ||||
| */ | */ | ||||
| public void setRepositorydir( File repositoryDir ) { | |||||
| public void setRepositorydir(File repositoryDir) { | |||||
| this.repositoryDir = repositoryDir; | this.repositoryDir = repositoryDir; | ||||
| if( this.repBuildDir == null ) { | |||||
| setRepbuilddir( repositoryDir ); | |||||
| if (this.repBuildDir == null) { | |||||
| setRepbuilddir(repositoryDir); | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the build directory for instrumented classes | * Sets the build directory for instrumented classes | ||||
| * | * | ||||
| * @param buildDir the build directory | * @param buildDir the build directory | ||||
| */ | */ | ||||
| public void setRepbuilddir( File repBuildDir ) { | |||||
| public void setRepbuilddir(File repBuildDir) { | |||||
| this.repBuildDir = repBuildDir; | this.repBuildDir = repBuildDir; | ||||
| } | } | ||||
| /** | /** | ||||
| * Turns on/off precondition instrumentation | * Turns on/off precondition instrumentation | ||||
| * | * | ||||
| * @param pre true turns it on | * @param pre true turns it on | ||||
| */ | */ | ||||
| public void setPre( boolean pre ) { | |||||
| public void setPre(boolean pre) { | |||||
| this.pre = pre; | this.pre = pre; | ||||
| preModified = true; | preModified = true; | ||||
| } | } | ||||
| /** | /** | ||||
| * Turns on/off postcondition instrumentation | * Turns on/off postcondition instrumentation | ||||
| * | * | ||||
| * @param post true turns it on | * @param post true turns it on | ||||
| */ | */ | ||||
| public void setPost( boolean post ) { | |||||
| public void setPost(boolean post) { | |||||
| this.post = post; | this.post = post; | ||||
| postModified = true; | postModified = true; | ||||
| } | } | ||||
| /** | /** | ||||
| * Turns on/off invariant instrumentation | * Turns on/off invariant instrumentation | ||||
| * | * | ||||
| * @param invariant true turns it on | * @param invariant true turns it on | ||||
| */ | */ | ||||
| public void setInvariant( boolean invariant ) { | |||||
| public void setInvariant(boolean invariant) { | |||||
| this.invariant = invariant; | this.invariant = invariant; | ||||
| invariantModified = true; | invariantModified = true; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the Throwable (Exception) to be thrown on assertion violation | * Sets the Throwable (Exception) to be thrown on assertion violation | ||||
| * | * | ||||
| * @param clazz the fully qualified Throwable class name | * @param clazz the fully qualified Throwable class name | ||||
| */ | */ | ||||
| public void setFailthrowable( String clazz ) { | |||||
| public void setFailthrowable(String clazz) { | |||||
| this.failThrowable = clazz; | this.failThrowable = clazz; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the verbosity level of iContract. Any combination of | * Sets the verbosity level of iContract. Any combination of | ||||
| * error*,warning*,note*,info*,progress*,debug* (comma separated) | |||||
| * can be used. Defaults to error*,warning* | |||||
| * error*,warning*,note*,info*,progress*,debug* (comma separated) can be | |||||
| * used. Defaults to error*,warning* | |||||
| * | * | ||||
| * @param verbosity verbosity level | * @param verbosity verbosity level | ||||
| */ | */ | ||||
| public void setVerbosity( String verbosity ) { | |||||
| public void setVerbosity(String verbosity) { | |||||
| this.verbosity = verbosity; | this.verbosity = verbosity; | ||||
| } | } | ||||
| /** | /** | ||||
| * Tells iContract to be quiet. | * Tells iContract to be quiet. | ||||
| * | * | ||||
| * @param quiet true if iContract should be quiet. | * @param quiet true if iContract should be quiet. | ||||
| */ | */ | ||||
| public void setQuiet( boolean quiet ) { | |||||
| public void setQuiet(boolean quiet) { | |||||
| this.quiet = quiet; | this.quiet = quiet; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the name of the file where targets will be written. | |||||
| * That is the file that tells iContract what files to process. | |||||
| * Sets the name of the file where targets will be written. That is the | |||||
| * file that tells iContract what files to process. | |||||
| * | * | ||||
| * @param targets the targets file name | * @param targets the targets file name | ||||
| */ | */ | ||||
| public void setTargets( File targets ) { | |||||
| public void setTargets(File targets) { | |||||
| this.targets = targets; | this.targets = targets; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the control file to pass to iContract. | * Sets the control file to pass to iContract. | ||||
| * | * | ||||
| * @param controlFile the control file | * @param controlFile the control file | ||||
| */ | */ | ||||
| public void setControlfile( File controlFile ) { | |||||
| if( !controlFile.exists() ) { | |||||
| log( "WARNING: Control file " + controlFile.getAbsolutePath() + " doesn't exist. iContract will be run without control file." ); | |||||
| public void setControlfile(File controlFile) { | |||||
| if (!controlFile.exists()) { | |||||
| log("WARNING: Control file " + controlFile.getAbsolutePath() | |||||
| + " doesn't exist. iContract will be run " | |||||
| + "without control file."); | |||||
| } | } | ||||
| this.controlFile = controlFile; | this.controlFile = controlFile; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets the classpath to be used for invocation of iContract. | * Sets the classpath to be used for invocation of iContract. | ||||
| * | * | ||||
| * @param path the classpath | * @param path the classpath | ||||
| */ | */ | ||||
| public void setClasspath( Path path ) { | |||||
| createClasspath().append( path ); | |||||
| public void setClasspath(Path path) { | |||||
| createClasspath().append(path); | |||||
| } | } | ||||
| /** | /** | ||||
| * Creates a nested classpath element | * Creates a nested classpath element | ||||
| * | * | ||||
| @@ -464,29 +480,33 @@ public class IContract extends MatchingTask { | |||||
| */ | */ | ||||
| public Path createClasspath() { | public Path createClasspath() { | ||||
| if (classpath == null) { | if (classpath == null) { | ||||
| classpath = new Path( getProject() ); | |||||
| classpath = new Path(getProject()); | |||||
| } | } | ||||
| return classpath; | return classpath; | ||||
| } | } | ||||
| /** | /** | ||||
| * Adds a reference to a classpath defined elsewhere. | * Adds a reference to a classpath defined elsewhere. | ||||
| * | * | ||||
| * @param reference referenced classpath | * @param reference referenced classpath | ||||
| */ | */ | ||||
| public void setClasspathRef( Reference reference ) { | |||||
| createClasspath().setRefid( reference ); | |||||
| public void setClasspathRef(Reference reference) { | |||||
| createClasspath().setRefid(reference); | |||||
| } | } | ||||
| /** | /** | ||||
| * Decides whether or not to update iControl properties file | * Decides whether or not to update iControl properties file | ||||
| * | * | ||||
| * @param updateIcontrol true if iControl properties file should be updated | |||||
| * @param updateIcontrol true if iControl properties file should be | |||||
| * updated | |||||
| */ | */ | ||||
| public void setUpdateicontrol( boolean updateIcontrol ) { | |||||
| public void setUpdateicontrol(boolean updateIcontrol) { | |||||
| this.updateIcontrol = updateIcontrol; | this.updateIcontrol = updateIcontrol; | ||||
| } | } | ||||
| /** | /** | ||||
| * Executes the task | * Executes the task | ||||
| * | * | ||||
| @@ -495,39 +515,41 @@ public class IContract extends MatchingTask { | |||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| preconditions(); | preconditions(); | ||||
| scan(); | scan(); | ||||
| if( dirty ) { | |||||
| if (dirty) { | |||||
| // turn off assertions if we're using controlfile, unless they are not explicitly set. | // turn off assertions if we're using controlfile, unless they are not explicitly set. | ||||
| boolean useControlFile = (controlFile != null) && controlFile.exists(); | boolean useControlFile = (controlFile != null) && controlFile.exists(); | ||||
| if( useControlFile && !preModified ) { | |||||
| if (useControlFile && !preModified) { | |||||
| pre = false; | pre = false; | ||||
| } | } | ||||
| if( useControlFile && !postModified ) { | |||||
| if (useControlFile && !postModified) { | |||||
| post = false; | post = false; | ||||
| } | } | ||||
| if( useControlFile && !invariantModified ) { | |||||
| if (useControlFile && !invariantModified) { | |||||
| invariant = false; | invariant = false; | ||||
| } | } | ||||
| // issue warning if pre,post or invariant is used together with controlfile | // issue warning if pre,post or invariant is used together with controlfile | ||||
| if( ( pre || post || invariant ) && controlFile != null ) { | |||||
| log( "WARNING: specifying pre,post or invariant will override control file settings" ); | |||||
| if ((pre || post || invariant) && controlFile != null) { | |||||
| log("WARNING: specifying pre,post or invariant will " | |||||
| + "override control file settings"); | |||||
| } | } | ||||
| // We want to be notified if iContract jar is missing. This makes life easier for the user | // We want to be notified if iContract jar is missing. This makes life easier for the user | ||||
| // who didn't understand that iContract is a separate library (duh!) | // who didn't understand that iContract is a separate library (duh!) | ||||
| getProject().addBuildListener( new IContractPresenceDetector() ); | |||||
| getProject().addBuildListener(new IContractPresenceDetector()); | |||||
| // Prepare the directories for iContract. iContract will make them if they | // Prepare the directories for iContract. iContract will make them if they | ||||
| // don't exist, but for some reason I don't know, it will complain about the REP files | // don't exist, but for some reason I don't know, it will complain about the REP files | ||||
| // afterwards | // afterwards | ||||
| Mkdir mkdir = (Mkdir) project.createTask( "mkdir" ); | |||||
| mkdir.setDir( instrumentDir ); | |||||
| Mkdir mkdir = (Mkdir) project.createTask("mkdir"); | |||||
| mkdir.setDir(instrumentDir); | |||||
| mkdir.execute(); | mkdir.execute(); | ||||
| mkdir.setDir( buildDir ); | |||||
| mkdir.setDir(buildDir); | |||||
| mkdir.execute(); | mkdir.execute(); | ||||
| mkdir.setDir( repositoryDir ); | |||||
| mkdir.setDir(repositoryDir); | |||||
| mkdir.execute(); | mkdir.execute(); | ||||
| // Set the classpath that is needed for regular Javac compilation | // Set the classpath that is needed for regular Javac compilation | ||||
| @@ -535,161 +557,174 @@ public class IContract extends MatchingTask { | |||||
| // Might need to add the core classes if we're not using Sun's Javac (like Jikes) | // Might need to add the core classes if we're not using Sun's Javac (like Jikes) | ||||
| String compiler = project.getProperty("build.compiler"); | String compiler = project.getProperty("build.compiler"); | ||||
| ClasspathHelper classpathHelper = new ClasspathHelper( compiler ); | |||||
| classpathHelper.modify( baseClasspath ); | |||||
| ClasspathHelper classpathHelper = new ClasspathHelper(compiler); | |||||
| classpathHelper.modify(baseClasspath); | |||||
| // Create the classpath required to compile the sourcefiles BEFORE instrumentation | // Create the classpath required to compile the sourcefiles BEFORE instrumentation | ||||
| Path beforeInstrumentationClasspath = ((Path) baseClasspath.clone()); | Path beforeInstrumentationClasspath = ((Path) baseClasspath.clone()); | ||||
| beforeInstrumentationClasspath.append( new Path( getProject(), srcDir.getAbsolutePath() ) ); | |||||
| beforeInstrumentationClasspath.append(new Path(getProject(), | |||||
| srcDir.getAbsolutePath())); | |||||
| // Create the classpath required to compile the sourcefiles AFTER instrumentation | // Create the classpath required to compile the sourcefiles AFTER instrumentation | ||||
| Path afterInstrumentationClasspath = ((Path) baseClasspath.clone()); | Path afterInstrumentationClasspath = ((Path) baseClasspath.clone()); | ||||
| afterInstrumentationClasspath.append( new Path( getProject(), instrumentDir.getAbsolutePath() ) ); | |||||
| afterInstrumentationClasspath.append( new Path( getProject(), repositoryDir.getAbsolutePath() ) ); | |||||
| afterInstrumentationClasspath.append( new Path( getProject(), srcDir.getAbsolutePath() ) ); | |||||
| afterInstrumentationClasspath.append( new Path( getProject(), buildDir.getAbsolutePath() ) ); | |||||
| afterInstrumentationClasspath.append(new Path(getProject(), instrumentDir.getAbsolutePath())); | |||||
| afterInstrumentationClasspath.append(new Path(getProject(), repositoryDir.getAbsolutePath())); | |||||
| afterInstrumentationClasspath.append(new Path(getProject(), srcDir.getAbsolutePath())); | |||||
| afterInstrumentationClasspath.append(new Path(getProject(), buildDir.getAbsolutePath())); | |||||
| // Create the classpath required to automatically compile the repository files | // Create the classpath required to automatically compile the repository files | ||||
| Path repositoryClasspath = ((Path) baseClasspath.clone()); | Path repositoryClasspath = ((Path) baseClasspath.clone()); | ||||
| repositoryClasspath.append( new Path( getProject(), instrumentDir.getAbsolutePath() ) ); | |||||
| repositoryClasspath.append( new Path( getProject(), srcDir.getAbsolutePath() ) ); | |||||
| repositoryClasspath.append( new Path( getProject(), repositoryDir.getAbsolutePath() ) ); | |||||
| repositoryClasspath.append( new Path( getProject(), buildDir.getAbsolutePath() ) ); | |||||
| repositoryClasspath.append(new Path(getProject(), instrumentDir.getAbsolutePath())); | |||||
| repositoryClasspath.append(new Path(getProject(), srcDir.getAbsolutePath())); | |||||
| repositoryClasspath.append(new Path(getProject(), repositoryDir.getAbsolutePath())); | |||||
| repositoryClasspath.append(new Path(getProject(), buildDir.getAbsolutePath())); | |||||
| // Create the classpath required for iContract itself | // Create the classpath required for iContract itself | ||||
| Path iContractClasspath = ((Path) baseClasspath.clone()); | Path iContractClasspath = ((Path) baseClasspath.clone()); | ||||
| iContractClasspath.append( new Path( getProject(), System.getProperty( "java.home" ) + File.separator + ".." + File.separator + "lib" + File.separator + "tools.jar" ) ); | |||||
| iContractClasspath.append( new Path( getProject(), srcDir.getAbsolutePath() ) ); | |||||
| iContractClasspath.append( new Path( getProject(), repositoryDir.getAbsolutePath() ) ); | |||||
| iContractClasspath.append( new Path( getProject(), instrumentDir.getAbsolutePath() ) ); | |||||
| iContractClasspath.append( new Path( getProject(), buildDir.getAbsolutePath() ) ); | |||||
| iContractClasspath.append(new Path(getProject(), System.getProperty("java.home") + File.separator + ".." + File.separator + "lib" + File.separator + "tools.jar")); | |||||
| iContractClasspath.append(new Path(getProject(), srcDir.getAbsolutePath())); | |||||
| iContractClasspath.append(new Path(getProject(), repositoryDir.getAbsolutePath())); | |||||
| iContractClasspath.append(new Path(getProject(), instrumentDir.getAbsolutePath())); | |||||
| iContractClasspath.append(new Path(getProject(), buildDir.getAbsolutePath())); | |||||
| // Create a forked java process | // Create a forked java process | ||||
| Java iContract = (Java) project.createTask( "java" ); | |||||
| iContract.setTaskName( getTaskName() ); | |||||
| iContract.setFork( true ); | |||||
| iContract.setClassname( "com.reliablesystems.iContract.Tool" ); | |||||
| iContract.setClasspath( iContractClasspath ); | |||||
| Java iContract = (Java) project.createTask("java"); | |||||
| iContract.setTaskName(getTaskName()); | |||||
| iContract.setFork(true); | |||||
| iContract.setClassname("com.reliablesystems.iContract.Tool"); | |||||
| iContract.setClasspath(iContractClasspath); | |||||
| // Build the arguments to iContract | // Build the arguments to iContract | ||||
| StringBuffer args = new StringBuffer(); | StringBuffer args = new StringBuffer(); | ||||
| args.append( directiveString() ); | |||||
| args.append( "-v" ).append( verbosity ).append( " " ); | |||||
| args.append( "-b" ).append( "\"" ).append( icCompiler ).append( " -classpath " ).append( beforeInstrumentationClasspath ).append( "\" " ); | |||||
| args.append( "-c" ).append( "\"" ).append( icCompiler ).append( " -classpath " ).append( afterInstrumentationClasspath ).append( " -d " ).append( buildDir ).append( "\" " ); | |||||
| args.append( "-n" ).append( "\"" ).append( icCompiler ).append( " -classpath " ).append( repositoryClasspath ).append( "\" " ); | |||||
| args.append( "-d" ).append( failThrowable ).append( " " ); | |||||
| args.append( "-o" ).append( instrumentDir ).append( File.separator ).append( "@p" ).append( File.separator ).append( "@f.@e " ); | |||||
| args.append( "-k" ).append( repositoryDir ).append( File.separator ).append( "@p " ); | |||||
| args.append( quiet ? "-q " : "" ); | |||||
| args.append( instrumentall ? "-a " : "" ); // reinstrument everything if controlFile exists and is newer than any class | |||||
| args.append( "@" ).append( targets.getAbsolutePath() ); | |||||
| iContract.createArg().setLine( args.toString() ); | |||||
| args.append(directiveString()); | |||||
| args.append("-v").append(verbosity).append(" "); | |||||
| args.append("-b").append("\"").append(icCompiler).append(" -classpath ").append(beforeInstrumentationClasspath).append("\" "); | |||||
| args.append("-c").append("\"").append(icCompiler).append(" -classpath ").append(afterInstrumentationClasspath).append(" -d ").append(buildDir).append("\" "); | |||||
| args.append("-n").append("\"").append(icCompiler).append(" -classpath ").append(repositoryClasspath).append("\" "); | |||||
| args.append("-d").append(failThrowable).append(" "); | |||||
| args.append("-o").append(instrumentDir).append(File.separator).append("@p").append(File.separator).append("@f.@e "); | |||||
| args.append("-k").append(repositoryDir).append(File.separator).append("@p "); | |||||
| args.append(quiet ? "-q " : ""); | |||||
| args.append(instrumentall ? "-a " : "");// reinstrument everything if controlFile exists and is newer than any class | |||||
| args.append("@").append(targets.getAbsolutePath()); | |||||
| iContract.createArg().setLine(args.toString()); | |||||
| //System.out.println( "JAVA -classpath " + iContractClasspath + " com.reliablesystems.iContract.Tool " + args.toString() ); | //System.out.println( "JAVA -classpath " + iContractClasspath + " com.reliablesystems.iContract.Tool " + args.toString() ); | ||||
| // update iControlProperties if it's set. | // update iControlProperties if it's set. | ||||
| if( updateIcontrol ) { | |||||
| if (updateIcontrol) { | |||||
| Properties iControlProps = new Properties(); | Properties iControlProps = new Properties(); | ||||
| try { // to read existing propertiesfile | |||||
| iControlProps.load( new FileInputStream( "icontrol.properties" ) ); | |||||
| } catch( IOException e ) { | |||||
| log( "File icontrol.properties not found. That's ok. Writing a default one." ); | |||||
| try {// to read existing propertiesfile | |||||
| iControlProps.load(new FileInputStream("icontrol.properties")); | |||||
| } catch (IOException e) { | |||||
| log("File icontrol.properties not found. That's ok. Writing a default one."); | |||||
| } | } | ||||
| iControlProps.setProperty( "sourceRoot", srcDir.getAbsolutePath() ); | |||||
| iControlProps.setProperty( "classRoot", classDir.getAbsolutePath() ); | |||||
| iControlProps.setProperty( "classpath", afterInstrumentationClasspath.toString() ); | |||||
| iControlProps.setProperty( "controlFile", controlFile.getAbsolutePath() ); | |||||
| iControlProps.setProperty( "targetsFile", targets.getAbsolutePath() ); | |||||
| try { // to read existing propertiesfile | |||||
| iControlProps.store( new FileOutputStream( "icontrol.properties" ), ICONTROL_PROPERTIES_HEADER ); | |||||
| log( "Updated icontrol.properties" ); | |||||
| } catch( IOException e ) { | |||||
| log( "Couldn't write icontrol.properties." ); | |||||
| iControlProps.setProperty("sourceRoot", srcDir.getAbsolutePath()); | |||||
| iControlProps.setProperty("classRoot", classDir.getAbsolutePath()); | |||||
| iControlProps.setProperty("classpath", afterInstrumentationClasspath.toString()); | |||||
| iControlProps.setProperty("controlFile", controlFile.getAbsolutePath()); | |||||
| iControlProps.setProperty("targetsFile", targets.getAbsolutePath()); | |||||
| try {// to read existing propertiesfile | |||||
| iControlProps.store(new FileOutputStream("icontrol.properties"), ICONTROL_PROPERTIES_HEADER); | |||||
| log("Updated icontrol.properties"); | |||||
| } catch (IOException e) { | |||||
| log("Couldn't write icontrol.properties."); | |||||
| } | } | ||||
| } | } | ||||
| // do it! | // do it! | ||||
| int result = iContract.executeJava(); | int result = iContract.executeJava(); | ||||
| if( result != 0 ) { | |||||
| if( iContractMissing ) { | |||||
| log( "iContract can't be found on your classpath. Your classpath is:" ); | |||||
| log( classpath.toString() ); | |||||
| log( "If you don't have the iContract jar, go get it at http://www.reliable-systems.com/tools/" ); | |||||
| if (result != 0) { | |||||
| if (iContractMissing) { | |||||
| log("iContract can't be found on your classpath. Your classpath is:"); | |||||
| log(classpath.toString()); | |||||
| log("If you don't have the iContract jar, go get it at http://www.reliable-systems.com/tools/"); | |||||
| } | } | ||||
| throw new BuildException( "iContract instrumentation failed. Code=" + result ); | |||||
| throw new BuildException("iContract instrumentation failed. Code=" + result); | |||||
| } | } | ||||
| } else { // not dirty | |||||
| } else {// not dirty | |||||
| //log( "Nothing to do. Everything up to date." ); | //log( "Nothing to do. Everything up to date." ); | ||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * Checks that the required attributes are set. | |||||
| */ | |||||
| /** Checks that the required attributes are set. */ | |||||
| private void preconditions() throws BuildException { | private void preconditions() throws BuildException { | ||||
| if (srcDir == null) { | if (srcDir == null) { | ||||
| throw new BuildException( "srcdir attribute must be set!", location ); | |||||
| throw new BuildException("srcdir attribute must be set!", location); | |||||
| } | } | ||||
| if (!srcDir.exists()) { | if (!srcDir.exists()) { | ||||
| throw new BuildException( "srcdir \"" + srcDir.getPath() + "\" does not exist!", location ); | |||||
| throw new BuildException("srcdir \"" + srcDir.getPath() + "\" does not exist!", location); | |||||
| } | } | ||||
| if (instrumentDir == null) { | if (instrumentDir == null) { | ||||
| throw new BuildException( "instrumentdir attribute must be set!", location ); | |||||
| throw new BuildException("instrumentdir attribute must be set!", location); | |||||
| } | } | ||||
| if (repositoryDir == null) { | if (repositoryDir == null) { | ||||
| throw new BuildException( "repositorydir attribute must be set!", location ); | |||||
| throw new BuildException("repositorydir attribute must be set!", location); | |||||
| } | } | ||||
| if (updateIcontrol == true && classDir == null) { | 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!", location); | |||||
| } | } | ||||
| if( updateIcontrol == true && controlFile == null ) { | |||||
| throw new BuildException( "controlfile attribute must be specified when updateicontrol=true!", location ); | |||||
| if (updateIcontrol == true && controlFile == null) { | |||||
| throw new BuildException("controlfile attribute must be specified when updateicontrol=true!", location); | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Verifies whether any of the source files have changed. Done by comparing date of source/class files. | |||||
| * The whole lot is "dirty" if at least one source file or the control file is newer than the instrumented | |||||
| * files. If not dirty, iContract will not be executed. | |||||
| * <br/> | |||||
| * Also creates a temporary file with a list of the source files, that will be deleted upon exit. | |||||
| * Verifies whether any of the source files have changed. Done by | |||||
| * comparing date of source/class files. The whole lot is "dirty" if at | |||||
| * least one source file or the control file is newer than the | |||||
| * instrumented files. If not dirty, iContract will not be executed. <br/> | |||||
| * Also creates a temporary file with a list of the source files, that | |||||
| * will be deleted upon exit. | |||||
| */ | */ | ||||
| private void scan() throws BuildException { | private void scan() throws BuildException { | ||||
| long now = (new Date()).getTime(); | long now = (new Date()).getTime(); | ||||
| DirectoryScanner ds = null; | DirectoryScanner ds = null; | ||||
| ds = getDirectoryScanner( srcDir ); | |||||
| ds = getDirectoryScanner(srcDir); | |||||
| String[] files = ds.getIncludedFiles(); | String[] files = ds.getIncludedFiles(); | ||||
| FileOutputStream targetOutputStream = null; | FileOutputStream targetOutputStream = null; | ||||
| PrintStream targetPrinter = null; | PrintStream targetPrinter = null; | ||||
| boolean writeTargets = false; | boolean writeTargets = false; | ||||
| try { | try { | ||||
| if( targets == null ) { | |||||
| targets = new File( "targets" ); | |||||
| log( "Warning: targets file not specified. generating file: " + targets.getName() ); | |||||
| if (targets == null) { | |||||
| targets = new File("targets"); | |||||
| log("Warning: targets file not specified. generating file: " + targets.getName()); | |||||
| writeTargets = true; | writeTargets = true; | ||||
| } else if( !targets.exists() ) { | |||||
| log( "Specified targets file doesn't exist. generating file: " + targets.getName() ); | |||||
| } else if (!targets.exists()) { | |||||
| log("Specified targets file doesn't exist. generating file: " + targets.getName()); | |||||
| writeTargets = true; | writeTargets = true; | ||||
| } | } | ||||
| if( writeTargets ) { | |||||
| log( "You should consider using iControl to create a target file." ); | |||||
| targetOutputStream = new FileOutputStream( targets ); | |||||
| targetPrinter = new PrintStream( targetOutputStream ); | |||||
| if (writeTargets) { | |||||
| log("You should consider using iControl to create a target file."); | |||||
| targetOutputStream = new FileOutputStream(targets); | |||||
| targetPrinter = new PrintStream(targetOutputStream); | |||||
| } | } | ||||
| for (int i = 0; i < files.length; i++ ) { | |||||
| for (int i = 0; i < files.length; i++) { | |||||
| File srcFile = new File(srcDir, files[i]); | File srcFile = new File(srcDir, files[i]); | ||||
| if (files[i].endsWith(".java")) { | if (files[i].endsWith(".java")) { | ||||
| // print the target, while we're at here. (Only if generatetarget=true). | // print the target, while we're at here. (Only if generatetarget=true). | ||||
| if( targetPrinter != null ) { | |||||
| targetPrinter.println( srcFile.getAbsolutePath() ); | |||||
| if (targetPrinter != null) { | |||||
| targetPrinter.println(srcFile.getAbsolutePath()); | |||||
| } | } | ||||
| File classFile = new File( buildDir, files[i].substring( 0, files[i].indexOf( ".java" ) ) + ".class" ); | |||||
| File classFile = new File(buildDir, files[i].substring(0, files[i].indexOf(".java")) + ".class"); | |||||
| if (srcFile.lastModified() > now) { | if (srcFile.lastModified() > now) { | ||||
| log("Warning: file modified in the future: " + | log("Warning: file modified in the future: " + | ||||
| @@ -702,28 +737,30 @@ public class IContract extends MatchingTask { | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if( targetPrinter != null ) { | |||||
| if (targetPrinter != null) { | |||||
| targetPrinter.flush(); | targetPrinter.flush(); | ||||
| targetPrinter.close(); | targetPrinter.close(); | ||||
| } | } | ||||
| } catch( IOException e ) { | |||||
| throw new BuildException( "Could not create target file:" + e.getMessage() ); | |||||
| } catch (IOException e) { | |||||
| throw new BuildException("Could not create target file:" + e.getMessage()); | |||||
| } | } | ||||
| // also, check controlFile timestamp | // also, check controlFile timestamp | ||||
| long controlFileTime = -1; | long controlFileTime = -1; | ||||
| try { | try { | ||||
| if( controlFile != null ) { | |||||
| if( controlFile.exists() && buildDir.exists() ) { | |||||
| if (controlFile != null) { | |||||
| if (controlFile.exists() && buildDir.exists()) { | |||||
| controlFileTime = controlFile.lastModified(); | controlFileTime = controlFile.lastModified(); | ||||
| ds = getDirectoryScanner( buildDir ); | |||||
| ds = getDirectoryScanner(buildDir); | |||||
| files = ds.getIncludedFiles(); | files = ds.getIncludedFiles(); | ||||
| for( int i = 0; i < files.length; i++ ) { | |||||
| File srcFile = new File( srcDir, files[i] ); | |||||
| if( files[i].endsWith( ".class" ) ) { | |||||
| if( controlFileTime > srcFile.lastModified() ) { | |||||
| if( !dirty ) { | |||||
| log( "Control file " + controlFile.getAbsolutePath() + " has been updated. Instrumenting all files..." ); | |||||
| for (int i = 0; i < files.length; i++) { | |||||
| File srcFile = new File(srcDir, files[i]); | |||||
| if (files[i].endsWith(".class")) { | |||||
| if (controlFileTime > srcFile.lastModified()) { | |||||
| if (!dirty) { | |||||
| log("Control file " + controlFile.getAbsolutePath() + " has been updated. Instrumenting all files..."); | |||||
| } | } | ||||
| dirty = true; | dirty = true; | ||||
| instrumentall = true; | instrumentall = true; | ||||
| @@ -732,95 +769,128 @@ public class IContract extends MatchingTask { | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } catch( Throwable t ) { | |||||
| throw new BuildException( "Got an interesting exception:" + t.getMessage() ); | |||||
| } catch (Throwable t) { | |||||
| throw new BuildException("Got an interesting exception:" + t.getMessage()); | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Creates the -m option based on the values of controlFile, pre, post and invariant. | |||||
| * Creates the -m option based on the values of controlFile, pre, post and | |||||
| * invariant. | |||||
| */ | */ | ||||
| private final String directiveString() { | private final String directiveString() { | ||||
| StringBuffer sb = new StringBuffer(); | StringBuffer sb = new StringBuffer(); | ||||
| boolean comma = false; | boolean comma = false; | ||||
| boolean useControlFile = (controlFile != null) && controlFile.exists(); | boolean useControlFile = (controlFile != null) && controlFile.exists(); | ||||
| if( useControlFile || pre || post || invariant ) { | |||||
| sb.append( "-m" ); | |||||
| if (useControlFile || pre || post || invariant) { | |||||
| sb.append("-m"); | |||||
| } | } | ||||
| if( useControlFile ) { | |||||
| sb.append( "@" ).append( controlFile ); | |||||
| if (useControlFile) { | |||||
| sb.append("@").append(controlFile); | |||||
| comma = true; | comma = true; | ||||
| } | } | ||||
| if( pre ) { | |||||
| if( comma ) { | |||||
| sb.append( "," ); | |||||
| if (pre) { | |||||
| if (comma) { | |||||
| sb.append(","); | |||||
| } | } | ||||
| sb.append( "pre" ); | |||||
| sb.append("pre"); | |||||
| comma = true; | comma = true; | ||||
| } | } | ||||
| if( post ) { | |||||
| if( comma ) { | |||||
| sb.append( "," ); | |||||
| if (post) { | |||||
| if (comma) { | |||||
| sb.append(","); | |||||
| } | } | ||||
| sb.append( "post" ); | |||||
| sb.append("post"); | |||||
| comma = true; | comma = true; | ||||
| } | } | ||||
| if( invariant ) { | |||||
| if( comma ) { | |||||
| sb.append( "," ); | |||||
| if (invariant) { | |||||
| if (comma) { | |||||
| sb.append(","); | |||||
| } | } | ||||
| sb.append( "inv" ); | |||||
| sb.append("inv"); | |||||
| } | } | ||||
| sb.append( " " ); | |||||
| sb.append(" "); | |||||
| return sb.toString(); | return sb.toString(); | ||||
| } | } | ||||
| /** | /** | ||||
| * BuildListener that sets the iContractMissing flag to true if a | |||||
| * message about missing iContract is missing. Used to indicate | |||||
| * a more verbose error to the user, with advice about how to solve | |||||
| * the problem | |||||
| * BuildListener that sets the iContractMissing flag to true if a message | |||||
| * about missing iContract is missing. Used to indicate a more verbose | |||||
| * error to the user, with advice about how to solve the problem | |||||
| * | |||||
| * @author Conor MacNeill | |||||
| */ | */ | ||||
| private class IContractPresenceDetector implements BuildListener { | private class IContractPresenceDetector implements BuildListener { | ||||
| public void buildFinished(BuildEvent event) {} | |||||
| public void buildStarted(BuildEvent event) {} | |||||
| public void buildFinished(BuildEvent event) { | |||||
| } | |||||
| public void buildStarted(BuildEvent event) { | |||||
| } | |||||
| public void messageLogged(BuildEvent event) { | public void messageLogged(BuildEvent event) { | ||||
| if( "java.lang.NoClassDefFoundError: com/reliablesystems/iContract/Tool".equals( event.getMessage() ) ) { | |||||
| if ("java.lang.NoClassDefFoundError: com/reliablesystems/iContract/Tool".equals(event.getMessage())) { | |||||
| iContractMissing = true; | iContractMissing = true; | ||||
| } | } | ||||
| } | } | ||||
| public void targetFinished(BuildEvent event) {} | |||||
| public void targetStarted(BuildEvent event) {} | |||||
| public void taskFinished(BuildEvent event) {} | |||||
| public void taskStarted(BuildEvent event) {} | |||||
| public void targetFinished(BuildEvent event) { | |||||
| } | |||||
| public void targetStarted(BuildEvent event) { | |||||
| } | |||||
| public void taskFinished(BuildEvent event) { | |||||
| } | |||||
| public void taskStarted(BuildEvent event) { | |||||
| } | |||||
| } | } | ||||
| /** | /** | ||||
| * This class is a helper to set correct classpath for other compilers, like Jikes. | |||||
| * It reuses the logic from DefaultCompilerAdapter, which is protected, so we have | |||||
| * to subclass it. | |||||
| * This class is a helper to set correct classpath for other compilers, | |||||
| * like Jikes. It reuses the logic from DefaultCompilerAdapter, which is | |||||
| * protected, so we have to subclass it. | |||||
| * | |||||
| * @author Conor MacNeill | |||||
| */ | */ | ||||
| private class ClasspathHelper extends DefaultCompilerAdapter { | private class ClasspathHelper extends DefaultCompilerAdapter { | ||||
| private final String compiler; | private final String compiler; | ||||
| public ClasspathHelper( String compiler ) { | |||||
| public ClasspathHelper(String compiler) { | |||||
| super(); | super(); | ||||
| this.compiler = compiler; | this.compiler = compiler; | ||||
| } | } | ||||
| // make it public | // make it public | ||||
| public void modify( Path path ) { | |||||
| public void modify(Path path) { | |||||
| // depending on what compiler to use, set the includeJavaRuntime flag | // depending on what compiler to use, set the includeJavaRuntime flag | ||||
| if( "jikes".equals( compiler ) ) { | |||||
| if ("jikes".equals(compiler)) { | |||||
| icCompiler = compiler; | icCompiler = compiler; | ||||
| includeJavaRuntime = true; | includeJavaRuntime = true; | ||||
| path.append( getCompileClasspath() ); | |||||
| path.append(getCompileClasspath()); | |||||
| } | } | ||||
| } | } | ||||
| // dummy implementation. Never called | // dummy implementation. Never called | ||||
| public void setJavac( Javac javac ) {} | |||||
| public boolean execute() { return true; } | |||||
| public void setJavac(Javac javac) { | |||||
| } | |||||
| public boolean execute() { | |||||
| return true; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -136,7 +136,7 @@ public class Javah extends Task { | |||||
| public void setName(String name) { | public void setName(String name) { | ||||
| this.name = name; | this.name = name; | ||||
| log("ClassArgument.name="+name); | |||||
| log("ClassArgument.name=" + name); | |||||
| } | } | ||||
| public String getName() { | public String getName() { | ||||
| @@ -318,7 +318,8 @@ public class Javah extends Task { | |||||
| // dynamically. However, javah has a different interface and this | // dynamically. However, javah has a different interface and this | ||||
| // makes it harder, so here's a simple alternative. | // makes it harder, so here's a simple alternative. | ||||
| //------------------------------------------------------------------ | //------------------------------------------------------------------ | ||||
| com.sun.tools.javah.Main main = new com.sun.tools.javah.Main( cmd.getArguments() ); | |||||
| com.sun.tools.javah.Main main | |||||
| = new com.sun.tools.javah.Main(cmd.getArguments()); | |||||
| main.run(); | main.run(); | ||||
| } | } | ||||
| //catch (ClassNotFoundException ex) { | //catch (ClassNotFoundException ex) { | ||||
| @@ -411,7 +412,7 @@ public class Javah extends Task { | |||||
| Enumeration enum = classes.elements(); | Enumeration enum = classes.elements(); | ||||
| while (enum.hasMoreElements()) { | while (enum.hasMoreElements()) { | ||||
| ClassArgument arg = (ClassArgument)enum.nextElement(); | |||||
| ClassArgument arg = (ClassArgument) enum.nextElement(); | |||||
| String aClass = arg.getName(); | String aClass = arg.getName(); | ||||
| cmd.createArgument().setValue(aClass); | cmd.createArgument().setValue(aClass); | ||||
| niceClassList.append(" " + aClass + lSep); | niceClassList.append(" " + aClass + lSep); | ||||
| @@ -189,7 +189,7 @@ public class Native2Ascii extends MatchingTask { | |||||
| if (count == 0) { | if (count == 0) { | ||||
| return; | return; | ||||
| } | } | ||||
| String message = "Converting "+ count + " file" | |||||
| String message = "Converting " + count + " file" | |||||
| + (count != 1 ? "s" : "") + " from "; | + (count != 1 ? "s" : "") + " from "; | ||||
| log(message + srcDir + " to " + destDir); | log(message + srcDir + " to " + destDir); | ||||
| for (int i = 0; i < files.length; i++){ | for (int i = 0; i < files.length; i++){ | ||||
| @@ -237,7 +237,7 @@ public class Native2Ascii extends MatchingTask { | |||||
| if (parentName != null){ | if (parentName != null){ | ||||
| File parentFile = new File(parentName); | File parentFile = new File(parentName); | ||||
| if ((! parentFile.exists()) && ( ! parentFile.mkdirs())){ | |||||
| if ((!parentFile.exists()) && (!parentFile.mkdirs())){ | |||||
| throw new BuildException("cannot create parent directory " | throw new BuildException("cannot create parent directory " | ||||
| + parentName); | + parentName); | ||||
| } | } | ||||
| @@ -246,7 +246,7 @@ public class Native2Ascii extends MatchingTask { | |||||
| log("converting " + srcName, Project.MSG_VERBOSE); | log("converting " + srcName, Project.MSG_VERBOSE); | ||||
| sun.tools.native2ascii.Main n2a | sun.tools.native2ascii.Main n2a | ||||
| = new sun.tools.native2ascii.Main(); | = new sun.tools.native2ascii.Main(); | ||||
| if(! n2a.convert(cmd.getArguments())){ | |||||
| if (!n2a.convert(cmd.getArguments())){ | |||||
| throw new BuildException("conversion failed"); | throw new BuildException("conversion failed"); | ||||
| } | } | ||||
| } | } | ||||
| @@ -124,14 +124,13 @@ import org.apache.tools.ant.types.EnumeratedAttribute; | |||||
| * | * | ||||
| * @author dIon Gillard <a href="mailto:dion@multitask.com.au">dion@multitask.com.au</a> | * @author dIon Gillard <a href="mailto:dion@multitask.com.au">dion@multitask.com.au</a> | ||||
| */ | */ | ||||
| public class NetRexxC extends MatchingTask { | public class NetRexxC extends MatchingTask { | ||||
| // variables to hold arguments | // variables to hold arguments | ||||
| private boolean binary; | private boolean binary; | ||||
| private String classpath; | private String classpath; | ||||
| private boolean comments; | private boolean comments; | ||||
| private boolean compact = true; // should be the default, as it integrates better in ant. | |||||
| private boolean compact = true;// should be the default, as it integrates better in ant. | |||||
| private boolean compile = true; | private boolean compile = true; | ||||
| private boolean console; | private boolean console; | ||||
| private boolean crossref; | private boolean crossref; | ||||
| @@ -146,7 +145,7 @@ public class NetRexxC extends MatchingTask { | |||||
| private boolean replace; | private boolean replace; | ||||
| private boolean savelog; | private boolean savelog; | ||||
| private File srcDir; | private File srcDir; | ||||
| private boolean sourcedir = true; // ?? Should this be the default for ant? | |||||
| private boolean sourcedir = true;// ?? Should this be the default for ant? | |||||
| private boolean strictargs; | private boolean strictargs; | ||||
| private boolean strictassign; | private boolean strictassign; | ||||
| private boolean strictcase; | private boolean strictcase; | ||||
| @@ -165,17 +164,18 @@ public class NetRexxC extends MatchingTask { | |||||
| private boolean suppressDeprecation = false; | private boolean suppressDeprecation = false; | ||||
| // constants for the messages to suppress by flags and their corresponding properties | // constants for the messages to suppress by flags and their corresponding properties | ||||
| static final String MSG_METHOD_ARGUMENT_NOT_USED = "Warning: Method argument is not used"; | |||||
| static final String MSG_PRIVATE_PROPERTY_NOT_USED = "Warning: Private property is defined but not used"; | |||||
| static final String MSG_VARIABLE_NOT_USED = "Warning: Variable is set but not used"; | |||||
| static final String MSG_EXCEPTION_NOT_SIGNALLED = "is in SIGNALS list but is not signalled within the method"; | |||||
| static final String MSG_DEPRECATION = "has been deprecated"; | |||||
| final static String MSG_METHOD_ARGUMENT_NOT_USED = "Warning: Method argument is not used"; | |||||
| final static String MSG_PRIVATE_PROPERTY_NOT_USED = "Warning: Private property is defined but not used"; | |||||
| final static String MSG_VARIABLE_NOT_USED = "Warning: Variable is set but not used"; | |||||
| final static String MSG_EXCEPTION_NOT_SIGNALLED = "is in SIGNALS list but is not signalled within the method"; | |||||
| final static String MSG_DEPRECATION = "has been deprecated"; | |||||
| // other implementation variables | // other implementation variables | ||||
| private Vector compileList = new Vector(); | private Vector compileList = new Vector(); | ||||
| private Hashtable filecopyList = new Hashtable(); | private Hashtable filecopyList = new Hashtable(); | ||||
| private String oldClasspath = System.getProperty("java.class.path"); | private String oldClasspath = System.getProperty("java.class.path"); | ||||
| /** | /** | ||||
| * Set whether literals are treated as binary, rather than NetRexx types | * Set whether literals are treated as binary, rather than NetRexx types | ||||
| */ | */ | ||||
| @@ -183,78 +183,83 @@ public class NetRexxC extends MatchingTask { | |||||
| this.binary = binary; | this.binary = binary; | ||||
| } | } | ||||
| /** | |||||
| * Set the classpath used for NetRexx compilation | |||||
| */ | |||||
| /** Set the classpath used for NetRexx compilation */ | |||||
| public void setClasspath(String classpath) { | public void setClasspath(String classpath) { | ||||
| this.classpath = classpath; | this.classpath = classpath; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set whether comments are passed through to the generated java source. | * Set whether comments are passed through to the generated java source. | ||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to | |||||
| * false. The default value is false | |||||
| */ | */ | ||||
| public void setComments(boolean comments) { | public void setComments(boolean comments) { | ||||
| this.comments = comments; | this.comments = comments; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set whether error messages come out in compact or verbose format. | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * Set whether error messages come out in compact or verbose format. Valid | |||||
| * true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false | * The default value is false | ||||
| */ | */ | ||||
| public void setCompact(boolean compact) { | public void setCompact(boolean compact) { | ||||
| this.compact = compact; | this.compact = compact; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set whether the NetRexx compiler should compile the generated java code | * Set whether the NetRexx compiler should compile the generated java code | ||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is true. | |||||
| * Setting this flag to false, will automatically set the keep flag to true. | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to | |||||
| * false. The default value is true. Setting this flag to false, will | |||||
| * automatically set the keep flag to true. | |||||
| */ | */ | ||||
| public void setCompile(boolean compile) { | public void setCompile(boolean compile) { | ||||
| this.compile = compile; | this.compile = compile; | ||||
| if (!this.compile && !this.keep) { | if (!this.compile && !this.keep) { | ||||
| this.keep = true; | |||||
| this.keep = true; | |||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Set whether or not messages should be displayed on the 'console' | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * Set whether or not messages should be displayed on the 'console' Valid | |||||
| * true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is true. | * The default value is true. | ||||
| */ | */ | ||||
| public void setConsole(boolean console) { | public void setConsole(boolean console) { | ||||
| this.console = console; | this.console = console; | ||||
| } | } | ||||
| /** | |||||
| * Whether variable cross references are generated | |||||
| */ | |||||
| /** Whether variable cross references are generated */ | |||||
| public void setCrossref(boolean crossref) { | public void setCrossref(boolean crossref) { | ||||
| this.crossref = crossref; | this.crossref = crossref; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set whether decimal arithmetic should be used for the netrexx code. | * Set whether decimal arithmetic should be used for the netrexx code. | ||||
| * Binary arithmetic is used when this flag is turned off. | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is true. | |||||
| * Binary arithmetic is used when this flag is turned off. Valid true | |||||
| * values are "on" or "true". Anything else sets the flag to false. The | |||||
| * default value is true. | |||||
| */ | */ | ||||
| public void setDecimal(boolean decimal) { | public void setDecimal(boolean decimal) { | ||||
| this.decimal = decimal; | this.decimal = decimal; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set the destination directory into which the NetRexx source | |||||
| * files should be copied and then compiled. | |||||
| * Set the destination directory into which the NetRexx source files | |||||
| * should be copied and then compiled. | |||||
| */ | */ | ||||
| public void setDestDir(File destDirName) { | public void setDestDir(File destDirName) { | ||||
| destDir = destDirName; | destDir = destDirName; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether diagnostic information about the compile is generated | * Whether diagnostic information about the compile is generated | ||||
| */ | */ | ||||
| @@ -262,27 +267,30 @@ public class NetRexxC extends MatchingTask { | |||||
| this.diag = diag; | this.diag = diag; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets whether variables must be declared explicitly before use. | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * Sets whether variables must be declared explicitly before use. Valid | |||||
| * true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | * The default value is false. | ||||
| */ | */ | ||||
| public void setExplicit(boolean explicit) { | public void setExplicit(boolean explicit) { | ||||
| this.explicit = explicit; | this.explicit = explicit; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether the generated java code is formatted nicely or left to match NetRexx | |||||
| * line numbers for call stack debugging | |||||
| * Whether the generated java code is formatted nicely or left to match | |||||
| * NetRexx line numbers for call stack debugging | |||||
| */ | */ | ||||
| public void setFormat(boolean format) { | public void setFormat(boolean format) { | ||||
| this.format = format; | this.format = format; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether the generated java code is produced | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * Whether the generated java code is produced Valid true values are "on" | |||||
| * or "true". Anything else sets the flag to false. The default value is | |||||
| * false. | |||||
| */ | */ | ||||
| public void setJava(boolean java) { | public void setJava(boolean java) { | ||||
| this.java = java; | this.java = java; | ||||
| @@ -290,69 +298,71 @@ public class NetRexxC extends MatchingTask { | |||||
| /** | /** | ||||
| * Sets whether the generated java source file should be kept after compilation. | |||||
| * The generated files will have an extension of .java.keep, <b>not</b> .java | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * Sets whether the generated java source file should be kept after | |||||
| * compilation. The generated files will have an extension of .java.keep, | |||||
| * <b>not</b> .java Valid true values are "on" or "true". Anything else | |||||
| * sets the flag to false. The default value is false. | |||||
| */ | */ | ||||
| public void setKeep(boolean keep) { | public void setKeep(boolean keep) { | ||||
| this.keep = keep; | this.keep = keep; | ||||
| } | } | ||||
| /** | |||||
| * Whether the compiler text logo is displayed when compiling | |||||
| */ | |||||
| /** Whether the compiler text logo is displayed when compiling */ | |||||
| public void setLogo(boolean logo) { | public void setLogo(boolean logo) { | ||||
| this.logo = logo; | this.logo = logo; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether the generated .java file should be replaced when compiling | * Whether the generated .java file should be replaced when compiling | ||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to | |||||
| * false. The default value is false. | |||||
| */ | */ | ||||
| public void setReplace(boolean replace) { | public void setReplace(boolean replace) { | ||||
| this.replace = replace; | this.replace = replace; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets whether the compiler messages will be written to NetRexxC.log as | * Sets whether the compiler messages will be written to NetRexxC.log as | ||||
| * well as to the console | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * well as to the console Valid true values are "on" or "true". Anything | |||||
| * else sets the flag to false. The default value is false. | |||||
| */ | */ | ||||
| public void setSavelog(boolean savelog) { | public void setSavelog(boolean savelog) { | ||||
| this.savelog = savelog; | this.savelog = savelog; | ||||
| } | } | ||||
| /** | /** | ||||
| * Tells the NetRexx compiler to store the class files in the same directory | |||||
| * as the source files. The alternative is the working directory | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is true. | |||||
| * Tells the NetRexx compiler to store the class files in the same | |||||
| * directory as the source files. The alternative is the working directory | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to | |||||
| * false. The default value is true. | |||||
| */ | */ | ||||
| public void setSourcedir(boolean sourcedir) { | public void setSourcedir(boolean sourcedir) { | ||||
| this.sourcedir = sourcedir; | this.sourcedir = sourcedir; | ||||
| } | } | ||||
| /** | |||||
| * Set the source dir to find the source Java files. | |||||
| */ | |||||
| /** Set the source dir to find the source Java files. */ | |||||
| public void setSrcDir(File srcDirName) { | public void setSrcDir(File srcDirName) { | ||||
| srcDir = srcDirName; | srcDir = srcDirName; | ||||
| } | } | ||||
| /** | /** | ||||
| * Tells the NetRexx compiler that method calls always need parentheses, | * Tells the NetRexx compiler that method calls always need parentheses, | ||||
| * even if no arguments are needed, e.g. <code>aStringVar.getBytes</code> | * even if no arguments are needed, e.g. <code>aStringVar.getBytes</code> | ||||
| * vs. <code>aStringVar.getBytes()</code> | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * vs. <code>aStringVar.getBytes()</code> Valid true values are "on" or | |||||
| * "true". Anything else sets the flag to false. The default value is | |||||
| * false. | |||||
| */ | */ | ||||
| public void setStrictargs(boolean strictargs) { | public void setStrictargs(boolean strictargs) { | ||||
| this.strictargs = strictargs; | this.strictargs = strictargs; | ||||
| } | } | ||||
| /** | /** | ||||
| * Tells the NetRexx compile that assignments must match exactly on type | * Tells the NetRexx compile that assignments must match exactly on type | ||||
| */ | */ | ||||
| @@ -360,6 +370,7 @@ public class NetRexxC extends MatchingTask { | |||||
| this.strictassign = strictassign; | this.strictassign = strictassign; | ||||
| } | } | ||||
| /** | /** | ||||
| * Specifies whether the NetRexx compiler should be case sensitive or not | * Specifies whether the NetRexx compiler should be case sensitive or not | ||||
| */ | */ | ||||
| @@ -367,21 +378,22 @@ public class NetRexxC extends MatchingTask { | |||||
| this.strictcase = strictcase; | this.strictcase = strictcase; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets whether classes need to be imported explicitly using an | |||||
| * <code>import</code> statement. By default the NetRexx compiler will import | |||||
| * certain packages automatically | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * Sets whether classes need to be imported explicitly using an <code>import</code> | |||||
| * statement. By default the NetRexx compiler will import certain packages | |||||
| * automatically Valid true values are "on" or "true". Anything else sets | |||||
| * the flag to false. The default value is false. | |||||
| */ | */ | ||||
| public void setStrictimport(boolean strictimport) { | public void setStrictimport(boolean strictimport) { | ||||
| this.strictimport = strictimport; | this.strictimport = strictimport; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets whether local properties need to be qualified explicitly using <code>this</code> | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * Sets whether local properties need to be qualified explicitly using | |||||
| * <code>this</code> Valid true values are "on" or "true". Anything else | |||||
| * sets the flag to false. The default value is false. | |||||
| */ | */ | ||||
| public void setStrictprops(boolean strictprops) { | public void setStrictprops(boolean strictprops) { | ||||
| this.strictprops = strictprops; | this.strictprops = strictprops; | ||||
| @@ -389,231 +401,247 @@ public class NetRexxC extends MatchingTask { | |||||
| /** | /** | ||||
| * Whether the compiler should force catching of exceptions by explicitly named types | |||||
| * Whether the compiler should force catching of exceptions by explicitly | |||||
| * named types | |||||
| */ | */ | ||||
| public void setStrictsignal(boolean strictsignal) { | public void setStrictsignal(boolean strictsignal) { | ||||
| this.strictsignal = strictsignal; | this.strictsignal = strictsignal; | ||||
| } | } | ||||
| /** | /** | ||||
| * Sets whether debug symbols should be generated into the class file | * Sets whether debug symbols should be generated into the class file | ||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to | |||||
| * false. The default value is false. | |||||
| */ | */ | ||||
| public void setSymbols(boolean symbols) { | public void setSymbols(boolean symbols) { | ||||
| this.symbols = symbols; | this.symbols = symbols; | ||||
| } | } | ||||
| /** | /** | ||||
| * Asks the NetRexx compiler to print compilation times to the console | * Asks the NetRexx compiler to print compilation times to the console | ||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to | |||||
| * false. The default value is false. | |||||
| */ | */ | ||||
| public void setTime(boolean time) { | public void setTime(boolean time) { | ||||
| this.time = time; | this.time = time; | ||||
| } | } | ||||
| public void setTrace(TraceAttr trace) { | public void setTrace(TraceAttr trace) { | ||||
| this.trace = trace.getValue(); | this.trace = trace.getValue(); | ||||
| } | } | ||||
| /** | /** | ||||
| * Turns on or off tracing and directs the resultant trace output | |||||
| * Valid values are: "trace", "trace1", "trace2" and "notrace". | |||||
| * "trace" and "trace2" | |||||
| * Turns on or off tracing and directs the resultant trace output Valid | |||||
| * values are: "trace", "trace1", "trace2" and "notrace". "trace" and | |||||
| * "trace2" | |||||
| */ | */ | ||||
| public void setTrace(String trace) { | public void setTrace(String trace) { | ||||
| TraceAttr t = new TraceAttr(); | TraceAttr t = new TraceAttr(); | ||||
| t.setValue(trace); | t.setValue(trace); | ||||
| setTrace(t); | setTrace(t); | ||||
| } | } | ||||
| /** | /** | ||||
| * Tells the NetRexx compiler that the source is in UTF8 | |||||
| * Valid true values are "on" or "true". Anything else sets the flag to false. | |||||
| * The default value is false. | |||||
| * Tells the NetRexx compiler that the source is in UTF8 Valid true values | |||||
| * are "on" or "true". Anything else sets the flag to false. The default | |||||
| * value is false. | |||||
| */ | */ | ||||
| public void setUtf8(boolean utf8) { | public void setUtf8(boolean utf8) { | ||||
| this.utf8 = utf8; | this.utf8 = utf8; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether lots of warnings and error messages should be generated | * Whether lots of warnings and error messages should be generated | ||||
| */ | */ | ||||
| public void setVerbose(VerboseAttr verbose) { | public void setVerbose(VerboseAttr verbose) { | ||||
| this.verbose = verbose.getValue(); | this.verbose = verbose.getValue(); | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether lots of warnings and error messages should be generated | * Whether lots of warnings and error messages should be generated | ||||
| */ | */ | ||||
| public void setVerbose(String verbose) { | public void setVerbose(String verbose) { | ||||
| VerboseAttr v = new VerboseAttr(); | VerboseAttr v = new VerboseAttr(); | ||||
| v.setValue(verbose); | v.setValue(verbose); | ||||
| setVerbose(v); | setVerbose(v); | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether the task should suppress the "Method argument is not used" | |||||
| * in strictargs-Mode, which can not be suppressed by the compiler itself. | |||||
| * Whether the task should suppress the "Method argument is not used" in | |||||
| * strictargs-Mode, which can not be suppressed by the compiler itself. | |||||
| * The warning is logged as verbose message, though. | * The warning is logged as verbose message, though. | ||||
| */ | */ | ||||
| public void setSuppressMethodArgumentNotUsed(boolean suppressMethodArgumentNotUsed) { | public void setSuppressMethodArgumentNotUsed(boolean suppressMethodArgumentNotUsed) { | ||||
| this.suppressMethodArgumentNotUsed = suppressMethodArgumentNotUsed; | this.suppressMethodArgumentNotUsed = suppressMethodArgumentNotUsed; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether the task should suppress the "Private property is defined but | * Whether the task should suppress the "Private property is defined but | ||||
| * not used" in strictargs-Mode, which can be quite annoying while developing. | |||||
| * The warning is logged as verbose message, though. | |||||
| * not used" in strictargs-Mode, which can be quite annoying while | |||||
| * developing. The warning is logged as verbose message, though. | |||||
| */ | */ | ||||
| public void setSuppressPrivatePropertyNotUsed(boolean suppressPrivatePropertyNotUsed) { | public void setSuppressPrivatePropertyNotUsed(boolean suppressPrivatePropertyNotUsed) { | ||||
| this.suppressPrivatePropertyNotUsed = suppressPrivatePropertyNotUsed; | this.suppressPrivatePropertyNotUsed = suppressPrivatePropertyNotUsed; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether the task should suppress the "Variable is set but not used" | |||||
| * in strictargs-Mode. Be careful with this one! | |||||
| * The warning is logged as verbose message, though. | |||||
| * Whether the task should suppress the "Variable is set but not used" in | |||||
| * strictargs-Mode. Be careful with this one! The warning is logged as | |||||
| * verbose message, though. | |||||
| */ | */ | ||||
| public void setSuppressVariableNotUsed(boolean suppressVariableNotUsed) { | public void setSuppressVariableNotUsed(boolean suppressVariableNotUsed) { | ||||
| this.suppressVariableNotUsed = suppressVariableNotUsed; | this.suppressVariableNotUsed = suppressVariableNotUsed; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether the task should suppress the "FooException is in SIGNALS list but | |||||
| * is not signalled within the method", which is sometimes rather useless. | |||||
| * The warning is logged as verbose message, though. | |||||
| * Whether the task should suppress the "FooException is in SIGNALS list | |||||
| * but is not signalled within the method", which is sometimes rather | |||||
| * useless. The warning is logged as verbose message, though. | |||||
| */ | */ | ||||
| public void setSuppressExceptionNotSignalled(boolean suppressExceptionNotSignalled) { | public void setSuppressExceptionNotSignalled(boolean suppressExceptionNotSignalled) { | ||||
| this.suppressExceptionNotSignalled = suppressExceptionNotSignalled; | this.suppressExceptionNotSignalled = suppressExceptionNotSignalled; | ||||
| } | } | ||||
| /** | /** | ||||
| * Whether the task should suppress the "FooException is in SIGNALS list but | |||||
| * is not signalled within the method", which is sometimes rather useless. | |||||
| * The warning is logged as verbose message, though. | |||||
| * Whether the task should suppress the "FooException is in SIGNALS list | |||||
| * but is not signalled within the method", which is sometimes rather | |||||
| * useless. The warning is logged as verbose message, though. | |||||
| */ | */ | ||||
| public void setSuppressDeprecation(boolean suppressDeprecation) { | public void setSuppressDeprecation(boolean suppressDeprecation) { | ||||
| this.suppressDeprecation = suppressDeprecation; | this.suppressDeprecation = suppressDeprecation; | ||||
| } | } | ||||
| /** | /** | ||||
| * init-Method sets defaults from Properties. That way, when ant is called with arguments | |||||
| * like -Dant.netrexxc.verbose=verbose5 one can easily take control of all netrexxc-tasks. | |||||
| * init-Method sets defaults from Properties. That way, when ant is called | |||||
| * with arguments like -Dant.netrexxc.verbose=verbose5 one can easily take | |||||
| * control of all netrexxc-tasks. | |||||
| */ | */ | ||||
| // Sorry for the formatting, but that way it's easier to keep in sync with the private properties (line by line). | // Sorry for the formatting, but that way it's easier to keep in sync with the private properties (line by line). | ||||
| public void init() { | public void init() { | ||||
| String p; | String p; | ||||
| if ((p=project.getProperty("ant.netrexxc.binary"))!=null) { | |||||
| this.binary=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.binary")) != null) { | |||||
| this.binary = Project.toBoolean(p); | |||||
| } | } | ||||
| // classpath makes no sense | // classpath makes no sense | ||||
| if ((p=project.getProperty("ant.netrexxc.comments"))!=null) { | |||||
| this.comments=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.comments")) != null) { | |||||
| this.comments = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.compact"))!=null) { | |||||
| this.compact=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.compact")) != null) { | |||||
| this.compact = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.compile"))!=null) { | |||||
| this.compile=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.compile")) != null) { | |||||
| this.compile = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.console"))!=null) { | |||||
| this.console=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.console")) != null) { | |||||
| this.console = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.crossref"))!=null) { | |||||
| this.crossref=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.crossref")) != null) { | |||||
| this.crossref = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.decimal"))!=null) { | |||||
| this.decimal=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.decimal")) != null) { | |||||
| this.decimal = Project.toBoolean(p); | |||||
| // destDir | // destDir | ||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.diag"))!=null) { | |||||
| this.diag=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.diag")) != null) { | |||||
| this.diag = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.explicit"))!=null) { | |||||
| this.explicit=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.explicit")) != null) { | |||||
| this.explicit = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.format"))!=null) { | |||||
| this.format=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.format")) != null) { | |||||
| this.format = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.java"))!=null) { | |||||
| this.java=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.java")) != null) { | |||||
| this.java = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.keep"))!=null) { | |||||
| this.keep=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.keep")) != null) { | |||||
| this.keep = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.logo"))!=null) { | |||||
| this.logo=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.logo")) != null) { | |||||
| this.logo = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.replace"))!=null) { | |||||
| this.replace=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.replace")) != null) { | |||||
| this.replace = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.savelog"))!=null) { | |||||
| this.savelog=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.savelog")) != null) { | |||||
| this.savelog = Project.toBoolean(p); | |||||
| // srcDir | // srcDir | ||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.sourcedir"))!=null) { | |||||
| this.sourcedir=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.sourcedir")) != null) { | |||||
| this.sourcedir = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.strictargs"))!=null) { | |||||
| this.strictargs=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.strictargs")) != null) { | |||||
| this.strictargs = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.strictassign"))!=null) { | |||||
| this.strictassign=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.strictassign")) != null) { | |||||
| this.strictassign = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.strictcase"))!=null) { | |||||
| this.strictcase=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.strictcase")) != null) { | |||||
| this.strictcase = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.strictimport"))!=null) { | |||||
| this.strictimport=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.strictimport")) != null) { | |||||
| this.strictimport = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.strictprops"))!=null) { | |||||
| this.strictprops=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.strictprops")) != null) { | |||||
| this.strictprops = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.strictsignal"))!=null) { | |||||
| this.strictsignal=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.strictsignal")) != null) { | |||||
| this.strictsignal = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.symbols"))!=null) { | |||||
| this.symbols=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.symbols")) != null) { | |||||
| this.symbols = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.time"))!=null) { | |||||
| this.time=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.time")) != null) { | |||||
| this.time = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.trace"))!=null) { | |||||
| if ((p = project.getProperty("ant.netrexxc.trace")) != null) { | |||||
| setTrace(p); | setTrace(p); | ||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.utf8"))!=null) { | |||||
| this.utf8=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.utf8")) != null) { | |||||
| this.utf8 = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.verbose"))!=null) { | |||||
| if ((p = project.getProperty("ant.netrexxc.verbose")) != null) { | |||||
| setVerbose(p); | setVerbose(p); | ||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.suppressMethodArgumentNotUsed"))!=null) { | |||||
| this.suppressMethodArgumentNotUsed=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.suppressMethodArgumentNotUsed")) != null) { | |||||
| this.suppressMethodArgumentNotUsed = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.suppressPrivatePropertyNotUsed"))!=null) { | |||||
| this.suppressPrivatePropertyNotUsed=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.suppressPrivatePropertyNotUsed")) != null) { | |||||
| this.suppressPrivatePropertyNotUsed = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.suppressVariableNotUsed"))!=null) { | |||||
| this.suppressVariableNotUsed=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.suppressVariableNotUsed")) != null) { | |||||
| this.suppressVariableNotUsed = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.suppressExceptionNotSignalled"))!=null) { | |||||
| this.suppressExceptionNotSignalled=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.suppressExceptionNotSignalled")) != null) { | |||||
| this.suppressExceptionNotSignalled = Project.toBoolean(p); | |||||
| } | } | ||||
| if ((p=project.getProperty("ant.netrexxc.suppressDeprecation"))!=null) { | |||||
| this.suppressDeprecation=Project.toBoolean(p); | |||||
| if ((p = project.getProperty("ant.netrexxc.suppressDeprecation")) != null) { | |||||
| this.suppressDeprecation = Project.toBoolean(p); | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * Executes the task - performs the actual compiler call. | |||||
| */ | |||||
| /** Executes the task - performs the actual compiler call. */ | |||||
| public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
| // first off, make sure that we've got a srcdir and destdir | // first off, make sure that we've got a srcdir and destdir | ||||
| if (srcDir == null || destDir == null ) { | |||||
| if (srcDir == null || destDir == null) { | |||||
| throw new BuildException("srcDir and destDir attributes must be set!"); | throw new BuildException("srcDir and destDir attributes must be set!"); | ||||
| } | } | ||||
| @@ -632,15 +660,16 @@ public class NetRexxC extends MatchingTask { | |||||
| // compile the source files | // compile the source files | ||||
| if (compileList.size() > 0) { | if (compileList.size() > 0) { | ||||
| log("Compiling " + compileList.size() + " source file" | log("Compiling " + compileList.size() + " source file" | ||||
| + (compileList.size() == 1 ? "" : "s") | |||||
| + " to " + destDir); | |||||
| + (compileList.size() == 1 ? "" : "s") | |||||
| + " to " + destDir); | |||||
| doNetRexxCompile(); | doNetRexxCompile(); | ||||
| } | } | ||||
| } | } | ||||
| /** | /** | ||||
| * Scans the directory looking for source files to be compiled and | |||||
| * support files to be copied. | |||||
| * Scans the directory looking for source files to be compiled and support | |||||
| * files to be copied. | |||||
| */ | */ | ||||
| private void scanDir(File srcDir, File destDir, String[] files) { | private void scanDir(File srcDir, File destDir, String[] files) { | ||||
| for (int i = 0; i < files.length; i++) { | for (int i = 0; i < files.length; i++) { | ||||
| @@ -654,7 +683,7 @@ public class NetRexxC extends MatchingTask { | |||||
| if (filename.toLowerCase().endsWith(".nrx")) { | if (filename.toLowerCase().endsWith(".nrx")) { | ||||
| File classFile = | File classFile = | ||||
| new File(destDir, | new File(destDir, | ||||
| filename.substring(0, filename.lastIndexOf('.')) + ".class"); | |||||
| filename.substring(0, filename.lastIndexOf('.')) + ".class"); | |||||
| if (!compile || srcFile.lastModified() > classFile.lastModified()) { | if (!compile || srcFile.lastModified() > classFile.lastModified()) { | ||||
| filecopyList.put(srcFile.getAbsolutePath(), destFile.getAbsolutePath()); | filecopyList.put(srcFile.getAbsolutePath(), destFile.getAbsolutePath()); | ||||
| @@ -668,34 +697,37 @@ public class NetRexxC extends MatchingTask { | |||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * Copy eligible files from the srcDir to destDir | |||||
| */ | |||||
| /** Copy eligible files from the srcDir to destDir */ | |||||
| private void copyFilesToDestination() { | private void copyFilesToDestination() { | ||||
| if (filecopyList.size() > 0) { | if (filecopyList.size() > 0) { | ||||
| log("Copying " + filecopyList.size() + " file" | log("Copying " + filecopyList.size() + " file" | ||||
| + (filecopyList.size() == 1 ? "" : "s") | |||||
| + " to " + destDir.getAbsolutePath()); | |||||
| + (filecopyList.size() == 1 ? "" : "s") | |||||
| + " to " + destDir.getAbsolutePath()); | |||||
| Enumeration enum = filecopyList.keys(); | Enumeration enum = filecopyList.keys(); | ||||
| while (enum.hasMoreElements()) { | while (enum.hasMoreElements()) { | ||||
| String fromFile = (String)enum.nextElement(); | |||||
| String toFile = (String)filecopyList.get(fromFile); | |||||
| String fromFile = (String) enum.nextElement(); | |||||
| String toFile = (String) filecopyList.get(fromFile); | |||||
| try { | try { | ||||
| project.copyFile(fromFile, toFile); | project.copyFile(fromFile, toFile); | ||||
| } catch (IOException ioe) { | } catch (IOException ioe) { | ||||
| String msg = "Failed to copy " + fromFile + " to " + toFile | String msg = "Failed to copy " + fromFile + " to " + toFile | ||||
| + " due to " + ioe.getMessage(); | |||||
| + " due to " + ioe.getMessage(); | |||||
| throw new BuildException(msg, ioe); | throw new BuildException(msg, ioe); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /** | |||||
| * Peforms a copmile using the NetRexx 1.1.x compiler | |||||
| */ | |||||
| /** Peforms a copmile using the NetRexx 1.1.x compiler */ | |||||
| private void doNetRexxCompile() throws BuildException { | private void doNetRexxCompile() throws BuildException { | ||||
| log("Using NetRexx compiler", Project.MSG_VERBOSE); | log("Using NetRexx compiler", Project.MSG_VERBOSE); | ||||
| String classpath = getCompileClasspath(); | String classpath = getCompileClasspath(); | ||||
| StringBuffer compileOptions = new StringBuffer(); | StringBuffer compileOptions = new StringBuffer(); | ||||
| StringBuffer fileList = new StringBuffer(); | StringBuffer fileList = new StringBuffer(); | ||||
| @@ -706,17 +738,19 @@ public class NetRexxC extends MatchingTask { | |||||
| String[] fileListArray = new String[compileList.size()]; | String[] fileListArray = new String[compileList.size()]; | ||||
| Enumeration e = compileList.elements(); | Enumeration e = compileList.elements(); | ||||
| int j = 0; | int j = 0; | ||||
| while (e.hasMoreElements()) { | while (e.hasMoreElements()) { | ||||
| fileListArray[j] = (String)e.nextElement(); | |||||
| fileListArray[j] = (String) e.nextElement(); | |||||
| j++; | j++; | ||||
| } | } | ||||
| // create a single array of arguments for the compiler | // create a single array of arguments for the compiler | ||||
| String compileArgs[] = new String[compileOptionsArray.length + fileListArray.length]; | String compileArgs[] = new String[compileOptionsArray.length + fileListArray.length]; | ||||
| for (int i = 0; i < compileOptionsArray.length; i++) { | for (int i = 0; i < compileOptionsArray.length; i++) { | ||||
| compileArgs[i] = compileOptionsArray[i]; | compileArgs[i] = compileOptionsArray[i]; | ||||
| } | } | ||||
| for (int i = 0; i < fileListArray.length; i++) { | for (int i = 0; i < fileListArray.length; i++) { | ||||
| compileArgs[i+compileOptionsArray.length] = fileListArray[i]; | |||||
| compileArgs[i + compileOptionsArray.length] = fileListArray[i]; | |||||
| } | } | ||||
| // print nice output about what we are doing for the log | // print nice output about what we are doing for the log | ||||
| @@ -742,49 +776,52 @@ public class NetRexxC extends MatchingTask { | |||||
| // since the NetRexx compiler has no option for the classpath | // since the NetRexx compiler has no option for the classpath | ||||
| String currentClassPath = System.getProperty("java.class.path"); | String currentClassPath = System.getProperty("java.class.path"); | ||||
| Properties currentProperties = System.getProperties(); | Properties currentProperties = System.getProperties(); | ||||
| currentProperties.put("java.class.path", classpath); | currentProperties.put("java.class.path", classpath); | ||||
| try { | try { | ||||
| StringWriter out = new StringWriter(); | StringWriter out = new StringWriter(); | ||||
| int rc = COM.ibm.netrexx.process.NetRexxC. | |||||
| main(new Rexx(compileArgs), new PrintWriter(out)); | |||||
| String sdir=srcDir.getAbsolutePath(); | |||||
| String ddir=destDir.getAbsolutePath(); | |||||
| boolean doReplace=!(sdir.equals(ddir)); | |||||
| int dlen=ddir.length(); | |||||
| int rc = | |||||
| COM.ibm.netrexx.process.NetRexxC.main(new Rexx(compileArgs), new PrintWriter(out)); | |||||
| String sdir = srcDir.getAbsolutePath(); | |||||
| String ddir = destDir.getAbsolutePath(); | |||||
| boolean doReplace = !(sdir.equals(ddir)); | |||||
| int dlen = ddir.length(); | |||||
| String l; | String l; | ||||
| BufferedReader in=new BufferedReader(new StringReader(out.toString())); | |||||
| log("replacing destdir '"+ddir+"' through sourcedir '"+sdir+"'", Project.MSG_VERBOSE); | |||||
| while ((l=in.readLine())!=null) { | |||||
| BufferedReader in = new BufferedReader(new StringReader(out.toString())); | |||||
| log("replacing destdir '" + ddir + "' through sourcedir '" + sdir + "'", Project.MSG_VERBOSE); | |||||
| while ((l = in.readLine()) != null) { | |||||
| int idx; | int idx; | ||||
| while (doReplace && ((idx=l.indexOf(ddir))!=-1)) { // path is mentioned in the message | |||||
| l=(new StringBuffer(l)).replace(idx,idx+dlen,sdir).toString(); | |||||
| while (doReplace && ((idx = l.indexOf(ddir)) != -1)) {// path is mentioned in the message | |||||
| l = (new StringBuffer(l)).replace(idx, idx + dlen, sdir).toString(); | |||||
| } | } | ||||
| // verbose level logging for suppressed messages | // verbose level logging for suppressed messages | ||||
| if (suppressMethodArgumentNotUsed && l.indexOf(MSG_METHOD_ARGUMENT_NOT_USED)!=-1) { | |||||
| if (suppressMethodArgumentNotUsed && l.indexOf(MSG_METHOD_ARGUMENT_NOT_USED) != -1) { | |||||
| log(l, Project.MSG_VERBOSE); | log(l, Project.MSG_VERBOSE); | ||||
| } else if (suppressPrivatePropertyNotUsed && l.indexOf(MSG_PRIVATE_PROPERTY_NOT_USED)!=-1) { | |||||
| } else if (suppressPrivatePropertyNotUsed && l.indexOf(MSG_PRIVATE_PROPERTY_NOT_USED) != -1) { | |||||
| log(l, Project.MSG_VERBOSE); | log(l, Project.MSG_VERBOSE); | ||||
| } else if (suppressVariableNotUsed && l.indexOf(MSG_VARIABLE_NOT_USED)!=-1) { | |||||
| } else if (suppressVariableNotUsed && l.indexOf(MSG_VARIABLE_NOT_USED) != -1) { | |||||
| log(l, Project.MSG_VERBOSE); | log(l, Project.MSG_VERBOSE); | ||||
| } else if (suppressExceptionNotSignalled && l.indexOf(MSG_EXCEPTION_NOT_SIGNALLED)!=-1) { | |||||
| } else if (suppressExceptionNotSignalled && l.indexOf(MSG_EXCEPTION_NOT_SIGNALLED) != -1) { | |||||
| log(l, Project.MSG_VERBOSE); | log(l, Project.MSG_VERBOSE); | ||||
| } else if (suppressDeprecation && l.indexOf(MSG_DEPRECATION)!=-1) { | |||||
| } else if (suppressDeprecation && l.indexOf(MSG_DEPRECATION) != -1) { | |||||
| log(l, Project.MSG_VERBOSE); | log(l, Project.MSG_VERBOSE); | ||||
| } else if (l.indexOf("Error:")!=-1) { // error level logging for compiler errors | |||||
| } else if (l.indexOf("Error:") != -1) {// error level logging for compiler errors | |||||
| log(l, Project.MSG_ERR); | log(l, Project.MSG_ERR); | ||||
| } else if (l.indexOf("Warning:")!=-1) { // warning for all warning messages | |||||
| } else if (l.indexOf("Warning:") != -1) {// warning for all warning messages | |||||
| log(l, Project.MSG_WARN); | log(l, Project.MSG_WARN); | ||||
| } else { | } else { | ||||
| log(l, Project.MSG_INFO); // info level for the rest. | |||||
| log(l, Project.MSG_INFO);// info level for the rest. | |||||
| } | } | ||||
| } | } | ||||
| if (rc>1) { | |||||
| if (rc > 1) { | |||||
| throw new BuildException("Compile failed, messages should have been provided."); | throw new BuildException("Compile failed, messages should have been provided."); | ||||
| } | } | ||||
| } catch (IOException ioe) { | } catch (IOException ioe) { | ||||
| throw new BuildException("Unexpected IOException while playing with Strings", | throw new BuildException("Unexpected IOException while playing with Strings", | ||||
| ioe); | |||||
| ioe); | |||||
| } finally { | } finally { | ||||
| // need to reset java.class.path property | // need to reset java.class.path property | ||||
| // since the NetRexx compiler has no option for the classpath | // since the NetRexx compiler has no option for the classpath | ||||
| @@ -794,9 +831,8 @@ public class NetRexxC extends MatchingTask { | |||||
| } | } | ||||
| /** | |||||
| * Builds the compilation classpath. | |||||
| */ | |||||
| /** Builds the compilation classpath. */ | |||||
| private String getCompileClasspath() { | private String getCompileClasspath() { | ||||
| StringBuffer classpath = new StringBuffer(); | StringBuffer classpath = new StringBuffer(); | ||||
| @@ -814,11 +850,11 @@ public class NetRexxC extends MatchingTask { | |||||
| return classpath.toString(); | return classpath.toString(); | ||||
| } | } | ||||
| /** | |||||
| * This | |||||
| */ | |||||
| /** This */ | |||||
| private String[] getCompileOptionsAsArray() { | private String[] getCompileOptionsAsArray() { | ||||
| Vector options = new Vector(); | Vector options = new Vector(); | ||||
| options.addElement(binary ? "-binary" : "-nobinary"); | options.addElement(binary ? "-binary" : "-nobinary"); | ||||
| options.addElement(comments ? "-comments" : "-nocomments"); | options.addElement(comments ? "-comments" : "-nocomments"); | ||||
| options.addElement(compile ? "-compile" : "-nocompile"); | options.addElement(compile ? "-compile" : "-nocompile"); | ||||
| @@ -827,7 +863,7 @@ public class NetRexxC extends MatchingTask { | |||||
| options.addElement(crossref ? "-crossref" : "-nocrossref"); | options.addElement(crossref ? "-crossref" : "-nocrossref"); | ||||
| options.addElement(decimal ? "-decimal" : "-nodecimal"); | options.addElement(decimal ? "-decimal" : "-nodecimal"); | ||||
| options.addElement(diag ? "-diag" : "-nodiag"); | options.addElement(diag ? "-diag" : "-nodiag"); | ||||
| options.addElement(explicit ? "-explicit": "-noexplicit"); | |||||
| options.addElement(explicit ? "-explicit" : "-noexplicit"); | |||||
| options.addElement(format ? "-format" : "-noformat"); | options.addElement(format ? "-format" : "-noformat"); | ||||
| options.addElement(keep ? "-keep" : "-nokeep"); | options.addElement(keep ? "-keep" : "-nokeep"); | ||||
| options.addElement(logo ? "-logo" : "-nologo"); | options.addElement(logo ? "-logo" : "-nologo"); | ||||
| @@ -836,7 +872,7 @@ public class NetRexxC extends MatchingTask { | |||||
| options.addElement(sourcedir ? "-sourcedir" : "-nosourcedir"); | options.addElement(sourcedir ? "-sourcedir" : "-nosourcedir"); | ||||
| options.addElement(strictargs ? "-strictargs" : "-nostrictargs"); | options.addElement(strictargs ? "-strictargs" : "-nostrictargs"); | ||||
| options.addElement(strictassign ? "-strictassign" : "-nostrictassign"); | options.addElement(strictassign ? "-strictassign" : "-nostrictassign"); | ||||
| options.addElement(strictcase ? "-strictcase": "-nostrictcase"); | |||||
| options.addElement(strictcase ? "-strictcase" : "-nostrictcase"); | |||||
| options.addElement(strictimport ? "-strictimport" : "-nostrictimport"); | options.addElement(strictimport ? "-strictimport" : "-nostrictimport"); | ||||
| options.addElement(strictprops ? "-strictprops" : "-nostrictprops"); | options.addElement(strictprops ? "-strictprops" : "-nostrictprops"); | ||||
| options.addElement(strictsignal ? "-strictsignal" : "-nostrictsignal"); | options.addElement(strictsignal ? "-strictsignal" : "-nostrictsignal"); | ||||
| @@ -845,24 +881,28 @@ public class NetRexxC extends MatchingTask { | |||||
| options.addElement("-" + trace); | options.addElement("-" + trace); | ||||
| options.addElement(utf8 ? "-utf8" : "-noutf8"); | options.addElement(utf8 ? "-utf8" : "-noutf8"); | ||||
| options.addElement("-" + verbose); | options.addElement("-" + verbose); | ||||
| String[] results = new String[options.size()]; | String[] results = new String[options.size()]; | ||||
| options.copyInto(results); | options.copyInto(results); | ||||
| return results; | return results; | ||||
| } | } | ||||
| /** | /** | ||||
| * Takes a classpath-like string, and adds each element of | |||||
| * this string to a new classpath, if the components exist. | |||||
| * Components that don't exist, aren't added. | |||||
| * We do this, because jikes issues warnings for non-existant | |||||
| * files/dirs in his classpath, and these warnings are pretty | |||||
| * Takes a classpath-like string, and adds each element of this string to | |||||
| * a new classpath, if the components exist. Components that don't exist, | |||||
| * aren't added. We do this, because jikes issues warnings for | |||||
| * non-existant files/dirs in his classpath, and these warnings are pretty | |||||
| * annoying. | * annoying. | ||||
| * | |||||
| * @param target - target classpath | * @param target - target classpath | ||||
| * @param source - source classpath | |||||
| * to get file objects. | |||||
| * @param source - source classpath to get file objects. | |||||
| */ | */ | ||||
| private void addExistingToClasspath(StringBuffer target,String source) { | |||||
| private void addExistingToClasspath(StringBuffer target, String source) { | |||||
| StringTokenizer tok = new StringTokenizer(source, | StringTokenizer tok = new StringTokenizer(source, | ||||
| System.getProperty("path.separator"), false); | |||||
| System.getProperty("path.separator"), false); | |||||
| while (tok.hasMoreTokens()) { | while (tok.hasMoreTokens()) { | ||||
| File f = project.resolveFile(tok.nextToken()); | File f = project.resolveFile(tok.nextToken()); | ||||
| @@ -870,24 +910,27 @@ public class NetRexxC extends MatchingTask { | |||||
| target.append(File.pathSeparator); | target.append(File.pathSeparator); | ||||
| target.append(f.getAbsolutePath()); | target.append(f.getAbsolutePath()); | ||||
| } else { | } else { | ||||
| log("Dropping from classpath: "+ | |||||
| log("Dropping from classpath: " + | |||||
| f.getAbsolutePath(), Project.MSG_VERBOSE); | f.getAbsolutePath(), Project.MSG_VERBOSE); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| public static class TraceAttr extends EnumeratedAttribute { | public static class TraceAttr extends EnumeratedAttribute { | ||||
| public String[] getValues() { | public String[] getValues() { | ||||
| return new String[] {"trace", "trace1", "trace2", "notrace"}; | |||||
| return new String[]{"trace", "trace1", "trace2", "notrace"}; | |||||
| } | } | ||||
| } | } | ||||
| public static class VerboseAttr extends EnumeratedAttribute { | public static class VerboseAttr extends EnumeratedAttribute { | ||||
| public String[] getValues() { | public String[] getValues() { | ||||
| return new String[] {"verbose", "verbose0", "verbose1", | |||||
| "verbose2", "verbose3", "verbose4", | |||||
| "verbose5", "noverbose"}; | |||||
| return new String[]{"verbose", "verbose0", "verbose1", | |||||
| "verbose2", "verbose3", "verbose4", | |||||
| "verbose5", "noverbose"}; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -197,9 +197,9 @@ public class PropertyFile extends Task | |||||
| private void executeOperation() throws BuildException | private void executeOperation() throws BuildException | ||||
| { | { | ||||
| for (Enumeration e = entries.elements(); e.hasMoreElements(); ) | |||||
| for (Enumeration e = entries.elements(); e.hasMoreElements();) | |||||
| { | { | ||||
| Entry entry = (Entry)e.nextElement(); | |||||
| Entry entry = (Entry) e.nextElement(); | |||||
| entry.executeOn(properties); | entry.executeOn(properties); | ||||
| } | } | ||||
| } | } | ||||
| @@ -212,7 +212,8 @@ public class PropertyFile extends Task | |||||
| { | { | ||||
| if (propertyfile.exists()) | if (propertyfile.exists()) | ||||
| { | { | ||||
| log("Updating property file: "+propertyfile.getAbsolutePath()); | |||||
| log("Updating property file: " | |||||
| + propertyfile.getAbsolutePath()); | |||||
| FileInputStream fis = null; | FileInputStream fis = null; | ||||
| try { | try { | ||||
| fis = new FileInputStream(propertyfile); | fis = new FileInputStream(propertyfile); | ||||
| @@ -226,8 +227,8 @@ public class PropertyFile extends Task | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| log("Creating new property file: "+ | |||||
| propertyfile.getAbsolutePath()); | |||||
| log("Creating new property file: " | |||||
| + propertyfile.getAbsolutePath()); | |||||
| FileOutputStream out = null; | FileOutputStream out = null; | ||||
| try { | try { | ||||
| out = new FileOutputStream(propertyfile.getAbsolutePath()); | out = new FileOutputStream(propertyfile.getAbsolutePath()); | ||||
| @@ -238,9 +239,7 @@ public class PropertyFile extends Task | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | |||||
| catch(IOException ioe) | |||||
| { | |||||
| } catch (IOException ioe) { | |||||
| throw new BuildException(ioe.toString()); | throw new BuildException(ioe.toString()); | ||||
| } | } | ||||
| } | } | ||||
| @@ -275,8 +274,7 @@ public class PropertyFile extends Task | |||||
| Properties.class.getMethod("store", | Properties.class.getMethod("store", | ||||
| new Class[] { | new Class[] { | ||||
| OutputStream.class, | OutputStream.class, | ||||
| String.class} | |||||
| ); | |||||
| String.class}); | |||||
| m.invoke(properties, new Object[] {bos, comment}); | m.invoke(properties, new Object[] {bos, comment}); | ||||
| } catch (NoSuchMethodException nsme) { | } catch (NoSuchMethodException nsme) { | ||||
| @@ -287,9 +285,7 @@ public class PropertyFile extends Task | |||||
| } catch (IllegalAccessException iae) { | } catch (IllegalAccessException iae) { | ||||
| // impossible | // impossible | ||||
| throw new BuildException(iae, location); | throw new BuildException(iae, location); | ||||
| } | |||||
| catch (IOException ioe) | |||||
| { | |||||
| } catch (IOException ioe) { | |||||
| throw new BuildException(ioe, location); | throw new BuildException(ioe, location); | ||||
| } | } | ||||
| finally { | finally { | ||||
| @@ -369,7 +365,7 @@ public class PropertyFile extends Task | |||||
| checkParameters(); | checkParameters(); | ||||
| // type may be null because it wasn't set | // type may be null because it wasn't set | ||||
| String oldValue = (String)props.get(key); | |||||
| String oldValue = (String) props.get(key); | |||||
| try { | try { | ||||
| if (type == Type.INTEGER_TYPE) | if (type == Type.INTEGER_TYPE) | ||||
| { | { | ||||
| @@ -385,7 +381,8 @@ public class PropertyFile extends Task | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| throw new BuildException("Unknown operation type: "+type+""); | |||||
| throw new BuildException("Unknown operation type: " | |||||
| + type); | |||||
| } | } | ||||
| } catch (NullPointerException npe) { | } catch (NullPointerException npe) { | ||||
| // Default to string type | // Default to string type | ||||
| @@ -129,24 +129,24 @@ public class RenameExtensions extends MatchingTask { | |||||
| // first off, make sure that we've got a from and to extension | // first off, make sure that we've got a from and to extension | ||||
| if (fromExtension == null || toExtension == null || srcDir == null) { | if (fromExtension == null || toExtension == null || srcDir == null) { | ||||
| throw new BuildException( "srcDir, fromExtension and toExtension " + | |||||
| "attributes must be set!" ); | |||||
| throw new BuildException("srcDir, fromExtension and toExtension " | |||||
| + "attributes must be set!"); | |||||
| } | } | ||||
| log("DEPRECATED - The renameext task is deprecated. Use move instead.", | log("DEPRECATED - The renameext task is deprecated. Use move instead.", | ||||
| Project.MSG_WARN); | Project.MSG_WARN); | ||||
| log("Replace this with:", Project.MSG_INFO); | log("Replace this with:", Project.MSG_INFO); | ||||
| log("<move todir=\""+srcDir+"\" overwrite=\""+replace+"\">", | |||||
| log("<move todir=\"" + srcDir + "\" overwrite=\"" + replace + "\">", | |||||
| Project.MSG_INFO); | Project.MSG_INFO); | ||||
| log(" <fileset dir=\""+srcDir+"\" />", Project.MSG_INFO); | |||||
| log(" <fileset dir=\"" + srcDir + "\" />", Project.MSG_INFO); | |||||
| log(" <mapper type=\"glob\"", Project.MSG_INFO); | log(" <mapper type=\"glob\"", Project.MSG_INFO); | ||||
| log(" from=\"*"+fromExtension+"\"", Project.MSG_INFO); | |||||
| log(" to=\"*"+toExtension+"\" />", Project.MSG_INFO); | |||||
| log(" from=\"*" + fromExtension + "\"", Project.MSG_INFO); | |||||
| log(" to=\"*" + toExtension + "\" />", Project.MSG_INFO); | |||||
| log("</move>", Project.MSG_INFO); | log("</move>", Project.MSG_INFO); | ||||
| log("using the same patterns on <fileset> as you\'ve used here", | log("using the same patterns on <fileset> as you\'ve used here", | ||||
| Project.MSG_INFO); | Project.MSG_INFO); | ||||
| Move move = (Move)project.createTask("move"); | |||||
| Move move = (Move) project.createTask("move"); | |||||
| move.setOwningTarget(target); | move.setOwningTarget(target); | ||||
| move.setTaskName(getTaskName()); | move.setTaskName(getTaskName()); | ||||
| move.setLocation(getLocation()); | move.setLocation(getLocation()); | ||||
| @@ -158,8 +158,8 @@ public class RenameExtensions extends MatchingTask { | |||||
| Mapper me = move.createMapper(); | Mapper me = move.createMapper(); | ||||
| me.setType(globType); | me.setType(globType); | ||||
| me.setFrom("*"+fromExtension); | |||||
| me.setTo("*"+toExtension); | |||||
| me.setFrom("*" + fromExtension); | |||||
| me.setTo("*" + toExtension); | |||||
| move.execute(); | move.execute(); | ||||
| } | } | ||||
| @@ -1,7 +1,7 @@ | |||||
| /* | /* | ||||
| * The Apache Software License, Version 1.1 | * The Apache Software License, Version 1.1 | ||||
| * | * | ||||
| * Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||||
| * Copyright (c) 2001-2002 The Apache Software Foundation. All rights | |||||
| * reserved. | * reserved. | ||||
| * | * | ||||
| * Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
| @@ -73,7 +73,7 @@ import java.io.PrintWriter; | |||||
| import java.util.Vector; | import java.util.Vector; | ||||
| /*** | |||||
| /** | |||||
| * <pre> | * <pre> | ||||
| * Task to do regular expression string replacements in a text | * Task to do regular expression string replacements in a text | ||||
| * file. The input file(s) must be able to be properly processed by | * file. The input file(s) must be able to be properly processed by | ||||
| @@ -85,7 +85,6 @@ import java.util.Vector; | |||||
| * is <code>org.apache.tools.ant.util.regexp.JakartaOroRegexp</code> and | * is <code>org.apache.tools.ant.util.regexp.JakartaOroRegexp</code> and | ||||
| * requires the Jakarta Oro Package). | * requires the Jakarta Oro Package). | ||||
| * | * | ||||
| * <pre> | |||||
| * For jdk <= 1.3, there are two available implementations: | * For jdk <= 1.3, there are two available implementations: | ||||
| * org.apache.tools.ant.util.regexp.JakartaOroRegexp (the default) | * org.apache.tools.ant.util.regexp.JakartaOroRegexp (the default) | ||||
| * Requires the jakarta-oro package | * Requires the jakarta-oro package | ||||
| @@ -96,7 +95,6 @@ import java.util.Vector; | |||||
| * For jdk >= 1.4 an additional implementation is available: | * For jdk >= 1.4 an additional implementation is available: | ||||
| * org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp | * org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp | ||||
| * Requires the jdk 1.4 built in regular expression package. | * Requires the jdk 1.4 built in regular expression package. | ||||
| * </pre> | |||||
| * | * | ||||
| * Usage: | * Usage: | ||||
| * | * | ||||
| @@ -146,23 +144,20 @@ import java.util.Vector; | |||||
| * | * | ||||
| * @author <a href="mailto:mattinger@mindless.com">Matthew Inger</a> | * @author <a href="mailto:mattinger@mindless.com">Matthew Inger</a> | ||||
| */ | */ | ||||
| public class ReplaceRegExp extends Task | |||||
| { | |||||
| public class ReplaceRegExp extends Task { | |||||
| private File file; | private File file; | ||||
| private String flags; | private String flags; | ||||
| private boolean byline; | private boolean byline; | ||||
| private Vector filesets; // Keep jdk 1.1 compliant so others can use this | |||||
| private Vector filesets;// Keep jdk 1.1 compliant so others can use this | |||||
| private RegularExpression regex; | private RegularExpression regex; | ||||
| private Substitution subs; | private Substitution subs; | ||||
| private FileUtils fileUtils = FileUtils.newFileUtils(); | private FileUtils fileUtils = FileUtils.newFileUtils(); | ||||
| /*** | |||||
| * Default Constructor | |||||
| */ | |||||
| public ReplaceRegExp() | |||||
| { | |||||
| /** Default Constructor */ | |||||
| public ReplaceRegExp() { | |||||
| super(); | super(); | ||||
| this.file = null; | this.file = null; | ||||
| this.filesets = new Vector(); | this.filesets = new Vector(); | ||||
| @@ -173,13 +168,13 @@ public class ReplaceRegExp extends Task | |||||
| this.subs = null; | this.subs = null; | ||||
| } | } | ||||
| public void setFile(File file) | |||||
| { | |||||
| public void setFile(File file) { | |||||
| this.file = file; | this.file = file; | ||||
| } | } | ||||
| public void setMatch(String match) | |||||
| { | |||||
| public void setMatch(String match) { | |||||
| if (regex != null) { | if (regex != null) { | ||||
| throw new BuildException("Only one regular expression is allowed"); | throw new BuildException("Only one regular expression is allowed"); | ||||
| } | } | ||||
| @@ -188,8 +183,8 @@ public class ReplaceRegExp extends Task | |||||
| regex.setPattern(match); | regex.setPattern(match); | ||||
| } | } | ||||
| public void setReplace(String replace) | |||||
| { | |||||
| public void setReplace(String replace) { | |||||
| if (subs != null) { | if (subs != null) { | ||||
| throw new BuildException("Only one substitution expression is allowed"); | throw new BuildException("Only one substitution expression is allowed"); | ||||
| } | } | ||||
| @@ -198,27 +193,28 @@ public class ReplaceRegExp extends Task | |||||
| subs.setExpression(replace); | subs.setExpression(replace); | ||||
| } | } | ||||
| public void setFlags(String flags) | |||||
| { | |||||
| public void setFlags(String flags) { | |||||
| this.flags = flags; | this.flags = flags; | ||||
| } | } | ||||
| public void setByLine(String byline) | |||||
| { | |||||
| public void setByLine(String byline) { | |||||
| Boolean res = Boolean.valueOf(byline); | Boolean res = Boolean.valueOf(byline); | ||||
| if (res == null) { | if (res == null) { | ||||
| res = Boolean.FALSE; | res = Boolean.FALSE; | ||||
| } | } | ||||
| this.byline = res.booleanValue(); | this.byline = res.booleanValue(); | ||||
| } | } | ||||
| public void addFileset(FileSet set) | |||||
| { | |||||
| public void addFileset(FileSet set) { | |||||
| filesets.addElement(set); | filesets.addElement(set); | ||||
| } | } | ||||
| public RegularExpression createRegexp() | |||||
| { | |||||
| public RegularExpression createRegexp() { | |||||
| if (regex != null) { | if (regex != null) { | ||||
| throw new BuildException("Only one regular expression is allowed."); | throw new BuildException("Only one regular expression is allowed."); | ||||
| } | } | ||||
| @@ -227,8 +223,8 @@ public class ReplaceRegExp extends Task | |||||
| return regex; | return regex; | ||||
| } | } | ||||
| public Substitution createSubstitution() | |||||
| { | |||||
| public Substitution createSubstitution() { | |||||
| if (subs != null) { | if (subs != null) { | ||||
| throw new BuildException("Only one substitution expression is allowed"); | throw new BuildException("Only one substitution expression is allowed"); | ||||
| } | } | ||||
| @@ -236,38 +232,33 @@ public class ReplaceRegExp extends Task | |||||
| subs = new Substitution(); | subs = new Substitution(); | ||||
| return subs; | return subs; | ||||
| } | } | ||||
| protected String doReplace(RegularExpression r, | protected String doReplace(RegularExpression r, | ||||
| Substitution s, | Substitution s, | ||||
| String input, | String input, | ||||
| int options) | |||||
| { | |||||
| int options) { | |||||
| String res = input; | String res = input; | ||||
| Regexp regexp = r.getRegexp(project); | Regexp regexp = r.getRegexp(project); | ||||
| if (regexp.matches(input, options)) | |||||
| { | |||||
| if (regexp.matches(input, options)) { | |||||
| res = regexp.substitute(input, s.getExpression(project), options); | res = regexp.substitute(input, s.getExpression(project), options); | ||||
| } | } | ||||
| return res; | return res; | ||||
| } | } | ||||
| /*** | |||||
| * Perform the replace on the entire file | |||||
| */ | |||||
| /** Perform the replace on the entire file */ | |||||
| protected void doReplace(File f, int options) | protected void doReplace(File f, int options) | ||||
| throws IOException | |||||
| { | |||||
| throws IOException { | |||||
| File parentDir = new File(new File(f.getAbsolutePath()).getParent()); | File parentDir = new File(new File(f.getAbsolutePath()).getParent()); | ||||
| File temp = fileUtils.createTempFile("replace", ".txt", parentDir); | File temp = fileUtils.createTempFile("replace", ".txt", parentDir); | ||||
| FileReader r = null; | FileReader r = null; | ||||
| FileWriter w = null; | FileWriter w = null; | ||||
| try | |||||
| { | |||||
| try { | |||||
| r = new FileReader(f); | r = new FileReader(f); | ||||
| w = new FileWriter(temp); | w = new FileWriter(temp); | ||||
| @@ -277,45 +268,43 @@ public class ReplaceRegExp extends Task | |||||
| boolean changes = false; | boolean changes = false; | ||||
| log("Replacing pattern '" + regex.getPattern(project) + "' with '" + subs.getExpression(project) + | |||||
| "' in '" + f.getPath() + "'" + | |||||
| log("Replacing pattern '" + regex.getPattern(project) + "' with '" + subs.getExpression(project) + | |||||
| "' in '" + f.getPath() + "'" + | |||||
| (byline ? " by line" : "") + | (byline ? " by line" : "") + | ||||
| (flags.length() > 0 ? " with flags: '" + flags + "'" : "") + | (flags.length() > 0 ? " with flags: '" + flags + "'" : "") + | ||||
| ".", | ".", | ||||
| Project.MSG_WARN); | Project.MSG_WARN); | ||||
| if (byline) | |||||
| { | |||||
| if (byline) { | |||||
| LineNumberReader lnr = new LineNumberReader(br); | LineNumberReader lnr = new LineNumberReader(br); | ||||
| String line = null; | String line = null; | ||||
| while ((line = lnr.readLine()) != null) | |||||
| { | |||||
| while ((line = lnr.readLine()) != null) { | |||||
| String res = doReplace(regex, subs, line, options); | String res = doReplace(regex, subs, line, options); | ||||
| if (! res.equals(line)) { | |||||
| if (!res.equals(line)) { | |||||
| changes = true; | changes = true; | ||||
| } | } | ||||
| pw.println(res); | pw.println(res); | ||||
| } | } | ||||
| pw.flush(); | pw.flush(); | ||||
| } | |||||
| else | |||||
| { | |||||
| int flen = (int)(f.length()); | |||||
| } else { | |||||
| int flen = (int) f.length(); | |||||
| char tmpBuf[] = new char[flen]; | char tmpBuf[] = new char[flen]; | ||||
| int numread = 0; | int numread = 0; | ||||
| int totread = 0; | int totread = 0; | ||||
| while (numread != -1 && totread < flen) | |||||
| { | |||||
| while (numread != -1 && totread < flen) { | |||||
| numread = br.read(tmpBuf, totread, flen); | numread = br.read(tmpBuf, totread, flen); | ||||
| totread += numread; | totread += numread; | ||||
| } | } | ||||
| String buf = new String(tmpBuf); | String buf = new String(tmpBuf); | ||||
| String res = doReplace(regex, subs, buf, options); | String res = doReplace(regex, subs, buf, options); | ||||
| if (! res.equals(buf)) { | |||||
| if (!res.equals(buf)) { | |||||
| changes = true; | changes = true; | ||||
| } | } | ||||
| @@ -328,33 +317,34 @@ public class ReplaceRegExp extends Task | |||||
| w.close(); | w.close(); | ||||
| w = null; | w = null; | ||||
| if (changes) | |||||
| { | |||||
| if (changes) { | |||||
| f.delete(); | f.delete(); | ||||
| temp.renameTo(f); | temp.renameTo(f); | ||||
| } | |||||
| else | |||||
| { | |||||
| } else { | |||||
| temp.delete(); | temp.delete(); | ||||
| } | } | ||||
| } | |||||
| finally | |||||
| { | |||||
| try { if (r != null) { | |||||
| } finally { | |||||
| try { | |||||
| if (r != null) { | |||||
| r.close(); | r.close(); | ||||
| } } | |||||
| catch (Exception e) { }; | |||||
| } | |||||
| } catch (Exception e) { | |||||
| } | |||||
| ; | |||||
| try { if (w != null) { | |||||
| try { | |||||
| if (w != null) { | |||||
| r.close(); | r.close(); | ||||
| } } | |||||
| catch (Exception e) { }; | |||||
| } | |||||
| } catch (Exception e) { | |||||
| } | |||||
| ; | |||||
| } | } | ||||
| } | } | ||||
| public void execute() | public void execute() | ||||
| throws BuildException | |||||
| { | |||||
| throws BuildException { | |||||
| if (regex == null) { | if (regex == null) { | ||||
| throw new BuildException("No expression to match."); | throw new BuildException("No expression to match."); | ||||
| } | } | ||||
| @@ -366,9 +356,8 @@ public class ReplaceRegExp extends Task | |||||
| throw new BuildException("You cannot supply the 'file' attribute and filesets at the same time."); | throw new BuildException("You cannot supply the 'file' attribute and filesets at the same time."); | ||||
| } | } | ||||
| int options = 0; | int options = 0; | ||||
| if (flags.indexOf('g') != -1) { | if (flags.indexOf('g') != -1) { | ||||
| options |= Regexp.REPLACE_ALL; | options |= Regexp.REPLACE_ALL; | ||||
| } | } | ||||
| @@ -385,48 +374,37 @@ public class ReplaceRegExp extends Task | |||||
| options |= Regexp.MATCH_SINGLELINE; | options |= Regexp.MATCH_SINGLELINE; | ||||
| } | } | ||||
| if (file != null && file.exists()) | |||||
| { | |||||
| try | |||||
| { | |||||
| if (file != null && file.exists()) { | |||||
| try { | |||||
| doReplace(file, options); | doReplace(file, options); | ||||
| } | |||||
| catch (IOException e) | |||||
| { | |||||
| } catch (IOException e) { | |||||
| log("An error occurred processing file: '" + file.getAbsolutePath() + "': " + e.toString(), | log("An error occurred processing file: '" + file.getAbsolutePath() + "': " + e.toString(), | ||||
| Project.MSG_ERR); | Project.MSG_ERR); | ||||
| } | } | ||||
| } | |||||
| else if (file != null) | |||||
| { | |||||
| } else if (file != null) { | |||||
| log("The following file is missing: '" + file.getAbsolutePath() + "'", | log("The following file is missing: '" + file.getAbsolutePath() + "'", | ||||
| Project.MSG_ERR); | Project.MSG_ERR); | ||||
| } | } | ||||
| int sz = filesets.size(); | int sz = filesets.size(); | ||||
| for (int i=0;i<sz;i++) | |||||
| { | |||||
| FileSet fs = (FileSet)(filesets.elementAt(i)); | |||||
| for (int i = 0; i < sz; i++) { | |||||
| FileSet fs = (FileSet) (filesets.elementAt(i)); | |||||
| DirectoryScanner ds = fs.getDirectoryScanner(getProject()); | DirectoryScanner ds = fs.getDirectoryScanner(getProject()); | ||||
| String files[] = ds.getIncludedFiles(); | String files[] = ds.getIncludedFiles(); | ||||
| for (int j=0;j<files.length;j++) | |||||
| { | |||||
| for (int j = 0; j < files.length; j++) { | |||||
| File f = new File(files[j]); | File f = new File(files[j]); | ||||
| if (f.exists()) | |||||
| { | |||||
| try | |||||
| { | |||||
| if (f.exists()) { | |||||
| try { | |||||
| doReplace(f, options); | doReplace(f, options); | ||||
| } | |||||
| catch (Exception e) | |||||
| { | |||||
| } catch (Exception e) { | |||||
| log("An error occurred processing file: '" + f.getAbsolutePath() + "': " + e.toString(), | log("An error occurred processing file: '" + f.getAbsolutePath() + "': " + e.toString(), | ||||
| Project.MSG_ERR); | Project.MSG_ERR); | ||||
| } | } | ||||
| } | |||||
| else | |||||
| { | |||||
| } else { | |||||
| log("The following file is missing: '" + file.getAbsolutePath() + "'", | log("The following file is missing: '" + file.getAbsolutePath() + "'", | ||||
| Project.MSG_ERR); | Project.MSG_ERR); | ||||
| } | } | ||||
| @@ -151,17 +151,17 @@ public class Rpm extends Task { | |||||
| try { | try { | ||||
| outputstream = new PrintStream(new BufferedOutputStream(new FileOutputStream(output))); | outputstream = new PrintStream(new BufferedOutputStream(new FileOutputStream(output))); | ||||
| } catch (IOException e) { | } catch (IOException e) { | ||||
| throw new BuildException(e,location); | |||||
| throw new BuildException(e, location); | |||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| outputstream = new LogOutputStream(this,Project.MSG_INFO); | |||||
| outputstream = new LogOutputStream(this, Project.MSG_INFO); | |||||
| } | } | ||||
| if (error != null) { | if (error != null) { | ||||
| try { | try { | ||||
| errorstream = new PrintStream(new BufferedOutputStream(new FileOutputStream(error))); | errorstream = new PrintStream(new BufferedOutputStream(new FileOutputStream(error))); | ||||
| } catch (IOException e) { | } catch (IOException e) { | ||||
| throw new BuildException(e,location); | |||||
| throw new BuildException(e, location); | |||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| @@ -207,8 +207,8 @@ public class Rpm extends Task { | |||||
| } | } | ||||
| public void setSpecFile(String sf) { | public void setSpecFile(String sf) { | ||||
| if ( (sf == null) || (sf.trim().equals(""))) { | |||||
| throw new BuildException("You must specify a spec file",location); | |||||
| if ((sf == null) || (sf.trim().equals(""))) { | |||||
| throw new BuildException("You must specify a spec file", location); | |||||
| } | } | ||||
| this.specFile = sf; | this.specFile = sf; | ||||
| } | } | ||||
| @@ -78,13 +78,13 @@ public class Script extends Task { | |||||
| * Add a list of named objects to the list to be exported to the script | * Add a list of named objects to the list to be exported to the script | ||||
| */ | */ | ||||
| private void addBeans(Hashtable dictionary) { | private void addBeans(Hashtable dictionary) { | ||||
| for (Enumeration e=dictionary.keys(); e.hasMoreElements(); ) { | |||||
| String key = (String)e.nextElement(); | |||||
| for (Enumeration e = dictionary.keys(); e.hasMoreElements();) { | |||||
| String key = (String) e.nextElement(); | |||||
| boolean isValid = key.length()>0 && | |||||
| boolean isValid = key.length() > 0 && | |||||
| Character.isJavaIdentifierStart(key.charAt(0)); | Character.isJavaIdentifierStart(key.charAt(0)); | ||||
| for (int i=1; isValid && i<key.length(); i++) { | |||||
| for (int i = 1; isValid && i < key.length(); i++) { | |||||
| isValid = Character.isJavaIdentifierPart(key.charAt(i)); | isValid = Character.isJavaIdentifierPart(key.charAt(i)); | ||||
| } | } | ||||
| @@ -113,7 +113,7 @@ public class Script extends Task { | |||||
| BSFManager manager = new BSFManager (); | BSFManager manager = new BSFManager (); | ||||
| for (Enumeration e = beans.keys() ; e.hasMoreElements() ;) { | for (Enumeration e = beans.keys() ; e.hasMoreElements() ;) { | ||||
| String key = (String)e.nextElement(); | |||||
| String key = (String) e.nextElement(); | |||||
| Object value = beans.get(key); | Object value = beans.get(key); | ||||
| manager.declareBean(key, value, value.getClass()); | manager.declareBean(key, value, value.getClass()); | ||||
| } | } | ||||
| @@ -154,7 +154,7 @@ public class Script extends Task { | |||||
| throw new BuildException("file " + fileName + " not found."); | throw new BuildException("file " + fileName + " not found."); | ||||
| } | } | ||||
| int count = (int)file.length(); | |||||
| int count = (int) file.length(); | |||||
| byte data[] = new byte[count]; | byte data[] = new byte[count]; | ||||
| try { | try { | ||||
| @@ -57,65 +57,70 @@ import java.io.File; | |||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.taskdefs.Java; | import org.apache.tools.ant.taskdefs.Java; | ||||
| /** | /** | ||||
| * Basic task for apache stylebook. | * Basic task for apache stylebook. | ||||
| * | * | ||||
| * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> | * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> | ||||
| * @author <a href="mailto:marcus.boerger@post.rwth-aachen.de">Marcus Börger</a> | |||||
| * @author <a href="mailto:marcus.boerger@post.rwth-aachen.de">Marcus | |||||
| * Börger</a> | |||||
| */ | */ | ||||
| public class StyleBook | public class StyleBook | ||||
| extends Java | |||||
| { | |||||
| protected File m_targetDirectory; | |||||
| protected File m_skinDirectory; | |||||
| protected String m_loaderConfig; | |||||
| protected File m_book; | |||||
| extends Java { | |||||
| protected File m_targetDirectory; | |||||
| protected File m_skinDirectory; | |||||
| protected String m_loaderConfig; | |||||
| protected File m_book; | |||||
| public StyleBook() { | public StyleBook() { | ||||
| setClassname( "org.apache.stylebook.StyleBook" ); | |||||
| setFork( true ); | |||||
| setFailonerror( true ); | |||||
| setClassname("org.apache.stylebook.StyleBook"); | |||||
| setFork(true); | |||||
| setFailonerror(true); | |||||
| } | } | ||||
| public void setBook( final File book ) { | |||||
| public void setBook(final File book) { | |||||
| m_book = book; | m_book = book; | ||||
| } | } | ||||
| public void setSkinDirectory( final File skinDirectory ) { | |||||
| public void setSkinDirectory(final File skinDirectory) { | |||||
| m_skinDirectory = skinDirectory; | m_skinDirectory = skinDirectory; | ||||
| } | } | ||||
| public void setTargetDirectory( final File targetDirectory ) { | |||||
| public void setTargetDirectory(final File targetDirectory) { | |||||
| m_targetDirectory = targetDirectory; | m_targetDirectory = targetDirectory; | ||||
| } | } | ||||
| public void setLoaderConfig( final String loaderConfig ) { | |||||
| public void setLoaderConfig(final String loaderConfig) { | |||||
| m_loaderConfig = loaderConfig; | m_loaderConfig = loaderConfig; | ||||
| } | } | ||||
| public void execute() | public void execute() | ||||
| throws BuildException { | |||||
| throws BuildException { | |||||
| if( null == m_targetDirectory ) { | |||||
| throw new BuildException( "TargetDirectory attribute not set." ); | |||||
| if (null == m_targetDirectory) { | |||||
| throw new BuildException("TargetDirectory attribute not set."); | |||||
| } | } | ||||
| if( null == m_skinDirectory ) { | |||||
| throw new BuildException( "SkinDirectory attribute not set." ); | |||||
| if (null == m_skinDirectory) { | |||||
| throw new BuildException("SkinDirectory attribute not set."); | |||||
| } | } | ||||
| if( null == m_book ) { | |||||
| throw new BuildException( "book attribute not set." ); | |||||
| if (null == m_book) { | |||||
| throw new BuildException("book attribute not set."); | |||||
| } | } | ||||
| createArg().setValue( "targetDirectory=" + m_targetDirectory ); | |||||
| createArg().setValue( m_book.toString() ); | |||||
| createArg().setValue( m_skinDirectory.toString() ); | |||||
| if( null != m_loaderConfig ) { | |||||
| createArg().setValue( "loaderConfig=" + m_loaderConfig ); | |||||
| createArg().setValue("targetDirectory=" + m_targetDirectory); | |||||
| createArg().setValue(m_book.toString()); | |||||
| createArg().setValue(m_skinDirectory.toString()); | |||||
| if (null != m_loaderConfig) { | |||||
| createArg().setValue("loaderConfig=" + m_loaderConfig); | |||||
| } | } | ||||
| super.execute(); | super.execute(); | ||||
| @@ -52,70 +52,79 @@ | |||||
| * <http://www.apache.org/>. | * <http://www.apache.org/>. | ||||
| */ | */ | ||||
| package org.apache.tools.ant.taskdefs.optional; | package org.apache.tools.ant.taskdefs.optional; | ||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.taskdefs.Java; | |||||
| import java.util.Vector; | |||||
| /** | |||||
| * | |||||
| * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> | |||||
| */ | |||||
| public class Test | |||||
| extends Java { | |||||
| protected Vector m_tests = new Vector(); | |||||
| import org.apache.tools.ant.BuildException; | |||||
| import org.apache.tools.ant.taskdefs.Java; | |||||
| import java.util.Vector; | |||||
| /** | |||||
| * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> | |||||
| */ | |||||
| public class Test extends Java { | |||||
| protected Vector m_tests = new Vector(); | |||||
| protected final static class TestletEntry { | protected final static class TestletEntry { | ||||
| protected String m_testname = ""; | protected String m_testname = ""; | ||||
| public void addText( final String testname ) { | |||||
| public void addText(final String testname) { | |||||
| m_testname += testname; | m_testname += testname; | ||||
| } | } | ||||
| public String toString() { | public String toString() { | ||||
| return m_testname; | return m_testname; | ||||
| } | } | ||||
| } | } | ||||
| public Test() { | public Test() { | ||||
| setClassname( "org.apache.testlet.engine.TextTestEngine" ); | |||||
| setClassname("org.apache.testlet.engine.TextTestEngine"); | |||||
| } | } | ||||
| public TestletEntry createTestlet() { | public TestletEntry createTestlet() { | ||||
| final TestletEntry entry = new TestletEntry(); | final TestletEntry entry = new TestletEntry(); | ||||
| m_tests.addElement( entry ); | |||||
| m_tests.addElement(entry); | |||||
| return entry; | return entry; | ||||
| } | } | ||||
| public void setShowSuccess( final boolean showSuccess ) { | |||||
| createArg().setValue( "-s=" + showSuccess ); | |||||
| } | |||||
| public void setShowBanner( final String showBanner ) { | |||||
| createArg().setValue( "-b=" + showBanner ); | |||||
| } | |||||
| public void setShowTrace( final boolean showTrace ) { | |||||
| createArg().setValue( "-t=" + showTrace ); | |||||
| } | |||||
| public void setForceShowTrace( final boolean forceShowTrace ) { | |||||
| createArg().setValue( "-f=" + forceShowTrace ); | |||||
| } | |||||
| public void execute() | |||||
| throws BuildException { | |||||
| public void setShowSuccess(final boolean showSuccess) { | |||||
| createArg().setValue("-s=" + showSuccess); | |||||
| } | |||||
| public void setShowBanner(final String showBanner) { | |||||
| createArg().setValue("-b=" + showBanner); | |||||
| } | |||||
| public void setShowTrace(final boolean showTrace) { | |||||
| createArg().setValue("-t=" + showTrace); | |||||
| } | |||||
| public void setForceShowTrace(final boolean forceShowTrace) { | |||||
| createArg().setValue("-f=" + forceShowTrace); | |||||
| } | |||||
| public void execute() | |||||
| throws BuildException { | |||||
| final int size = m_tests.size(); | final int size = m_tests.size(); | ||||
| for( int i = 0; i < size; i ++ ) { | |||||
| createArg().setValue( m_tests.elementAt( i ).toString() ); | |||||
| for (int i = 0; i < size; i++) { | |||||
| createArg().setValue(m_tests.elementAt(i).toString()); | |||||
| } | } | ||||
| super.execute(); | super.execute(); | ||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -89,13 +89,13 @@ public class XslpLiaison implements XSLTLiaison { | |||||
| XSLReader xslReader = new XSLReader(); | XSLReader xslReader = new XSLReader(); | ||||
| // a file:/// + getAbsolutePath() does not work here | // a file:/// + getAbsolutePath() does not work here | ||||
| // it is really the pathname | // it is really the pathname | ||||
| xslSheet = xslReader.read( fileName.getAbsolutePath() ); | |||||
| xslSheet = xslReader.read(fileName.getAbsolutePath()); | |||||
| } | } | ||||
| public void transform(File infile, File outfile) throws Exception { | public void transform(File infile, File outfile) throws Exception { | ||||
| FileOutputStream fos = new FileOutputStream(outfile); | FileOutputStream fos = new FileOutputStream(outfile); | ||||
| // XSLP does not support encoding...we're in hot water. | // XSLP does not support encoding...we're in hot water. | ||||
| OutputStreamWriter out = new OutputStreamWriter(fos,"UTF8"); | |||||
| OutputStreamWriter out = new OutputStreamWriter(fos, "UTF8"); | |||||
| processor.process(infile.getAbsolutePath(), xslSheet, out); | processor.process(infile.getAbsolutePath(), xslSheet, out); | ||||
| } | } | ||||
| @@ -143,7 +143,7 @@ public class CCCheckin extends ClearCase { | |||||
| checkOptions(commandLine); | checkOptions(commandLine); | ||||
| result = run(commandLine); | result = run(commandLine); | ||||
| if ( result != 0 ) { | |||||
| if (result != 0) { | |||||
| String msg = "Failed executing: " + commandLine.toString(); | String msg = "Failed executing: " + commandLine.toString(); | ||||
| throw new BuildException(msg, location); | throw new BuildException(msg, location); | ||||
| } | } | ||||
| @@ -155,7 +155,7 @@ public class CCCheckout extends ClearCase { | |||||
| checkOptions(commandLine); | checkOptions(commandLine); | ||||
| result = run(commandLine); | result = run(commandLine); | ||||
| if ( result != 0 ) { | |||||
| if (result != 0) { | |||||
| String msg = "Failed executing: " + commandLine.toString(); | String msg = "Failed executing: " + commandLine.toString(); | ||||
| throw new BuildException(msg, location); | throw new BuildException(msg, location); | ||||
| } | } | ||||
| @@ -113,7 +113,7 @@ public class CCUnCheckout extends ClearCase { | |||||
| checkOptions(commandLine); | checkOptions(commandLine); | ||||
| result = run(commandLine); | result = run(commandLine); | ||||
| if ( result != 0 ) { | |||||
| if (result != 0) { | |||||
| String msg = "Failed executing: " + commandLine.toString(); | String msg = "Failed executing: " + commandLine.toString(); | ||||
| throw new BuildException(msg, location); | throw new BuildException(msg, location); | ||||
| } | } | ||||
| @@ -148,7 +148,7 @@ public class CCUpdate extends ClearCase { | |||||
| System.out.println(commandLine.toString()); | System.out.println(commandLine.toString()); | ||||
| result = run(commandLine); | result = run(commandLine); | ||||
| if ( result != 0 ) { | |||||
| if (result != 0) { | |||||
| String msg = "Failed executing: " + commandLine.toString(); | String msg = "Failed executing: " + commandLine.toString(); | ||||
| throw new BuildException(msg, location); | throw new BuildException(msg, location); | ||||
| } | } | ||||
| @@ -97,7 +97,7 @@ public abstract class ClearCase extends Task { | |||||
| */ | */ | ||||
| protected final String getClearToolCommand() { | protected final String getClearToolCommand() { | ||||
| String toReturn = m_ClearToolDir; | String toReturn = m_ClearToolDir; | ||||
| if ( !toReturn.equals("") && !toReturn.endsWith("/") ) { | |||||
| if (!toReturn.equals("") && !toReturn.endsWith("/")) { | |||||
| toReturn += "/"; | toReturn += "/"; | ||||
| } | } | ||||
| @@ -88,8 +88,8 @@ public class AntAnalyzer extends AbstractAnalyzer { | |||||
| Hashtable dependencies = new Hashtable(); | Hashtable dependencies = new Hashtable(); | ||||
| Hashtable containers = new Hashtable(); | Hashtable containers = new Hashtable(); | ||||
| Hashtable toAnalyze = new Hashtable(); | Hashtable toAnalyze = new Hashtable(); | ||||
| for (Enumeration e = getRootClasses(); e.hasMoreElements(); ) { | |||||
| String classname = (String)e.nextElement(); | |||||
| for (Enumeration e = getRootClasses(); e.hasMoreElements();) { | |||||
| String classname = (String) e.nextElement(); | |||||
| toAnalyze.put(classname, classname); | toAnalyze.put(classname, classname); | ||||
| } | } | ||||
| @@ -97,8 +97,8 @@ public class AntAnalyzer extends AbstractAnalyzer { | |||||
| int maxCount = isClosureRequired() ? MAX_LOOPS : 2; | int maxCount = isClosureRequired() ? MAX_LOOPS : 2; | ||||
| while (toAnalyze.size() != 0 && count++ < maxCount) { | while (toAnalyze.size() != 0 && count++ < maxCount) { | ||||
| Hashtable analyzedDeps = new Hashtable(); | Hashtable analyzedDeps = new Hashtable(); | ||||
| for (Enumeration e = toAnalyze.keys(); e.hasMoreElements(); ) { | |||||
| String classname = (String)e.nextElement(); | |||||
| for (Enumeration e = toAnalyze.keys(); e.hasMoreElements();) { | |||||
| String classname = (String) e.nextElement(); | |||||
| dependencies.put(classname, classname); | dependencies.put(classname, classname); | ||||
| try { | try { | ||||
| File container = getClassContainer(classname); | File container = getClassContainer(classname); | ||||
| @@ -125,7 +125,7 @@ public class AntAnalyzer extends AbstractAnalyzer { | |||||
| Vector dependencyList = classFile.getClassRefs(); | Vector dependencyList = classFile.getClassRefs(); | ||||
| Enumeration depEnum = dependencyList.elements(); | Enumeration depEnum = dependencyList.elements(); | ||||
| while (depEnum.hasMoreElements()) { | while (depEnum.hasMoreElements()) { | ||||
| String dependency = (String)depEnum.nextElement(); | |||||
| String dependency = (String) depEnum.nextElement(); | |||||
| analyzedDeps.put(dependency, dependency); | analyzedDeps.put(dependency, dependency); | ||||
| } | } | ||||
| } finally { | } finally { | ||||
| @@ -146,7 +146,7 @@ public class AntAnalyzer extends AbstractAnalyzer { | |||||
| // now recover all the dependencies collected and add to the list. | // now recover all the dependencies collected and add to the list. | ||||
| Enumeration depsEnum = analyzedDeps.elements(); | Enumeration depsEnum = analyzedDeps.elements(); | ||||
| while (depsEnum.hasMoreElements()) { | while (depsEnum.hasMoreElements()) { | ||||
| String className = (String)depsEnum.nextElement(); | |||||
| String className = (String) depsEnum.nextElement(); | |||||
| if (!dependencies.containsKey(className)) { | if (!dependencies.containsKey(className)) { | ||||
| toAnalyze.put(className, className); | toAnalyze.put(className, className); | ||||
| } | } | ||||
| @@ -154,13 +154,13 @@ public class AntAnalyzer extends AbstractAnalyzer { | |||||
| } | } | ||||
| files.removeAllElements(); | files.removeAllElements(); | ||||
| for (Enumeration e = containers.keys(); e.hasMoreElements(); ) { | |||||
| files.addElement((File)e.nextElement()); | |||||
| for (Enumeration e = containers.keys(); e.hasMoreElements();) { | |||||
| files.addElement((File) e.nextElement()); | |||||
| } | } | ||||
| classes.removeAllElements(); | classes.removeAllElements(); | ||||
| for (Enumeration e = dependencies.keys(); e.hasMoreElements(); ) { | |||||
| classes.addElement((String)e.nextElement()); | |||||
| for (Enumeration e = dependencies.keys(); e.hasMoreElements();) { | |||||
| classes.addElement((String) e.nextElement()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -114,7 +114,7 @@ public class ClassFile { | |||||
| int thisClassIndex = classStream.readUnsignedShort(); | int thisClassIndex = classStream.readUnsignedShort(); | ||||
| int superClassIndex = classStream.readUnsignedShort(); | int superClassIndex = classStream.readUnsignedShort(); | ||||
| ClassCPInfo classInfo | ClassCPInfo classInfo | ||||
| = (ClassCPInfo)constantPool.getEntry(thisClassIndex); | |||||
| = (ClassCPInfo) constantPool.getEntry(thisClassIndex); | |||||
| className = classInfo.getClassName(); | className = classInfo.getClassName(); | ||||
| } | } | ||||
| @@ -133,7 +133,7 @@ public class ClassFile { | |||||
| if (entry != null | if (entry != null | ||||
| && entry.getTag() == ConstantPoolEntry.CONSTANT_CLASS) { | && entry.getTag() == ConstantPoolEntry.CONSTANT_CLASS) { | ||||
| ClassCPInfo classEntry = (ClassCPInfo)entry; | |||||
| ClassCPInfo classEntry = (ClassCPInfo) entry; | |||||
| if (!classEntry.getClassName().equals(className)) { | if (!classEntry.getClassName().equals(className)) { | ||||
| classRefs.addElement(ClassFileUtils.convertSlashName(classEntry.getClassName())); | classRefs.addElement(ClassFileUtils.convertSlashName(classEntry.getClassName())); | ||||
| @@ -246,12 +246,12 @@ public class Depend extends MatchingTask { | |||||
| pw = new PrintWriter(new FileWriter(depFile)); | pw = new PrintWriter(new FileWriter(depFile)); | ||||
| Enumeration e = dependencyMap.keys(); | Enumeration e = dependencyMap.keys(); | ||||
| while (e.hasMoreElements()) { | while (e.hasMoreElements()) { | ||||
| String className = (String)e.nextElement(); | |||||
| String className = (String) e.nextElement(); | |||||
| pw.println(CLASSNAME_PREPEND + className); | pw.println(CLASSNAME_PREPEND + className); | ||||
| Vector dependencyList | Vector dependencyList | ||||
| = (Vector)dependencyMap.get(className); | |||||
| = (Vector) dependencyMap.get(className); | |||||
| int size = dependencyList.size(); | int size = dependencyList.size(); | ||||
| for (int x = 0; x < size; x++) { | for (int x = 0; x < size; x++) { | ||||
| pw.println(dependencyList.elementAt(x)); | pw.println(dependencyList.elementAt(x)); | ||||
| @@ -339,7 +339,7 @@ public class Depend extends MatchingTask { | |||||
| } | } | ||||
| Enumeration classfileEnum = getClassFiles(destPath).elements(); | Enumeration classfileEnum = getClassFiles(destPath).elements(); | ||||
| while (classfileEnum.hasMoreElements()) { | while (classfileEnum.hasMoreElements()) { | ||||
| ClassFileInfo info = (ClassFileInfo)classfileEnum.nextElement(); | |||||
| ClassFileInfo info = (ClassFileInfo) classfileEnum.nextElement(); | |||||
| log("Adding class info for " + info.className, Project.MSG_DEBUG); | log("Adding class info for " + info.className, Project.MSG_DEBUG); | ||||
| classFileInfoMap.put(info.className, info); | classFileInfoMap.put(info.className, info); | ||||
| @@ -352,7 +352,7 @@ public class Depend extends MatchingTask { | |||||
| && cacheLastModified > info.absoluteFile.lastModified()) { | && cacheLastModified > info.absoluteFile.lastModified()) { | ||||
| // depFile exists and is newer than the class file | // depFile exists and is newer than the class file | ||||
| // need to get dependency list from the map. | // need to get dependency list from the map. | ||||
| dependencyList = (Vector)dependencyMap.get(info.className); | |||||
| dependencyList = (Vector) dependencyMap.get(info.className); | |||||
| } | } | ||||
| } | } | ||||
| @@ -377,10 +377,10 @@ public class Depend extends MatchingTask { | |||||
| // one of those, add this class into their affected classes list | // one of those, add this class into their affected classes list | ||||
| Enumeration depEnum = dependencyList.elements(); | Enumeration depEnum = dependencyList.elements(); | ||||
| while (depEnum.hasMoreElements()) { | while (depEnum.hasMoreElements()) { | ||||
| String dependentClass = (String)depEnum.nextElement(); | |||||
| String dependentClass = (String) depEnum.nextElement(); | |||||
| Hashtable affectedClasses | Hashtable affectedClasses | ||||
| = (Hashtable)affectedClassMap.get(dependentClass); | |||||
| = (Hashtable) affectedClassMap.get(dependentClass); | |||||
| if (affectedClasses == null) { | if (affectedClasses == null) { | ||||
| affectedClasses = new Hashtable(); | affectedClasses = new Hashtable(); | ||||
| affectedClassMap.put(dependentClass, affectedClasses); | affectedClassMap.put(dependentClass, affectedClasses); | ||||
| @@ -401,13 +401,13 @@ public class Depend extends MatchingTask { | |||||
| Hashtable classpathFileCache = new Hashtable(); | Hashtable classpathFileCache = new Hashtable(); | ||||
| Object nullFileMarker = new Object(); | Object nullFileMarker = new Object(); | ||||
| for (Enumeration e = dependencyMap.keys(); e.hasMoreElements();) { | for (Enumeration e = dependencyMap.keys(); e.hasMoreElements();) { | ||||
| String className = (String)e.nextElement(); | |||||
| Vector dependencyList = (Vector)dependencyMap.get(className); | |||||
| String className = (String) e.nextElement(); | |||||
| Vector dependencyList = (Vector) dependencyMap.get(className); | |||||
| Hashtable dependencies = new Hashtable(); | Hashtable dependencies = new Hashtable(); | ||||
| classpathDependencies.put(className, dependencies); | classpathDependencies.put(className, dependencies); | ||||
| Enumeration e2 = dependencyList.elements(); | Enumeration e2 = dependencyList.elements(); | ||||
| while (e2.hasMoreElements()) { | while (e2.hasMoreElements()) { | ||||
| String dependency = (String)e2.nextElement(); | |||||
| String dependency = (String) e2.nextElement(); | |||||
| Object classpathFileObject | Object classpathFileObject | ||||
| = classpathFileCache.get(dependency); | = classpathFileCache.get(dependency); | ||||
| if (classpathFileObject == null) { | if (classpathFileObject == null) { | ||||
| @@ -437,7 +437,7 @@ public class Depend extends MatchingTask { | |||||
| } | } | ||||
| if (classpathFileObject != null && classpathFileObject != nullFileMarker) { | if (classpathFileObject != null && classpathFileObject != nullFileMarker) { | ||||
| // we need to add this jar to the list for this class. | // we need to add this jar to the list for this class. | ||||
| File jarFile = (File)classpathFileObject; | |||||
| File jarFile = (File) classpathFileObject; | |||||
| dependencies.put(jarFile, jarFile); | dependencies.put(jarFile, jarFile); | ||||
| } | } | ||||
| } | } | ||||
| @@ -459,10 +459,10 @@ public class Depend extends MatchingTask { | |||||
| private int deleteAllAffectedFiles() { | private int deleteAllAffectedFiles() { | ||||
| int count = 0; | int count = 0; | ||||
| for (Enumeration e = outOfDateClasses.elements(); e.hasMoreElements();) { | for (Enumeration e = outOfDateClasses.elements(); e.hasMoreElements();) { | ||||
| String className = (String)e.nextElement(); | |||||
| String className = (String) e.nextElement(); | |||||
| count += deleteAffectedFiles(className); | count += deleteAffectedFiles(className); | ||||
| ClassFileInfo classInfo | ClassFileInfo classInfo | ||||
| = (ClassFileInfo)classFileInfoMap.get(className); | |||||
| = (ClassFileInfo) classFileInfoMap.get(className); | |||||
| if (classInfo != null && classInfo.absoluteFile.exists()) { | if (classInfo != null && classInfo.absoluteFile.exists()) { | ||||
| classInfo.absoluteFile.delete(); | classInfo.absoluteFile.delete(); | ||||
| count++; | count++; | ||||
| @@ -481,14 +481,14 @@ public class Depend extends MatchingTask { | |||||
| private int deleteAffectedFiles(String className) { | private int deleteAffectedFiles(String className) { | ||||
| int count = 0; | int count = 0; | ||||
| Hashtable affectedClasses = (Hashtable)affectedClassMap.get(className); | |||||
| Hashtable affectedClasses = (Hashtable) affectedClassMap.get(className); | |||||
| if (affectedClasses == null) { | if (affectedClasses == null) { | ||||
| return count; | return count; | ||||
| } | } | ||||
| for (Enumeration e = affectedClasses.keys(); e.hasMoreElements();) { | for (Enumeration e = affectedClasses.keys(); e.hasMoreElements();) { | ||||
| String affectedClass = (String)e.nextElement(); | |||||
| String affectedClass = (String) e.nextElement(); | |||||
| ClassFileInfo affectedClassInfo | ClassFileInfo affectedClassInfo | ||||
| = (ClassFileInfo)affectedClasses.get(affectedClass); | |||||
| = (ClassFileInfo) affectedClasses.get(affectedClass); | |||||
| if (!affectedClassInfo.absoluteFile.exists()) { | if (!affectedClassInfo.absoluteFile.exists()) { | ||||
| continue; | continue; | ||||
| @@ -526,7 +526,7 @@ public class Depend extends MatchingTask { | |||||
| log("Top level class = " + topLevelClassName, | log("Top level class = " + topLevelClassName, | ||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| ClassFileInfo topLevelClassInfo | ClassFileInfo topLevelClassInfo | ||||
| = (ClassFileInfo)classFileInfoMap.get(topLevelClassName); | |||||
| = (ClassFileInfo) classFileInfoMap.get(topLevelClassName); | |||||
| if (topLevelClassInfo != null && | if (topLevelClassInfo != null && | ||||
| topLevelClassInfo.absoluteFile.exists()) { | topLevelClassInfo.absoluteFile.exists()) { | ||||
| log("Deleting file " | log("Deleting file " | ||||
| @@ -553,15 +553,15 @@ public class Depend extends MatchingTask { | |||||
| Enumeration classEnum = affectedClassMap.keys(); | Enumeration classEnum = affectedClassMap.keys(); | ||||
| while (classEnum.hasMoreElements()) { | while (classEnum.hasMoreElements()) { | ||||
| String className = (String)classEnum.nextElement(); | |||||
| String className = (String) classEnum.nextElement(); | |||||
| log(" Class " + className + " affects:", Project.MSG_DEBUG); | log(" Class " + className + " affects:", Project.MSG_DEBUG); | ||||
| Hashtable affectedClasses | Hashtable affectedClasses | ||||
| = (Hashtable)affectedClassMap.get(className); | |||||
| = (Hashtable) affectedClassMap.get(className); | |||||
| Enumeration affectedClassEnum = affectedClasses.keys(); | Enumeration affectedClassEnum = affectedClasses.keys(); | ||||
| while (affectedClassEnum.hasMoreElements()) { | while (affectedClassEnum.hasMoreElements()) { | ||||
| String affectedClass = (String)affectedClassEnum.nextElement(); | |||||
| String affectedClass = (String) affectedClassEnum.nextElement(); | |||||
| ClassFileInfo info | ClassFileInfo info | ||||
| = (ClassFileInfo)affectedClasses.get(affectedClass); | |||||
| = (ClassFileInfo) affectedClasses.get(affectedClass); | |||||
| log(" " + affectedClass + " in " | log(" " + affectedClass + " in " | ||||
| + info.absoluteFile.getPath(), Project.MSG_DEBUG); | + info.absoluteFile.getPath(), Project.MSG_DEBUG); | ||||
| } | } | ||||
| @@ -572,14 +572,14 @@ public class Depend extends MatchingTask { | |||||
| Enumeration classpathEnum = classpathDependencies.keys(); | Enumeration classpathEnum = classpathDependencies.keys(); | ||||
| while (classpathEnum.hasMoreElements()) { | while (classpathEnum.hasMoreElements()) { | ||||
| String className = (String)classpathEnum.nextElement(); | |||||
| String className = (String) classpathEnum.nextElement(); | |||||
| log(" Class " + className + " depends on:", Project.MSG_DEBUG); | log(" Class " + className + " depends on:", Project.MSG_DEBUG); | ||||
| Hashtable dependencies | Hashtable dependencies | ||||
| = (Hashtable)classpathDependencies.get(className); | |||||
| = (Hashtable) classpathDependencies.get(className); | |||||
| Enumeration classpathFileEnum = dependencies.elements(); | Enumeration classpathFileEnum = dependencies.elements(); | ||||
| while (classpathFileEnum.hasMoreElements()) { | while (classpathFileEnum.hasMoreElements()) { | ||||
| File classpathFile = (File)classpathFileEnum.nextElement(); | |||||
| File classpathFile = (File) classpathFileEnum.nextElement(); | |||||
| log(" " + classpathFile.getPath(), Project.MSG_DEBUG); | log(" " + classpathFile.getPath(), Project.MSG_DEBUG); | ||||
| } | } | ||||
| } | } | ||||
| @@ -589,7 +589,7 @@ public class Depend extends MatchingTask { | |||||
| private void determineOutOfDateClasses() { | private void determineOutOfDateClasses() { | ||||
| outOfDateClasses = new Hashtable(); | outOfDateClasses = new Hashtable(); | ||||
| for (int i = 0; i < srcPathList.length; i++) { | for (int i = 0; i < srcPathList.length; i++) { | ||||
| File srcDir = (File)project.resolveFile(srcPathList[i]); | |||||
| File srcDir = (File) project.resolveFile(srcPathList[i]); | |||||
| if (srcDir.exists()) { | if (srcDir.exists()) { | ||||
| DirectoryScanner ds = this.getDirectoryScanner(srcDir); | DirectoryScanner ds = this.getDirectoryScanner(srcDir); | ||||
| String[] files = ds.getIncludedFiles(); | String[] files = ds.getIncludedFiles(); | ||||
| @@ -604,18 +604,20 @@ public class Depend extends MatchingTask { | |||||
| Enumeration classpathDepsEnum = classpathDependencies.keys(); | Enumeration classpathDepsEnum = classpathDependencies.keys(); | ||||
| while (classpathDepsEnum.hasMoreElements()) { | while (classpathDepsEnum.hasMoreElements()) { | ||||
| String className = (String)classpathDepsEnum.nextElement(); | |||||
| String className = (String) classpathDepsEnum.nextElement(); | |||||
| if (outOfDateClasses.containsKey(className)) { | if (outOfDateClasses.containsKey(className)) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| ClassFileInfo info = (ClassFileInfo)classFileInfoMap.get(className); | |||||
| ClassFileInfo info | |||||
| = (ClassFileInfo) classFileInfoMap.get(className); | |||||
| // if we have no info about the class - it may have been deleted already and we | // if we have no info about the class - it may have been deleted already and we | ||||
| // are using cached info. | // are using cached info. | ||||
| if (info != null) { | if (info != null) { | ||||
| Hashtable dependencies = (Hashtable)classpathDependencies.get(className); | |||||
| for (Enumeration e2 = dependencies.elements(); e2.hasMoreElements(); ) { | |||||
| File classpathFile = (File)e2.nextElement(); | |||||
| Hashtable dependencies | |||||
| = (Hashtable) classpathDependencies.get(className); | |||||
| for (Enumeration e2 = dependencies.elements(); e2.hasMoreElements();) { | |||||
| File classpathFile = (File) e2.nextElement(); | |||||
| if (classpathFile.lastModified() | if (classpathFile.lastModified() | ||||
| > info.absoluteFile.lastModified()) { | > info.absoluteFile.lastModified()) { | ||||
| log("Class " + className + | log("Class " + className + | ||||
| @@ -692,10 +694,12 @@ public class Depend extends MatchingTask { | |||||
| File srcFile = new File(srcDir, files[i]); | File srcFile = new File(srcDir, files[i]); | ||||
| if (files[i].endsWith(".java")) { | if (files[i].endsWith(".java")) { | ||||
| String filePath = srcFile.getPath(); | String filePath = srcFile.getPath(); | ||||
| String className = filePath.substring(srcDir.getPath().length() + 1, | |||||
| filePath.length() - ".java".length()); | |||||
| String className | |||||
| = filePath.substring(srcDir.getPath().length() + 1, | |||||
| filePath.length() - ".java".length()); | |||||
| className = ClassFileUtils.convertSlashName(className); | className = ClassFileUtils.convertSlashName(className); | ||||
| ClassFileInfo info = (ClassFileInfo)classFileInfoMap.get(className); | |||||
| ClassFileInfo info | |||||
| = (ClassFileInfo) classFileInfoMap.get(className); | |||||
| if (info == null) { | if (info == null) { | ||||
| // there was no class file. add this class to the list | // there was no class file. add this class to the list | ||||
| outOfDateClasses.put(className, className); | outOfDateClasses.put(className, className); | ||||
| @@ -165,7 +165,7 @@ public class DirectoryIterator implements ClassFileIterator { | |||||
| try { | try { | ||||
| while (nextElement == null) { | while (nextElement == null) { | ||||
| if (currentEnum.hasMoreElements()) { | if (currentEnum.hasMoreElements()) { | ||||
| File element = (File)currentEnum.nextElement(); | |||||
| File element = (File) currentEnum.nextElement(); | |||||
| if (element.isDirectory()) { | if (element.isDirectory()) { | ||||
| @@ -198,7 +198,7 @@ public class DirectoryIterator implements ClassFileIterator { | |||||
| if (enumStack.empty()) { | if (enumStack.empty()) { | ||||
| break; | break; | ||||
| } else { | } else { | ||||
| currentEnum = (Enumeration)enumStack.pop(); | |||||
| currentEnum = (Enumeration) enumStack.pop(); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -112,7 +112,7 @@ public class ClassCPInfo extends ConstantPoolEntry { | |||||
| * class. | * class. | ||||
| */ | */ | ||||
| public void resolve(ConstantPool constantPool) { | public void resolve(ConstantPool constantPool) { | ||||
| className = ((Utf8CPInfo)constantPool.getEntry(index)).getValue(); | |||||
| className = ((Utf8CPInfo) constantPool.getEntry(index)).getValue(); | |||||
| super.resolve(constantPool); | super.resolve(constantPool); | ||||
| } | } | ||||
| @@ -100,7 +100,7 @@ public class ConstantPool { | |||||
| public void read(DataInputStream classStream) throws IOException { | public void read(DataInputStream classStream) throws IOException { | ||||
| int numEntries = classStream.readUnsignedShort(); | int numEntries = classStream.readUnsignedShort(); | ||||
| for (int i = 1; i < numEntries; ) { | |||||
| for (int i = 1; i < numEntries;) { | |||||
| ConstantPoolEntry nextEntry | ConstantPoolEntry nextEntry | ||||
| = ConstantPoolEntry.readEntry(classStream); | = ConstantPoolEntry.readEntry(classStream); | ||||
| @@ -139,7 +139,7 @@ public class ConstantPool { | |||||
| } | } | ||||
| if (entry instanceof Utf8CPInfo) { | if (entry instanceof Utf8CPInfo) { | ||||
| Utf8CPInfo utf8Info = (Utf8CPInfo)entry; | |||||
| Utf8CPInfo utf8Info = (Utf8CPInfo) entry; | |||||
| utf8Indexes.put(utf8Info.getValue(), new Integer(index)); | utf8Indexes.put(utf8Info.getValue(), new Integer(index)); | ||||
| } | } | ||||
| @@ -153,8 +153,8 @@ public class ConstantPool { | |||||
| * into the actual data for that entry. | * into the actual data for that entry. | ||||
| */ | */ | ||||
| public void resolve() { | public void resolve() { | ||||
| for (Enumeration i = entries.elements(); i.hasMoreElements(); ) { | |||||
| ConstantPoolEntry poolInfo = (ConstantPoolEntry)i.nextElement(); | |||||
| for (Enumeration i = entries.elements(); i.hasMoreElements();) { | |||||
| ConstantPoolEntry poolInfo = (ConstantPoolEntry) i.nextElement(); | |||||
| if (poolInfo != null && !poolInfo.isResolved()) { | if (poolInfo != null && !poolInfo.isResolved()) { | ||||
| poolInfo.resolve(this); | poolInfo.resolve(this); | ||||
| @@ -170,7 +170,7 @@ public class ConstantPool { | |||||
| * @return the constant pool entry at that index. | * @return the constant pool entry at that index. | ||||
| */ | */ | ||||
| public ConstantPoolEntry getEntry(int index) { | public ConstantPoolEntry getEntry(int index) { | ||||
| return (ConstantPoolEntry)entries.elementAt(index); | |||||
| return (ConstantPoolEntry) entries.elementAt(index); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -182,7 +182,7 @@ public class ConstantPool { | |||||
| */ | */ | ||||
| public int getUTF8Entry(String value) { | public int getUTF8Entry(String value) { | ||||
| int index = -1; | int index = -1; | ||||
| Integer indexInteger = (Integer)utf8Indexes.get(value); | |||||
| Integer indexInteger = (Integer) utf8Indexes.get(value); | |||||
| if (indexInteger != null) { | if (indexInteger != null) { | ||||
| index = indexInteger.intValue(); | index = indexInteger.intValue(); | ||||
| @@ -206,7 +206,7 @@ public class ConstantPool { | |||||
| Object element = entries.elementAt(i); | Object element = entries.elementAt(i); | ||||
| if (element instanceof ClassCPInfo) { | if (element instanceof ClassCPInfo) { | ||||
| ClassCPInfo classinfo = (ClassCPInfo)element; | |||||
| ClassCPInfo classinfo = (ClassCPInfo) element; | |||||
| if (classinfo.getClassName().equals(className)) { | if (classinfo.getClassName().equals(className)) { | ||||
| index = i; | index = i; | ||||
| @@ -232,7 +232,7 @@ public class ConstantPool { | |||||
| Object element = entries.elementAt(i); | Object element = entries.elementAt(i); | ||||
| if (element instanceof ConstantCPInfo) { | if (element instanceof ConstantCPInfo) { | ||||
| ConstantCPInfo constantEntry = (ConstantCPInfo)element; | |||||
| ConstantCPInfo constantEntry = (ConstantCPInfo) element; | |||||
| if (constantEntry.getValue().equals(constantValue)) { | if (constantEntry.getValue().equals(constantValue)) { | ||||
| index = i; | index = i; | ||||
| @@ -262,7 +262,7 @@ public class ConstantPool { | |||||
| Object element = entries.elementAt(i); | Object element = entries.elementAt(i); | ||||
| if (element instanceof MethodRefCPInfo) { | if (element instanceof MethodRefCPInfo) { | ||||
| MethodRefCPInfo methodRefEntry = (MethodRefCPInfo)element; | |||||
| MethodRefCPInfo methodRefEntry = (MethodRefCPInfo) element; | |||||
| if (methodRefEntry.getMethodClassName().equals(methodClassName) | if (methodRefEntry.getMethodClassName().equals(methodClassName) | ||||
| && methodRefEntry.getMethodName().equals(methodName) | && methodRefEntry.getMethodName().equals(methodName) | ||||
| @@ -297,7 +297,7 @@ public class ConstantPool { | |||||
| if (element instanceof InterfaceMethodRefCPInfo) { | if (element instanceof InterfaceMethodRefCPInfo) { | ||||
| InterfaceMethodRefCPInfo interfaceMethodRefEntry | InterfaceMethodRefCPInfo interfaceMethodRefEntry | ||||
| = (InterfaceMethodRefCPInfo)element; | |||||
| = (InterfaceMethodRefCPInfo) element; | |||||
| if (interfaceMethodRefEntry.getInterfaceMethodClassName().equals(interfaceMethodClassName) | if (interfaceMethodRefEntry.getInterfaceMethodClassName().equals(interfaceMethodClassName) | ||||
| && interfaceMethodRefEntry.getInterfaceMethodName().equals(interfaceMethodName) | && interfaceMethodRefEntry.getInterfaceMethodName().equals(interfaceMethodName) | ||||
| @@ -329,7 +329,7 @@ public class ConstantPool { | |||||
| Object element = entries.elementAt(i); | Object element = entries.elementAt(i); | ||||
| if (element instanceof FieldRefCPInfo) { | if (element instanceof FieldRefCPInfo) { | ||||
| FieldRefCPInfo fieldRefEntry = (FieldRefCPInfo)element; | |||||
| FieldRefCPInfo fieldRefEntry = (FieldRefCPInfo) element; | |||||
| if (fieldRefEntry.getFieldClassName().equals(fieldClassName) | if (fieldRefEntry.getFieldClassName().equals(fieldClassName) | ||||
| && fieldRefEntry.getFieldName().equals(fieldName) | && fieldRefEntry.getFieldName().equals(fieldName) | ||||
| @@ -358,7 +358,8 @@ public class ConstantPool { | |||||
| Object element = entries.elementAt(i); | Object element = entries.elementAt(i); | ||||
| if (element instanceof NameAndTypeCPInfo) { | if (element instanceof NameAndTypeCPInfo) { | ||||
| NameAndTypeCPInfo nameAndTypeEntry = (NameAndTypeCPInfo)element; | |||||
| NameAndTypeCPInfo nameAndTypeEntry | |||||
| = (NameAndTypeCPInfo) element; | |||||
| if (nameAndTypeEntry.getName().equals(name) | if (nameAndTypeEntry.getName().equals(name) | ||||
| && nameAndTypeEntry.getType().equals(type)) { | && nameAndTypeEntry.getType().equals(type)) { | ||||
| @@ -99,14 +99,15 @@ public class FieldRefCPInfo extends ConstantPoolEntry { | |||||
| * and against which this entry is to be resolved. | * and against which this entry is to be resolved. | ||||
| */ | */ | ||||
| public void resolve(ConstantPool constantPool) { | public void resolve(ConstantPool constantPool) { | ||||
| ClassCPInfo fieldClass = (ClassCPInfo)constantPool.getEntry(classIndex); | |||||
| ClassCPInfo fieldClass | |||||
| = (ClassCPInfo) constantPool.getEntry(classIndex); | |||||
| fieldClass.resolve(constantPool); | fieldClass.resolve(constantPool); | ||||
| fieldClassName = fieldClass.getClassName(); | fieldClassName = fieldClass.getClassName(); | ||||
| NameAndTypeCPInfo nt | NameAndTypeCPInfo nt | ||||
| = (NameAndTypeCPInfo)constantPool.getEntry(nameAndTypeIndex); | |||||
| = (NameAndTypeCPInfo) constantPool.getEntry(nameAndTypeIndex); | |||||
| nt.resolve(constantPool); | nt.resolve(constantPool); | ||||
| @@ -106,14 +106,14 @@ public class InterfaceMethodRefCPInfo extends ConstantPoolEntry { | |||||
| */ | */ | ||||
| public void resolve(ConstantPool constantPool) { | public void resolve(ConstantPool constantPool) { | ||||
| ClassCPInfo interfaceMethodClass | ClassCPInfo interfaceMethodClass | ||||
| = (ClassCPInfo)constantPool.getEntry(classIndex); | |||||
| = (ClassCPInfo) constantPool.getEntry(classIndex); | |||||
| interfaceMethodClass.resolve(constantPool); | interfaceMethodClass.resolve(constantPool); | ||||
| interfaceMethodClassName = interfaceMethodClass.getClassName(); | interfaceMethodClassName = interfaceMethodClass.getClassName(); | ||||
| NameAndTypeCPInfo nt | NameAndTypeCPInfo nt | ||||
| = (NameAndTypeCPInfo)constantPool.getEntry(nameAndTypeIndex); | |||||
| = (NameAndTypeCPInfo) constantPool.getEntry(nameAndTypeIndex); | |||||
| nt.resolve(constantPool); | nt.resolve(constantPool); | ||||
| @@ -122,14 +122,14 @@ public class MethodRefCPInfo extends ConstantPoolEntry { | |||||
| */ | */ | ||||
| public void resolve(ConstantPool constantPool) { | public void resolve(ConstantPool constantPool) { | ||||
| ClassCPInfo methodClass | ClassCPInfo methodClass | ||||
| = (ClassCPInfo)constantPool.getEntry(classIndex); | |||||
| = (ClassCPInfo) constantPool.getEntry(classIndex); | |||||
| methodClass.resolve(constantPool); | methodClass.resolve(constantPool); | ||||
| methodClassName = methodClass.getClassName(); | methodClassName = methodClass.getClassName(); | ||||
| NameAndTypeCPInfo nt | NameAndTypeCPInfo nt | ||||
| = (NameAndTypeCPInfo)constantPool.getEntry(nameAndTypeIndex); | |||||
| = (NameAndTypeCPInfo) constantPool.getEntry(nameAndTypeIndex); | |||||
| nt.resolve(constantPool); | nt.resolve(constantPool); | ||||
| @@ -107,8 +107,8 @@ public class NameAndTypeCPInfo extends ConstantPoolEntry { | |||||
| * and against which this entry is to be resolved. | * and against which this entry is to be resolved. | ||||
| */ | */ | ||||
| public void resolve(ConstantPool constantPool) { | public void resolve(ConstantPool constantPool) { | ||||
| name = ((Utf8CPInfo)constantPool.getEntry(nameIndex)).getValue(); | |||||
| type = ((Utf8CPInfo)constantPool.getEntry(descriptorIndex)).getValue(); | |||||
| name = ((Utf8CPInfo) constantPool.getEntry(nameIndex)).getValue(); | |||||
| type = ((Utf8CPInfo) constantPool.getEntry(descriptorIndex)).getValue(); | |||||
| super.resolve(constantPool); | super.resolve(constantPool); | ||||
| } | } | ||||
| @@ -101,7 +101,7 @@ public class StringCPInfo extends ConstantCPInfo { | |||||
| * and against which this entry is to be resolved. | * and against which this entry is to be resolved. | ||||
| */ | */ | ||||
| public void resolve(ConstantPool constantPool) { | public void resolve(ConstantPool constantPool) { | ||||
| setValue(((Utf8CPInfo)constantPool.getEntry(index)).getValue()); | |||||
| setValue(((Utf8CPInfo) constantPool.getEntry(index)).getValue()); | |||||
| super.resolve(constantPool); | super.resolve(constantPool); | ||||
| } | } | ||||
| @@ -241,7 +241,7 @@ public class CSharp | |||||
| /** | /** | ||||
| * file alignment; 0 means let the compiler decide | * file alignment; 0 means let the compiler decide | ||||
| */ | */ | ||||
| private int fileAlign=0; | |||||
| private int fileAlign = 0; | |||||
| /** | /** | ||||
| * Fix C# reference inclusion. C# is really dumb in how it handles | * Fix C# reference inclusion. C# is really dumb in how it handles | ||||
| @@ -1033,7 +1033,7 @@ public class CSharp | |||||
| includeDefaultReferences = true; | includeDefaultReferences = true; | ||||
| extraOptions = null; | extraOptions = null; | ||||
| fullpaths = true; | fullpaths = true; | ||||
| fileAlign=0; | |||||
| fileAlign = 0; | |||||
| } | } | ||||
| @@ -1053,7 +1053,7 @@ public class CSharp | |||||
| */ | */ | ||||
| protected void validate() | protected void validate() | ||||
| throws BuildException { | throws BuildException { | ||||
| if(outputFile!=null && outputFile.isDirectory()) { | |||||
| if (outputFile != null && outputFile.isDirectory()) { | |||||
| throw new BuildException("destFile cannot be a directory"); | throw new BuildException("destFile cannot be a directory"); | ||||
| } | } | ||||
| } | } | ||||
| @@ -1068,7 +1068,7 @@ public class CSharp | |||||
| if (srcDir == null) { | if (srcDir == null) { | ||||
| srcDir = project.resolveFile("."); | srcDir = project.resolveFile("."); | ||||
| } | } | ||||
| log("CSC working from source directory "+srcDir,Project.MSG_VERBOSE); | |||||
| log("CSC working from source directory " + srcDir, Project.MSG_VERBOSE); | |||||
| validate(); | validate(); | ||||
| NetCommand command = new NetCommand(this, "CSC", csc_exe_name); | NetCommand command = new NetCommand(this, "CSC", csc_exe_name); | ||||
| @@ -1100,36 +1100,36 @@ public class CSharp | |||||
| command.addArgument(getFileAlignParameter()); | command.addArgument(getFileAlignParameter()); | ||||
| long outputTimestamp; | long outputTimestamp; | ||||
| if(outputFile!=null && outputFile.exists()) { | |||||
| if (outputFile != null && outputFile.exists()) { | |||||
| outputTimestamp = outputFile.lastModified(); | outputTimestamp = outputFile.lastModified(); | ||||
| } else { | } else { | ||||
| outputTimestamp = 0; | outputTimestamp = 0; | ||||
| } | } | ||||
| int filesOutOfDate=0; | |||||
| int filesOutOfDate = 0; | |||||
| //get dependencies list. | //get dependencies list. | ||||
| DirectoryScanner scanner = super.getDirectoryScanner(srcDir); | DirectoryScanner scanner = super.getDirectoryScanner(srcDir); | ||||
| String[] dependencies = scanner.getIncludedFiles(); | String[] dependencies = scanner.getIncludedFiles(); | ||||
| log("compiling " + dependencies.length + " file" + ((dependencies.length == 1) ? "" : "s")); | log("compiling " + dependencies.length + " file" + ((dependencies.length == 1) ? "" : "s")); | ||||
| String baseDir = scanner.getBasedir().toString(); | String baseDir = scanner.getBasedir().toString(); | ||||
| File base=scanner.getBasedir(); | |||||
| File base = scanner.getBasedir(); | |||||
| //add to the command | //add to the command | ||||
| for (int i = 0; i < dependencies.length; i++) { | for (int i = 0; i < dependencies.length; i++) { | ||||
| File targetFile = new File(base,dependencies[i]); | |||||
| log(targetFile.toString(),Project.MSG_VERBOSE); | |||||
| File targetFile = new File(base, dependencies[i]); | |||||
| log(targetFile.toString(), Project.MSG_VERBOSE); | |||||
| command.addArgument(targetFile.toString()); | command.addArgument(targetFile.toString()); | ||||
| if(targetFile.lastModified()>outputTimestamp) { | |||||
| if (targetFile.lastModified() > outputTimestamp) { | |||||
| filesOutOfDate++; | filesOutOfDate++; | ||||
| log("Source file "+targetFile.toString()+" is out of date", | |||||
| log("Source file " + targetFile.toString() + " is out of date", | |||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| } else { | } else { | ||||
| log("Source file "+targetFile.toString()+" is up to date", | |||||
| log("Source file " + targetFile.toString() + " is up to date", | |||||
| Project.MSG_VERBOSE); | Project.MSG_VERBOSE); | ||||
| } | } | ||||
| } | } | ||||
| //now run the command of exe + settings + files | //now run the command of exe + settings + files | ||||
| if(filesOutOfDate>0) { | |||||
| if (filesOutOfDate > 0) { | |||||
| command.runCommand(); | command.runCommand(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -204,9 +204,9 @@ public class NetCommand { | |||||
| } | } | ||||
| } | } | ||||
| public void addArgument(String argument1,String argument2) { | |||||
| public void addArgument(String argument1, String argument2) { | |||||
| if (argument2 != null && argument2.length() != 0) { | if (argument2 != null && argument2.length() != 0) { | ||||
| commandLine.createArgument().setValue(argument1+argument2); | |||||
| commandLine.createArgument().setValue(argument1 + argument2); | |||||
| } | } | ||||
| } | } | ||||
| @@ -215,10 +215,10 @@ public class NetCommand { | |||||
| */ | */ | ||||
| protected void prepareExecutor() { | protected void prepareExecutor() { | ||||
| // default directory to the project's base directory | // default directory to the project's base directory | ||||
| if(owner==null) { | |||||
| if (owner == null) { | |||||
| throw new RuntimeException("no owner"); | throw new RuntimeException("no owner"); | ||||
| } | } | ||||
| if(owner.getProject()==null) { | |||||
| if (owner.getProject() == null) { | |||||
| throw new RuntimeException("Owner has no project"); | throw new RuntimeException("Owner has no project"); | ||||
| } | } | ||||
| File dir = owner.getProject().getBaseDir(); | File dir = owner.getProject().getBaseDir(); | ||||
| @@ -72,42 +72,42 @@ public class WsdlToDotnet extends Task { | |||||
| /** | /** | ||||
| * name of output file (required) | * name of output file (required) | ||||
| */ | */ | ||||
| private File destFile=null; | |||||
| private File destFile = null; | |||||
| /** | /** | ||||
| * url to retrieve | * url to retrieve | ||||
| */ | */ | ||||
| private String url=null; | |||||
| private String url = null; | |||||
| /** | /** | ||||
| * name of source file | * name of source file | ||||
| */ | */ | ||||
| private File srcFile=null; | |||||
| private File srcFile = null; | |||||
| /** | /** | ||||
| * language; defaults to C# | * language; defaults to C# | ||||
| */ | */ | ||||
| private String language="CS"; | |||||
| private String language = "CS"; | |||||
| /** | /** | ||||
| * flag set to true to generate server side skeleton | * flag set to true to generate server side skeleton | ||||
| */ | */ | ||||
| private boolean server=false; | |||||
| private boolean server = false; | |||||
| /** | /** | ||||
| * namespace | * namespace | ||||
| */ | */ | ||||
| private String namespace=null; | |||||
| private String namespace = null; | |||||
| /** | /** | ||||
| * flag to control action on execution trouble | * flag to control action on execution trouble | ||||
| */ | */ | ||||
| private boolean failOnError=true; | |||||
| private boolean failOnError = true; | |||||
| /** | /** | ||||
| * any extra command options? | * any extra command options? | ||||
| */ | */ | ||||
| protected String extraOptions=null; | |||||
| protected String extraOptions = null; | |||||
| /** | /** | ||||
| * | * | ||||
| @@ -155,27 +155,27 @@ public class WsdlToDotnet extends Task { | |||||
| */ | */ | ||||
| protected void validate() | protected void validate() | ||||
| throws BuildException { | throws BuildException { | ||||
| if(destFile==null) { | |||||
| if (destFile == null) { | |||||
| throw new BuildException("destination file must be specified"); | throw new BuildException("destination file must be specified"); | ||||
| } | } | ||||
| if(destFile.isDirectory() ) { | |||||
| if (destFile.isDirectory()) { | |||||
| throw new BuildException( | throw new BuildException( | ||||
| "destination file is a directory"); | "destination file is a directory"); | ||||
| } | } | ||||
| if(url!=null && srcFile!=null) { | |||||
| if (url != null && srcFile != null) { | |||||
| throw new BuildException( | throw new BuildException( | ||||
| "you can not specify both a source file and a URL"); | "you can not specify both a source file and a URL"); | ||||
| } | } | ||||
| if(url==null && srcFile==null) { | |||||
| if (url == null && srcFile == null) { | |||||
| throw new BuildException( | throw new BuildException( | ||||
| "you must specify either a source file or a URL"); | "you must specify either a source file or a URL"); | ||||
| } | } | ||||
| if(srcFile!=null) { | |||||
| if(!srcFile.exists() ) { | |||||
| if (srcFile != null) { | |||||
| if (!srcFile.exists()) { | |||||
| throw new BuildException( | throw new BuildException( | ||||
| "source file does not exist"); | "source file does not exist"); | ||||
| } | } | ||||
| if(srcFile.isDirectory() ) { | |||||
| if (srcFile.isDirectory()) { | |||||
| throw new BuildException( | throw new BuildException( | ||||
| "source file is a directory"); | "source file is a directory"); | ||||
| } | } | ||||
| @@ -197,12 +197,12 @@ public class WsdlToDotnet extends Task { | |||||
| command.setTraceCommandLine(true); | command.setTraceCommandLine(true); | ||||
| //fill in args | //fill in args | ||||
| command.addArgument("/nologo"); | command.addArgument("/nologo"); | ||||
| command.addArgument("/out:"+destFile); | |||||
| command.addArgument("/language:",language); | |||||
| if(server) { | |||||
| command.addArgument("/out:" + destFile); | |||||
| command.addArgument("/language:", language); | |||||
| if (server) { | |||||
| command.addArgument("/server"); | command.addArgument("/server"); | ||||
| } | } | ||||
| command.addArgument("/namespace:",namespace); | |||||
| command.addArgument("/namespace:", namespace); | |||||
| command.addArgument(extraOptions); | command.addArgument(extraOptions); | ||||
| //because these args arent added when null, we can | //because these args arent added when null, we can | ||||
| //set both of these and let either of them | //set both of these and let either of them | ||||
| @@ -210,12 +210,12 @@ public class WsdlToDotnet extends Task { | |||||
| command.addArgument(url); | command.addArgument(url); | ||||
| //rebuild unless the dest file is newer than the source file | //rebuild unless the dest file is newer than the source file | ||||
| boolean rebuild=true; | |||||
| if(srcFile.exists() && destFile.exists() && | |||||
| srcFile.lastModified()<=destFile.lastModified()) { | |||||
| rebuild=false; | |||||
| boolean rebuild = true; | |||||
| if (srcFile.exists() && destFile.exists() && | |||||
| srcFile.lastModified() <= destFile.lastModified()) { | |||||
| rebuild = false; | |||||
| } | } | ||||
| if(rebuild) { | |||||
| if (rebuild) { | |||||
| command.runCommand(); | command.runCommand(); | ||||
| } | } | ||||
| } | } | ||||
| @@ -202,8 +202,9 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| // Get the filename of vendor specific descriptor | // Get the filename of vendor specific descriptor | ||||
| String fileNameWithMETA = currentText; | String fileNameWithMETA = currentText; | ||||
| //trim the META_INF\ off of the file name | //trim the META_INF\ off of the file name | ||||
| String fileName = fileNameWithMETA.substring(META_DIR.length(), | |||||
| fileNameWithMETA.length() ); | |||||
| String fileName | |||||
| = fileNameWithMETA.substring(META_DIR.length(), | |||||
| fileNameWithMETA.length()); | |||||
| File descriptorFile = new File(srcDir, fileName); | File descriptorFile = new File(srcDir, fileName); | ||||
| ejbFiles.put(fileNameWithMETA, descriptorFile); | ejbFiles.put(fileNameWithMETA, descriptorFile); | ||||
| @@ -214,7 +215,7 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| borlandDTD == null ? DEFAULT_BAS_DTD_LOCATION : borlandDTD); | borlandDTD == null ? DEFAULT_BAS_DTD_LOCATION : borlandDTD); | ||||
| for (Iterator i = getConfig().dtdLocations.iterator(); i.hasNext();) { | for (Iterator i = getConfig().dtdLocations.iterator(); i.hasNext();) { | ||||
| EjbJar.DTDLocation dtdLocation = (EjbJar.DTDLocation)i.next(); | |||||
| EjbJar.DTDLocation dtdLocation = (EjbJar.DTDLocation) i.next(); | |||||
| handler.registerDTD(dtdLocation.getPublicId(), dtdLocation.getLocation()); | handler.registerDTD(dtdLocation.getPublicId(), dtdLocation.getLocation()); | ||||
| } | } | ||||
| return handler; | return handler; | ||||
| @@ -226,9 +227,9 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| */ | */ | ||||
| protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) { | protected void addVendorFiles(Hashtable ejbFiles, String ddPrefix) { | ||||
| File borlandDD = new File(getConfig().descriptorDir,ddPrefix + BAS_DD); | |||||
| File borlandDD = new File(getConfig().descriptorDir, ddPrefix + BAS_DD); | |||||
| if (borlandDD.exists()) { | if (borlandDD.exists()) { | ||||
| log("Borland specific file found "+ borlandDD, Project.MSG_VERBOSE); | |||||
| log("Borland specific file found " + borlandDD, Project.MSG_VERBOSE); | |||||
| ejbFiles.put(META_DIR + BAS_DD, borlandDD); | ejbFiles.put(META_DIR + BAS_DD, borlandDD); | ||||
| } | } | ||||
| else { | else { | ||||
| @@ -252,11 +253,11 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| */ | */ | ||||
| private void verifyBorlandJar(File sourceJar) { | private void verifyBorlandJar(File sourceJar) { | ||||
| org.apache.tools.ant.taskdefs.Java javaTask = null; | org.apache.tools.ant.taskdefs.Java javaTask = null; | ||||
| log("verify "+sourceJar,Project.MSG_INFO); | |||||
| log("verify " + sourceJar, Project.MSG_INFO); | |||||
| try { | try { | ||||
| String args = verifyArgs; | String args = verifyArgs; | ||||
| args += " "+sourceJar.getPath(); | |||||
| args += " " + sourceJar.getPath(); | |||||
| javaTask = (Java) getTask().getProject().createTask("java"); | javaTask = (Java) getTask().getProject().createTask("java"); | ||||
| javaTask.setTaskName("verify"); | javaTask.setTaskName("verify"); | ||||
| @@ -270,12 +271,14 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| javaTask.setFork(true); | javaTask.setFork(true); | ||||
| } | } | ||||
| log("Calling "+VERIFY+" for " + sourceJar.toString(), Project.MSG_VERBOSE); | |||||
| log("Calling " + VERIFY + " for " + sourceJar.toString(), | |||||
| Project.MSG_VERBOSE); | |||||
| javaTask.execute(); | javaTask.execute(); | ||||
| } | } | ||||
| catch (Exception e) { | catch (Exception e) { | ||||
| //TO DO : delete the file if it is not a valid file. | //TO DO : delete the file if it is not a valid file. | ||||
| String msg = "Exception while calling "+VERIFY+" Details: " + e.toString(); | |||||
| String msg = "Exception while calling " + VERIFY + " Details: " | |||||
| + e.toString(); | |||||
| throw new BuildException(msg, e); | throw new BuildException(msg, e); | ||||
| } | } | ||||
| } | } | ||||
| @@ -287,13 +290,13 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| */ | */ | ||||
| private void generateClient(File sourceJar) { | private void generateClient(File sourceJar) { | ||||
| getTask().getProject().addTaskDefinition("internal_bas_generateclient", | getTask().getProject().addTaskDefinition("internal_bas_generateclient", | ||||
| org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient.class); | |||||
| org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient.class); | |||||
| org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient gentask = null; | org.apache.tools.ant.taskdefs.optional.ejb.BorlandGenerateClient gentask = null; | ||||
| log("generate client for "+sourceJar,Project.MSG_INFO); | |||||
| log("generate client for " + sourceJar, Project.MSG_INFO); | |||||
| try { | try { | ||||
| String args = verifyArgs; | String args = verifyArgs; | ||||
| args += " "+sourceJar.getPath(); | |||||
| args += " " + sourceJar.getPath(); | |||||
| gentask = (BorlandGenerateClient) getTask().getProject().createTask("internal_bas_generateclient"); | gentask = (BorlandGenerateClient) getTask().getProject().createTask("internal_bas_generateclient"); | ||||
| gentask.setEjbjar(sourceJar); | gentask.setEjbjar(sourceJar); | ||||
| @@ -307,7 +310,8 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| } | } | ||||
| catch (Exception e) { | catch (Exception e) { | ||||
| //TO DO : delete the file if it is not a valid file. | //TO DO : delete the file if it is not a valid file. | ||||
| String msg = "Exception while calling "+VERIFY+" Details: " + e.toString(); | |||||
| String msg = "Exception while calling " + VERIFY + " Details: " | |||||
| + e.toString(); | |||||
| throw new BuildException(msg, e); | throw new BuildException(msg, e); | ||||
| } | } | ||||
| } | } | ||||
| @@ -318,7 +322,7 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| * @param ithomes : iterator on home class | * @param ithomes : iterator on home class | ||||
| * @param files : file list , updated by the adding generated files | * @param files : file list , updated by the adding generated files | ||||
| */ | */ | ||||
| private void buildBorlandStubs(Iterator ithomes,Hashtable files ) { | |||||
| private void buildBorlandStubs(Iterator ithomes, Hashtable files) { | |||||
| Execute execTask = null; | Execute execTask = null; | ||||
| execTask = new Execute(this); | execTask = new Execute(this); | ||||
| @@ -329,7 +333,7 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| Commandline commandline = new Commandline(); | Commandline commandline = new Commandline(); | ||||
| commandline.setExecutable(JAVA2IIOP); | commandline.setExecutable(JAVA2IIOP); | ||||
| //debug ? | //debug ? | ||||
| if ( java2iiopdebug ) { | |||||
| if (java2iiopdebug) { | |||||
| commandline.createArgument().setValue("-VBJdebug"); | commandline.createArgument().setValue("-VBJdebug"); | ||||
| } // end of if () | } // end of if () | ||||
| //set the classpath | //set the classpath | ||||
| @@ -345,23 +349,24 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| //compiling order | //compiling order | ||||
| commandline.createArgument().setValue("-compile"); | commandline.createArgument().setValue("-compile"); | ||||
| //add the home class | //add the home class | ||||
| while ( ithomes.hasNext()) { | |||||
| while (ithomes.hasNext()) { | |||||
| commandline.createArgument().setValue(ithomes.next().toString()); | commandline.createArgument().setValue(ithomes.next().toString()); | ||||
| } // end of while () | } // end of while () | ||||
| try { | try { | ||||
| log("Calling java2iiop",Project.MSG_VERBOSE); | |||||
| log(commandline.toString(),Project.MSG_DEBUG); | |||||
| log("Calling java2iiop", Project.MSG_VERBOSE); | |||||
| log(commandline.toString(), Project.MSG_DEBUG); | |||||
| execTask.setCommandline(commandline.getCommandline()); | execTask.setCommandline(commandline.getCommandline()); | ||||
| int result = execTask.execute(); | int result = execTask.execute(); | ||||
| if ( result != 0 ) { | |||||
| String msg = "Failed executing java2iiop (ret code is "+result+")"; | |||||
| if (result != 0) { | |||||
| String msg = "Failed executing java2iiop (ret code is " | |||||
| + result + ")"; | |||||
| throw new BuildException(msg, getTask().getLocation()); | throw new BuildException(msg, getTask().getLocation()); | ||||
| } | } | ||||
| } | } | ||||
| catch (java.io.IOException e) { | catch (java.io.IOException e) { | ||||
| log("java2iiop exception :"+e.getMessage(),Project.MSG_ERR); | |||||
| throw new BuildException(e,getTask().getLocation()); | |||||
| log("java2iiop exception :" + e.getMessage(), Project.MSG_ERR); | |||||
| throw new BuildException(e, getTask().getLocation()); | |||||
| } | } | ||||
| } | } | ||||
| @@ -375,28 +380,28 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| //build the home classes list. | //build the home classes list. | ||||
| Vector homes = new Vector(); | Vector homes = new Vector(); | ||||
| Iterator it = files.keySet().iterator(); | Iterator it = files.keySet().iterator(); | ||||
| while ( it.hasNext()) { | |||||
| while (it.hasNext()) { | |||||
| String clazz = (String) it.next(); | String clazz = (String) it.next(); | ||||
| if ( clazz.endsWith("Home.class") ) { | |||||
| if (clazz.endsWith("Home.class")) { | |||||
| //remove .class extension | //remove .class extension | ||||
| String home = toClass(clazz); | String home = toClass(clazz); | ||||
| homes.add(home); | homes.add(home); | ||||
| log(" Home "+home,Project.MSG_VERBOSE); | |||||
| log(" Home " + home, Project.MSG_VERBOSE); | |||||
| } // end of if () | } // end of if () | ||||
| } // end of while () | } // end of while () | ||||
| buildBorlandStubs(homes.iterator(),files); | |||||
| buildBorlandStubs(homes.iterator(), files); | |||||
| //add the gen files to the collection | //add the gen files to the collection | ||||
| files.putAll(_genfiles); | files.putAll(_genfiles); | ||||
| super.writeJar(baseName, jarFile, files, publicId); | super.writeJar(baseName, jarFile, files, publicId); | ||||
| if ( verify ) { | |||||
| if (verify) { | |||||
| verifyBorlandJar(jarFile); | verifyBorlandJar(jarFile); | ||||
| } // end of if () | } // end of if () | ||||
| if ( generateclient) { | |||||
| if (generateclient) { | |||||
| generateClient(jarFile); | generateClient(jarFile); | ||||
| } // end of if () | } // end of if () | ||||
| } | } | ||||
| @@ -407,8 +412,8 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| */ | */ | ||||
| private String toClass(String filename) { | private String toClass(String filename) { | ||||
| //remove the .class | //remove the .class | ||||
| String classname = filename.substring(0,filename.lastIndexOf(".class")); | |||||
| classname = classname.replace('\\','.'); | |||||
| String classname = filename.substring(0, filename.lastIndexOf(".class")); | |||||
| classname = classname.replace('\\', '.'); | |||||
| return classname; | return classname; | ||||
| } | } | ||||
| @@ -418,8 +423,8 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| */ | */ | ||||
| private String toClassFile(String filename) { | private String toClassFile(String filename) { | ||||
| //remove the .class | //remove the .class | ||||
| String classfile = filename.substring(0,filename.lastIndexOf(".java")); | |||||
| classfile = classfile+".class"; | |||||
| String classfile = filename.substring(0, filename.lastIndexOf(".java")); | |||||
| classfile = classfile + ".class"; | |||||
| return classfile; | return classfile; | ||||
| } | } | ||||
| @@ -439,19 +444,19 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| try { | try { | ||||
| BufferedReader reader = new BufferedReader(new InputStreamReader(is)); | BufferedReader reader = new BufferedReader(new InputStreamReader(is)); | ||||
| String javafile; | String javafile; | ||||
| while ( ( javafile = reader.readLine()) != null) { | |||||
| log("buffer:" +javafile,Project.MSG_DEBUG); | |||||
| if ( javafile.endsWith(".java") ) { | |||||
| while ((javafile = reader.readLine()) != null) { | |||||
| log("buffer:" + javafile, Project.MSG_DEBUG); | |||||
| if (javafile.endsWith(".java")) { | |||||
| String classfile = toClassFile(javafile); | String classfile = toClassFile(javafile); | ||||
| String key = classfile.substring(getConfig().srcDir.getAbsolutePath().length()+1); | |||||
| log(" generated : "+ classfile ,Project.MSG_DEBUG); | |||||
| log(" key : "+ key ,Project.MSG_DEBUG); | |||||
| String key = classfile.substring(getConfig().srcDir.getAbsolutePath().length() + 1); | |||||
| log(" generated : " + classfile, Project.MSG_DEBUG); | |||||
| log(" key : " + key, Project.MSG_DEBUG); | |||||
| _genfiles.put(key, new File(classfile)); | _genfiles.put(key, new File(classfile)); | ||||
| } // end of if () | } // end of if () | ||||
| } // end of while () | } // end of while () | ||||
| reader.close(); | reader.close(); | ||||
| } | } | ||||
| catch(Exception e) { | |||||
| catch (Exception e) { | |||||
| String msg = "Exception while parsing java2iiop output. Details: " + e.toString(); | String msg = "Exception while parsing java2iiop output. Details: " + e.toString(); | ||||
| throw new BuildException(msg, e); | throw new BuildException(msg, e); | ||||
| } | } | ||||
| @@ -465,10 +470,8 @@ public class BorlandDeploymentTool extends GenericDeploymentTool implements Exe | |||||
| { | { | ||||
| BufferedReader reader = new BufferedReader(new InputStreamReader(is)); | BufferedReader reader = new BufferedReader(new InputStreamReader(is)); | ||||
| String s = reader.readLine(); | String s = reader.readLine(); | ||||
| if ( s != null) | |||||
| { | |||||
| log("[java2iiop] "+s,Project.MSG_DEBUG); | |||||
| if (s != null) { | |||||
| log("[java2iiop] " + s, Project.MSG_DEBUG); | |||||
| } // end of if () | } // end of if () | ||||
| } | } | ||||
| } | } | ||||