UML (be)schreiben

Mit PlantUML kann man eine Vielzahl verschiedener Diagrammentypen beschreiben. Die Deklaration kann beispielsweise in JavaDoc oder in MediaWiki eingebettet werden. Aus Bob->Alice : hello macht PlantUML folgendes Diagramm:

Im JavaDoc werden Diagrammbeschreibungen mit @startuml dateiname.png eingeleitet und mit @enduml beendet. Per Ant-Skript werden die JavaDoc-Diagramme mit folgendem target übersetzt.

<target name="plantuml" description="erzeugt die Diagramme mit PlantUML">
   <taskdef name="plantuml" classname="net.sourceforge.plantuml.ant.PlantUmlTask" classpath="/home/jenkins/libs/plantuml.jar"/>
   <property name="PLANTUML_PATH" value="/home/jenkins/plantuml"/>
   <delete dir="${PLANTUML_PATH}" />
   <mkdir dir="${PLANTUML_PATH}" />
   <plantuml output="${PLANTUML_PATH}" checkonly="false" verbose="false">
       <fileset dir="${JENKINS_JOBS}">
           <include name="**/workspace/src/**/*.java" />
       </fileset>
   </plantuml>
</target>

SwingWorker und Event Dispatch Thread (EDT)

System.out.println("TID=" + 
      Thread.currentThread().getId() + " (main)");
final SwingWorker<String, String> x = 
      new SwingWorker<String, String>() {
   @Override
   protected String doInBackground() throws Exception {
      final long tid = Thread.currentThread().getId();
      System.out.println("TID=" + tid + 
            " doInBackground() isEventDispatchThread=" +
            SwingUtilities.isEventDispatchThread());
      System.out.println("Long running code goes here.");
      return "";
   }
   @Override
   protected void done() {
      final long tid = Thread.currentThread().getId();
      System.out.println("TID=" + tid + 
            "          done() isEventDispatchThread=" +
            SwingUtilities.isEventDispatchThread());
      System.out.println("GUI updates/changes go here.");
   }
};
x.execute();
TID=1 (main)
TID=9 doInBackground() isEventDispatchThread=false
Long running code goes here.
TID=16          done() isEventDispatchThread=true
GUI updates/changes go here.