How do I generate a Java class forwarding decorator in IntelliJ IDEA? -


intellij idea (i'm v2016.3.3 ce) provides nice feature generate delegated methods class instance using generate->delegate methods. consider following class:

public final class jsonparserdecorator         extends jsonparser {      private final jsonparser jsonparser;      @override     public objectcodec getcodec() {         return jsonparser.getcodec();     }      @override     public void setcodec(final objectcodec c) {         jsonparser.setcodec(c);     }      @override     public object getinputsource() {         return jsonparser.getinputsource();     }      @override     public object getcurrentvalue() {         return jsonparser.getcurrentvalue();     }      ... rest of 85 methods here ...  } 

i create forwarding decorators somehow. since intellij idea (at least 2016.3.3) can generate delegating methods particular field only, create field that, generate methods, , use text replace replace jsonparser. jsonparser().. can accomplish following result:

public abstract class forwardingjsonparser         extends jsonparser {      protected forwardingjsonparser() {     }      protected forwardingjsonparser(final int features) {         super(features);     }      protected abstract jsonparser jsonparser();      // @formatter:off     @override public objectcodec getcodec() { return jsonparser().getcodec(); }     @override public void setcodec(final objectcodec c) { jsonparser().setcodec(c); }     @override public object getinputsource() { return jsonparser().getinputsource(); }     @override public object getcurrentvalue() { return jsonparser().getcurrentvalue(); }     ... rest of 85 methods here ...     // @formatter:on  } 

please note differences between what's generated idea are:

  • the abstract method added, field removed, references fixed using text replacement;
  • the constructor overloads using generate->constructor;
  • the generated code text compacted in order save space using suppression comments (it's code generation, nothing special).

the similar thing in intellij idea know file templates, don't seem able accomplish it, if it's possible:

#if (${package_name} && ${package_name} != "")package ${package_name};#end #parse("file header.java") public abstract class forwarding${name}         extends ${name} {      // todo generate constructors - how?      // todo generate forwarding method - how? protected abstract ${name} #camelcase(${name})();      // @formatter:off     // @checkstyle:off     // todo generate overrides , compact them if possible -- how?     // @checkstyle:on     // @formatter:on  } 

is there way generate such decorators in intellij idea? thanks!


Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

thorough guide for profiling racket code -