Module JavaClass::JavaNameScanner
In: lib/javaclass/java_name_scanner.rb

Mixin with logic to scan for hard coded class names.

Author:Peter Kofler

Methods

Constants

TEXT_REGEX = / (?:^|>|"|'|=|:|!) \s* ( (?:#{JavaLanguage::IDENTIFIER_REGEX}#{JavaLanguage::SEPARATOR_REGEX})+#{JavaLanguage::TYPE_REGEX} ) \s* (?:$|<|"|'|:) /x

Public Instance methods

[Source]

# File lib/javaclass/java_name_scanner.rb, line 20
    def scan_config_for_3rd_party_class_names(path, ignorepattern=/^\./)
      scan_config_for_class_names(path, ignorepattern).reject { |name| name.in_jdk? }
      # need abstraction for - .reject { |name| name.in_jdk? } - have it three times
      # maybe a mixin for enumerables containing JavaTypes
      #JavaNameEnumerable with - .reject { |name| name.in_jdk? } - und anderen? reject_in_jdk = 3rd Party
      # and find_all { |n| n.same_or_subpackage_of?(x) } -- also very often  = in_package()
    end

Find all possible class names in all XML and property files under path and optionally ignore ignorepattern

[Source]

# File lib/javaclass/java_name_scanner.rb, line 29
    def scan_config_for_class_names(path, ignorepattern=/^\./)
      return [] unless File.exist? path
      if File.file?(path) 
        if path =~ /\.xml$|\.properties$|MANIFEST.MF$/
          scan_text_for_class_names(IO.readlines(path).join)
        else
          []
        end
      else
        Dir.entries(path).reject { |n| n =~ /^\./ or n=~ ignorepattern }.
                          map { |n| scan_config_for_class_names(File.join(path, n), ignorepattern) }.
                          flatten.sort
      end
    end

Extract the list of possible class names from the given string . This will only find names with at least one package name.

[Source]

# File lib/javaclass/java_name_scanner.rb, line 54
    def scan_text_for_class_names(string)
      string.scan(TEXT_REGEX).flatten.map { |match| JavaQualifiedName.new(match) }
    end

[Validate]