From 45af20de0c6284fd8b00b5040f57acb89b898b7f Mon Sep 17 00:00:00 2001 From: "nor..67" <normen667@gmail.com> Date: Sun, 23 Oct 2011 19:27:15 +0000 Subject: [PATCH] - add write test to natives extraction git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8518 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../src/desktop/com/jme3/system/Natives.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/engine/src/desktop/com/jme3/system/Natives.java b/engine/src/desktop/com/jme3/system/Natives.java index a5f8ba16e..8071e4f74 100644 --- a/engine/src/desktop/com/jme3/system/Natives.java +++ b/engine/src/desktop/com/jme3/system/Natives.java @@ -65,19 +65,30 @@ public class Natives { if (extractionDir == null) { File workingFolder = new File("").getAbsoluteFile(); if (workingFolder.getUsableSpace() == 0 || !workingFolder.canWrite()) { - logger.log(Level.WARNING, "Working directory is not writable. Using home directory instead."); - extractionDir = new File(JmeSystem.getStorageFolder(), - "natives_" + Integer.toHexString(computeNativesHash())); - if (!extractionDir.exists()) { - extractionDir.mkdir(); - } + setStorageExtractionDir(); } else { - extractionDir = workingFolder; + try { + File file = new File(workingFolder.getAbsolutePath() + File.separator + ".jmetestwrite"); + file.createNewFile(); + file.delete(); + extractionDir = workingFolder; + } catch (Exception e) { + setStorageExtractionDir(); + } } } return extractionDir; } + private static void setStorageExtractionDir() { + logger.log(Level.WARNING, "Working directory is not writable. Using home directory instead."); + extractionDir = new File(JmeSystem.getStorageFolder(), + "natives_" + Integer.toHexString(computeNativesHash())); + if (!extractionDir.exists()) { + extractionDir.mkdir(); + } + } + private static int computeNativesHash() { try { String classpath = System.getProperty("java.class.path");