I found one last place where we had swing in non-gui code: o.c.c.progress.Job. The purpose was to fire events every 100 milliseconds for a job whose completion was not known (i.e. fakeupdates) I replaced it with java.util.Timer and java.util.TimerTask.