/** * Get a list of elide-bound relationships. * * @param entity Entity instance to find relationships for * @return List of elide-bound relationship names. */ public List<String> getElideBoundRelationships(Object entity) { return getElideBoundRelationships(entity.getClass()); }
/** * Get a list of elide-bound relationships. * * @param entity Entity instance to find relationships for * @return List of elide-bound relationship names. */ public List<String> getElideBoundRelationships(Object entity) { return getElideBoundRelationships(entity.getClass()); }
/** * Walks the entity graph and performs a transform function on each element. * @param entities The roots of the entity graph. * @param transform The function to transform each entity class into a result. * @param <T> The result type. * @return The collection of results. */ public <T> List<T> walkEntityGraph(Set<Class<?>> entities, Function<Class<?>, T> transform) { ArrayList<T> results = new ArrayList<>(); Queue<Class<?>> toVisit = new ArrayDeque<>(entities); Set<Class<?>> visited = new HashSet<>(); while (! toVisit.isEmpty()) { Class<?> clazz = toVisit.remove(); results.add(transform.apply(clazz)); visited.add(clazz); for (String relationship : getElideBoundRelationships(clazz)) { Class<?> relationshipClass = getParameterizedType(clazz, relationship); try { lookupEntityClass(relationshipClass); } catch (IllegalArgumentException e) { /* The relationship hasn't been bound */ continue; } if (!visited.contains(relationshipClass)) { toVisit.add(relationshipClass); } } } return results; }
/** * Walks the entity graph and performs a transform function on each element. * @param entities The roots of the entity graph. * @param transform The function to transform each entity class into a result. * @param <T> The result type. * @return The collection of results. */ public <T> List<T> walkEntityGraph(Set<Class<?>> entities, Function<Class<?>, T> transform) { ArrayList<T> results = new ArrayList<>(); Queue<Class<?>> toVisit = new ArrayDeque<>(entities); Set<Class<?>> visited = new HashSet<>(); while (! toVisit.isEmpty()) { Class<?> clazz = toVisit.remove(); results.add(transform.apply(clazz)); visited.add(clazz); for (String relationship : getElideBoundRelationships(clazz)) { Class<?> relationshipClass = getParameterizedType(clazz, relationship); try { lookupEntityClass(relationshipClass); } catch (IllegalArgumentException e) { /* The relationship hasn't been bound */ continue; } if (!visited.contains(relationshipClass)) { toVisit.add(relationshipClass); } } } return results; }
for (String relationship : dictionary.getElideBoundRelationships(clazz)) { log.debug("Resolving relationship {} for {}", relationship, clazz.getName()); Class<?> relationshipClass = dictionary.getParameterizedType(clazz, relationship);
for (String relationship : dictionary.getElideBoundRelationships(clazz)) { log.debug("Resolving relationship {} for {}", relationship, clazz.getName()); Class<?> relationshipClass = dictionary.getParameterizedType(clazz, relationship);
for (String relationship : dictionary.getElideBoundRelationships(entityClass)) { Class<?> relationshipClass = dictionary.getParameterizedType(entityClass, relationship); if (excludedEntities.contains(relationshipClass)) {
for (String relationship : dictionary.getElideBoundRelationships(entityClass)) { Class<?> relationshipClass = dictionary.getParameterizedType(entityClass, relationship); if (excludedEntities.contains(relationshipClass)) {