Included Modules

Files

Class Index [+]

Quicksearch

SOAP::Mapping::EncodedRegistry

Constants

StringFactory
BasetypeFactory
FixnumFactory
DateTimeFactory
ArrayFactory
Base64Factory
URIFactory
TypedArrayFactory
TypedStructFactory
HashFactory
SOAPBaseMap
RubyOriginalMap

Attributes

default_factory[RW]
excn_handler_obj2soap[RW]
excn_handler_soap2obj[RW]

Public Class Methods

new(config = {}) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 271
271:   def initialize(config = {})
272:     super()
273:     @config = config
274:     @map = Map.new(self)
275:     if @config[:allow_original_mapping]
276:       @allow_original_mapping = true
277:       @map.init(RubyOriginalMap)
278:     else
279:       @allow_original_mapping = false
280:       @map.init(SOAPBaseMap)
281:     end
282:     @allow_untyped_struct = @config.key?(:allow_untyped_struct) ?
283:       @config[:allow_untyped_struct] : true
284:     @rubytype_factory = RubytypeFactory.new(
285:       :allow_untyped_struct => @allow_untyped_struct,
286:       :allow_original_mapping => @allow_original_mapping
287:     )
288:     @default_factory = @rubytype_factory
289:     @excn_handler_obj2soap = nil
290:     @excn_handler_soap2obj = nil
291:   end

Public Instance Methods

add(obj_class, soap_class, factory, info = nil) click to toggle source

initial mapping interface new interface Registry#register is defined in RegisterSupport

     # File lib/soap/mapping/encodedregistry.rb, line 295
295:   def add(obj_class, soap_class, factory, info = nil)
296:     @map.add(obj_class, soap_class, factory, info)
297:   end
Also aliased as: set
find_mapped_obj_class(soap_class) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 321
321:   def find_mapped_obj_class(soap_class)
322:     @map.find_mapped_obj_class(soap_class)
323:   end
find_mapped_soap_class(obj_class) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 317
317:   def find_mapped_soap_class(obj_class)
318:     @map.find_mapped_soap_class(obj_class)
319:   end
obj2soap(obj, type_qname = nil) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 300
300:   def obj2soap(obj, type_qname = nil)
301:     soap = _obj2soap(obj, type_qname)
302:     if @allow_original_mapping
303:       addextend2soap(soap, obj)
304:     end
305:     soap
306:   end
set(obj_class, soap_class, factory, info = nil) click to toggle source
Alias for: add
soap2obj(node, klass = nil) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 308
308:   def soap2obj(node, klass = nil)
309:     obj = _soap2obj(node, klass)
310:     if @allow_original_mapping
311:       addextend2obj(obj, node.extraattr[RubyExtendName])
312:       addiv2obj(obj, node.extraattr[RubyIVarName])
313:     end
314:     obj
315:   end

Private Instance Methods

_obj2soap(obj, type_qname = nil) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 327
327:   def _obj2soap(obj, type_qname = nil)
328:     ret = nil
329:     if obj.is_a?(SOAPCompoundtype)
330:       obj.replace do |ele|
331:         Mapping._obj2soap(ele, self)
332:       end
333:       return obj
334:     elsif obj.is_a?(SOAPBasetype)
335:       return obj
336:     elsif type_qname && type = TypeMap[type_qname]
337:       return base2soap(obj, type)
338:     end
339:     cause = nil
340:     begin 
341:       if definition = schema_definition_from_class(obj.class)
342:         return stubobj2soap(obj, definition)
343:       end
344:       ret = @map.obj2soap(obj) ||
345:         @default_factory.obj2soap(nil, obj, nil, self)
346:       return ret if ret
347:     rescue MappingError
348:       cause = $!
349:     end
350:     if @excn_handler_obj2soap
351:       ret = @excn_handler_obj2soap.call(obj) { |yield_obj|
352:         Mapping._obj2soap(yield_obj, self)
353:       }
354:       return ret if ret
355:     end
356:     raise MappingError.new("Cannot map #{ obj.class.name } to SOAP/OM.", cause)
357:   end
_soap2obj(node, klass = nil) click to toggle source

Might return nil as a mapping result.

     # File lib/soap/mapping/encodedregistry.rb, line 360
360:   def _soap2obj(node, klass = nil)
361:     definition = find_node_definition(node)
362:     if klass
363:       klass_definition = schema_definition_from_class(klass)
364:       if definition and (definition.class_for < klass)
365:         klass = definition.class_for
366:       else
367:         definition = klass_definition
368:       end
369:     else
370:       klass = definition.class_for if definition
371:     end
372:     if definition and node.is_a?(::SOAP::SOAPNameAccessible)
373:       return elesoap2stubobj(node, klass, definition)
374:     end
375:     if node.extraattr.key?(RubyTypeName)
376:       conv, obj = @rubytype_factory.soap2obj(nil, node, nil, self)
377:       return obj if conv
378:     end
379:     conv, obj = @map.soap2obj(node)
380:     return obj if conv
381:     conv, obj = @default_factory.soap2obj(nil, node, nil, self)
382:     return obj if conv
383:     cause = nil
384:     if @excn_handler_soap2obj
385:       begin
386:         return @excn_handler_soap2obj.call(node) { |yield_node|
387:             Mapping._soap2obj(yield_node, self)
388:           }
389:       rescue Exception
390:         cause = $!
391:       end
392:     end
393:     raise MappingError.new("Cannot map #{ node.type.name } to Ruby object.", cause)
394:   end
addextend2obj(obj, attr) click to toggle source

(class < false; self; end).ancestors includes “TrueClass” under 1.6...

     # File lib/soap/mapping/encodedregistry.rb, line 414
414:     def addextend2obj(obj, attr)
415:       return unless attr
416:       attr.split(/ /).reverse_each do |mstr|
417:         m = Mapping.module_from_name(mstr)
418:         obj.extend(m)
419:       end
420:     end
addextend2obj(obj, attr) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 406
406:     def addextend2obj(obj, attr)
407:       return unless attr
408:       attr.split(/ /).reverse_each do |mstr|
409:         obj.extend(Mapping.module_from_name(mstr))
410:       end
411:     end
addextend2soap(node, obj) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 423
423:   def addextend2soap(node, obj)
424:     return if obj.is_a?(Symbol) or obj.is_a?(Fixnum)
425:     list = (class << obj; self; end
addiv2obj(obj, attr) click to toggle source
     # File lib/soap/mapping/encodedregistry.rb, line 396
396:   def addiv2obj(obj, attr)
397:     return unless attr
398:     vars = {}
399:     attr.__getobj__.each do |name, value|
400:       vars[name] = Mapping._soap2obj(value, self)
401:     end
402:     Mapping.set_attributes(obj, vars)
403:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.