private static void replaceImplementation(CtMethod m, String src) throws Exception { removeNativeModifier(m); if (src == null || src.trim().length() == 0) { m.setBody(null); } else { src = src.trim(); if (!src.startsWith("{")) { if (!m.getReturnType().equals(CtClass.voidType) && !src.startsWith("return")) { src = "{ return ($r)($w) " + src; } else { src = "{ " + src; } } if (!src.endsWith("}")) { if (!src.endsWith(";")) { src = src + "; }"; } else { src = src + " }"; } } try { m.setBody(src); } catch (CannotCompileException e) { throw new RuntimeException("Unable to compile body " + src, e); } } }
private static void insertAfter(CtMethod m, String newBody) throws Exception { removeNativeModifier(m); m.insertAfter(newBody); }