# File lib/puppet/type.rb, line 1355
1355:   def self.defaultprovider
1356:     unless @defaultprovider
1357:       suitable = suitableprovider
1358: 
1359:       # Find which providers are a default for this system.
1360:       defaults = suitable.find_all { |provider| provider.default? }
1361: 
1362:       # If we don't have any default we use suitable providers
1363:       defaults = suitable if defaults.empty?
1364:       max = defaults.collect { |provider| provider.specificity }.max
1365:       defaults = defaults.find_all { |provider| provider.specificity == max }
1366: 
1367:       retval = nil
1368:       if defaults.length > 1
1369:         Puppet.warning(
1370:           "Found multiple default providers for #{self.name}: #{defaults.collect { |i| i.name.to_s }.join(", ")}; using #{defaults[0].name}"
1371:         )
1372:         retval = defaults.shift
1373:       elsif defaults.length == 1
1374:         retval = defaults.shift
1375:       else
1376:         raise Puppet::DevError, "Could not find a default provider for #{self.name}"
1377:       end
1378: 
1379:       @defaultprovider = retval
1380:     end
1381: 
1382:     @defaultprovider
1383:   end