public class SourceLocator
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected java.util.Set<java.lang.ClassLoader> |
additionalClassLoaders |
protected java.util.List<java.lang.String> |
classPath |
protected java.util.List<ClassProvider> |
classProviders |
Constructor and Description |
---|
SourceLocator(Singletons.Global g) |
Modifier and Type | Method and Description |
---|---|
void |
additionalClassLoader(java.lang.ClassLoader c) |
java.util.Set<java.lang.String> |
classesInDynamicPackage(java.lang.String str) |
java.util.List<java.lang.String> |
classPath() |
void |
clearDexClassPathExtensions()
Clears the set of dex or apk files that still need to be indexed
|
java.util.Map<java.lang.String,java.io.File> |
dexClassIndex()
Return the dex class index that maps class names to files
|
static void |
ensureDirectoryExists(java.io.File dir)
Create the given directory and all parent directories if
dir is
non-null. |
static java.util.List<java.lang.String> |
explodeClassPath(java.lang.String classPath)
Explodes a class path into a list of individual class path entries.
|
void |
extendClassPath(java.lang.String newPathElement) |
java.util.List<java.lang.String> |
getClassesUnder(java.lang.String aPath) |
ClassSource |
getClassSource(java.lang.String className)
Given a class name, uses the soot-class-path to return a ClassSource for
the given class.
|
java.util.Set<java.lang.String> |
getDexClassPathExtensions()
Gets all files that were added to the classpath later on and that have
not yet been processed for the dexClassIndex mapping
|
java.lang.String |
getExtensionFor(int rep) |
java.lang.String |
getFileNameFor(SootClass c,
int rep) |
java.lang.String |
getOutputDir()
Returns the output directory given by
Options or a default if not
set. |
java.lang.String |
getOutputJarName()
If
Options#v()#output_jar() is set, returns the name of the jar
file to which the output will be written. |
java.lang.String |
getSourceForClass(java.lang.String className)
Returns the name of the class in which the (possibly inner) class
className appears.
|
void |
invalidateClassPath() |
protected FoundFile |
lookupInArchive(java.lang.String archivePath,
java.lang.String fileName) |
FoundFile |
lookupInClassPath(java.lang.String fileName)
Searches for a file with the given name in the exploded classPath.
|
void |
setClassProviders(java.util.List<ClassProvider> classProviders) |
void |
setDexClassIndex(java.util.Map<java.lang.String,java.io.File> index)
Set the dex class index
|
protected void |
setupClassProviders() |
java.util.List<java.lang.String> |
sourcePath() |
static SourceLocator |
v() |
protected java.util.Set<java.lang.ClassLoader> additionalClassLoaders
protected java.util.List<ClassProvider> classProviders
protected java.util.List<java.lang.String> classPath
public static SourceLocator v()
public static void ensureDirectoryExists(java.io.File dir)
dir
is
non-null.dir
- public static java.util.List<java.lang.String> explodeClassPath(java.lang.String classPath)
public ClassSource getClassSource(java.lang.String className)
public void additionalClassLoader(java.lang.ClassLoader c)
protected void setupClassProviders()
public void setClassProviders(java.util.List<ClassProvider> classProviders)
public java.util.List<java.lang.String> classPath()
public void invalidateClassPath()
public java.util.List<java.lang.String> sourcePath()
public java.util.List<java.lang.String> getClassesUnder(java.lang.String aPath)
public java.lang.String getFileNameFor(SootClass c, int rep)
public java.util.Set<java.lang.String> classesInDynamicPackage(java.lang.String str)
public java.lang.String getExtensionFor(int rep)
public java.lang.String getOutputDir()
Options
or a default if not
set. Also ensures that all directories in the path exist.Options
or a default if not setpublic java.lang.String getOutputJarName()
Options#v()#output_jar()
is set, returns the name of the jar
file to which the output will be written. The name of the jar file can be
given with the -output-dir option or a default will be used. Also ensures
that all directories in the path exist.public FoundFile lookupInClassPath(java.lang.String fileName)
protected FoundFile lookupInArchive(java.lang.String archivePath, java.lang.String fileName)
public java.lang.String getSourceForClass(java.lang.String className)
public java.util.Map<java.lang.String,java.io.File> dexClassIndex()
public void setDexClassIndex(java.util.Map<java.lang.String,java.io.File> index)
index
- the indexpublic void extendClassPath(java.lang.String newPathElement)
public java.util.Set<java.lang.String> getDexClassPathExtensions()
public void clearDexClassPathExtensions()