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