Package org.python.core.packagecache
Class PackageManager
- java.lang.Object
-
- org.python.core.packagecache.PackageManager
-
- Direct Known Subclasses:
CachedJarsPackageManager
public abstract class PackageManager extends java.lang.ObjectAbstract package manager.
-
-
Field Summary
Fields Modifier and Type Field Description PyJavaPackagetopLevelPackageNominal top-level package of all (Java) packages, containing "java", "com", "org", etc..
-
Constructor Summary
Constructors Constructor Description PackageManager()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract voidaddDirectory(java.io.File dir)Append a directory to the list of directories searched for java packages and java classes.abstract voidaddJar(java.lang.String jarfile, boolean cache)Append a jar file to the list of locations searched for java packages and java classes.abstract voidaddJarDir(java.lang.String dir, boolean cache)Append a directory to the list of directories searched for java packages and java classes.abstract PyListdoDir(PyJavaPackage jpkg, boolean instantiate, boolean exclpkgs)Reports the specified package content names.java.lang.ClassfindClass(java.lang.String pkg, java.lang.String name)abstract java.lang.ClassfindClass(java.lang.String pkg, java.lang.String name, java.lang.String reason)PyObjectlookupName(java.lang.String name)Given the (dotted) name of a package, find thePyJavaPackagecorresponding, by navigating from thetopLevelPackage, successively applyingPyObject.__findattr__(String).PyJavaPackagemakeJavaPackage(java.lang.String name, java.lang.String classes, java.lang.String jarfile)Create (or ensure we have) aPyJavaPackagefor the named package and add to it the names of classes mentioned here.voidnotifyPackageImport(java.lang.String pkg, java.lang.String name)abstract booleanpackageExists(java.lang.String pkg, java.lang.String name)Dynamically check if pkg.name exists as java pkg in the controlled hierarchy.
-
-
-
Field Detail
-
topLevelPackage
public PyJavaPackage topLevelPackage
Nominal top-level package of all (Java) packages, containing "java", "com", "org", etc..
-
-
Method Detail
-
findClass
public abstract java.lang.Class findClass(java.lang.String pkg, java.lang.String name, java.lang.String reason)
-
findClass
public java.lang.Class findClass(java.lang.String pkg, java.lang.String name)
-
notifyPackageImport
public void notifyPackageImport(java.lang.String pkg, java.lang.String name)
-
packageExists
public abstract boolean packageExists(java.lang.String pkg, java.lang.String name)Dynamically check if pkg.name exists as java pkg in the controlled hierarchy. Should be overridden.- Parameters:
pkg- parent pkg namename- candidate name- Returns:
- true if pkg exists
-
doDir
public abstract PyList doDir(PyJavaPackage jpkg, boolean instantiate, boolean exclpkgs)
Reports the specified package content names. Should be overridden. Used byPyJavaPackage.__dir__()andPyJavaPackage.fillDir().- Parameters:
jpkg- queried packageinstantiate- if true then instatiate reported names in package dictexclpkgs- exclude packages (just when instantiate is false)- Returns:
- resulting list of names (PyList of PyString)
-
addDirectory
public abstract void addDirectory(java.io.File dir)
Append a directory to the list of directories searched for java packages and java classes.- Parameters:
dir- A directory.
-
addJarDir
public abstract void addJarDir(java.lang.String dir, boolean cache)Append a directory to the list of directories searched for java packages and java classes.- Parameters:
dir- A directory name.
-
addJar
public abstract void addJar(java.lang.String jarfile, boolean cache)Append a jar file to the list of locations searched for java packages and java classes.- Parameters:
jarfile- A directory name.
-
lookupName
public PyObject lookupName(java.lang.String name)
Given the (dotted) name of a package, find thePyJavaPackagecorresponding, by navigating from thetopLevelPackage, successively applyingPyObject.__findattr__(String). This in fact drives the creation ofPyJavaPackageobjects since it indirectly callspackageExists(String, String).- Parameters:
name- (dotted) package name- Returns:
- the package named
-
makeJavaPackage
public PyJavaPackage makeJavaPackage(java.lang.String name, java.lang.String classes, java.lang.String jarfile)
Create (or ensure we have) aPyJavaPackagefor the named package and add to it the names of classes mentioned here. These classes are added as "place holders" only, so they become members of it, without being instantiated. This method relies onPyJavaPackage.addPackage(java.lang.String, java.lang.String)andPyJavaPackage.addPlaceholders(java.util.Collection<java.lang.String>).- Parameters:
name- package nameclasses- comma or @-sign separated stringjarfile- involved; can be null- Returns:
- created/updated package
-
-