From: Teiniker E. <tei...@us...> - 2007-04-12 11:54:42
|
Update of /cvsroot/ccmtools/ccmtools/src/ccmtools/ant In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv21088/src/ccmtools/ant Added Files: IncludePath.java GeneratorType.java IdljTask.java BindingType.java CcmtoolsTask.java Log Message: Added ant tasks for ccmtools and idlj. --- NEW FILE: IdljTask.java --- package ccmtools.ant; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.Execute; import org.apache.tools.ant.taskdefs.LogStreamHandler; import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.FileSet; public class IdljTask extends Task { /** * Handle attribute keep * If a file to be generated already exists, do not overwrite it. * By default it is overwritten. */ private boolean keep = false; public void setKeep(boolean keep) { this.keep = keep; } /** * Handle attribute emitAll * Emit all types, including those found in #included files. */ private boolean emitAll = false; public void setEmitAll(boolean emitAll) { this.emitAll = emitAll; } /** * Handle attribute noWarn * Suppress warnings. */ private boolean noWarn = false; public void setNoWarn(boolean noWarn) { this.noWarn = noWarn; } /** * Handle attribute oldImplBase * */ private boolean oldImplBase = false; public void setOldImplBase(boolean oldImplBase) { this.oldImplBase = oldImplBase; } /** * Handle attribute verbose * */ private boolean verbose = false; public void setVerbose(boolean verbose) { this.verbose = verbose; } /** * Handle attribute skeletonName * */ private String skeletonName; public void setSkeletonName(String skeletonName) { this.skeletonName = skeletonName; } /** * Handle attribute tieName * */ private String tieName; public void setTieName(String tieName) { this.tieName = tieName; } /** * Handle attribute binding * */ private String binding = "fall"; public void setBinding(BindingType binding) { this.binding = binding.getValue(); } /** * Handle attribute destdir * */ private File destDir = new File("./"); public void setDestdir(File destDir) { this.destDir = destDir; } /** * Handle nested <include> elements * */ private List<String> includePaths = new ArrayList<String>(); private List<IncludePath> includes = new ArrayList<IncludePath>(); public IncludePath createInclude() { IncludePath p = new IncludePath(); includes.add(p); return p; } /** * Handle file sets * */ private List<FileSet> filesets = new ArrayList<FileSet>(); public void addFileset(FileSet fileset) { filesets.add(fileset); } public void execute() { for(IncludePath p : includes) { includePaths.addAll(Arrays.asList(p.getPaths())); } logTask(); for(FileSet fs: filesets) { DirectoryScanner ds = fs.getDirectoryScanner(getProject()); String[] includedFiles = ds.getIncludedFiles(); for(int i=0; i<includedFiles.length; i++) { File file = new File(ds.getBasedir(),includedFiles[i]); runIdlCompiler(file); } } } public void runIdlCompiler(File idlFile) { // Construct the command line Commandline cmdline = new Commandline(); cmdline.setExecutable("idlj"); if(keep) { cmdline.createArgument().setValue("-keep"); } if(emitAll) { cmdline.createArgument().setValue("-emitAll"); } if(noWarn) { cmdline.createArgument().setValue("-noWarn"); } if(oldImplBase) { cmdline.createArgument().setValue("-oldImplBase"); } if(verbose) { cmdline.createArgument().setValue("-verbose"); } if(skeletonName != null) { cmdline.createArgument().setLine("-skeletonName " + skeletonName); } if(tieName != null) { cmdline.createArgument().setLine("-tieName " + tieName); } cmdline.createArgument().setValue("-" + binding); cmdline.createArgument().setLine("-td " + destDir.getAbsolutePath()); for(String s : includePaths) { cmdline.createArgument().setLine("-i " + s); } cmdline.createArgument().setValue(idlFile.getAbsolutePath()); log("command line = " + cmdline, Project.MSG_VERBOSE); // Configure the Execute object LogStreamHandler streamHandler = new LogStreamHandler(this, Project.MSG_INFO, Project.MSG_WARN); Execute runner = new Execute(streamHandler, null); runner.setAntRun(getProject()); runner.setCommandline(cmdline.getCommandline()); // Execute the command line int result = 0; try { log("compile " + idlFile.getAbsolutePath()); result = runner.execute(); log("result = " + result, Project.MSG_VERBOSE); } catch(IOException e) { log(e.getMessage(), Project.MSG_DEBUG); throw new BuildException(e.getMessage()); } } public void logTask() { // Log ant task parameters log("attribute keep = " + keep, Project.MSG_VERBOSE); log("attribute emitAll = " + emitAll, Project.MSG_VERBOSE); log("attribute noWarn = " + noWarn, Project.MSG_VERBOSE); log("attribute oldImplBase = " + oldImplBase, Project.MSG_VERBOSE); log("attribute verbose = " + verbose, Project.MSG_VERBOSE); log("attribute skeletonName = " + skeletonName, Project.MSG_VERBOSE); log("attribute tieName = " + tieName, Project.MSG_VERBOSE); log("attribute binding = " + binding, Project.MSG_VERBOSE); if(destDir != null) log("attribute destdir = " + destDir.getAbsolutePath(), Project.MSG_VERBOSE); for(String s : includePaths) { log("nested element include = " + s, Project.MSG_VERBOSE); } for(FileSet fs: filesets) { DirectoryScanner ds = fs.getDirectoryScanner(getProject()); String[] includedFiles = ds.getIncludedFiles(); for(int i=0; i<includedFiles.length; i++) { File file = new File(ds.getBasedir(),includedFiles[i]); log("nested element fileset = " + file.getAbsolutePath(), Project.MSG_VERBOSE); } } } } --- NEW FILE: CcmtoolsTask.java --- package ccmtools.ant; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.types.FileSet; public class CcmtoolsTask extends Task { /** * Handle attribute generator * */ private String generator; public void setGenerator(GeneratorType generator) { this.generator=generator.getValue(); } /** * Handle attribute destdir * */ private File destDir = new File("./"); public void setDestdir(File destDir) { this.destDir = destDir; } /** * Handle nested includepath elements * */ private List<String> includePaths; private List<IncludePath> includes = new ArrayList<IncludePath>(); public IncludePath createInclude() { IncludePath p = new IncludePath(); includes.add(p); return p; } /** * Handle file sets * */ private List<FileSet> filesets = new ArrayList<FileSet>(); public void addFileset(FileSet fileset) { filesets.add(fileset); } public void execute() { includePaths = new ArrayList<String>(); for(IncludePath p : includes) { includePaths.addAll(Arrays.asList(p.getPaths())); } logTask(); // Setup ccmtools properties String home = getProject().getProperty("ccmtools.home"); if(home == null) { throw new BuildException("ccmtools.home property is not set!"); } System.setProperty("ccmtools.home", home); System.setProperty("java.util.logging.config.file", home + File.separator + "etc" + File.separator + "logging.properties"); // Call ccmtools generators if(generator.startsWith("model")) { executeModelTools(); } else if(generator.startsWith("idl")) { executeIdlGenerator(); } else if(generator.startsWith("java")) { executeJavaGenerator(); } } protected void executeModelTools() { StringBuilder cmd = new StringBuilder(); if(generator.equals("model.validator")) { cmd.append("-validator"); } else if(generator.equals("model.parser")) { cmd.append("-parser"); } for(String s : includePaths) { cmd.append(" -I" + s); } for(FileSet fs: filesets) { DirectoryScanner ds = fs.getDirectoryScanner(getProject()); String[] includedFiles = ds.getIncludedFiles(); for(int i=0; i<includedFiles.length; i++) { File file = new File(ds.getBasedir(),includedFiles[i]); cmd.append(" ").append(file.getAbsolutePath()); } } log("command line = " + cmd.toString(), Project.MSG_VERBOSE); String[] args = cmd.toString().split(" "); ccmtools.parser.idl.metamodel.Main.main(args); } protected void executeIdlGenerator() { StringBuilder cmd = new StringBuilder(); if(generator.equals("idl3")) { cmd.append("-idl3"); } else if(generator.equals("idl3.mirror")) { cmd.append("-idl3mirror"); } else if(generator.equals("idl2")) { cmd.append("-idl2"); } for(String s : includePaths) { cmd.append(" -I" + s); } cmd.append(" -o " + destDir.getAbsolutePath()); for(FileSet fs: filesets) { DirectoryScanner ds = fs.getDirectoryScanner(getProject()); String[] includedFiles = ds.getIncludedFiles(); for(int i=0; i<includedFiles.length; i++) { File file = new File(ds.getBasedir(),includedFiles[i]); cmd.append(" ").append(file.getAbsolutePath()); } } log("command line = " + cmd.toString(), Project.MSG_VERBOSE); String[] args = cmd.toString().split(" "); ccmtools.generator.idl.Main.main(args); } protected void executeJavaGenerator() { StringBuilder cmd = new StringBuilder(); if(generator.equals("java.iface")) { cmd.append("-iface"); } else if(generator.equals("java.local")) { cmd.append("-local"); } else if(generator.equals("java.app")) { cmd.append("-app"); } else if(generator.equals("java.remote")) { cmd.append("-remote"); } else if(generator.equals("java.clientlib")) { cmd.append("-clientlib"); } for(String s : includePaths) { cmd.append(" -I" + s); } cmd.append(" -o " + destDir.getAbsolutePath()); for(FileSet fs: filesets) { DirectoryScanner ds = fs.getDirectoryScanner(getProject()); String[] includedFiles = ds.getIncludedFiles(); for(int i=0; i<includedFiles.length; i++) { File file = new File(ds.getBasedir(),includedFiles[i]); cmd.append(" ").append(file.getAbsolutePath()); } } log("command line = " + cmd.toString(), Project.MSG_VERBOSE); String[] args = cmd.toString().split(" "); ccmtools.generator.java.Main.main(args); } public void logTask() { // Log ant task parameters String home = getProject().getProperty("ccmtools.home"); log("property ccmtools.home = " + home, Project.MSG_VERBOSE); log("attribute generator = " + generator, Project.MSG_VERBOSE); if(destDir != null) log("attribute destdir = " + destDir.getAbsolutePath(), Project.MSG_VERBOSE); List<String> includePaths = new ArrayList<String>(); for(IncludePath p : includes) { includePaths.addAll(Arrays.asList(p.getPaths())); } for(String s : includePaths) { log("nested element include = " + s, Project.MSG_VERBOSE); } } } --- NEW FILE: BindingType.java --- package ccmtools.ant; import org.apache.tools.ant.types.EnumeratedAttribute; public class BindingType extends EnumeratedAttribute { public String[] getValues() { return new String[] { "fclient", "fserver", "fserverTIE", "fall", "fallTIE", }; } } --- NEW FILE: IncludePath.java --- package ccmtools.ant; import org.apache.tools.ant.types.Path; public class IncludePath { public String[] getPaths() { return path.list(); } /** Handle path attribute */ private Path path; public void setPath(Path path) { this.path = path; } public String toString() { return path.toString(); } } --- NEW FILE: GeneratorType.java --- package ccmtools.ant; import org.apache.tools.ant.types.EnumeratedAttribute; public class GeneratorType extends EnumeratedAttribute { public String[] getValues() { return new String[] { // ccmtools.parser.idl.metamodel "model.validator", "model.parser", // ccmtools.generator.idl "idl3", "idl3.mirror", "idl2", // ccmtools.generator.java "java.iface", "java.local", "java.app", "java.remote", "java.clientlib", // ccmtools.generator.deployment "descriptor" }; } } |