public final class SchemaUtils
extends java.lang.Object
SchemaTools.
Provides graph traversal over persistent and unlazied entity relations, polymorphic class-exclusion filtering and runtime inspection of loaded BO graphs. All methods are stateless and thread-safe.
| Modifier and Type | Method and Description |
|---|---|
static java.util.Map<EntityI,java.util.Set<AttributeI>> |
expandUnlazyAttributesForSubEntities(java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyAttrs)
Expands an unlazy configuration map across all concrete sub-entities (polymorphic subclasses).
|
static java.util.Set<java.lang.Class<?>> |
findReachableClasses(SchemaI schema,
java.util.Collection<java.lang.Class<?>> rootKeepClasses,
java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap)
Resolves a set of all BO classes reachable from the given root classes and unlazy relations.
|
static java.lang.Class<?>[] |
findReachableClassesAsArray(SchemaI schema,
java.lang.Class<?>[] rootKeepClasses,
java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap)
Resolves an array of all BO classes reachable from the given root classes and unlazy relations.
|
static java.util.Set<EntityI> |
findReachableEntities(SchemaI schema,
java.lang.Class<?>[] rootKeepClasses,
java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap)
Resolves all reachable entities starting from an array of root classes.
|
static java.util.Set<EntityI> |
findReachableEntities(SchemaI schema,
java.util.Collection<java.lang.Class<?>> rootKeepClasses,
java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap)
Resolves schema entities for root classes and computes all reachable entities
using empty class exclusions.
|
static java.util.Set<EntityI> |
findReachableEntities(SchemaI schema,
java.util.Collection<java.lang.Class<?>> rootKeepClasses,
java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap,
java.util.Map<java.lang.Class<?>,java.lang.Class<?>> explicitIgnores)
Resolves schema entities for root classes and computes all reachable entities,
filtering by explicit class exclusions.
|
static java.util.Set<EntityI> |
findReachableEntities(java.util.Set<EntityI> startingPoints,
java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap,
java.util.Map<java.lang.Class<?>,java.lang.Class<?>> explicitIgnores)
Computes all entities reachable from starting points by traversing persistent
1-n and n-1 relations and configured unlazy many-relations, excluding classes
in
explicitIgnores. |
static java.util.Set<AttributeI> |
findUnlazyAttributes(EntityI baseEntity,
java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyAttrs)
Filters an unlazy attributes map for entries applicable to a base entity or its super-entities,
retaining only persistent many-relations (1-n, n-m).
|
static java.util.Set<AttributeI> |
findUnlazyAttributes(SchemaI schema,
java.lang.Class<? extends BOI> clazz,
java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyAttrs)
Resolves unlazy attributes applicable to a BO class by looking up its entity in the schema.
|
static java.util.Collection<java.lang.String> |
findUnlazyPaths(BOI bo,
java.util.Set<java.lang.String> recursionGuard,
boolean onlyManyRelations)
Recursively inspects a loaded BO graph and returns formatted path descriptors
for all currently unlazied relations in memory.
|
public static java.lang.Class<?>[] findReachableClassesAsArray(SchemaI schema, java.lang.Class<?>[] rootKeepClasses, java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap)
schema - the schema used to look up entity definitionsrootKeepClasses - root classes to start traversal fromunlazyMap - mapping of entities to their unlazied relationsnullpublic static java.util.Set<java.lang.Class<?>> findReachableClasses(SchemaI schema, java.util.Collection<java.lang.Class<?>> rootKeepClasses, java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap)
schema - the schema used to look up entity definitionsrootKeepClasses - collection of root classes to start traversal fromunlazyMap - mapping of entities to their unlazied relationsnullpublic static java.util.Set<EntityI> findReachableEntities(SchemaI schema, java.util.Collection<java.lang.Class<?>> rootKeepClasses, java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap, java.util.Map<java.lang.Class<?>,java.lang.Class<?>> explicitIgnores)
Classes without a corresponding schema entity or not implementing BOI
are logged and skipped.
schema - the schema used to look up entity definitionsrootKeepClasses - collection of root classes to start traversal fromunlazyMap - mapping of entities to their unlazied relationsexplicitIgnores - classes to exclude from reachability trackingnullpublic static java.util.Set<EntityI> findReachableEntities(SchemaI schema, java.lang.Class<?>[] rootKeepClasses, java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap)
schema - the schema used to look up entity definitionsrootKeepClasses - array of root classes to start traversal fromunlazyMap - mapping of entities to their unlazied relationsnullpublic static java.util.Set<EntityI> findReachableEntities(SchemaI schema, java.util.Collection<java.lang.Class<?>> rootKeepClasses, java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap)
schema - the schema used to look up entity definitionsrootKeepClasses - collection of root classes to start traversal fromunlazyMap - mapping of entities to their unlazied relationsnullpublic static java.util.Set<EntityI> findReachableEntities(java.util.Set<EntityI> startingPoints, java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyMap, java.util.Map<java.lang.Class<?>,java.lang.Class<?>> explicitIgnores)
explicitIgnores.startingPoints - root entry entities in the schema graphunlazyMap - relations expected to be unlazied per entityexplicitIgnores - classes to exclude from reachability trackingnullpublic static java.util.Map<EntityI,java.util.Set<AttributeI>> expandUnlazyAttributesForSubEntities(java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyAttrs)
unlazyAttrs - source map of entities to configured unlazy attributesnullpublic static java.util.Set<AttributeI> findUnlazyAttributes(SchemaI schema, java.lang.Class<? extends BOI> clazz, java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyAttrs)
schema - schema used to look up the entity definitionclazz - BO class to resolve attributes forunlazyAttrs - source unlazy configuration mappingnullpublic static java.util.Set<AttributeI> findUnlazyAttributes(EntityI baseEntity, java.util.Map<EntityI,java.util.Set<AttributeI>> unlazyAttrs)
baseEntity - target entity to resolve attributes for; non-nullunlazyAttrs - source unlazy configuration mappingnullpublic static java.util.Collection<java.lang.String> findUnlazyPaths(BOI bo, java.util.Set<java.lang.String> recursionGuard, boolean onlyManyRelations)
Usage example:
Collection<String> before = SchemaUtils.findUnlazyPaths(bo, null, false);
// ... execute calculation ...
Collection<String> after = SchemaUtils.findUnlazyPaths(bo, null, false);
Set<String> delta = new HashSet<>(after);
delta.removeAll(before);
log.info("Newly unlazied relations: " + delta);
bo - root BO to inspect (null returns an empty collection)recursionGuard - set tracking visited relation keys to prevent cycles; pass null initiallyonlyManyRelations - true to inspect only collection relations (1-n, n-m); false includes n-1"EntityName[123].attributeName"; never nullCopyright © 2000-2026 OAshi S.à r.l. All Rights Reserved.