Class: SoarSr::JUDDIProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/soar_sr/juddi_provider.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(urns, broker, cache_freshness) ⇒ JUDDIProvider

Returns a new instance of JUDDIProvider.



11
12
13
14
15
# File 'lib/soar_sr/juddi_provider.rb', line 11

def initialize(urns, broker, cache_freshness)
  @urns = urns
  @broker = broker
  @cache = Persistent::Cache.new("uddi-broker", cache_freshness, Persistent::Cache::STORAGE_RAM)
end

Instance Attribute Details

#brokerObject (readonly)

Returns the value of attribute broker.



7
8
9
# File 'lib/soar_sr/juddi_provider.rb', line 7

def broker
  @broker
end

#cacheObject (readonly)

Returns the value of attribute cache.



9
10
11
# File 'lib/soar_sr/juddi_provider.rb', line 9

def cache
  @cache
end

#urnsObject (readonly)

Returns the value of attribute urns.



8
9
10
# File 'lib/soar_sr/juddi_provider.rb', line 8

def urns
  @urns
end

Instance Method Details

#add_service_uri(service, uri) ⇒ Object



57
58
59
60
61
# File 'lib/soar_sr/juddi_provider.rb', line 57

def add_service_uri(service, uri)
  result = remove_service_uri(service, uri)
  result = save_service_uri(service, uri) if result['status'] == 'success'
  result
end

#assign_service_component_to_business(name, business_key = @urns['company']) ⇒ Object



24
25
26
27
28
29
# File 'lib/soar_sr/juddi_provider.rb', line 24

def assign_service_component_to_business(name, business_key = @urns['company'])
  @broker.authorize
  result = get_service_component(name)
  service = result['data']
  @broker.save_service_element(service['name'], service['description'], service['definition'], @urns['service-components'], business_key)
end

#assign_service_to_business(name, business_key = @urns['company']) ⇒ Object



17
18
19
20
21
22
# File 'lib/soar_sr/juddi_provider.rb', line 17

def assign_service_to_business(name, business_key = @urns['company'])
  @broker.authorize
  result = get_service(name)
  service = result['data']
  @broker.save_service_element(service['name'], service['description'], service['definition'], @urns['services'], business_key)
end

#delete_business(key) ⇒ Object



139
140
141
142
# File 'lib/soar_sr/juddi_provider.rb', line 139

def delete_business(key)
  @broker.authorize
  @broker.delete_business(key)
end

#delete_service(name) ⇒ Object



43
44
45
46
# File 'lib/soar_sr/juddi_provider.rb', line 43

def delete_service(name)
  @broker.authorize
  @broker.delete_service_element(name, @urns['services'])
end

#delete_service_component(name) ⇒ Object



90
91
92
93
# File 'lib/soar_sr/juddi_provider.rb', line 90

def delete_service_component(name)
  @broker.authorize
  @broker.delete_service_element(name, @urns['service-components'])
end

#find_businesses(pattern = nil) ⇒ Object



131
132
133
134
135
136
137
# File 'lib/soar_sr/juddi_provider.rb', line 131

def find_businesses(pattern = nil)
  pattern = pattern.nil? ? '%' : "%#{pattern}%"
  cached = @cache["find_businesses:#{pattern}"]; return cached if cached
  value = @broker.find_business(pattern)
  @cache["find_businesses:#{pattern}"] = value
  value
end

#find_service_component_uri(service_component) ⇒ Object



112
113
114
115
116
117
# File 'lib/soar_sr/juddi_provider.rb', line 112

def find_service_component_uri(service_component)
  cached = @cache["find_service_component_uri:#{service_component}"]; return cached if cached
  value = @broker.find_element_bindings(service_component, @urns['service-components'])
  @cache["find_service_component_uri:#{service_component}"] = value
  value
end

#find_service_components(pattern = nil) ⇒ Object



95
96
97
98
99
100
101
102
# File 'lib/soar_sr/juddi_provider.rb', line 95

