package jetbrains.mps.build.mps.runtime.anttask; /*Generated by MPS */ import jetbrains.mps.build.ant.MpsLoadTask; import org.apache.tools.ant.types.Path; import java.util.Set; import java.io.File; import java.util.HashSet; import java.net.URLEncoder; import java.net.URLDecoder; public class GenModuleXmlTask extends MpsLoadTask { private Path myClasspath = null; public GenModuleXmlTask() { } @Override protected String getWorkerClass() { return "jetbrains.mps.build.mps.runtime.anttask.GenModuleXmlWorker"; } public void addConfiguredGenModule(ModuleXml moduleXml) { myWhatToDo.addParameter(encode(moduleXml)); } public void addConfiguredClassPath(Path path) { myClasspath = path; } @Override protected Set<File> calculateClassPath(boolean fork) { if (myClasspath == null) { return super.calculateClassPath(fork); } Set<File> path = new HashSet<File>(); for (String pathelem : myClasspath.list()) { path.add(new File(pathelem)); } return path; } public static String encode(ModuleXml moduleXml) { StringBuilder sb = new StringBuilder(); sb.append(moduleXml.getRef()).append("\n").append(moduleXml.getDestfile()).append("\n"); sb.append(moduleXml.getInnerText(GenModuleXmlWorker.INDENT_INNER_XML, GenModuleXmlWorker.INDENT_WITH)); return URLEncoder.encode(sb.toString()); } public static ModuleXml decode(String s) { ModuleXml result = new ModuleXml(); String[] param = URLDecoder.decode(s).split("\n"); if (param.length > 0) { result.setRef(param[0]); } if (param.length > 1) { result.setDestfile(param[1]); } StringBuilder sb = new StringBuilder(); for (int i = 2; i < param.length; ++i) { sb.append("\n").append(param[i]); } result.setInnerText(sb.toString()); return result; } }