Class: SoarSr::JUDDIProvider

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

Constant Summary collapse

MAX_THREADS =
10

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(urns, broker, cache_freshness) ⇒ JUDDIProvider

Returns a new instance of JUDDIProvider.



13
14
15
16
17
18
# File 'lib/soar_sr/juddi_provider.rb', line 13

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

Instance Attribute Details

#brokerObject (readonly)

Returns the value of attribute broker.



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

def broker
  @broker
end

#cacheObject (readonly)

Returns the value of attribute cache.



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

def cache
  @cache
end

#cache_freshnessObject (readonly)

Returns the value of attribute cache_freshness.



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

def cache_freshness
  @cache_freshness
end

#urnsObject (readonly)

Returns the value of attribute urns.



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

def urns
  @urns
end

Instance Method Details

#add_service_uri(service, uri) ⇒ Object



59
60
61
62
63
# File 'lib/soar_sr/juddi_provider.rb', line 59

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



27
28
29
30
31
32
# File 'lib/soar_sr/juddi_provider.rb', line 27

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



20
21
22
23
24
25
# File 'lib/soar_sr/juddi_provider.rb', line 20

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



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

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

#delete_service(name) ⇒ Object



46
47
48
49
# File 'lib/soar_sr/juddi_provider.rb', line 46

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

#delete_service_component(name) ⇒ Object



92
93
94
95
# File 'lib/soar_sr/juddi_provider.rb', line 92

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

#find_businesses(pattern = nil) ⇒ Object



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

def find_businesses(pattern = nil)
  pattern = pattern.nil? ? '%' : "%#{pattern}%"
  key = "find_businesses:#{pattern}"
  lookup_and_cache(key) do
    @broker.find_business(pattern)
  end
end

#find_service_component_uri(service_component) ⇒ Object



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

def find_service_component_uri(service_component)
  key = "find_service_component_uri:#{service_component}"
  lookup_and_cache(key) do
    @broker.find_element_bindings(service_component, @urns['service-components'])
  end
end

#find_service_components(pattern = nil) ⇒ Object



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

def find_service_components(pattern = nil)
  pattern = pattern.nil? ? '%' : "%#{pattern}%"
  key = "find_service_components:#{pattern}"
  lookup_and_cache(key) do
    @broker.find_service_components(pattern)
  end
end

#find_services(pattern = nil) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/soar_sr/juddi_provider.rb', line 51

def find_services(pattern = nil)
  pattern = pattern.nil? ? '%' : "%#{pattern}%"
  key = "find_services:#{pattern}"
  lookup_and_cache(key) do
    @broker.find_services(pattern)
  end
end

#get_business(business_key) ⇒ Object



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

def get_business(business_key)
  key = "get_business:#{business_key}"
  lookup_and_cache(key) do
    @broker.get_business(business_key)
  end
end

#get_service(name) ⇒ Object



34
35
36
37
38
39
# File 'lib/soar_sr/juddi_provider.rb', line 34

def get_service(name)
  key = "get_service:#{name}"
  lookup_and_cache(key) do
    @broker.get_service_element(name, @urns['services'])
  end
end

#get_service_component(name) ⇒ Object



80
81
82
83
84
85
# File 'lib/soar_sr/juddi_provider.rb', line 80

def get_service_component(name)
  key = "get_service_component:#{name}"
  lookup_and_cache(key) do
    @broker.get_service_element(name, @urns['service-components'])
  end
end

#remove_service_uri(service, uri) ⇒ Object



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

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



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

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



41
42
43
44
# File 'lib/soar_sr/juddi_provider.rb', line 41

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



87
88
89
90
# File 'lib/soar_sr/juddi_provider.rb', line 87

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



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

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



73
74
75
76
77
78
# File 'lib/soar_sr/juddi_provider.rb', line 73

def service_uris(service)
  key = "service_uris:#{service}"
  lookup_and_cache(key) do
    @broker.find_element_bindings(service, @urns['services'])
  end
end