private static void parseDependencies( final FieldNameConverter fieldConverter, final Map<Class<? extends RawEntity<?>>, Set<Class<? extends RawEntity<?>>>> deps, final Set<Class<? extends RawEntity<?>>> roots, Class<? extends RawEntity<?>> clazz) { if (deps.containsKey(clazz)) { return; } final Set<Class<? extends RawEntity<?>>> individualDeps = new LinkedHashSet<Class<? extends RawEntity<?>>>(); for (final Method method : clazz.getMethods()) { final Class<?> type = Common.getAttributeTypeFromMethod(method); validateManyToManyAnnotation(method); validateOneToOneAnnotation(method); validateOneToManyAnnotation(method); if (fieldConverter.getName(method) != null && type != null && !type.equals(clazz) && RawEntity.class.isAssignableFrom(type) && !individualDeps.contains(type)) { individualDeps.add((Class<? extends RawEntity<?>>) type); addDeps(deps, clazz, individualDeps); parseDependencies(fieldConverter, deps, roots, (Class<? extends RawEntity<?>>) type); } } if (individualDeps.size() == 0) { roots.add(clazz); } else { addDeps(deps, clazz, individualDeps); } }
private static void parseDependencies( final FieldNameConverter fieldConverter, final Map<Class<? extends RawEntity<?>>, Set<Class<? extends RawEntity<?>>>> deps, final Set<Class<? extends RawEntity<?>>> roots, Class<? extends RawEntity<?>> clazz) { if (deps.containsKey(clazz)) { return; } final Set<Class<? extends RawEntity<?>>> individualDeps = new LinkedHashSet<Class<? extends RawEntity<?>>>(); for (final Method method : clazz.getMethods()) { final Class<?> type = Common.getAttributeTypeFromMethod(method); validateManyToManyAnnotation(method); validateOneToOneAnnotation(method); validateOneToManyAnnotation(method); if (fieldConverter.getName(method) != null && type != null && !type.equals(clazz) && RawEntity.class.isAssignableFrom(type) && !individualDeps.contains(type)) { individualDeps.add((Class<? extends RawEntity<?>>) type); addDeps(deps, clazz, individualDeps); parseDependencies(fieldConverter, deps, roots, (Class<? extends RawEntity<?>>) type); } } if (individualDeps.size() == 0) { roots.add(clazz); } else { addDeps(deps, clazz, individualDeps); } }