Package soot.jbco.jimpleTransformations
Class ClassRenamer
- java.lang.Object
-
- soot.Transformer
-
- soot.SceneTransformer
-
- soot.jbco.jimpleTransformations.ClassRenamer
-
- All Implemented Interfaces:
IJbcoTransform
public class ClassRenamer extends SceneTransformer implements IJbcoTransform
SceneTransformerthat renames class names as well as packages.- Since:
- 26-Jan-2006
- Author:
- Michael Batchelder, Pavel Nesterovich
-
-
Constructor Summary
Constructors Constructor Description ClassRenamer(Singletons.Global global)Singleton constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddClassNameMapping(String classNameSource, String classNameTarget)Adds mapping for class name.static StringgetClassName(String fullyQualifiedClassName)Extracts class name from fully qualified name.Map<String,String>getClassNameMapping(BiPredicate<String,String> predicate)Gets mapping by predicate.String[]getDependencies()Gets array ofjbco transformercode names on which current transformer depends on.StringgetName()Gets the code name ofjbco transformerimplementation.StringgetOrAddNewName(String packageName, String className)Generates new unique name that have not existed before and mapping for it or gets already generated name if one was generated before.static StringgetPackageName(String fullyQualifiedClassName)Extracts package name from class name.protected voidinternalTransform(String phaseName, Map<String,String> options)Performs the transformation on the Scene, under the given phaseName and with the given Options.booleanisRemovePackages()Checks if transformer must remove package from fully qualified class name.booleanisRenamePackages()Checks if transformer must rename package in fully qualified class name.voidoutputSummary()Prints summary of the produced changes.voidsetRemovePackages(boolean removePackages)Sets flag indicating that transformer must remove package from fully qualified class name.voidsetRenamePackages(boolean renamePackages)Sets flag indicating that transformer must rename package in fully qualified class name.static ClassRenamerv()Singleton getter.-
Methods inherited from class soot.SceneTransformer
transform, transform, transform
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface soot.jbco.IJbcoTransform
isDebugEnabled, isVerbose
-
-
-
-
Field Detail
-
name
public static final String name
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ClassRenamer
public ClassRenamer(Singletons.Global global)
Singleton constructor.- Parameters:
global- the singletons container. Must not benull- Throws:
NullPointerException- whenglobalargument isnull
-
-
Method Detail
-
v
public static ClassRenamer v()
Singleton getter.- Returns:
- returns instance of
ClassRenamer
-
getName
public String getName()
Description copied from interface:IJbcoTransformGets the code name ofjbco transformerimplementation.- Specified by:
getNamein interfaceIJbcoTransform- Returns:
- the code name of
jbco transformer
-
getDependencies
public String[] getDependencies()
Description copied from interface:IJbcoTransformGets array ofjbco transformercode names on which current transformer depends on.- Specified by:
getDependenciesin interfaceIJbcoTransform- Returns:
- array of code names
-
outputSummary
public void outputSummary()
Description copied from interface:IJbcoTransformPrints summary of the produced changes.- Specified by:
outputSummaryin interfaceIJbcoTransform
-
isRemovePackages
public boolean isRemovePackages()
Checks if transformer must remove package from fully qualified class name.- Returns:
trueifClassRenamerremoves packages from fully qualified class name;falseotherwise
-
setRemovePackages
public void setRemovePackages(boolean removePackages)
Sets flag indicating that transformer must remove package from fully qualified class name.- Parameters:
removePackages- the flag value
-
isRenamePackages
public boolean isRenamePackages()
Checks if transformer must rename package in fully qualified class name.- Returns:
trueifClassRenamerrenames packages in fully qualified class name;falseotherwise
-
setRenamePackages
public void setRenamePackages(boolean renamePackages)
Sets flag indicating that transformer must rename package in fully qualified class name.- Parameters:
renamePackages- the flag value
-
addClassNameMapping
public void addClassNameMapping(String classNameSource, String classNameTarget)
Adds mapping for class name.- Parameters:
classNameSource- the class name to renameclassNameTarget- the new class name
-
getClassNameMapping
public Map<String,String> getClassNameMapping(BiPredicate<String,String> predicate)
Gets mapping by predicate.- Parameters:
predicate- the predicate to decide if mapping should be filtered. Can benull
-
internalTransform
protected void internalTransform(String phaseName, Map<String,String> options)
Description copied from class:SceneTransformerPerforms the transformation on the Scene, under the given phaseName and with the given Options.- Specified by:
internalTransformin classSceneTransformer
-
getOrAddNewName
public String getOrAddNewName(String packageName, String className)
Generates new unique name that have not existed before and mapping for it or gets already generated name if one was generated before.- Parameters:
packageName- the package where class is located. Can benullclassName- the class name (without package) to create mapping for. Can benull- Returns:
- the new unique name
-
getPackageName
public static String getPackageName(String fullyQualifiedClassName)
Extracts package name from class name.- Parameters:
fullyQualifiedClassName- the fully qualified class name. Can benull- Returns:
- package name or
nullwhen class name isnull, no '.' in the name, or package name is '.'
-
-