Package com.pnfsoftware.jeb.core.units
Class UnitUtil
java.lang.Object
com.pnfsoftware.jeb.core.units.UnitUtil
Utility methods for
units
.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic 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.static String
Build a unit path of the artifact name and its parent units, such as:artifact > unit > unit > ...
static String
buildFullyQualifiedUnitPath
(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 String
debuggerProperty
(IEnginesContext engctx, String codeType, String propertyName) Generate a fully-qualified property name used by adecompiler unit
.static String
decompilerProperty
(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 IUnit
findChildByFormatType
(IUnit base, String formatType, int index) static IUnit
findChildByName
(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 IUnit
findFirstChildByFormatType
(IUnit base, String formatType) static IUnit
findFirstChildByName
(IUnit base, String name) static <T extends IUnit>
TfindFirstChildByType
(IUnit base, Class<T> classtype, boolean exactClasstype) getUnitsFromPathList
(IRuntimeProject prj, List<String> path) Retrieve the targetsIUnit
from its path (built frombuildFullyQualifiedUnitPathList(IUnitCreator, boolean)
for example).static boolean
isAncestorOf
(IUnit unit, IUnit expectedAncestor) static boolean
isAncestorOf
(IUnit unit, IUnit expectedAncestor, boolean strictAncestor) static boolean
isTopLevelUnit
(IUnit unit) static void
logError
(IUnit unit, String address, boolean recordNotification, ILogger logger, String format, Object... params) Log an error and optionally record a unit notification.static void
logException
(IUnit unit, ILogger logger, Exception e) Log an exception and optionally record a unit notification.static void
Log an internal message.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.static void
Log a trace message.static void
logWarn
(IUnit unit, String address, boolean recordNotification, ILogger logger, String format, Object... params) Log a warning and optionally record a unit notification.static void
notifyGenericChange
(IUnit unit) Issue a genericJ.UnitChange
event to all listeners of the provided unit.static IUnit
Retrieve a unit rooted in the provided base, and whose relative path from that base consists of the provided path elements.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.static String
unitProperty
(IEnginesContext engctx, String unitType, String propertyName) Generate a fully-qualified property name used by aunit
.static String
unitProperty
(IUnitIdentifier ident, String propertyName) Generate a fully-qualified property name used by aunit
.static String
unitProperty
(IUnit unit, String propertyName) Generate a fully-qualified property name used by aunit
.
-
Constructor Details
-
UnitUtil
public UnitUtil()
-
-
Method Details
-
notifyGenericChange
Issue a genericJ.UnitChange
event 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 targetsIUnit
from its path (built frombuildFullyQualifiedUnitPathList(IUnitCreator, boolean)
for example). Note that result target will be unique in most of the cases.- Parameters:
prj
-path
-- Returns:
-