@Command("new-method") @RequiresResource(JavaResource.class) public void newMethod( @PipeIn final String in, final PipeOut out, @Option( required = false, help = "the method definition: surround with single quotes", description = "method definition") final String... def) throws FileNotFoundException { JavaSourceFacet java = project.getFacet(JavaSourceFacet.class); String methodDef = null; if (def != null) { methodDef = Strings.join(Arrays.asList(def), " "); } else if (in != null) { methodDef = in; } else { throw new RuntimeException("arguments required"); } JavaSource<?> source = resource.getJavaSource(); if (source instanceof MethodHolder) { MethodHolder<?> clazz = ((MethodHolder<?>) source); Method<JavaClass> method = JavaParser.parse(JavaClass.class, "public class Temp{}").addMethod(methodDef); if (clazz.hasMethodSignature(method)) { throw new IllegalStateException( "Method with signature [" + method.toSignature() + "] already exists."); } clazz.addMethod(methodDef); java.saveJavaSource(source); } }