public String generateMethodBody(CtMethod ctMethod, boolean wasNative, boolean wasAbstract, CtClass returnCtClass, Type returnType, boolean aStatic, boolean shouldGenerateCallToSuper) throws NotFoundException { String methodBody; if (wasAbstract) { methodBody = returnType.isVoid() ? "" : "return " + returnType.defaultReturnString() + ";"; } else { methodBody = generateMethodBody(ctMethod, returnCtClass, returnType, aStatic, shouldGenerateCallToSuper); } if (wasNative) { methodBody += returnType.isVoid() ? "" : "return " + returnType.defaultReturnString() + ";"; } return methodBody; }
public static Class<?> loadClass(String paramType, ClassLoader classLoader) { Class primitiveClass = Type.findPrimitiveClass(paramType); if (primitiveClass != null) return primitiveClass; int arrayLevel = 0; while (paramType.endsWith("[]")) { arrayLevel++; paramType = paramType.substring(0, paramType.length() - 2); } Class<?> clazz = Type.findPrimitiveClass(paramType); if (clazz == null) { try { clazz = classLoader.loadClass(paramType); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } while (arrayLevel-- > 0) { clazz = Array.newInstance(clazz, 0).getClass(); } return clazz; }
public static Class findPrimitiveClass(String name) { for (Type type : Type.values()) { if (type.type != null && type.type.getName().equals(name)) { return type.type; } } return null; } }
public String generateMethodBody(CtMethod ctMethod, CtClass returnCtClass, Type returnType, boolean isStatic, boolean shouldGenerateCallToSuper) throws NotFoundException { boolean returnsVoid = returnType.isVoid(); String className = ctClass.getName(); buf.append(returnType.nonPrimitiveClassName(returnCtClass)); buf.append(") x)"); buf.append(returnType.unboxString()); buf.append(";\n"); if (shouldGenerateCallToSuper) { } else { buf.append("return "); buf.append(returnType.defaultReturnString()); buf.append(";\n");
Type returnType = Type.find(returnCtClass);