Class: VimSdk::Vmodl::DataObject
- Inherits:
-
Object
- Object
- VimSdk::Vmodl::DataObject
- Defined in:
- lib/ruby_vim_sdk/vmodl/data_object.rb
Direct Known Subclasses
Class Attribute Summary collapse
-
.type_info ⇒ Object
readonly
Returns the value of attribute type_info.
Class Method Summary collapse
- .build_property_indices ⇒ Object
- .finalize ⇒ Object
- .property(options = {}) ⇒ Object
- .property_list(include_base_class_props = true) ⇒ Object
Instance Method Summary collapse
-
#initialize(properties = {}) ⇒ DataObject
constructor
A new instance of DataObject.
Constructor Details
#initialize(properties = {}) ⇒ DataObject
Returns a new instance of DataObject.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/ruby_vim_sdk/vmodl/data_object.rb', line 67 def initialize(properties = {}) self.class.property_list.each do |property| subclasses = Set.new(property.type.ancestors) if subclasses.include?(Array) default_value = property.type.new elsif property.optional? default_value = nil elsif property.type == SoapBoolean default_value = false elsif subclasses.include?(SoapEnum) default_value = nil elsif subclasses.include?(String) default_value = "" elsif [SoapByte, SoapShort, SoapLong, SoapInteger].include?(property.type) default_value = 0 elsif [SoapFloat, SoapDouble].include?(property.type) default_value = 0.0 else default_value = nil end instance_variable_set("@#{property.name}", default_value) end properties.each do |key, value| if self.class.property(:name => key.to_s) instance_variable_set("@#{key}", value) else raise "Invalid property: #{key}" end end end |
Class Attribute Details
.type_info ⇒ Object (readonly)
Returns the value of attribute type_info.
8 9 10 |
# File 'lib/ruby_vim_sdk/vmodl/data_object.rb', line 8 def type_info @type_info end |
Class Method Details
.build_property_indices ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/ruby_vim_sdk/vmodl/data_object.rb', line 38 def build_property_indices @property_by_name = {} @property_by_wsdl_name = {} property_list.each do |property| @property_by_name[property.name] = property @property_by_wsdl_name[property.wsdl_name] = property end end |
.finalize ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/ruby_vim_sdk/vmodl/data_object.rb', line 55 def finalize build_property_indices @type_info.properties.each do |property| property.type = VmomiSupport.loaded_type(property.type) if property.type.kind_of?(String) self.instance_eval do attr_accessor(property.name) end end end |
.property(options = {}) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/ruby_vim_sdk/vmodl/data_object.rb', line 47 def property( = {}) if [:name] @property_by_name[[:name]] elsif [:wsdl_name] @property_by_wsdl_name[[:wsdl_name]] end end |
.property_list(include_base_class_props = true) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/ruby_vim_sdk/vmodl/data_object.rb', line 14 def property_list(include_base_class_props = true) return properties unless include_base_class_props return @resolved_properties unless @resolved_properties.nil? result = [] property_names = Set.new current_class = self while current_class != DataObject properties = current_class.type_info.properties if properties properties.reverse.each do |property| unless property_names.include?(property.name) result.unshift(property) property_names << property.name end end end current_class = current_class.superclass end @resolved_properties = result end |