# File lib/puppet/type.rb, line 1464
1464:     def self.defaultprovider
1465:         unless defined? @defaultprovider and @defaultprovider
1466:             suitable = suitableprovider()
1467: 
1468:             # Find which providers are a default for this system.
1469:             defaults = suitable.find_all { |provider| provider.default? }
1470: 
1471:             # If we don't have any default we use suitable providers
1472:             defaults = suitable if defaults.empty?
1473:             max = defaults.collect { |provider| provider.specificity }.max
1474:             defaults = defaults.find_all { |provider| provider.specificity == max }
1475: 
1476:             retval = nil
1477:             if defaults.length > 1
1478:                 Puppet.warning(
1479:                     "Found multiple default providers for %s: %s; using %s" %
1480:                     [self.name, defaults.collect { |i| i.name.to_s }.join(", "),
1481:                         defaults[0].name]
1482:                 )
1483:                 retval = defaults.shift
1484:             elsif defaults.length == 1
1485:                 retval = defaults.shift
1486:             else
1487:                 raise Puppet::DevError, "Could not find a default provider for %s" %
1488:                     self.name
1489:             end
1490: 
1491:             @defaultprovider = retval
1492:         end
1493: 
1494:         return @defaultprovider
1495:     end