Beispiel #1
0
        /// <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);
     }
 }
Beispiel #3
0
        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));
        }