private static void assertMethodTakesParams( Class<?> clazz, String methodName, Class<?>[] expectedInputs) { List<Class<?>> l = objectAccess.getMethodParamTypes(clazz, methodName, expectedInputs.length); if (expectedInputs.length != l.size()) { // shouldn't ever happen throw new AssertionError("input size mismatch"); } int i = 0; for (Class<?> input : l) { if (input != expectedInputs[i]) { throw new AssertionError("Expected input type " + expectedInputs[i] + " but got " + input); } i++; } }
private static void assertMethodReturns( Class<?> clazz, String methodName, int numParams, Class<?> type, Class<?>[] genericReturnTypes) { Class<?> c = objectAccess.getMethodReturnType(clazz, methodName, numParams); if (type != c) { throw new AssertionError("Expected " + methodName + " to return " + type + " but got " + c); } if (genericReturnTypes != null) { List<Class<?>> l = objectAccess.getGenericReturnTypes(clazz, methodName, numParams); if (genericReturnTypes.length != l.size()) { throw new AssertionError("Num generic return types don't match"); } int i = 0; for (Class<?> gt : genericReturnTypes) { if (gt != l.get(i)) { throw new AssertionError("Expected " + gt + " but got " + l.get(i)); } i++; } } }
/** @author Simon Toens */ public class CheckGeneratedServiceMethods { private CheckGeneratedServiceMethods() {} private static ObjectAccess objectAccess = ObjectAccess.getInstance(); public static void checkType(Class<?> clazz, Class<?> actorType, boolean ignoreById) { String simpleName = actorType.getSimpleName(); assertMethodExists(clazz, "get" + simpleName + "List", 0); assertMethodTakesParams(clazz, "get" + simpleName + "List", new Class[] {}); assertMethodReturns(clazz, "get" + simpleName + "List", 0, List.class, new Class[] {actorType}); assertMethodExists(clazz, "get" + simpleName + "List", 1); assertMethodTakesParams(clazz, "get" + simpleName + "List", new Class[] {actorType}); assertMethodReturns(clazz, "get" + simpleName + "List", 1, List.class, new Class[] {actorType}); assertMethodExists(clazz, "get" + simpleName + "List", 2); assertMethodTakesParams( clazz, "get" + simpleName + "List", new Class[] {actorType, QueryOptions.class}); assertMethodReturns(clazz, "get" + simpleName + "List", 2, List.class, new Class[] {actorType}); assertMethodExists(clazz, "get" + simpleName + "Count", 0); assertMethodTakesParams(clazz, "get" + simpleName + "Count", new Class[] {}); assertMethodReturns(clazz, "get" + simpleName + "Count", 0, Integer.class); assertMethodExists(clazz, "get" + simpleName + "Count", 1); assertMethodTakesParams(clazz, "get" + simpleName + "Count", new Class[] {actorType}); assertMethodReturns(clazz, "get" + simpleName + "Count", 1, Integer.class); assertMethodExists(clazz, "get" + simpleName + "Count", 2); assertMethodTakesParams( clazz, "get" + simpleName + "Count", new Class[] {actorType, QueryOptions.class}); assertMethodReturns(clazz, "get" + simpleName + "Count", 1, Integer.class); assertMethodExists(clazz, "delete" + simpleName, 1); assertMethodTakesParams(clazz, "delete" + simpleName, new Class[] {actorType}); assertMethodReturns(clazz, "delete" + simpleName, 1, void.class); assertMethodExists(clazz, "insert" + simpleName, 1); assertMethodTakesParams(clazz, "insert" + simpleName, new Class[] {actorType}); assertMethodReturns(clazz, "insert" + simpleName, 1, actorType); assertMethodExists(clazz, "update" + simpleName, 1); assertMethodTakesParams(clazz, "update" + simpleName, new Class[] {actorType}); assertMethodReturns(clazz, "update" + simpleName, 1, void.class); if (!ignoreById) { assertMethodExists(clazz, "get" + simpleName + "ById", 1); assertMethodTakesParams(clazz, "get" + simpleName + "ById", new Class[] {Short.class}); assertMethodReturns(clazz, "get" + simpleName + "ById", 1, actorType); } } private static void assertMethodTakesParams( Class<?> clazz, String methodName, Class<?>[] expectedInputs) { List<Class<?>> l = objectAccess.getMethodParamTypes(clazz, methodName, expectedInputs.length); if (expectedInputs.length != l.size()) { // shouldn't ever happen throw new AssertionError("input size mismatch"); } int i = 0; for (Class<?> input : l) { if (input != expectedInputs[i]) { throw new AssertionError("Expected input type " + expectedInputs[i] + " but got " + input); } i++; } } private static void assertMethodReturns( Class<?> clazz, String methodName, int numParams, Class<?> type) { assertMethodReturns(clazz, methodName, numParams, type, null); } private static void assertMethodReturns( Class<?> clazz, String methodName, int numParams, Class<?> type, Class<?>[] genericReturnTypes) { Class<?> c = objectAccess.getMethodReturnType(clazz, methodName, numParams); if (type != c) { throw new AssertionError("Expected " + methodName + " to return " + type + " but got " + c); } if (genericReturnTypes != null) { List<Class<?>> l = objectAccess.getGenericReturnTypes(clazz, methodName, numParams); if (genericReturnTypes.length != l.size()) { throw new AssertionError("Num generic return types don't match"); } int i = 0; for (Class<?> gt : genericReturnTypes) { if (gt != l.get(i)) { throw new AssertionError("Expected " + gt + " but got " + l.get(i)); } i++; } } } private static void assertMethodExists(Class<?> clazz, String methodName, int numParams) { if (!objectAccess.hasMethod(clazz, methodName, numParams)) { throw new AssertionError( "Method " + methodName + " with " + numParams + " params doesn't exist"); } } }
private static void assertMethodExists(Class<?> clazz, String methodName, int numParams) { if (!objectAccess.hasMethod(clazz, methodName, numParams)) { throw new AssertionError( "Method " + methodName + " with " + numParams + " params doesn't exist"); } }