public class

UnitUtil

extends Object
java.lang.Object
   ↳ com.pnfsoftware.jeb.core.units.UnitUtil

Class Overview

Utility methods for units.

Summary

Public Constructors
UnitUtil()
Public Methods
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.
static String buildFullyQualifiedUnitPath(IUnit unit, boolean includeArtifact, String separator)
Build a fully-qualified unit path.
static String buildFullyQualifiedUnitPath(IUnit unit)
Build a unit path of the artifact name and its parent units, such as:artifact > unit > unit > ...
static List<String> 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 a decompiler unit.
static String decompilerProperty(IEnginesContext engctx, String codeType, String propertyName)
Generate a fully-qualified property name used by a decompiler unit.
static List<IUnit> 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 IUnit> List<T> findAll(String name, Class<T> c, boolean strict)
static <T extends IUnitCreator> T findAncestor(IUnit unit, Class<T> c, boolean strict)
Find the closest ancestor of an IUnit that matches a Class.
static <T extends IUnit> T findChild(IUnit base, String name, Class<T> c, boolean strict, int index)
static IUnit findChildByFormatType(IUnit base, String formatType, int index)
static IUnit findChildByName(IUnit base, String name, int index)
static <T extends IUnit> T findChildByType(IUnit base, Class<T> classtype, boolean exactClasstype, int index)
static <T extends IUnit> List<T> findChildren(IUnit base, String name, Class<T> c, boolean strict)
static List<IUnit> findChildrenByFormatType(IUnit base, String formatType)
static List<IUnit> findChildrenByName(IUnit base, String name)
static <T extends IUnit> List<T> findChildrenByType(IUnit base, Class<T> classtype, boolean exactClasstype)
static <T extends IUnit> List<T> findDescendants(ILiveArtifact base, int level, String name, Class<T> c, boolean strict)
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.
static List<IUnit> findDescendantsByFormatType(IUnit base, String formatType)
static <T extends IUnit> List<T> findDescendantsByFormatType(IUnit base, int level, String formatType)
static List<IUnit> findDescendantsByName(IUnit base, String name)
static List<IUnit> findDescendantsByName(IUnit base, int maxDepth, String name)
Retrieve a list of descendant units of the provided unit that have the provided name.
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.
static <T extends IUnit> List<T> 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> T findFirstChildByType(IUnit base, Class<T> classtype, boolean exactClasstype)
static List<IUnit> getUnitsFromPathList(IRuntimeProject prj, List<String> path)
Retrieve the targets IUnit from its path (built from buildFullyQualifiedUnitPathList(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 logI(IUnit unit, String address, ILogger logger, String format, Object... params)
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 logTrace(IUnit unit, String address, ILogger logger, String format, Object... params)
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 generic UnitChange event to all listeners of the provided unit.
static IUnit retrieve(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 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(IUnitIdentifier ident, String propertyName)
Generate a fully-qualified property name used by a unit.
static String unitProperty(IEnginesContext engctx, String unitType, String propertyName)
Generate a fully-qualified property name used by a unit.
static String unitProperty(IUnit unit, String propertyName)
Generate a fully-qualified property name used by a unit.
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public UnitUtil ()

Public Methods

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.

public static String buildFullyQualifiedUnitPath (IUnit unit, boolean includeArtifact, String separator)

Build a fully-qualified unit path.

public static String buildFullyQualifiedUnitPath (IUnit unit)

Build a unit path of the artifact name and its parent units, such as:artifact > unit > unit > ... > unit

public static List<String> buildFullyQualifiedUnitPathList (IUnitCreator unit, boolean includeArtifact)

Build a fully-qualified unit path as list of unit names.

public static String debuggerProperty (IEnginesContext engctx, String codeType, String propertyName)

Generate a fully-qualified property name used by a decompiler unit.

Parameters
engctx JEB engines context
codeType code unit type (not a debugger unit)
propertyName simple property name

public static String decompilerProperty (IEnginesContext engctx, String codeType, String propertyName)

Generate a fully-qualified property name used by a decompiler unit.

Parameters
engctx JEB engines context
codeType code unit type (not a decompiler unit)
propertyName simple property name

public static List<IUnit> 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.

Parameters
maxDepth use -1 to go as deep as possible

public static List<T> findAll (String name, Class<T> c, boolean strict)

public static T findAncestor (IUnit unit, Class<T> c, boolean strict)

Find the closest ancestor of an IUnit that matches a Class.

Parameters
unit a children element
c 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

public static T findChild (IUnit base, String name, Class<T> c, boolean strict, int index)

public static IUnit findChildByFormatType (IUnit base, String formatType, int index)

public static IUnit findChildByName (IUnit base, String name, int index)

public static T findChildByType (IUnit base, Class<T> classtype, boolean exactClasstype, int index)

public static List<T> findChildren (IUnit base, String name, Class<T> c, boolean strict)

public static List<IUnit> findChildrenByFormatType (IUnit base, String formatType)

public static List<IUnit> findChildrenByName (IUnit base, String name)

public static List<T> findChildrenByType (IUnit base, Class<T> classtype, boolean exactClasstype)

public static List<T> findDescendants (ILiveArtifact base, int level, String name, Class<T> c, boolean strict)

public static 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
maxDepth use -1 to go as deep as possible
name optional
classtype optional

public static List<IUnit> findDescendantsByFormatType (IUnit base, String formatType)

public static List<T> findDescendantsByFormatType (IUnit base, int level, String formatType)

public static List<IUnit> findDescendantsByName (IUnit base, String name)

public static List<IUnit> findDescendantsByName (IUnit base, int maxDepth, String name)

Retrieve a list of descendant units of the provided unit that have the provided name.

Parameters
maxDepth use -1 to go as deep as possible

public static 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
maxDepth use -1 to go as deep as possible
classtype wanted classtype
exactClasstype if true, only units of the exact classtype will be returned

public static List<T> findDescendantsByType (IUnit base, Class<T> classtype, boolean exactClasstype)

public static IUnit findFirstChildByFormatType (IUnit base, String formatType)

public static IUnit findFirstChildByName (IUnit base, String name)

public static T findFirstChildByType (IUnit base, Class<T> classtype, boolean exactClasstype)

public static List<IUnit> getUnitsFromPathList (IRuntimeProject prj, List<String> path)

Retrieve the targets IUnit from its path (built from buildFullyQualifiedUnitPathList(IUnitCreator, boolean) for example). Note that result target will be unique in most of the cases.

public static boolean isAncestorOf (IUnit unit, IUnit expectedAncestor)

public static boolean isAncestorOf (IUnit unit, IUnit expectedAncestor, boolean strictAncestor)

public static boolean isTopLevelUnit (IUnit unit)

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.

public static void logException (IUnit unit, ILogger logger, Exception e)

Log an exception and optionally record a unit notification.

public static void logI (IUnit unit, String address, ILogger logger, String format, Object... params)

Log an internal message.

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.

public static void logTrace (IUnit unit, String address, ILogger logger, String format, Object... params)

Log a trace message.

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.

public static void notifyGenericChange (IUnit unit)

Issue a generic UnitChange event to all listeners of the provided unit.

Parameters
unit a unit

public static IUnit retrieve (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.

Parameters
base a root unit
pathElements 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

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 unprocessed
Returns
  • a unit (processed) or null

public static String unitProperty (IUnitIdentifier ident, String propertyName)

Generate a fully-qualified property name used by a unit.

Parameters
ident a unit identifier
propertyName simple property name
Returns
  • a FQ name

public static String unitProperty (IEnginesContext engctx, String unitType, String propertyName)

Generate a fully-qualified property name used by a unit.

Parameters
engctx JEB engines context
unitType unit type
propertyName simple property name
Returns
  • a FQ name

public static String unitProperty (IUnit unit, String propertyName)

Generate a fully-qualified property name used by a unit.

Parameters
unit a unit
propertyName simple property name
Returns
  • a FQ name