33
33
import java .io .FileOutputStream ;
34
34
import java .io .InputStream ;
35
35
import java .io .OutputStream ;
36
+ import java .text .MessageFormat ;
36
37
import java .util .Properties ;
37
38
import java .util .logging .Level ;
38
39
import java .util .logging .Logger ;
@@ -46,6 +47,7 @@ public final class Storage {
46
47
47
48
private static final String VISUALVM_TMP_DIR = System .getProperty ("visualvm.tmpdir" ); // NOI18N
48
49
private static final String TEMPORARY_STORAGE_DIRNAME = "visualvm.dat" ; // NOI18N
50
+ private static final String TEMPORARY_STORAGE_DIRNAME_EX = "visualvm_{0}.dat" ; // NOI18N
49
51
private static final String PERSISTENT_STORAGE_DIRNAME = "repository" ; // NOI18N
50
52
51
53
private static final Logger LOGGER = Logger .getLogger (Storage .class .getName ());
@@ -242,10 +244,24 @@ public synchronized void deleteCustomPropertiesStorage() {
242
244
public static String getTemporaryStorageDirectoryString () {
243
245
synchronized (temporaryStorageDirectoryStringLock ) {
244
246
if (temporaryStorageDirectoryString == null ) {
245
- String tmpDir = VISUALVM_TMP_DIR != null ? VISUALVM_TMP_DIR :
246
- System .getProperty ("java.io.tmpdir" ); // NOI18N
247
- temporaryStorageDirectoryString = new File (tmpDir ).getAbsolutePath ()
248
- + File .separator + TEMPORARY_STORAGE_DIRNAME ;
247
+ if (VISUALVM_TMP_DIR != null ) {
248
+ temporaryStorageDirectoryString = new File (VISUALVM_TMP_DIR ).getAbsolutePath () +
249
+ File .separator + TEMPORARY_STORAGE_DIRNAME ;
250
+ } else {
251
+ String tmpDir = System .getProperty ("java.io.tmpdir" ); // NOI18N
252
+ String storageDir ;
253
+
254
+ String userDir = System .getProperty ("user.home" ); // NOI18N
255
+ if (userDir != null && !userDir .isEmpty ()) {
256
+ String userName = new File (userDir ).getName ();
257
+ storageDir = MessageFormat .format (TEMPORARY_STORAGE_DIRNAME_EX , userName );
258
+ } else {
259
+ storageDir = TEMPORARY_STORAGE_DIRNAME ;
260
+ }
261
+
262
+ temporaryStorageDirectoryString = new File (tmpDir ).getAbsolutePath () +
263
+ File .separator + storageDir ;
264
+ }
249
265
}
250
266
return temporaryStorageDirectoryString ;
251
267
}
0 commit comments