/// <summary> /// Create wrapper for given jar file /// </summary> private void CreateAssembly(JarFile jf, string folder) { // Create java type wrappers var module = new NetModule(jf.Scope); var classTypeBuilders = jf.ClassNames.SelectMany(n => StandardTypeBuilder.Create(jf.LoadClass(n), target)); var typeBuilders = classTypeBuilders.OrderBy(x => x.Priority).ToList(); typeBuilders.ForEach(x => x.CreateType(null, module, target)); // Implement and finalize types Implement(typeBuilders, target); var assemblyAttributes = new List <NetCustomAttribute>(); if (!importAsStubs) { // Import code var attrType = new NetTypeDefinition(ClassFile.Empty, target, AttributeConstants.Dot42Scope) { Name = AttributeConstants.JavaCodeAttributeName, Namespace = AttributeConstants.Dot42AttributeNamespace }; string hash = JarReferenceHash.ComputeJarReferenceHash(jarFilePath); var attr = new NetCustomAttribute(attrType, hash, Path.GetFileName(jarFilePath)); assemblyAttributes.Add(attr); } // Save CodeGenerator.Generate(folder, module.Types, assemblyAttributes, target, this, target); }
/// <summary> /// Add all items to the command line /// </summary> private static void AddManifestResourceName(IEnumerable<ITaskItem> items, List<ITaskItem> outputItems) { if (items == null) return; foreach (var x in items) { var outputItem = new TaskItem(x); x.CopyMetadataTo(outputItem); var hash = JarReferenceHash.ComputeJarReferenceHash(x.ItemSpec); //outputItem.SetMetadata("ManifestResourceName", hash); outputItem.SetMetadata("LogicalName", hash); outputItems.Add(outputItem); } }
private string GetHash(ClassSource source) { if (source.JarStreamHash != null) { return(source.JarStreamHash); } if (source.JarData != null) { return(JarReferenceHash.ComputeJarReferenceHash(source.JarData)); } return(JarReferenceHash.ComputeJarReferenceHash(source.FileName)); }