Метод рисования должен был быть разделен на две части, одна из которых - регистрация GVTTreeRendererListener
для JSVGCanvas
объекта.Как только рендеринг завершен, этот слушатель вызывает метод, который выполняет фактическую работу рисования, к тому времени объект UpdateManager присутствует на холсте.
public void init() {
canvas = new JSVGCanvas(null, true, false);
canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
}
public void paint(final DomainObject domainObject) {
canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
renderComplete(domainObject);
}
});
}
public void renderComplete(DomainObject domainObject) {
UpdateManager updateManager = canvas.getUpdateManager();
RunnableQueue runnableQueue = updateManager.getUpdateRunnableQueue();
runnableQueue.invokeLater(new Runnable() {
public void run() {
// Document operations here
}
});
}
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Ответ был найден на этом форуме Batik, и ярешил задокументировать его здесь как более полезный ресурс http://batik.2283329.n4.nabble.com/UpdateManager-is-Null-td2974717.html