1UDDI::Lite(3) User Contributed Perl Documentation UDDI::Lite(3)
2
3
4
6 UDDI::Lite - Library for UDDI clients in Perl
7
9 use UDDI::Lite;
10 print UDDI::Lite
11 -> proxy('http://uddi.microsoft.com/inquire')
12 -> find_business(name => 'old')
13 -> result
14 -> businessInfos->businessInfo->serviceInfos->serviceInfo->name;
15
16 The same code with autodispatch:
17
18 use UDDI::Lite +autodispatch =>
19 proxy => 'http://uddi.microsoft.com/inquire'
20 ;
21
22 print find_business(name => 'old')
23 -> businessInfos->businessInfo->serviceInfos->serviceInfo->name;
24
25 Or with importing:
26
27 use UDDI::Lite
28 'UDDI::Lite' => [':inquiry'],
29 proxy => 'http://uddi.microsoft.com/inquire'
30 ;
31
32 print find_business(name => 'old')
33 -> businessInfos->businessInfo->serviceInfos->serviceInfo->name;
34
35 Publishing API:
36
37 use UDDI::Lite
38 import => ['UDDI::Data'],
39 import => ['UDDI::Lite'],
40 proxy => "https://some.server.com/endpoint_fot_publishing_API";
41
42 my $auth = get_authToken({userID => 'USERID', cred => 'CRED'})->authInfo;
43 my $busent = with businessEntity =>
44 name("Contoso Manufacturing"),
45 description("We make components for business"),
46 businessKey(''),
47 businessServices with businessService =>
48 name("Buy components"),
49 description("Bindings for buying our components"),
50 serviceKey(''),
51 bindingTemplates with bindingTemplate =>
52 description("BASDA invoices over HTTP post"),
53 accessPoint('http://www.contoso.com/buy.asp'),
54 bindingKey(''),
55 tModelInstanceDetails with tModelInstanceInfo =>
56 description('some tModel'),
57 tModelKey('UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4')
58 ;
59 print save_business($auth, $busent)->businessEntity->businessKey;
60
62 UDDI::Lite for Perl is a collection of Perl modules which provides a
63 simple and lightweight interface to the Universal Description,
64 Discovery and Integration (UDDI) server.
65
66 To learn more about UDDI, visit http://www.uddi.org/.
67
68 The main features of the library are:
69
70 · Supports both inquiry and publishing API
71
72 · Builded on top of SOAP::Lite module, hence inherited syntax and
73 features
74
75 · Supports easy-to-use interface with convenient access to
76 (sub)elements and attributes
77
78 · Supports HTTPS protocol
79
80 · Supports SMTP protocol
81
82 · Supports Basic/Digest server authentication
83
85 This table should give you a quick overview of the classes provided by
86 the library.
87
88 UDDI::Lite.pm
89 -- UDDI::Lite -- Main class provides all logic
90 -- UDDI::Data -- Provides extensions for serialization architecture
91 -- UDDI::Serializer -- Serializes data structures to UDDI/SOAP package
92 -- UDDI::Deserializer -- Deserializes result into objects
93 -- UDDI::SOM -- Provides access to deserialized object tree
94
95 UDDI::Lite
96 All methods that UDDI::Lite gives you access to can be used for both
97 setting and retrieving values. If you provide no parameters, you'll get
98 current value, and if you'll provide parameter(s), new value will be
99 assigned and method will return object (if not stated something else).
100 This is suitable for stacking these calls like:
101
102 $uddi = UDDI::Lite
103 -> on_debug(sub{print@_})
104 -> proxy('http://uddi.microsoft.com/inquire')
105 ;
106
107 Order is insignificant and you may call new() method first. If you
108 don't do it, UDDI::Lite will do it for you. However, new() method gives
109 you additional syntax:
110
111 $uddi = new UDDI::Lite
112 on_debug => sub {print@_},
113 proxy => 'http://uddi.microsoft.com/inquire'
114 ;
115
116 new() accepts hash with method names and values, and will call
117 appropriate method with passed value.
118
119 Since new() is optional it won't be mentioned anymore.
120
121 Other available methods inherited from SOAP::Lite and most usable are:
122
123 proxy()
124 Shortcut for "transport->proxy()". This lets you specify an
125 endpoint and also loads the required module at the same time. It is
126 required for dispatching SOAP calls. The name of the module will be
127 defined depending on the protocol specific for the endpoint.
128 SOAP::Lite will do the rest work.
129
130 on_fault()
131 Lets you specify handler for on_fault event. Default behavior is
132 die on transport error and does nothing on others. You can change
133 this behavior globally or locally, for particular object.
134
135 on_debug()
136 Lets you specify handler for on_debug event. Default behavior is do
137 nothing. Use +trace/+debug option for UDDI::Lite instead.
138
139 To change to UDDI Version 2, use the following pragma:
140
141 use UDDI::Lite uddiversion => 2;
142
143 UDDI::Data
144 You can use this class if you want to specify value and name for UDDI
145 elements. For example, "UDDI::Data->name('businessInfo')->value(123)"
146 will be serialized to "<businessInfo>123</businessInfo>", as well as
147 "UDDI::Data-"name(businessInfo => 123)>.
148
149 If you want to provide names for your parameters you can either specify
150
151 find_business(name => 'old')
152
153 or do it with UDDI::Data:
154
155 find_business(UDDI::Data->name(name => 'old'))
156
157 Later has some advantages: it'll work on any level, so you can do:
158
159 find_business(UDDI::Data->name(name => UDDI::Data->name(subname => 'old')))
160
161 and also you can create arrays with this syntax:
162
163 find_business(UDDI::Data->name(name =>
164 [UDDI::Data->name(subname1 => 'name1'),
165 UDDI::Data->name(subname2 => 'name2')]))
166
167 will be serialized into:
168
169 <find_business xmlns="urn:uddi-org:api" generic="1.0">
170 <name>
171 <subname1>name1</subname1>
172 <subname2>name2</subname2>
173 </name>
174 </find_business>
175
176 For standard elements more convenient syntax is available:
177
178 find_business(
179 findQualifiers(findQualifier('sortByNameAsc',
180 'caseSensitiveMatch')),
181 name('M')
182 )
183
184 and
185
186 find_business(
187 findQualifiers([findQualifier('sortByNameAsc'),
188 findQualifier('caseSensitiveMatch')]),
189 name('M')
190 )
191
192 both will generate:
193
194 <SOAP-ENV:Envelope
195 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
196 <SOAP-ENV:Body>
197 <find_business xmlns="urn:uddi-org:api" generic="1.0">
198 <findQualifiers>
199 <findQualifier>sortByNameAsc</findQualifier>
200 <findQualifier>caseSensitiveMatch</findQualifier>
201 </findQualifiers>
202 <name>M</name>
203 </find_business>
204 </SOAP-ENV:Body>
205 </SOAP-ENV:Envelope>
206
207 You can use ANY valid combinations (according to "UDDI Programmer's API
208 Specification"). If you try to generate something unusual, like
209 "name(name('myname'))", you'll get:
210
211 Don't know what to do with 'name' and 'name' elements ....
212
213 If you REALLY need to do it, use "UDDI::Data" syntax described above.
214
215 As special case you can pass hash as the first parameter of method call
216 and values of this hash will be added as attributes to top element:
217
218 find_business({maxRows => 10}, UDDI::Data->name(name => old))
219
220 gives you
221
222 <find_business xmlns="urn:uddi-org:api" generic="1.0" maxRows="10">
223 ....
224 </find_business>
225
226 You can also pass back parameters exactly as you get it from method
227 call (like you probably want to do with authInfo).
228
229 You can get access to attributes and elements through the same
230 interface:
231
232 my $list = find_business(name => old);
233 my $bis = $list->businessInfos;
234 for ($bis->businessInfo) {
235 my $s = $_->serviceInfos->serviceInfo;
236 print $s->name, # element
237 $s->businessKey, # attribute
238 "\n";
239 }
240
241 To match advantages provided by "with" operator available in other
242 languages (like VB) we provide similar functionality that adds you
243 flexibility:
244
245 with findQualifiers =>
246 findQualifier => 'sortByNameAsc',
247 findQualifier => 'caseSensitiveMatch'
248
249 is the same as:
250
251 with(findQualifiers =>
252 findQualifier('sortByNameAsc'),
253 findQualifier('caseSensitiveMatch'),
254 )
255
256 and:
257
258 findQualifiers->with(
259 findQualifier('sortByNameAsc'),
260 findQualifier('caseSensitiveMatch'),
261 )
262
263 will all generate the same code as mentioned above:
264
265 findQualifiers(findQualifier('sortByNameAsc',
266 'caseSensitiveMatch')),
267
268 Advantage of "with" syntax is the you can specify both attributes and
269 elements through the same interface. First argument is element where
270 all other elements and attributes will be attached. Provided examples
271 and tests cover different syntaxes.
272
273 AUTODISPATCHING
274 UDDI::Lite provides autodispatching feature that lets you create code
275 that looks similar for local and remote access.
276
277 For example:
278
279 use UDDI::Lite +autodispatch =>
280 proxy => 'http://uddi.microsoft.com/inquire';
281
282 tells autodispatch all UDDI calls to
283 'http://uddi.microsoft.com/inquire'. All subsequent calls can look
284 like:
285
286 find_business(name => 'old');
287 find_business(UDDI::Data->name(name => 'old'));
288 find_business(name('old'));
289
291 · Interface is still subject to change.
292
293 · Though HTTPS/SSL is supported you should specify it yourself (with
294 "proxy" or "endpoint") for publishing API calls.
295
297 For now UDDI::Lite is distributed as part of SOAP::Lite package. You
298 can download it from ( http://soaplite.com/ ) or from CPAN (
299 http://search.cpan.org/search?dist=SOAP-Lite ).
300
302 SOAP::Lite ( http://search.cpan.org/search?dist=SOAP-Lite ) UDDI (
303 http://search.cpan.org/search?dist=UDDI )
304
306 Copyright (C) 2000-2004 Paul Kulchenko. All rights reserved.
307
308 This library is free software; you can redistribute it and/or modify it
309 under the same terms as Perl itself.
310
312 Paul Kulchenko (paulclinger@yahoo.com)
313
314
315
316perl v5.30.0 2019-07-26 UDDI::Lite(3)