Class: Uddi4r::Client

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

Overview

Uddi4r::Client

This is the main class for UDDI inquiry services. It supports all the UDDI inquiry operations specified in UDDI Programmers API V2. For details about the UDDI V2 Specification, visit:

uddi.org/pubs/ProgrammersAPI-V2.04-Published-20020719.htm

Using the client

You can construct the client with a URL string to the UDDI server or a Uddi4r::Connection object. You can then invoke all UDDI inquiry operations by calling the appropriate API methods and passing a hash of arguments.

For example, the following code queires the Microsoft Test UDDI for businesses that have “Microsoft” as part of their names:

client = Uddi4r::Client.new("http://test.uddi.microsoft.com/inquire")
businesses = client.find_business(:name=>"Microsoft")

Simple and advanced arguments

There are two type of arguments that you can pass, simple and advanced. Simple arguments are either String or Array of String, as in the example above. These types of arguments will give you the commonly used inquiry capabilities.

Advanced arguments are Uddi4r::Model objects that provide advanced capabilities such as findQualifiers, tModelBags, categoryBags, etc. See the specficiation for details.

Following example uses a findQualifer to do a case-sensitivity to the previous example:

businesses = client.find_business(:name=>"Microsoft",
                find_qualifers=>Uddi4r::FindQualifers("caseSensitiveMatch")

Return types

All client API methods return Uddi4r::Model objects.

Not supported

The get_businessDetailExt operation is not supported in this release.

Instance Method Summary collapse

Constructor Details

#initialize(connection, debug = false) ⇒ Client

Create a UDDI inquiry object for invoking inquiry operations.

connection

String with endpoint or Uddi4r::Connection

debug

Boolean for showing low-level wire communication.



51
52
53
54
# File 'lib/client.rb', line 51

def initialize(connection, debug=false)
  @conn = (connection.is_a? Connection) ? connection :
    Connection.new(connection, "2.0", debug)
end

Instance Method Details

#find_binding(args) ⇒ Object

Find binding detail for a given service and tModels.

Returns

Uddi4r::BindingDetail

Simple arguments

service_key

String for service. (required)

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

t_model_bag

Uddi4r::TModelBag (required)

Example

binding_detil = client.find_binding(:service_key=>"7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED",
                  :t_model_bag=>Uddi4r::TModelBag.new("uuid:928A64AB-E277-32FA-0ABA-A28CE9E5E6A5"))


66
67
68
69
70
71
72
73
74
# File 'lib/client.rb', line 66

def find_binding(args)
  service_key = required(args, :service_key, String)
  args[:t_model_bag] = TModelBag.new(args[:t_model_keys]) if args[:t_model_keys]
  operation = @conn.create_operation("find_binding",
    {"serviceKey"=>required(args, :service_key, String)},
    args[:find_qualifier], "tModelBag"=>required(args, :t_model_bag, TModelBag)
  );
  BindingDetail.create_from(@conn.invoke_operation(operation))
end

#find_business(args = {}) ⇒ Object

Find businesses matching a given name.

Returns

Uddi4r::BusinessList

Simple arguments

name

String for full or partial name

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

identifier_bag

Uddi4r::IdentifierBag

category_bag

Uddi4r::CategoryBag

t_model_bag

Uddi4r::TModelBag

discovery_urls

Uddi4r::DiscoveryURLs

Examples

businesses = client.find_business(:name=>"Microsoft")

businesses = client.find_business(:name=>"Microsoft",
  FindQualifiers.new("exactMatch"))


91
92
93
94
95
96
97
# File 'lib/client.rb', line 91

def find_business(args={})
  operation = @conn.create_operation("find_business", {}, 
    args[:find_qualifiers], {"name"=>args[:name]},
    args[:identifier_bag], args[:category_bag],
    args[:t_model_bag],args[:discovery_urls])
  BusinessList.create_from(@conn.invoke_operation(operation))
end

Find businesses related to a given business.

Returns

Uddi4r::RelatedBusinessesList.

Simple arguments

business_key

String for business key (required)

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

Example

related_bizs = client.find_related_business(:business_key=>"7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED")


107
108
109
110
111
112
# File 'lib/client.rb', line 107

def find_related_businesses(args={})
  operation = @conn.create_operation("find_relatedBusinesses", {}, 
    args[:find_qualifiers],
    {"businessKey"=>required(args, :business_key, String)})
  RelatedBusinessesList.create_from(@conn.invoke_operation(operation))
end

#find_service(args = {}) ⇒ Object

Find services for given business key or name.

Returns

Uddi4r::ServiceList

Simple arguments

business_key

String for business key

names

Array of service name String, or

name

String for service name

Advanced arguments

find_qualifiers

Uddi4r::FindQualifiers

t_model_bag

Uddi4r::TModelBag

Example

services = client.find_service(:name=>"Currency Conversion")


125
126
127
128
129
130
131
132
133
# File 'lib/client.rb', line 125

def find_service(args={})
  # create array if only one given    
  names = args[:name] ? [ args[:name] ] : args[:names]
  operation = @conn.create_operation("find_service", 
    {:business_key=>args[:business_key]},
    @conn.create_elements("name", *names),
    args[:t_model_bag])
  ServiceList.create_from(@conn.invoke_operation(operation))
end

#get_binding_detail(args) ⇒ Object

Get binding detail for given binding key.

Returns

Uddi4r::BindingDetail

Simple arguments

binding_keys

Array of binding key String, or

binding_key

String for binding key

Example

bd = client.get_binding(:binding_key=>"C7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED")
url = bd.binding_template.first.access_point()


143
144
145
146
147
148
149
150
# File 'lib/client.rb', line 143

def get_binding_detail(args)
  # create array if only one given
  args[:binding_keys] = [args[:binding_key]] if args[:binding_key]
  operation = @conn.create_operation("get_bindingDetail", {},
    @conn.create_elements("bindingKey", *required(args, :binding_keys, Array) )
  )
  BindingDetail.create_from(@conn.invoke_operation(operation))
end

#get_business_detail(args) ⇒ Object

Get business detail for given business key.

Returns

Uddi4r::BusinessDetail

Simple arguments

business_keys

Array of business key String, or

business_key

String for business key

Example

biz = client.get_business_detail(:business_keys=>["C7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED", "..."])


159
160
161
162
163
164
# File 'lib/client.rb', line 159

def get_business_detail(args)
  args[:business_keys] = [args[:business_key]] if args[:business_key]
  operation = @conn.create_operation("get_businessDetail", {},
    @conn.create_elements("businessKey", *required(args, :business_keys, Array)))
  BusinessDetail.create_from(@conn.invoke_operation(operation))           
end

#get_service_detail(args) ⇒ Object

Get service detail for given service key or keys.

Returns

Uddi4r::ServiceDetail

Simple arguments

service_keys

Array of service key String, or

service_key

String for service key

Example

service_details = client.get_service_detail(:service_keys=>["C7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED", "..."])


187
188
189
190
191
192
# File 'lib/client.rb', line 187

def get_service_detail(args)
  args[:service_keys] = [args[:service_key]] if args[:service_key]
  operation = @conn.create_operation("get_serviceDetail", {},
    @conn.create_elements("serviceKey", *required(args, :service_keys, Array)))
  ServiceDetail.create_from(@conn.invoke_operation(operation))
end

#get_t_model_detail(args) ⇒ Object

Get tModel detail for given tModel key or keys.

Returns

Uddi4r::TModelDetail

Simple arguments

t_model_keys

Array of tModel key String, or

t_model_key

String for tModel key

Example

t_models = client.get_t_model_detail(:t_model_keys=>["C7CEAB5C2-D40E-1E0C-7942-99C64EF3C1ED", "..."])


173
174
175
176
177
178
# File 'lib/client.rb', line 173

def get_t_model_detail(args)
  args[:t_model_keys] = [args[:t_model_key]] if args[:t_model_key]
  operation = @conn.create_operation("get_tModelDetail", {},
    @conn.create_elements("tModelKey", *required(args, :t_model_keys, Array)))
  TModelDetail.create_from(@conn.invoke_operation(operation))
end