1.1 --- a/java/sql-dk/src/info/globalcode/sql/dk/Functions.java Sat Aug 15 11:52:38 2015 +0200
1.2 +++ b/java/sql-dk/src/info/globalcode/sql/dk/Functions.java Sat Aug 15 13:21:26 2015 +0200
1.3 @@ -24,9 +24,13 @@
1.4 import java.io.InputStream;
1.5 import java.io.InputStreamReader;
1.6 import java.io.PrintWriter;
1.7 +import java.util.ArrayDeque;
1.8 +import java.util.ArrayList;
1.9 import java.util.Arrays;
1.10 import java.util.Collection;
1.11 import java.util.Collections;
1.12 +import java.util.Deque;
1.13 +import java.util.List;
1.14 import java.util.Map;
1.15
1.16 /**
1.17 @@ -164,4 +168,21 @@
1.18 return result.toString();
1.19 }
1.20 }
1.21 +
1.22 + /**
1.23 + * @param <P> type of the last parent
1.24 + * @param <T> type of the examined class
1.25 + * @param type examined class
1.26 + * @param lastParent the last parent type to stop at
1.27 + * @return list of types starting with <code>type</code> and ending with <code>lastParent</code>
1.28 + */
1.29 + public static <P, T extends P> List<Class<? extends P>> getClassHierarchy(Class<T> type, Class<P> lastParent) {
1.30 + List<Class<? extends P>> hierarchy = new ArrayList<>();
1.31 +
1.32 + for (Class current = type; current != null && lastParent.isAssignableFrom(current); current = current.getSuperclass()) {
1.33 + hierarchy.add(current);
1.34 + }
1.35 +
1.36 + return hierarchy;
1.37 + }
1.38 }