diff options
author | Mark Spruiell <mes@zeroc.com> | 2014-12-08 14:34:10 -0500 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2014-12-08 14:34:10 -0500 |
commit | 39373727e840aca828f796f01008dd20ebb979eb (patch) | |
tree | 1e771cc1198fefe0bb3127196ade8d7600dbb408 /java/src/ant/Slice2JavaTask.java | |
parent | Ubuntu package build fix (diff) | |
download | ice-39373727e840aca828f796f01008dd20ebb979eb.tar.bz2 ice-39373727e840aca828f796f01008dd20ebb979eb.tar.xz ice-39373727e840aca828f796f01008dd20ebb979eb.zip |
ICE-5994 - generate ant source JAR
Diffstat (limited to 'java/src/ant/Slice2JavaTask.java')
-rw-r--r-- | java/src/ant/Slice2JavaTask.java | 422 |
1 files changed, 0 insertions, 422 deletions
diff --git a/java/src/ant/Slice2JavaTask.java b/java/src/ant/Slice2JavaTask.java deleted file mode 100644 index be539149109..00000000000 --- a/java/src/ant/Slice2JavaTask.java +++ /dev/null @@ -1,422 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2014 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -//package Ice.Ant; - -import org.apache.tools.ant.Task; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.DirectoryScanner; -import org.apache.tools.ant.types.FileSet; -import org.apache.tools.ant.taskdefs.ExecTask; -import org.apache.tools.ant.taskdefs.Execute; -import org.apache.tools.ant.taskdefs.PumpStreamHandler; -import org.apache.tools.ant.types.Commandline; -import org.apache.tools.ant.types.Commandline.Argument; -import org.apache.tools.ant.types.Path; -import org.apache.tools.ant.types.Reference; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.StringReader; -import java.io.BufferedReader; -import java.io.BufferedWriter; - -/** - * An ant task for slice2java. This task extends the abstract - * SliceTask class which takes care of attributes common to all slice - * translators (see SliceTask.java for details on these attributes). - * - * Attributes specific to slice2java: - * - * translator - The pathname of the translator (default: "slice2java"). - * tie - The value for the --tie translator option. - * checksum - The value for the --checksum translator option. - * stream - The value for the --stream translator option. - * - * Example: - * - * <project ...> - * <taskdef name="slice2java" classname="Slice2JavaTask" /> - * <property name="slice.dir" value="../include/slice"/> - * <target name="generate"> - * <mkdir dir="tags" /> - * <slice2java tagdir="tags" outputdir="out"> - * <define name="SYMBOL" value="VALUE"/> - * <includepath> - * <pathelement path="${slice.dir}" /> - * </includepath> - * <fileset dir="${slice.dir}"> - * <include name="*.ice" /> - * </fileset> - * </slice2java> - * </target> - * </project> - * - * The <taskdef> element installs the slice2java task. - */ -public class Slice2JavaTask extends SliceTask -{ - public - Slice2JavaTask() - { - _translator = null; - _tie = false; - _checksum = null; - } - - public void - setTranslator(File prog) - { - _translator = prog; - } - - public void - setTie(boolean tie) - { - _tie = tie; - } - - public void - setChecksum(String checksum) - { - _checksum = checksum; - } - - public void - setStream(boolean stream) - { - _stream = stream; - } - - public void - execute() - throws BuildException - { - if(_fileSets.isEmpty()) - { - throw new BuildException("No fileset specified"); - } - - // - // Read the set of dependencies for this task. - // - java.util.HashMap<String, SliceDependency> dependencies = readDependencies(); - - // - // Compose a list of the files that need to be translated. A - // file needs to translated if we can't find a dependency in - // the dependency table or if its dependency is not up-to-date - // anymore (the slice file changed since the dependency was - // last updated or a slice file it depends on changed). - // - java.util.HashSet<File> buildList = new java.util.HashSet<File>(); - java.util.HashSet<File> skipList = new java.util.HashSet<File>(); - for(FileSet fileset : _fileSets) - { - DirectoryScanner scanner = fileset.getDirectoryScanner(getProject()); - scanner.scan(); - String[] files = scanner.getIncludedFiles(); - for(String file : files) - { - File slice = new File(fileset.getDir(getProject()), file); - - SliceDependency depend = dependencies.get(getTargetKey(slice.toString())); - if(depend == null || !depend.isUpToDate()) - { - buildList.add(slice); - } - else - { - skipList.add(slice); - } - } - } - - if(_checksum != null && _checksum.length() > 0 && !buildList.isEmpty()) - { - // - // Recompile all Slice files when checksums are used. - // - buildList.addAll(skipList); - } - else - { - for(File file : skipList) - { - log("skipping " + file.getName()); - } - } - - // - // Run the translator - // - if(!buildList.isEmpty()) - { - String translator; - if(_translator == null) - { - translator = getDefaultTranslator("slice2java"); - } - else - { - translator = _translator.toString(); - } - - StringBuilder cmd = new StringBuilder(256); - - // - // Add --output-dir - // - if(_outputDir != null) - { - cmd.append(" --output-dir "); - cmd.append(_outputDirString); - } - - // - // Add include directives - // - if(_includePath != null) - { - String[] dirs = _includePath.list(); - for(String dir : dirs) - { - cmd.append(" -I"); - if(dir.indexOf(' ') != -1) - { - cmd.append('"'); - cmd.append(dir); - cmd.append('"'); - } - else - { - cmd.append(dir); - } - } - } - - // - // Add defines - // - if(!_defines.isEmpty()) - { - for(SliceDefine define : _defines) - { - cmd.append(" -D"); - cmd.append(define.getName()); - String value = define.getValue(); - if(value != null) - { - cmd.append("="); - cmd.append(value); - } - } - } - - // - // Add --tie - // - if(_tie) - { - cmd.append(" --tie"); - } - - // - // Add --checksum - // - if(_checksum != null && _checksum.length() > 0) - { - cmd.append(" --checksum "); - cmd.append(_checksum); - } - - // - // Add --stream - // - if(_stream) - { - cmd.append(" --stream"); - } - - // - // Add --meta - // - if(!_meta.isEmpty()) - { - for(SliceMeta m : _meta) - { - cmd.append(" --meta "); - cmd.append(m.getValue()); - } - } - - // - // Add --ice - // - if(_ice) - { - cmd.append(" --ice"); - } - - // - // Add --underscore - // - if(_underscore) - { - cmd.append(" --underscore"); - } - - // - // Add files to be translated - // - for(File f : buildList) - { - cmd.append(" "); - String s = f.toString(); - if(s.indexOf(' ') != -1) - { - cmd.append('"'); - cmd.append(s); - cmd.append('"'); - } - else - { - cmd.append(s); - } - } - - // - // Execute - // - log(translator + " " + cmd); - ExecTask task = (ExecTask)getProject().createTask("exec"); - addLdLibraryPath(task); - task.setFailonerror(true); - Argument arg = task.createArg(); - arg.setLine(cmd.toString()); - task.setExecutable(translator); - task.execute(); - - // - // Update the dependencies. - // - cmd = new StringBuilder(256); - cmd.append("--depend-xml"); - - // - // Add --ice - // - if(_ice) - { - cmd.append(" --ice"); - } - - // - // Add --underscore - // - if(_underscore) - { - cmd.append(" --underscore"); - } - - // - // Add include directives - // - if(_includePath != null) - { - String[] dirs = _includePath.list(); - for(String dir : dirs) - { - cmd.append(" -I"); - if(dir.indexOf(' ') != -1) - { - cmd.append('"'); - cmd.append(dir); - cmd.append('"'); - } - else - { - cmd.append(dir); - } - } - } - - // - // Add files for which we need to check dependencies. - // - for(File f : buildList) - { - cmd.append(" "); - String s = f.toString(); - if(s.indexOf(' ') != -1) - { - cmd.append('"'); - cmd.append(s); - cmd.append('"'); - } - else - { - cmd.append(s); - } - } - - // - // It's not possible anymore to re-use the same output property since Ant 1.5.x. so we use a - // unique property name here. Perhaps we should output the dependencies to a file instead. - // - final String outputProperty = "slice2java.depend." + System.currentTimeMillis(); - final String errorProperty = "slice2java.error." + System.currentTimeMillis(); - - task = (ExecTask)getProject().createTask("exec"); - addLdLibraryPath(task); - task.setFailonerror(true); - arg = task.createArg(); - arg.setLine(cmd.toString()); - task.setExecutable(translator); - task.setOutputproperty(outputProperty); - task.setErrorProperty(errorProperty); - task.execute(); - - // - // Update dependency file. - // - java.util.List<SliceDependency> newDependencies = - parseDependencies(getProject().getProperty(outputProperty)); - for(SliceDependency dep : newDependencies) - { - dependencies.put(getTargetKey(dep._dependencies[0]), dep); - } - - writeDependencies(dependencies); - } - } - - private String - getTargetKey(String slice) - { - // - // Since the dependency file can be shared by several slice - // tasks we need to make sure that each dependency has a - // unique key. We use the name of the task, the output - // directory and the name of the slice file to be compiled. - // - // If there's two slice2java tasks using the same dependency - // file, with the same output dir and which compiles the same - // slice file they'll use the same dependency. - // - return "slice2java " + _outputDir.toString() + " " + slice; - } - - private File _translator; - private boolean _tie; - private String _checksum; - private boolean _stream; -} |