/** * * @param interfaces * @return the sorted set of interfaces */ public static LinkedHashSet<Class<?>> sortInterfacesHierarchy(Set<Class<?>> interfaces) { LinkedHashSet<Class<?>> sorted = new LinkedHashSet<>(interfaces.size()); processSuperinterface(null, interfaces, sorted); if (interfaces.size() != sorted.size()) { // Interface may not processed due to incomplete type closure Set<Class<?>> unprocessed = new HashSet<>(interfaces); unprocessed.removeAll(sorted); for (Class<?> unprocessedInterface : unprocessed) { processSuperinterface(unprocessedInterface, interfaces, sorted); sorted.add(unprocessedInterface); } } return sorted; }
/** * * @param interfaces * @return the sorted set of interfaces */ public static LinkedHashSet<Class<?>> sortInterfacesHierarchy(Set<Class<?>> interfaces) { LinkedHashSet<Class<?>> sorted = new LinkedHashSet<>(interfaces.size()); processSuperinterface(null, interfaces, sorted); if (interfaces.size() != sorted.size()) { // Interface may not processed due to incomplete type closure Set<Class<?>> unprocessed = new HashSet<>(interfaces); unprocessed.removeAll(sorted); for (Class<?> unprocessedInterface : unprocessed) { processSuperinterface(unprocessedInterface, interfaces, sorted); sorted.add(unprocessedInterface); } } return sorted; }
private static void processSuperinterface(Class<?> superinterface, Set<Class<?>> interfaces, LinkedHashSet<Class<?>> sorted) { for (Class<?> interfaceClass : interfaces) { if (isInterfaceExtending(interfaceClass, superinterface)) { processSuperinterface(interfaceClass, interfaces, sorted); sorted.add(interfaceClass); } } }
private static void processSuperinterface(Class<?> superinterface, Set<Class<?>> interfaces, LinkedHashSet<Class<?>> sorted) { for (Class<?> interfaceClass : interfaces) { if (isInterfaceExtending(interfaceClass, superinterface)) { processSuperinterface(interfaceClass, interfaces, sorted); sorted.add(interfaceClass); } } }
/** * * @param interfaces * @return the sorted set of interfaces */ public static LinkedHashSet<Class<?>> sortInterfacesHierarchy(Set<Class<?>> interfaces) { LinkedHashSet<Class<?>> sorted = new LinkedHashSet<>(interfaces.size()); processSuperinterface(null, interfaces, sorted); if (interfaces.size() != sorted.size()) { // Interface may not processed due to incomplete type closure Set<Class<?>> unprocessed = new HashSet<>(interfaces); unprocessed.removeAll(sorted); for (Class<?> unprocessedInterface : unprocessed) { processSuperinterface(unprocessedInterface, interfaces, sorted); sorted.add(unprocessedInterface); } } return sorted; }
private static void processSuperinterface(Class<?> superinterface, Set<Class<?>> interfaces, LinkedHashSet<Class<?>> sorted) { for (Class<?> interfaceClass : interfaces) { if (isInterfaceExtending(interfaceClass, superinterface)) { processSuperinterface(interfaceClass, interfaces, sorted); sorted.add(interfaceClass); } } }
private static void processSuperinterface(Class<?> superinterface, Set<Class<?>> interfaces, LinkedHashSet<Class<?>> sorted) { for (Class<?> interfaceClass : interfaces) { if (isInterfaceExtending(interfaceClass, superinterface)) { processSuperinterface(interfaceClass, interfaces, sorted); sorted.add(interfaceClass); } } }
private static void processSuperinterface(Class<?> superinterface, Set<Class<?>> interfaces, LinkedHashSet<Class<?>> sorted) { for (Class<?> interfaceClass : interfaces) { if (isInterfaceExtending(interfaceClass, superinterface)) { processSuperinterface(interfaceClass, interfaces, sorted); sorted.add(interfaceClass); } } }
private static void processSuperinterface(Class<?> superinterface, Set<Class<?>> interfaces, LinkedHashSet<Class<?>> sorted) { for (Class<?> interfaceClass : interfaces) { if (isInterfaceExtending(interfaceClass, superinterface)) { processSuperinterface(interfaceClass, interfaces, sorted); sorted.add(interfaceClass); } } }
/** * * @param interfaces * @return the sorted set of interfaces */ public static LinkedHashSet<Class<?>> sortInterfacesHierarchy(Set<Class<?>> interfaces) { LinkedHashSet<Class<?>> sorted = new LinkedHashSet<>(interfaces.size()); processSuperinterface(null, interfaces, sorted); if (interfaces.size() != sorted.size()) { // Interface may not processed due to incomplete type closure Set<Class<?>> unprocessed = new HashSet<>(interfaces); unprocessed.removeAll(sorted); for (Class<?> unprocessedInterface : unprocessed) { processSuperinterface(unprocessedInterface, interfaces, sorted); sorted.add(unprocessedInterface); } } return sorted; }
/** * * @param interfaces * @return the sorted set of interfaces */ public static LinkedHashSet<Class<?>> sortInterfacesHierarchy(Set<Class<?>> interfaces) { LinkedHashSet<Class<?>> sorted = new LinkedHashSet<>(interfaces.size()); processSuperinterface(null, interfaces, sorted); if (interfaces.size() != sorted.size()) { // Interface may not processed due to incomplete type closure Set<Class<?>> unprocessed = new HashSet<>(interfaces); unprocessed.removeAll(sorted); for (Class<?> unprocessedInterface : unprocessed) { processSuperinterface(unprocessedInterface, interfaces, sorted); sorted.add(unprocessedInterface); } } return sorted; }
/** * * @param interfaces * @return the sorted set of interfaces */ public static LinkedHashSet<Class<?>> sortInterfacesHierarchy(Set<Class<?>> interfaces) { LinkedHashSet<Class<?>> sorted = new LinkedHashSet<>(interfaces.size()); processSuperinterface(null, interfaces, sorted); if (interfaces.size() != sorted.size()) { // Interface may not processed due to incomplete type closure Set<Class<?>> unprocessed = new HashSet<>(interfaces); unprocessed.removeAll(sorted); for (Class<?> unprocessedInterface : unprocessed) { processSuperinterface(unprocessedInterface, interfaces, sorted); sorted.add(unprocessedInterface); } } return sorted; }