def find_service_components(pattern = nil)
  pattern = pattern.nil? ? '%' : "%#{pattern}%"
  cached = @cache["find_service_components:#{pattern}"]; return cached if cached

  value = @broker.find_service_components(pattern)
  @cache["find_service_components:#{pattern}"] = value
  value
end

#find_services(pattern = nil) ⇒ Object



48
49
50
51
52
53
54
55
# File 'lib/soar_sr/juddi_provider.rb', line 48

def find_services(pattern = nil)
  pattern = pattern.nil? ? '%' : "%#{pattern}%"

  cached = @cache["find_services:#{pattern}"]; return cached if cached
  value = @broker.find_services(pattern)
  @cache["find_services:#{pattern}"] = value
  value
end

#get_business(key) ⇒ Object



124
125
126
127
128
129
# File 'lib/soar_sr/juddi_provider.rb', line 124

def get_business(key)
  cached = @cache["get_business:#{key}"]; return cached if cached
  value = @broker.get_business(key)
  @cache["get_business:#{key}"] = value
  value
end

#get_service(name) ⇒ Object



31
32
33
34
35
36
# File 'lib/soar_sr/juddi_provider.rb', line 31

def get_service(name)
  cached = @cache["get_service:#{name}"]; return cached if cached
  value = @broker.get_service_element(name, @urns['services'])
  @cache["get_service:#{name}"] = value
  value
end

#get_service_component(name) ⇒ Object



78
79
80
81
82
83
# File 'lib/soar_sr/juddi_provider.rb', line 78

def get_service_component(name)
  cached = @cache["get_service_component:#{name}"]; return cached if cached
  value = @broker.get_service_element(name, @urns['service-components'])
  @cache["get_service_component:#{name}"] = value
  value
end

#remove_service_uri(service, uri) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/soar_sr/juddi_provider.rb', line 63

def remove_service_uri(service, uri)
  @broker.authorize
  result = service_uris(service)
  existing_id = has_existing_binding?(result['data']['bindings'], uri) if has_bindings?(result)
  result = @broker.delete_binding(existing_id) if existing_id
  result
end

#save_business(key, name, description = nil, contacts = nil) ⇒ Object



119
120
121
122
# File 'lib/soar_sr/juddi_provider.rb', line 119

def save_business(key, name, description = nil, contacts = nil)
  @broker.authorize
  @broker.save_business(key, name, description, contacts)
end

#save_service(name, description = nil, definition = nil) ⇒ Object



38
39
40
41
# File 'lib/soar_sr/juddi_provider.rb', line 38

def save_service(name, description = nil, definition = nil)
  @broker.authorize
  @broker.save_service_element(name, description.is_a?(Array) ? description : [description], definition, @urns['services'], @urns['company'])
end

#save_service_component(name, description = nil, definition = nil) ⇒ Object



85
86
87
88
# File 'lib/soar_sr/juddi_provider.rb', line 85

def save_service_component(name, description = nil, definition = nil)
  @broker.authorize
  @broker.save_service_element(name, description.is_a?(Array) ? description : [description], definition, @urns['service-components'], @urns['company'])
end

#save_service_component_uri(service_component, uri) ⇒ Object



104
105
106
107
108
109
110
# File 'lib/soar_sr/juddi_provider.rb', line 104

def save_service_component_uri(service_component, uri)
  @broker.authorize
  result = @broker.find_element_bindings(service_component, @urns['service-components'])
  # only one binding for service components
  delete_existing_bindings(result['data']['bindings']) if has_bindings?(result)
  @broker.save_element_bindings(service_component, [uri], @urns['service-components'], "service component")
end

#service_uris(service) ⇒ Object



71
72
73
74
75
76
# File 'lib/soar_sr/juddi_provider.rb', line 71

def service_uris(service)
  cached = @cache["service_uris:#{service}"]; return cached if cached
  value = @broker.find_element_bindings(service, @urns['services'])
  @cache["service_uris:#{service}"] = value
  value
end