Package com.pnfsoftware.jeb.core.units
Class UnitUtil
java.lang.Object
com.pnfsoftware.jeb.core.units.UnitUtil
Utility methods for
units.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringbuildFullyQualifiedCandidateUnitPath(String candidateUnitName, IUnitCreator parent, boolean includeArtifact, String separator) Build the fully-qualified path of a potential unit whose only the name is provided.static StringBuild a unit path of the artifact name and its parent units, such as:artifact > unit > unit > ...static StringbuildFullyQualifiedUnitPath(IUnit unit, boolean includeArtifact, String separator) Build a fully-qualified unit path.buildFullyQualifiedUnitPathList(IUnitCreator unit, boolean includeArtifact) Build a fully-qualified unit path as list of unit names.static StringdebuggerProperty(IEnginesContext engctx, String codeType, String propertyName) Generate a fully-qualified property name used by adecompiler unit.static StringdecompilerProperty(IEnginesContext engctx, String codeType, String propertyName) Generate a fully-qualified property name used by adecompiler unit.filterDescendants(IUnit base, int maxDepth, IUnitFilter filter) Retrieve a list of descendants of the provided unit that pass the provided filter test and do not exceeded the maximum depth.static <T extends IUnitCreator>
TfindAncestor(IUnit unit, Class<T> c, boolean strict) static <T extends IUnit>
Tstatic IUnitfindChildByFormatType(IUnit base, String formatType, int index) static IUnitfindChildByName(IUnit base, String name, int index) static <T extends IUnit>
TfindChildByType(IUnit base, Class<T> classtype, boolean exactClasstype, int index) findChildren(IUnit base, String name, Class<T> c, boolean strict) findChildrenByFormatType(IUnit base, String formatType) findChildrenByName(IUnit base, String name) findChildrenByType(IUnit base, Class<T> classtype, boolean exactClasstype) findDescendants(ILiveArtifact base, int level, String name, Class<T> c, boolean strict) findDescendants(IUnit base, int maxDepth, String name, Class<T> classtype, boolean exactClasstype) Convenience function to find descendant units by type and/or name.findDescendantsByFormatType(IUnit base, int level, String formatType) findDescendantsByFormatType(IUnit base, String formatType) findDescendantsByName(IUnit base, int maxDepth, String name) Retrieve a list of descendant units of the provided unit that have the provided name.findDescendantsByName(IUnit base, String name) findDescendantsByType(IUnit base, int maxDepth, Class<T> classtype, boolean exactClasstype) Retrieve a list of descendant units of the provided unit that are of the provided classtype (exact or derived) and do not exceeded the maximum depth.findDescendantsByType(IUnit base, Class<T> classtype, boolean exactClasstype) static IUnitfindFirstChildByFormatType(IUnit base, String formatType) static IUnitfindFirstChildByName(IUnit base, String name) static <T extends IUnit>
TfindFirstChildByType(IUnit base, Class<T> classtype, boolean exactClasstype) getUnitsFromPathList(IRuntimeProject prj, List<String> path) Retrieve the targetsIUnitfrom its path (built frombuildFullyQualifiedUnitPathList(IUnitCreator, boolean)for example).static booleanisAncestorOf(IUnit unit, IUnit expectedAncestor) static booleanisAncestorOf(IUnit unit, IUnit expectedAncestor, boolean strictAncestor) static booleanisTopLevelUnit(IUnit unit) static voidlogError(IUnit unit, String address, boolean recordNotification, ILogger logger, String format, Object... params) Log an error and optionally record a unit notification.static voidlogException(IUnit unit, ILogger logger, Exception e) Log an exception and optionally record a unit notification.static voidLog an internal message.static voidlogInfo(IUnit unit, String address, boolean recordNotification, ILogger logger, String format, Object... params) Log an informational message and optionally record a unit notification.static voidLog a trace message.static voidlogWarn(IUnit unit, String address, boolean recordNotification, ILogger logger, String format, Object... params) Log a warning and optionally record a unit notification.static voidnotifyGenericChange(IUnit unit) Issue a genericJ.UnitChangeevent to all listeners of the provided unit.static IUnitRetrieve a unit rooted in the provided base, and whose relative path from that base consists of the provided path elements.static IUnitretrieveProcessed(boolean processIfUnprocessed, IUnit base, String... pathElements) Retrieve a unit rooted in the provided base, and whose relative path from that base consists of the provided path elements.static StringunitProperty(IEnginesContext engctx, String unitType, String propertyName) Generate a fully-qualified property name used by aunit.static StringunitProperty(IUnitIdentifier ident, String propertyName) Generate a fully-qualified property name used by aunit.static StringunitProperty(IUnit unit, String propertyName) Generate a fully-qualified property name used by aunit.
-
Constructor Details
-
UnitUtil
public UnitUtil()
-
-
Method Details
-
notifyGenericChange
Issue a genericJ.UnitChangeevent to all listeners of the provided unit.- Parameters:
unit- a unit
-
logI
public static void logI(IUnit unit, String address, ILogger logger, String format, Object... params) Log an internal message.- Parameters:
unit-address-logger-format-params-
-
logTrace
public static void logTrace(IUnit unit, String address, ILogger logger, String format, Object... params) Log a trace message.- Parameters:
unit-address-logger-format-params-
-
logInfo
public static void logInfo(IUnit unit, String address, boolean recordNotification, ILogger logger, String format, Object... params) Log an informational message and optionally record a unit notification.- Parameters:
unit-address-recordNotification-logger-format-params-
-
logWarn
public static void logWarn(IUnit unit, String address, boolean recordNotification, ILogger logger, String format, Object... params) Log a warning and optionally record a unit notification.- Parameters:
unit-address-recordNotification-logger-format-params-
-
logError
public static void logError(IUnit unit, String address, boolean recordNotification, ILogger logger, String format, Object... params) Log an error and optionally record a unit notification.- Parameters:
unit-address-recordNotification-logger-format-params-
-
logException
Log an exception and optionally record a unit notification.- Parameters:
unit-logger-e-
-
filterDescendants
Retrieve a list of descendants of the provided unit that pass the provided filter test and do not exceeded the maximum depth.- Parameters:
base-maxDepth- use -1 to go as deep as possiblefilter-- Returns:
-
findDescendantsByType
public static <T extends IUnit> List<T> findDescendantsByType(IUnit base, int maxDepth, Class<T> classtype, boolean exactClasstype) Retrieve a list of descendant units of the provided unit that are of the provided classtype (exact or derived) and do not exceeded the maximum depth.- Parameters:
base-maxDepth- use -1 to go as deep as possibleclasstype- wanted classtypeexactClasstype- if true, only units of the exact classtype will be returned- Returns:
-
findChildrenByType
-
findChildByType
-
findFirstChildByType
-
findDescendantsByType
-
findDescendantsByName
Retrieve a list of descendant units of the provided unit that have the provided name.- Parameters:
base-maxDepth- use -1 to go as deep as possiblename-- Returns:
-
findDescendantsByName
-
findChildrenByName
-
findChildByName
-
findFirstChildByName
-
retrieve
Retrieve a unit rooted in the provided base, and whose relative path from that base consists of the provided path elements.- Parameters:
base- a root unitpathElements- 1 or more sub-unit names- Returns:
- the unit corresponding to the last path element, null if not found - the unit may not have been processed
-
retrieveProcessed
public static IUnit retrieveProcessed(boolean processIfUnprocessed, IUnit base, String... pathElements) Retrieve a unit rooted in the provided base, and whose relative path from that base consists of the provided path elements. The returned unit is guaranteed to be processed.- Parameters:
processIfUnprocessed- attempt to process the unit if it is unprocessedbase-pathElements-- Returns:
- a unit (processed) or null
-
findDescendants
public static <T extends IUnit> List<T> findDescendants(IUnit base, int maxDepth, String name, Class<T> classtype, boolean exactClasstype) Convenience function to find descendant units by type and/or name.- Parameters:
base-maxDepth- use -1 to go as deep as possiblename- optionalclasstype- optionalexactClasstype-- Returns:
-
findChildren
-
findChild
-
findDescendants
public static <T extends IUnit> List<T> findDescendants(ILiveArtifact base, int level, String name, Class<T> c, boolean strict) -
findAll
-
findDescendantsByFormatType
-
findDescendantsByFormatType
-
findChildrenByFormatType
-
findChildByFormatType
-
findFirstChildByFormatType
-
findAncestor
- Parameters:
unit- a children elementc- the class to match. Can be an interface.strict- if true, only units of the exact classtype will be returned- Returns:
- the closest ancestor that matches, or null if not found
-
isAncestorOf
-
isAncestorOf
-
buildFullyQualifiedCandidateUnitPath
public static String buildFullyQualifiedCandidateUnitPath(String candidateUnitName, IUnitCreator parent, boolean includeArtifact, String separator) Build the fully-qualified path of a potential unit whose only the name is provided.- Parameters:
candidateUnitName-parent-includeArtifact-separator-- Returns:
-
buildFullyQualifiedUnitPath
public static String buildFullyQualifiedUnitPath(IUnit unit, boolean includeArtifact, String separator) Build a fully-qualified unit path.- Parameters:
unit-includeArtifact-separator-- Returns:
-
buildFullyQualifiedUnitPathList
public static List<String> buildFullyQualifiedUnitPathList(IUnitCreator unit, boolean includeArtifact) Build a fully-qualified unit path as list of unit names.- Parameters:
unit-includeArtifact-- Returns:
-
buildFullyQualifiedUnitPath
Build a unit path of the artifact name and its parent units, such as:artifact > unit > unit > ... > unit- Parameters:
unit-- Returns:
-
isTopLevelUnit
- Parameters:
unit-- Returns:
-
unitProperty
Generate a fully-qualified property name used by aunit.- Parameters:
ident- a unit identifierpropertyName- simple property name- Returns:
- a FQ name
-
unitProperty
Generate a fully-qualified property name used by aunit.- Parameters:
unit- a unitpropertyName- simple property name- Returns:
- a FQ name
-
unitProperty
Generate a fully-qualified property name used by aunit.- Parameters:
engctx- JEB engines contextunitType- unit typepropertyName- simple property name- Returns:
- a FQ name
-
decompilerProperty
public static String decompilerProperty(IEnginesContext engctx, String codeType, String propertyName) Generate a fully-qualified property name used by adecompiler unit.- Parameters:
engctx- JEB engines contextcodeType- code unit type (not a decompiler unit)propertyName- simple property name- Returns:
-
debuggerProperty
Generate a fully-qualified property name used by adecompiler unit.- Parameters:
engctx- JEB engines contextcodeType- code unit type (not a debugger unit)propertyName- simple property name- Returns:
-
getUnitsFromPathList
Retrieve the targetsIUnitfrom its path (built frombuildFullyQualifiedUnitPathList(IUnitCreator, boolean)for example). Note that result target will be unique in most of the cases.- Parameters:
prj-path-- Returns:
-