Package org.fife.rsta.ac.java
Class PackageMapNode
- java.lang.Object
-
- org.fife.rsta.ac.java.PackageMapNode
-
public class PackageMapNode extends java.lang.ObjectA data structure modeling all classes in a jar or directory, or on a classpath. It's a recursive mapping ofStrings to eitherMaps orClassFiles (which are lazily created and may benull). At each level of the nested map, the string key is a package name iff its corresponding value is aMap. Examine thatMap's contents to explore the contents of that package. If the corresponding value is aClassFile, then the string key's value is the name of that class. Finally, if the corresponding value isnull, 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
Fields Modifier and Type Field Description private java.util.SortedMap<java.lang.String,ClassFile>classFilesA mapping of class file names to class files in this package.private java.util.SortedMap<java.lang.String,PackageMapNode>subpackagesA mapping of sub-package name to the sub-packages and classes under it.
-
Constructor Summary
Constructors Constructor Description PackageMapNode()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(java.lang.String className)Adds entries for a fully-qualified class name, of the form"org/fife/util/DynamicIntArray.class".voidaddCompletions(LibraryInfo info, org.fife.ui.autocomplete.CompletionProvider provider, java.lang.String[] pkgNames, java.util.Set<org.fife.ui.autocomplete.Completion> addTo)Gets the completions in this package map that match a given string.intclearClassFiles()Removes the cache of allClassFiles from this package map.private intclearClassFilesImpl(PackageMapNode pmn)booleancontainsClass(java.lang.String className)Returns whether this package map node contains a class.booleancontainsPackage(java.lang.String pkgName)Returns whether this package map node contains a package.ClassFilegetClassEntry(LibraryInfo info, java.lang.String[] items)Returns a class entry.voidgetClassesInPackage(LibraryInfo info, java.util.List<ClassFile> addTo, java.lang.String[] pkgs, boolean inPkg)Returns the classes in a package.(package private) voidgetClassesWithNamesStartingWith(LibraryInfo info, java.lang.String prefix, java.lang.String currentPkg, java.util.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(java.util.Collection<ClassFile> addTo, ClassFile cf, boolean inPkg)
-
-
-
Field Detail
-
subpackages
private java.util.SortedMap<java.lang.String,PackageMapNode> subpackages
A mapping of sub-package name to the sub-packages and classes under it.
-
-
Method Detail
-
add
public void add(java.lang.String className)
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, java.lang.String[] pkgNames, java.util.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
private int clearClassFilesImpl(PackageMapNode pmn)
-
containsClass
public boolean containsClass(java.lang.String className)
Returns whether this package map node contains a class.- Parameters:
className- The class name to check.- Returns:
- Whether it is contained.
-
containsPackage
public boolean containsPackage(java.lang.String pkgName)
Returns whether this package map node contains a package.- Parameters:
pkgName- The package to check.- Returns:
- Whether it is contained.
-
getClassEntry
public ClassFile getClassEntry(LibraryInfo info, java.lang.String[] items)
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, java.util.List<ClassFile> addTo, java.lang.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, java.lang.String prefix, java.lang.String currentPkg, java.util.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.
-
-