From 46f1c48405a5a5dbe23490877a301a36ac318219 Mon Sep 17 00:00:00 2001 From: hollingsworthd Date: Tue, 24 Nov 2015 15:08:22 -0500 Subject: [PATCH] Make temp dir available to users --- .../jbrowserdriver/JBrowserDriver.java | 8 ++++++++ src/com/machinepublishers/jbrowserdriver/JavaFx.java | 9 +++++++++ .../machinepublishers/jbrowserdriver/JavaFxRemote.java | 3 +++ .../machinepublishers/jbrowserdriver/JavaFxServer.java | 10 ++++++++++ 4 files changed, 30 insertions(+) diff --git a/src/com/machinepublishers/jbrowserdriver/JBrowserDriver.java b/src/com/machinepublishers/jbrowserdriver/JBrowserDriver.java index 1cad50d9..38f08c9c 100644 --- a/src/com/machinepublishers/jbrowserdriver/JBrowserDriver.java +++ b/src/com/machinepublishers/jbrowserdriver/JBrowserDriver.java @@ -23,6 +23,7 @@ package com.machinepublishers.jbrowserdriver; import java.io.ByteArrayOutputStream; +import java.io.File; import java.util.List; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; @@ -105,6 +106,13 @@ public void init() { context.init(this); } + /** + * @return Temporary directory where generated runtime files are saved. + */ + public File temporaryDir() { + return JavaFx.tmpDir(context.settingsId.get()); + } + /** * Reset the state of the browser. More efficient than quitting the * browser and creating a new instance. diff --git a/src/com/machinepublishers/jbrowserdriver/JavaFx.java b/src/com/machinepublishers/jbrowserdriver/JavaFx.java index 4765ec42..d30c5920 100644 --- a/src/com/machinepublishers/jbrowserdriver/JavaFx.java +++ b/src/com/machinepublishers/jbrowserdriver/JavaFx.java @@ -22,6 +22,7 @@ */ package com.machinepublishers.jbrowserdriver; +import java.io.File; import java.rmi.RemoteException; import com.machinepublishers.browser.Browser.Fatal; @@ -61,4 +62,12 @@ static void close(long settingsId) { throw new Fatal(e); } } + + static File tmpDir(long settingsId) { + try { + return instance.tmpDir(settingsId); + } catch (RemoteException e) { + throw new Fatal(e); + } + } } diff --git a/src/com/machinepublishers/jbrowserdriver/JavaFxRemote.java b/src/com/machinepublishers/jbrowserdriver/JavaFxRemote.java index 26e8413f..e02ac4d6 100644 --- a/src/com/machinepublishers/jbrowserdriver/JavaFxRemote.java +++ b/src/com/machinepublishers/jbrowserdriver/JavaFxRemote.java @@ -1,5 +1,6 @@ package com.machinepublishers.jbrowserdriver; +import java.io.File; import java.rmi.Remote; import java.rmi.RemoteException; @@ -10,4 +11,6 @@ public interface JavaFxRemote extends Remote { JavaFxObjectRemote getStatic(String type, Long id) throws RemoteException; void close(long settingsId) throws RemoteException; + + File tmpDir(long settingsId) throws RemoteException; } diff --git a/src/com/machinepublishers/jbrowserdriver/JavaFxServer.java b/src/com/machinepublishers/jbrowserdriver/JavaFxServer.java index 386830a8..6b626094 100644 --- a/src/com/machinepublishers/jbrowserdriver/JavaFxServer.java +++ b/src/com/machinepublishers/jbrowserdriver/JavaFxServer.java @@ -114,6 +114,16 @@ public void close(long settingsId) { } } + public File tmpDir(long settingsId) { + synchronized (lock) { + ClassLoader classLoader = classLoaders.get(settingsId); + if (classLoader != null && classLoader instanceof JavaFxClassLoader) { + return ((JavaFxClassLoader) classLoader).myTmpDir; + } + } + return null; + } + private static ClassLoader newClassLoader(long settingsId) { try { final ClassLoader classLoader;