UMLツールで Java 5.0 のソースをリバースする

なかなかこれができるツールが少ないので、対応するまでの暫定対応。
ソースコードの 5.0 拡張構文をコメントアウトするだけ。
DisableJava5.rb をダウンロードして、

ruby DisableJava5.rb source_path [target_path]

スクリプトを実行すると、

// 変換前
import static java.util.Calendar.*;

public class Example5<T extends Number> {

  @Deprecated
  public T getData() {
    return null;
  }

  @SuppressWarnings("unchecked")
  public <S> void doSomething(S arg, String... options) {
    for (String option : options) {
      System.out.println(option);
    }
  }

  public enum Bar {FIRST, SECOND, THIRD}

}

このソースコードが、

// 変換後
/*import static java.util.Calendar.*;*/

public class Example5/*<T extends Number>*/ {

  /*@Deprecated*/
  public T getData() {
    return null;
  }

  /*@SuppressWarnings("unchecked")*/
  public /*<S>*/ void doSomething(S arg, String/*...*/[] options) {
    for (/*String option : options:*/;;) {
      System.out.println(option);
    }
  }

  /*public enum Bar {FIRST, SECOND, THIRD}*/

}

このように変換される。

コンパイルは通らないけれど、Java 5.0 のリバースに対応していないUMLツールでもリバースできるようになる。JUDE と Elapiz で動作を確認した。
なお、Enterpries Architect は Java 5.0 に対応済み。

http://homepage2.nifty.com/glad/work/hatena/20061013/Example5.png