public override bool Execute() { Log.LogMessage("GenerateParameterNames Task"); Log.LogMessage(" ApiOutputFile: {0}", ApiOutputFile); Log.LogMessage(" GeneratedFile: {0}", GeneratedFile); Log.LogMessage(" SourceJars: {0}", string.Join(";", SourceJars.Select(x => x.ItemSpec))); Log.LogMessage(" TransformFiles: {0}", string.Join(";", TransformFiles.Select(x => x.ItemSpec))); var generatorParameters = new GeneratorParameters { ReservedPrefix = ReservedPrefix ?? string.Empty, ReservedSuffix = ReservedSuffix ?? string.Empty, ParameterCasing = (TextCasing)Enum.Parse(typeof(TextCasing), ParameterCasing, true), ForceMeaningfulParameterNames = ForceMeaningfulParameterNames }; // create the folder var dir = Path.GetDirectoryName(GeneratedFile.ItemSpec); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } // read the jar files var classPath = new ClassPath() { ApiSource = "class-parse" }; foreach (var jarFile in SourceJars) { if (ClassPath.IsJarFile(jarFile.ItemSpec)) { classPath.Load(jarFile.ItemSpec); } } // build up the object tree var metadataElement = classPath.ToXElement(); // remove any nodes that the user wants metadataElement = TransformXml(metadataElement); var packages = JavaPackage.Parse(metadataElement); var xParameters = packages.SelectMany(p => p.ToXElement(generatorParameters)); // create the new xml document var xDoc = new XDocument( new XElement("metadata", xParameters.ToArray())); // make sure we don't have anything not in the api.xml RemoveIgnoredApiXmlMembers(xDoc); // save xDoc.Save(GeneratedFile.ItemSpec); return(true); }
static void DumpFileToXml(ClassPath jar, string file) { using (var s = File.OpenRead(file)) { if (ClassFile.IsClassFile(s)) { s.Position = 0; var c = new ClassFile(s); jar.Add(c); return; } } if (ClassPath.IsJarFile(file)) { jar.Load(file); return; } Console.Error.WriteLine("class-parse: Unable to read file '{0}': Unknown file format."); Environment.ExitCode = 1; }