class RestfulObjects::DomainModel
Attributes
base_url[RW]
compatible_mode[RW]
metadata_schema[R]
objects[R]
services[R]
types[R]
user[R]
version[R]
Public Class Methods
current()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 14 def self.current @current ||= DomainModel.new end
current=(value)
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 18 def self.current=(value) @current = value end
new()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 22 def initialize @base_url = 'http://localhost' @metadata_schema = :selectable @compatible_mode = false @user = User.new(@base_url, 'anonymous') @types = {} @services = {} @objects = {} @services.instance_eval do alias :base_accesor :[] def [](key) value = base_accesor(key) if value.is_a?(Class) value = value.new self[key] = value end value end end end
Public Instance Methods
[](key)
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 33 def [](key) value = base_accesor(key) if value.is_a?(Class) value = value.new self[key] = value end value end
get_homepage_representation()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 61 def get_homepage_representation { 'links' => [ link_to(:self, '/', :homepage), link_to(:user, '/user', :user), link_to(:services, '/services', :list), link_to(:version, '/version', :version), link_to(:domain_types, '/domain-types', :type_list) ], 'extensions' => {} } end
get_homepage_representation_response()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 57 def get_homepage_representation_response [HTTP_OK, { 'Content-Type' => 'application/json' }, get_homepage_representation.to_json] end
get_services()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 93 def get_services { 'links' => [ link_to(:self, '/services', :services), link_to(:up, '/', :homepage), ], 'value' => services_generate_values, 'extensions' => { } }.to_json end
get_type_list_representation()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 103 def get_type_list_representation { 'value' => @types.each_value.map { |type| link_to(:domain_type, "/domain-types/#{type.id}", :domain_type) }, 'links' => [link_to(:self, '/domain-types', :type_list), link_to(:up, '/', :homepage)] }.to_json end
get_user()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 89 def get_user @user.get_as_json end
get_version_representation()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 76 def get_version_representation { 'links' => [ link_to(:self, '/version', :version), link_to(:up, '/', :homepage) ], 'specVersion' => '1.0', 'optionalCapabilities' => { 'blobsClobs' => true, 'deleteObjects' => true, 'domainModel' => metadata_schema.to_s, 'protoPersistentObjects' => true, 'validateOnly' => false }, 'extensions' => {} } end
get_version_representation_response()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 72 def get_version_representation_response [HTTP_OK, { 'Content-Type' => 'application/json' }, get_version_representation.to_json] end
metadata_schema=(value)
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 110 def metadata_schema=(value) if not [:simple, :formal, :selectable].include?(value) raise "invalid metadata schema, choose :simple, :formal or :selectable" end @metadata_schema = value end
register_object(instance)
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 44 def register_object(instance) @objects[instance.object_id] = instance end
register_service(service)
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 48 def register_service(service) raise 'service registration should be done with a class' unless service.is_a?(Class) @services[service.name] = service end
register_type(name)
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 53 def register_type(name) @types[name] = DomainType.new(name) end
reset()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 117 def reset @base_url = 'http://localhost' @user = nil @types.clear @services.clear @objects.clear end
reset_objects()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 125 def reset_objects @objects.clear end
Private Instance Methods
services_ensure_all_created()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 142 def services_ensure_all_created @services.each { |name, value| @services[name] = value.new if value.is_a? Class } end
services_generate_values()
click to toggle source
# File lib/restful_objects/domain_model/domain_model.rb, line 131 def services_generate_values services_ensure_all_created values = [] @services.each do |name, service| element = link_to(:service, "/services/#{name}", :object, service_id: name) element['title'] = service.ro_title values << element end values end