package de.bgnet.bt; import java.util.HashMap; import java.util.Map; import ag.ion.bion.officelayer.application.IOfficeApplication; import ag.ion.bion.officelayer.application.OfficeApplicationRuntime; import ag.ion.bion.officelayer.document.IDocument; import ag.ion.bion.officelayer.text.ITextDocument; public class LeakTest { static IOfficeApplication createOfficeApplication() { final String officeInstallDir = "C:\\Program Files (x86)\\OpenOffice 4"; try { System.setProperty("office.home", officeInstallDir); final Map config = new HashMap(2); config.put(IOfficeApplication.APPLICATION_TYPE_KEY, IOfficeApplication.LOCAL_APPLICATION); config.put(IOfficeApplication.APPLICATION_HOME_KEY, officeInstallDir); IOfficeApplication application = OfficeApplicationRuntime.getApplication(config); application.activate(); return application; } catch (Exception e) { throw new RuntimeException("Could not start Open Office.", e); } } public static void main(String[] args) throws Exception { if (args.length != 1) { System.out.println("Usage: LeakTest (num: Count of create/close operations)"); System.exit(-1); } final IOfficeApplication application = createOfficeApplication(); for (int i = 0; i < Integer.parseInt(args[0]); i++) { ITextDocument textDocument = (ITextDocument) application.getDocumentService().constructNewHiddenDocument(IDocument.WRITER); textDocument.close(); System.gc(); System.runFinalization(); } application.deactivate(); } }