Package org.fife.rsta.ac.java
Class PackageMapNode
java.lang.Object
org.fife.rsta.ac.java.PackageMapNode
A data structure modeling all classes in a jar or directory, or on a
classpath. It's a recursive mapping of
Strings to either
Maps or ClassFiles (which are lazily created and
may be null). At each level of the nested map, the string
key is a package name iff its corresponding value is a Map.
Examine that Map's contents to explore the contents of
that package. If the corresponding value is a ClassFile,
then the string key's value is the name of that class. Finally, if
the corresponding value is null, then the string key's
value is the name of a class, but its contents have not yet been
loaded for use by the code completion library (ClassFiles
are lazily loaded to conserve memory).-
Field Summary
FieldsModifier and TypeFieldDescriptionA mapping of class file names to class files in this package.private SortedMap<String, PackageMapNode> A mapping of sub-package name to the sub-packages and classes under it. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds entries for a fully-qualified class name, of the form"org/fife/util/DynamicIntArray.class".voidaddCompletions(LibraryInfo info, org.fife.ui.autocomplete.CompletionProvider provider, String[] pkgNames, Set<org.fife.ui.autocomplete.Completion> addTo) Gets the completions in this package map that match a given string.intRemoves the cache of allClassFiles from this package map.private intbooleancontainsClass(String className) Returns whether this package map node contains a class.booleancontainsPackage(String pkgName) Returns whether this package map node contains a package.getClassEntry(LibraryInfo info, String[] items) Returns a class entry.voidgetClassesInPackage(LibraryInfo info, List<ClassFile> addTo, String[] pkgs, boolean inPkg) Returns the classes in a package.(package private) voidgetClassesWithNamesStartingWith(LibraryInfo info, String prefix, String currentPkg, List<ClassFile> addTo) Method used to recursively scan our package map for classes whose names start with a given prefix, ignoring case.private static voidpossiblyAddTo(Collection<ClassFile> addTo, ClassFile cf, boolean inPkg)
-
Field Details
-
subpackages
A mapping of sub-package name to the sub-packages and classes under it. -
classFiles
A mapping of class file names to class files in this package. The actualClassFilevalues are lazily instantiated, so any map entry with a value ofnullsimply has not been created yet.
-
-
Constructor Details
-
PackageMapNode
public PackageMapNode()
-
-
Method Details
-
add
Adds entries for a fully-qualified class name, of the form"org/fife/util/DynamicIntArray.class". This method should only be called on the "root" node of a package map.- Parameters:
className- A fully-qualified class name of the form described above.
-
addCompletions
public void addCompletions(LibraryInfo info, org.fife.ui.autocomplete.CompletionProvider provider, String[] pkgNames, Set<org.fife.ui.autocomplete.Completion> addTo) Gets the completions in this package map that match a given string.- Parameters:
info- The library info.provider- The parent completion provider.pkgNames- The text to match, split into tokens around the '.' character. This should be (the start of) a fully-qualified class, interface, or enum name.addTo- The list to add completion choices to.
-
clearClassFiles
public int clearClassFiles()Removes the cache of allClassFiles from this package map.- Returns:
- The number of class file entries removed.
-
clearClassFilesImpl
-
containsClass
Returns whether this package map node contains a class.- Parameters:
className- The class name to check.- Returns:
- Whether it is contained.
-
containsPackage
Returns whether this package map node contains a package.- Parameters:
pkgName- The package to check.- Returns:
- Whether it is contained.
-
getClassEntry
Returns a class entry.- Parameters:
info- The library info.items- The set of items (?).- Returns:
- The class file entry.
-
getClassesInPackage
public void getClassesInPackage(LibraryInfo info, List<ClassFile> addTo, String[] pkgs, boolean inPkg) Returns the classes in a package.- Parameters:
info- The library info.addTo- The collection to add to.pkgs- The current set of packages.inPkg- Whether to be in the package (?).
-
getClassesWithNamesStartingWith
void getClassesWithNamesStartingWith(LibraryInfo info, String prefix, String currentPkg, List<ClassFile> addTo) Method used to recursively scan our package map for classes whose names start with a given prefix, ignoring case.- Parameters:
prefix- The prefix that the unqualified class names must match (ignoring case).currentPkg- The package thatmapbelongs to (i.e. all levels of packages scanned before this one), separated by '/'.addTo- The list to add any matchingClassFiles to.
-
possiblyAddTo
-