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); }
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); }); }
/// <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(); } }
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; } } }
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; } } }
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; } } }
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; } } }
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)); }
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; } } }