package org.teachingextensions.approvals.lite.util; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ClassUtils { public static Class<?> getWrapperClass(Class<?> primitiveType) { if (boolean.class.equals(primitiveType)) { return Boolean.class; } else if (float.class.equals(primitiveType)) { return Float.class; } else if (long.class.equals(primitiveType)) { return Long.class; } else if (int.class.equals(primitiveType)) { return Integer.class; } else if (short.class.equals(primitiveType)) { return Short.class; } else if (byte.class.equals(primitiveType)) { return Byte.class; } else if (double.class.equals(primitiveType)) { return Double.class; } else if (char.class.equals(primitiveType)) { return Character.class; } else { return primitiveType; } } public static boolean hasMethod(Class<?> clazz, String methodName, Class<?>... parameterTypes) { try { return clazz.getMethod(methodName, parameterTypes) != null; } catch (SecurityException e) { throw ObjectUtils.throwAsError(e); } catch (NoSuchMethodException e) { return false; } } public static File getSourceDirectory(Class<?> clazz) { final String name = clazz.getName(); String[] split = name.split("\\."); split[split.length - 1] = split[split.length - 1] + ".java"; File found = find(new File("."), Arrays.asList(split)); if (found == null) { throw new FormattedException("Didn't find %s under %s", name, new File(".")); } return found.getParentFile(); } public static File find(File file, List<String> matches) { ArrayList<String> copy = new ArrayList<>(); copy.addAll(matches); copy.add(0, "*"); return find2(file, copy); } public static File find2(File file, List<String> matches) { SearchingFileFilter searchingFileFilter = new SearchingFileFilter(matches); File[] listFiles = file.listFiles(searchingFileFilter); for (File file2 : listFiles) { if (file2.isDirectory()) { File found = find2(file2, searchingFileFilter.getSubset(file2.getName())); if (found != null) { return found; } } else { return file2; } } return null; } public static <T> T create(Class<T> clazz) { try { return clazz.newInstance(); } catch (Exception e) { throw ObjectUtils.throwAsError(e); } } }