Ejemplo n.º 1
0
        public override string ToString()
        {
            var ret = "";

            if (!String.IsNullOrEmpty(Name))
            {
                ret += NameAttributeName + ":'" + Name + "', ";
            }
            ret += CountAttributeName + ":" + this.Count;
            if (ExtraAttributeNames != null && ExtraAttributes.Count > 0)
            {
                var attr = new List <string>(ExtraAttributes.Count);
                foreach (var key in ExtraAttributeNames)
                {
                    if (ExtraAttributes.ContainsKey(key))
                    {
                        attr.Add("'" + key + "':'" + ExtraAttributes[key] + "'");
                    }
                }
                ret += ", ExtraAttribute:{" + String.Join(", ", attr) + "}";
            }
            if (ExtraElementManager != null && ExtraElement != null)
            {
                ret += ", " + ExtraElementManager.Name + ":{" + ExtraElement + "}";
            }
            return(ret);
        }
Ejemplo n.º 2
0
 public virtual void WriteXml(XmlWriter writer)
 {
     if (Name != null)
     {
         writer.WriteAttributeString(NameAttributeName, Name);
     }
     writer.WriteAttributeString(KeyTypeAttributeName, typeof(TKey).Name);
     writer.WriteAttributeString(CountAttributeName, this.Count.ToString());
     if (ExtraAttributeNames != null)
     {
         foreach (var key in ExtraAttributeNames)
         {
             string val;
             if (ExtraAttributes.ContainsKey(key) &&
                 (val = ExtraAttributes[key]) != null)
             {
                 writer.WriteAttributeString(key, val);
             }
         }
     }
     if (ExtraElementManager != null && ExtraElement != null)
     {
         ExtraElementManager.Serialize(writer, ExtraElement);
     }
     this.ToList().ForEach(item => {
         XmlHelper <TItem> .writeElement(writer, item);
     });
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Read node contents from XmlNode.
        /// </summary>
        /// <param name="item">Source node</param>
        public override void FromXml(XmlNode item)
        {
            SetDefaultName();
            ID       = null;
            ParentID = null;
            ExtraAttributes.Clear();
            Conditions.Clear();
            Actions.Clear();

            foreach (XmlAttribute att in item.Attributes)
            {
                if (att.Name == "id_arme")
                {
                    ID = Helper.GuidTryRead(att.Value, true);
                }
                else if (att.Name == "parent_id_arme")
                {
                    ParentID = Helper.GuidTryRead(att.Value, true);
                }
                else if (att.Name == "name_arme" || att.Name == "name")
                {
                    Name = att.Value;
                }
                else
                {
                    ExtraAttributes.Add(att.Name);
                }
            }

            if (ID == null)
            {
                ID = Guid.NewGuid();
            }
        }
Ejemplo n.º 4
0
        public JavaClassImage(JavaClassFile classFile)
        {
            ClassFile    = classFile;
            RootClass    = new ClassDefinition(this);
            MajorVersion = classFile.MajorVersion;
            MinorVersion = classFile.MinorVersion;

            // Attributes
            foreach (var attr in classFile.Attributes)
            {
                string name = classFile.ConstantPool.ResolveString(attr.NameIndex);
                switch (name)
                {
                // Source file
                case SingleIndexAttribute.SourceFileAttribute:
                    _sourceFile = new LazyValue <string>(() =>
                    {
                        var sourceFile = SingleIndexAttribute.FromReader(name, new MemoryBigEndianReader(attr.Contents));
                        return(classFile.ConstantPool.ResolveString(sourceFile.ConstantPoolIndex));
                    });
                    break;

                case BootstrapMethodsAttribute.AttributeName:
                    _bootstrapMethodsAttribute = BootstrapMethodsAttribute.FromReader(new MemoryBigEndianReader(attr.Contents));
                    break;

                default:
                    ExtraAttributes.Add(name, attr.Clone());
                    break;
                }
            }
        }
Ejemplo n.º 5
0
        internal FieldDefinition(JavaClassImage classImage, FieldInfo fieldInfo)
        {
            // Name
            _name = new LazyValue <string>(() =>
                                           classImage.ClassFile.ConstantPool.ResolveString(fieldInfo.NameIndex)
                                           ?? $"<<<INVALID({fieldInfo.NameIndex})>>>");

            // Access flags.
            AccessFlags = fieldInfo.AccessFlags;

            // Descriptor.
            _descriptor = new LazyValue <FieldDescriptor>(() =>
                                                          classImage.ResolveFieldDescriptor(fieldInfo.DescriptorIndex));

            // Extra attributes.
            foreach (var attr in fieldInfo.Attributes)
            {
                string name = classImage.ClassFile.ConstantPool.ResolveString(attr.NameIndex);
                switch (name)
                {
                case SingleIndexAttribute.ConstantValueAttribute:
                    // Constant
                    _constant = new LazyValue <object>(() =>
                    {
                        var contents =
                            SingleIndexAttribute.FromReader(name, new MemoryBigEndianReader(attr.Contents));
                        var constantInfo =
                            classImage.ClassFile.ConstantPool.ResolveConstant(contents.ConstantPoolIndex);
                        switch (constantInfo)
                        {
                        case PrimitiveInfo primitiveInfo:
                            return(primitiveInfo.Value);

                        case StringInfo stringInfo:
                            return(classImage.ClassFile.ConstantPool.ResolveString(stringInfo.StringIndex));

                        default:
                            return(null);
                        }
                    });
                    break;

                default:
                    // Fall back method:
                    ExtraAttributes.Add(classImage.ClassFile.ConstantPool.ResolveString(attr.NameIndex),
                                        attr.Clone());
                    break;
                }
            }
        }
Ejemplo n.º 6
0
        internal ClassDefinition(JavaClassImage classImage)
            : base(classImage, (ClassInfo)classImage.ClassFile.ConstantPool.ResolveConstant(classImage.ClassFile.ThisClass))
        {
            Image = classImage;

            // Super class
            _superClass = new LazyValue <ClassReference>(() =>
                                                         classImage.ClassFile.SuperClass != 0
                    ? new ClassReference(classImage,
                                         (ClassInfo)classImage.ClassFile.ConstantPool.ResolveConstant(classImage.ClassFile.SuperClass))
                    : null);

            // Flags
            AccessFlags = classImage.ClassFile.AccessFlags;

            // Fields
            Fields = new FieldCollection(this);
            foreach (var field in classImage.ClassFile.Fields)
            {
                Fields.Add(new FieldDefinition(classImage, field));
            }

            // Methods
            Methods = new MethodCollection(this);
            foreach (var method in classImage.ClassFile.Methods)
            {
                Methods.Add(new MethodDefinition(classImage, method));
            }

            // Attributes
            foreach (var attr in classImage.ClassFile.Attributes)
            {
                string name = classImage.ClassFile.ConstantPool.ResolveString(attr.NameIndex);
                switch (name)
                {
                // Source file
                case SingleIndexAttribute.SourceFileAttribute:
                    _sourceFile = new LazyValue <string>(() =>
                    {
                        var sourceFile = SingleIndexAttribute.FromReader(name, new MemoryBigEndianReader(attr.Contents));
                        return(classImage.ClassFile.ConstantPool.ResolveString(sourceFile.ConstantPoolIndex));
                    });
                    break;

                default:
                    ExtraAttributes.Add(name, attr.Clone());
                    break;
                }
            }
        }
Ejemplo n.º 7
0
        internal MethodDefinition(JavaClassImage classImage, MethodInfo methodInfo)
        {
            // Name
            _name = new LazyValue <string>(() =>
                                           classImage.ClassFile.ConstantPool.ResolveString(methodInfo.NameIndex) ?? $"<<<INVALID({methodInfo.NameIndex})>>>");

            // Flags
            AccessFlags = methodInfo.AccessFlags;

            //Descriptor
            _descriptor = new LazyValue <MethodDescriptor>(() =>
                                                           classImage.ResolveMethodDescriptor(methodInfo.DescriptorIndex));

            // Attributes
            foreach (var attribute in methodInfo.Attributes)
            {
                string name = classImage.ClassFile.ConstantPool.ResolveString(attribute.NameIndex);
                switch (name)
                {
                // Code
                case CodeAttribute.AttributeName:
                    _body = new LazyValue <ByteCodeMethodBody>(() =>
                    {
                        var reader = new MemoryBigEndianReader(attribute.Contents);
                        return(new ByteCodeMethodBody(classImage, CodeAttribute.FromReader(reader)));
                    });
                    break;

                // Exceptions
                case ExceptionsAttribute.AttributeName:
                    _exceptions = new LazyValue <IList <ClassReference> >(() =>
                    {
                        var reader = new MemoryBigEndianReader(attribute.Contents);
                        var attr   = ExceptionsAttribute.FromReader(reader);
                        return(attr.Exceptions
                               .Select(index => classImage.ResolveClass(index))
                               .ToList());
                    });
                    break;

                default:
                    ExtraAttributes.Add(name, attribute.Clone());
                    break;
                }
            }
        }
Ejemplo n.º 8
0
        public object SaveRemarks(AssetRemarkContainer assetRemark)
        {
            var maximoTable = assetRemark.EntityMetadata.Name;
            var extraField  = _dao.FindSingleByQuery <ExtraAttributes>(ExtraAttributes.ByMaximoTABLEIdAndAttribute, maximoTable, assetRemark.Id,
                                                                       "remarks");

            if (extraField == null)
            {
                extraField = new ExtraAttributes {
                    AttributeName = "remarks",
                    MaximoId      = assetRemark.Id,
                    MaximoTable   = maximoTable
                };
            }
            extraField.AttributeValue = assetRemark.Remark;
            return(_dao.Save(extraField));
        }
Ejemplo n.º 9
0
        internal ByteCodeMethodBody(JavaClassImage classImage, CodeAttribute attribute)
        {
            MaxStack = attribute.MaxStack;

            // Read instructions.
            var disassembler = new ByteCodeDisassembler(new MemoryBigEndianReader(attribute.Code))
            {
                OperandResolver = new DefaultOperandResolver(classImage)
            };

            foreach (var instruction in disassembler.ReadInstructions())
            {
                Instructions.Add(instruction);
            }

            // Read exception handlers.
            foreach (var handler in attribute.ExceptionHandlers)
            {
                ExceptionHandlers.Add(new ExceptionHandler(classImage, this, handler));
            }

            // Read attributes.
            foreach (var attr in attribute.Attributes)
            {
                string name = classImage.ClassFile.ConstantPool.ResolveString(attr.NameIndex);
                switch (name)
                {
                // Local variables
                case LocalVariableTableAttribute.AttributeName:
                    var localsTable = LocalVariableTableAttribute.FromReader(new MemoryBigEndianReader(attr.Contents));
                    foreach (var info in localsTable.LocalVariables)
                    {
                        Variables.Add(new LocalVariable(classImage, this, info));
                    }
                    break;


                default:
                    ExtraAttributes.Add(name, attr.Clone());
                    break;
                }
            }
        }