class RestfulObjects::DomainType
Attributes
actions[R]
collections[R]
description[RW]
friendly_name[RW]
id[R]
is_service[R]
plural_name[RW]
properties[R]
Public Class Methods
new(id)
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 11 def initialize(id) @id = id @properties = {} @collections = {} @actions = {} @is_service = false @friendly_name = '' @plural_name = '' @description = '' end
Public Instance Methods
get_representation()
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 37 def get_representation { 'name' => @id, 'domainType' => @id, 'friendlyName' => @friendly_name, 'pluralName' => @plural_name, 'description' => @description, 'isService' => @is_service, 'members' => get_members, 'typeActions' => get_type_actions, 'links' => [ link_to(:self, "/domain-types/#{@id}", :domain_type) ], 'extensions' => {} }.to_json end
metadata()
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 86 def metadata { 'domainType' => id, 'friendlyName' => friendly_name, 'pluralName' => plural_name, 'description' => description, 'isService' => is_service } end
new_proto_persistent_object()
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 51 def new_proto_persistent_object persist_link = link_to(:persist, "/objects/#{id}", :object, method: 'POST') persist_link['arguments'] = { 'members' => {} } members = {} properties.each do |name, property| if not property.optional persist_link['arguments']['members'][name] = { 'value' => nil, 'extensions' => property.metadata } end members[name] = { 'value' => nil } end { 'title' => "New #{id}", 'members' => members, 'links' => [ persist_link ], 'extensions' => {} } end
post_prototype_object(members_json)
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 70 def post_prototype_object(members_json) members = JSON.parse(members_json)['members'] new_object = Object.const_get(@id.to_sym).new members.each do |name, value| if properties.include?(name) then new_object.ro_put_property_and_get_response(name, value.to_json) else raise "member of property '#{name}' not found in type '#{@id}'" end end new_object.ro_get_representation_response end
register_action(name, options = {})
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 32 def register_action(name, options = {}) options[:member_order] ||= @actions.count + 1 @actions[name] = RestfulObjects::ActionDescription.new(name, @id, options) end
register_collection(name, type, options = {})
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 27 def register_collection(name, type, options = {}) options[:member_order] ||= @collections.count + 1 @collections[name] = RestfulObjects::CollectionDescription.new(name, type, @id, options) end
register_property(name, return_type, options = {})
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 22 def register_property(name, return_type, options = {}) options[:member_order] ||= @properties.count + 1 @properties[name] = RestfulObjects::PropertyDescription.new(name, @id, return_type, options) end
Protected Instance Methods
actions_members()
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 116 def actions_members result = {} @actions.each do |name, action| result[name] = link_to(:action, "/domain-types/#{@id}/actions/#{name}", :action_description) end result end
collections_members()
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 108 def collections_members result = {} @collections.each do |name, collection| result[name] = link_to(:collection, "/domain-types/#{@id}/collections/#{name}", :collection_description) end result end
get_members()
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 96 def get_members ro_properties_members.merge(collections_members.merge(actions_members)) end
get_type_actions()
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 124 def get_type_actions {} end
properties_members()
click to toggle source
# File lib/restful_objects/domain_model/types/domain_type.rb, line 100 def properties_members result = {} @properties.each do |name, property| result[name] = link_to(:property, "/domain-types/#{@id}/properties/#{name}", :property_description) end result end