From f2694065ad7685cb76c23b8aecd39e1481c07c0b Mon Sep 17 00:00:00 2001 From: Ingo Bauersachs Date: Tue, 6 Aug 2013 17:47:10 +0200 Subject: [PATCH] Use separate dirs for application logs, cache and configuration data This is primarily used on Windows to store logs and cached data on the local computers instead of on the network when roaming profiles with folder redirection is used. --- lib/felix.client.run.properties | 2 +- lib/installer-exclude/libjitsi.jar | Bin 1583953 -> 1585043 bytes .../impl/contactlist/MclStorageManager.java | 3 +- .../gui/main/chat/ChatConversationPanel.java | 5 +- .../presence/avatar/AvatarStackManager.java | 16 +++-- .../impl/history/HistoryServiceImpl.java | 30 ++++---- .../keybindings/KeybindingsServiceImpl.java | 6 +- .../PacketLoggingServiceImpl.java | 12 ++-- ...tionSetServerStoredAccountInfoMsnImpl.java | 8 ++- .../launcher/SIPCommunicator.java | 67 ++++++++++++++---- .../plugin/dnsconfig/DnssecPanel.java | 4 +- .../plugin/loggingutils/LogsCollector.java | 4 +- .../plugin/spellcheck/SpellChecker.java | 18 +++-- .../communicator/util/AvatarCacheUtils.java | 8 ++- .../sip/communicator/util/FileHandler.java | 8 +-- .../util/launchutils/LaunchArgHandler.java | 16 +++++ .../util/launchutils/SipCommunicatorLock.java | 18 ++--- .../fileaccess/TestFileAccessService.java | 23 +++--- 18 files changed, 160 insertions(+), 88 deletions(-) diff --git a/lib/felix.client.run.properties b/lib/felix.client.run.properties index 77de9f3d9..cf8c6e429 100644 --- a/lib/felix.client.run.properties +++ b/lib/felix.client.run.properties @@ -212,7 +212,7 @@ felix.auto.start.80= \ # file:lib/bundle/architectureviewer1.1.jar # Specify the directory where oscar should deploy its bundles -org.osgi.framework.storage=${net.java.sip.communicator.SC_HOME_DIR_LOCATION}/${net.java.sip.communicator.SC_HOME_DIR_NAME}/sip-communicator.bin +org.osgi.framework.storage=${net.java.sip.communicator.SC_CACHE_DIR_LOCATION}/${net.java.sip.communicator.SC_HOME_DIR_NAME}/sip-communicator.bin org.osgi.framework.startlevel.beginning=100 felix.startlevel.bundle=100 diff --git a/lib/installer-exclude/libjitsi.jar b/lib/installer-exclude/libjitsi.jar index 27f49f59f50ca4121a35e4be1f2081bc6aefbb9a..9ef4795d26972b574198709230ec326267e0b791 100644 GIT binary patch delta 63793 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 YIwabtcWGO;ZCPXIGFCxnVY}7;0rlrtXaE2J diff --git a/src/net/java/sip/communicator/impl/contactlist/MclStorageManager.java b/src/net/java/sip/communicator/impl/contactlist/MclStorageManager.java index 27052e835..3d4528066 100644 --- a/src/net/java/sip/communicator/impl/contactlist/MclStorageManager.java +++ b/src/net/java/sip/communicator/impl/contactlist/MclStorageManager.java @@ -295,7 +295,8 @@ void start(BundleContext bc, MetaContactListServiceImpl mclServImpl) // get a reference to the contact list file. try { - contactlistFile = faService.getPrivatePersistentFile(fileName); + contactlistFile = faService.getPrivatePersistentFile(fileName, + FileCategory.PROFILE); if (!contactlistFile.exists() && !contactlistFile.createNewFile()) throw new IOException("Failed to create file" diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java index 537fd07c0..c462a208c 100755 --- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatConversationPanel.java @@ -22,6 +22,7 @@ import javax.swing.text.html.HTML.*; import org.jitsi.service.configuration.*; +import org.jitsi.service.fileaccess.FileCategory; import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.main.chat.history.*; @@ -1841,7 +1842,7 @@ private static String getContactAvatar( try { avatarFile = GuiActivator.getFileAccessService() - .getPrivatePersistentFile(avatarPath); + .getPrivatePersistentFile(avatarPath, FileCategory.CACHE); } catch (Exception e) { @@ -1874,7 +1875,7 @@ private static String getContactAvatar( try { avatarFile = GuiActivator.getFileAccessService() - .getPrivatePersistentFile(avatarPath); + .getPrivatePersistentFile(avatarPath, FileCategory.CACHE); } catch (Exception e) { diff --git a/src/net/java/sip/communicator/impl/gui/main/presence/avatar/AvatarStackManager.java b/src/net/java/sip/communicator/impl/gui/main/presence/avatar/AvatarStackManager.java index b38d8675e..948716e94 100644 --- a/src/net/java/sip/communicator/impl/gui/main/presence/avatar/AvatarStackManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/presence/avatar/AvatarStackManager.java @@ -45,7 +45,7 @@ public static void deleteImage(int index) { File imageFile = GuiActivator.getFileAccessService().getPrivatePersistentFile( - fileName); + fileName, FileCategory.CACHE); if (imageFile.exists() && !imageFile.delete()) logger.error("Failed to delete stored image at index " + index); @@ -72,7 +72,7 @@ public static BufferedImage loadImage(int index) imageFile = GuiActivator.getFileAccessService().getPrivatePersistentFile( - imagePath); + imagePath, FileCategory.CACHE); } catch (Exception e) { @@ -108,11 +108,13 @@ private static void moveImage(int oldIndex, int newIndex) try { FileAccessService fas = GuiActivator.getFileAccessService(); - File oldFile = fas.getPrivatePersistentFile(oldImagePath); + File oldFile = fas.getPrivatePersistentFile(oldImagePath, + FileCategory.CACHE); if (oldFile.exists()) { - File newFile = fas.getPrivatePersistentFile(newImagePath); + File newFile = fas.getPrivatePersistentFile(newImagePath, + FileCategory.CACHE); oldFile.renameTo(newFile); } @@ -147,12 +149,14 @@ public static void storeImage(BufferedImage image, int index) try { FileAccessService fas = GuiActivator.getFileAccessService(); - File storeDir = fas.getPrivatePersistentDirectory(STORE_DIR); + File storeDir = fas.getPrivatePersistentDirectory(STORE_DIR, + FileCategory.CACHE); // if dir doesn't exist create it storeDir.mkdirs(); - File file = fas.getPrivatePersistentFile(imagePath); + File file = fas.getPrivatePersistentFile(imagePath, + FileCategory.CACHE); ImageIO.write(image, "png", file); } diff --git a/src/net/java/sip/communicator/impl/history/HistoryServiceImpl.java b/src/net/java/sip/communicator/impl/history/HistoryServiceImpl.java index d79999967..370558bb0 100644 --- a/src/net/java/sip/communicator/impl/history/HistoryServiceImpl.java +++ b/src/net/java/sip/communicator/impl/history/HistoryServiceImpl.java @@ -101,7 +101,7 @@ public Iterator getExistingIDs() = getFileAccessService().getPrivatePersistentDirectory( (userSetDataDirectory == null) ? DATA_DIRECTORY - : userSetDataDirectory); + : userSetDataDirectory, FileCategory.PROFILE); findDatFiles(vect, histDir); } catch (Exception e) @@ -246,24 +246,29 @@ private File createHistoryDirectories(HistoryID id) throws IOException { String[] idComponents = id.getID(); - String[] dirs = new String[idComponents.length + 1]; - String userSetDataDirectory = System.getProperty("HistoryServiceDirectory"); - if(userSetDataDirectory != null) - dirs[0] = userSetDataDirectory; - else - dirs[0] = DATA_DIRECTORY; - - // escape chars in direcotory names + // escape chars in directory names escapeCharacters(idComponents); - System.arraycopy(idComponents, 0, dirs, 1, dirs.length - 1); + String userSetDataDirectory + = System.getProperty("HistoryServiceDirectory"); + + File dir = new File(userSetDataDirectory != null + ? userSetDataDirectory + : DATA_DIRECTORY); + + for (String s : idComponents) + { + dir = new File(dir, s); + } File directory = null; try { directory - = getFileAccessService().getPrivatePersistentDirectory(dirs); + = getFileAccessService().getPrivatePersistentDirectory( + dir.toString(), + FileCategory.PROFILE); } catch (Exception e) { @@ -475,7 +480,8 @@ private File getDirForHistory(HistoryID id) = getFileAccessService().getPrivatePersistentDirectory( (userSetDataDirectory == null) ? DATA_DIRECTORY - : userSetDataDirectory); + : userSetDataDirectory, + FileCategory.PROFILE); } catch (Exception e) { diff --git a/src/net/java/sip/communicator/impl/keybindings/KeybindingsServiceImpl.java b/src/net/java/sip/communicator/impl/keybindings/KeybindingsServiceImpl.java index bdeb0f169..d528c0cd5 100644 --- a/src/net/java/sip/communicator/impl/keybindings/KeybindingsServiceImpl.java +++ b/src/net/java/sip/communicator/impl/keybindings/KeybindingsServiceImpl.java @@ -139,13 +139,15 @@ synchronized void start(BundleContext bc) // Makes directory for custom bindings if it doesn't exist File customDir = faService - .getPrivatePersistentDirectory(CUSTOM_KEYBINDING_DIR); + .getPrivatePersistentDirectory(CUSTOM_KEYBINDING_DIR, + FileCategory.PROFILE); if (!customDir.exists()) customDir.mkdir(); // Gets file access service to reference persistent storage // of the user - customFile = faService.getPrivatePersistentFile(customPath); + customFile = faService.getPrivatePersistentFile(customPath, + FileCategory.PROFILE); } catch (Exception exc) { diff --git a/src/net/java/sip/communicator/impl/packetlogging/PacketLoggingServiceImpl.java b/src/net/java/sip/communicator/impl/packetlogging/PacketLoggingServiceImpl.java index 964b6e289..62deaa957 100644 --- a/src/net/java/sip/communicator/impl/packetlogging/PacketLoggingServiceImpl.java +++ b/src/net/java/sip/communicator/impl/packetlogging/PacketLoggingServiceImpl.java @@ -11,6 +11,7 @@ import net.java.sip.communicator.util.*; +import org.jitsi.service.fileaccess.*; import org.jitsi.service.packetlogging.*; /** @@ -165,12 +166,11 @@ private void getFileNames() for(int i = 0; i < fileCount; i++) { files[i] - = PacketLoggingActivator.getFileAccessService().getPrivatePersistentFile( - PacketLoggingActivator.LOGGING_DIR_NAME - + File.separator - + "jitsi" - + i - + ".pcap"); + = PacketLoggingActivator.getFileAccessService() + .getPrivatePersistentFile( + new File(PacketLoggingActivator.LOGGING_DIR_NAME, + "jitsi" + i + ".pcap").toString(), + FileCategory.LOG); } } diff --git a/src/net/java/sip/communicator/impl/protocol/msn/OperationSetServerStoredAccountInfoMsnImpl.java b/src/net/java/sip/communicator/impl/protocol/msn/OperationSetServerStoredAccountInfoMsnImpl.java index 421c2c1f0..81aa89a4c 100644 --- a/src/net/java/sip/communicator/impl/protocol/msn/OperationSetServerStoredAccountInfoMsnImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/msn/OperationSetServerStoredAccountInfoMsnImpl.java @@ -11,6 +11,8 @@ import javax.imageio.*; +import org.jitsi.service.fileaccess.FileCategory; + import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenericDetail; import net.java.sip.communicator.service.protocol.ServerStoredDetails.ImageDetail; @@ -397,13 +399,13 @@ private String storePicture(byte[] data) + msnProvider.getAccountID().getAccountUniqueID() + ".jpg"; File storeDir = MsnActivator.getFileAccessService() - .getPrivatePersistentDirectory(STORE_DIR); + .getPrivatePersistentDirectory(STORE_DIR, FileCategory.CACHE); // if dir doesn't exist create it storeDir.mkdirs(); File file = MsnActivator.getFileAccessService() - .getPrivatePersistentFile(imagePath); + .getPrivatePersistentFile(imagePath, FileCategory.CACHE); ImageIO.write( ImageIO.read(new ByteArrayInputStream(data)), @@ -557,7 +559,7 @@ public void registrationStateChanged(RegistrationStateChangeEvent evt) + msnProvider.getAccountID().getAccountUniqueID() + ".jpg"; File file = MsnActivator.getFileAccessService() - .getPrivatePersistentFile(imagePath); + .getPrivatePersistentFile(imagePath, FileCategory.CACHE); if(file.exists()) { diff --git a/src/net/java/sip/communicator/launcher/SIPCommunicator.java b/src/net/java/sip/communicator/launcher/SIPCommunicator.java index fb5672983..6353fc4d0 100644 --- a/src/net/java/sip/communicator/launcher/SIPCommunicator.java +++ b/src/net/java/sip/communicator/launcher/SIPCommunicator.java @@ -31,6 +31,20 @@ public class SIPCommunicator private static final String[] LEGACY_DIR_NAMES = { ".sip-communicator", "SIP Communicator" }; + /** + * The name of the property that stores the home dir for cache data, such + * as avatars and spelling dictionaries. + */ + public static final String PNAME_SC_CACHE_DIR_LOCATION = + "net.java.sip.communicator.SC_CACHE_DIR_LOCATION"; + + /** + * The name of the property that stores the home dir for application log + * files (not history). + */ + public static final String PNAME_SC_LOG_DIR_LOCATION = + "net.java.sip.communicator.SC_LOG_DIR_LOCATION"; + /** * Name of the possible configuration file names (used under macosx). */ @@ -182,12 +196,14 @@ static void setScHomeDir(String osName) * ${user.home}/.sip-communicator if it exists (and the new path isn't * already in use). */ - String location = System.getProperty(PNAME_SC_HOME_DIR_LOCATION); + String profileLocation = System.getProperty(PNAME_SC_HOME_DIR_LOCATION); + String cacheLocation = System.getProperty(PNAME_SC_CACHE_DIR_LOCATION); + String logLocation = System.getProperty(PNAME_SC_LOG_DIR_LOCATION); String name = System.getProperty(PNAME_SC_HOME_DIR_NAME); boolean isHomeDirnameForced = name != null; - if ((location == null) || (name == null)) + if (profileLocation == null || name == null) { String defaultLocation = System.getProperty("user.home"); String defaultName = ".jitsi"; @@ -202,11 +218,22 @@ static void setScHomeDir(String osName) if (osName.startsWith("Mac")) { - if (location == null) - location = + if (profileLocation == null) + profileLocation = System.getProperty("user.home") + File.separator + "Library" + File.separator + "Application Support"; + if (cacheLocation == null) + cacheLocation = + System.getProperty("user.home") + File.separator + + "Library" + File.separator + + "Caches"; + if (logLocation == null) + logLocation = + System.getProperty("user.home") + File.separator + + "Library" + File.separator + + "Logs"; + if (name == null) name = "Jitsi"; } @@ -218,15 +245,23 @@ else if (osName.startsWith("Windows")) * it may be a good idea to follow the OS recommendations and * use APPDATA on pre-Vista systems as well. */ - if (location == null) - location = System.getenv("APPDATA"); + if (profileLocation == null) + profileLocation = System.getenv("APPDATA"); + if (cacheLocation == null) + cacheLocation = System.getenv("LOCALAPPDATA"); + if (logLocation == null) + logLocation = System.getenv("LOCALAPPDATA"); if (name == null) name = "Jitsi"; } /* If there're no OS specifics, use the defaults. */ - if (location == null) - location = defaultLocation; + if (profileLocation == null) + profileLocation = defaultLocation; + if (cacheLocation == null) + cacheLocation = profileLocation; + if (logLocation == null) + logLocation = profileLocation; if (name == null) name = defaultName; @@ -236,23 +271,23 @@ else if (osName.startsWith("Windows")) * doesn't look for the default dir. */ if (!isHomeDirnameForced - && (new File(location, name).isDirectory() == false) + && (new File(profileLocation, name).isDirectory() == false) && new File(defaultLocation, defaultName).isDirectory()) { - location = defaultLocation; + profileLocation = defaultLocation; name = defaultName; } // if we need to check legacy names and there is no current home dir // already created if(chekLegacyDirNames - && !checkHomeFolderExist(location, name, osName)) + && !checkHomeFolderExist(profileLocation, name, osName)) { // now check whether a legacy dir name exists and use it for(String dir : LEGACY_DIR_NAMES) { // check the platform specific directory - if(checkHomeFolderExist(location, dir, osName)) + if(checkHomeFolderExist(profileLocation, dir, osName)) { name = dir; break; @@ -262,18 +297,20 @@ && new File(defaultLocation, defaultName).isDirectory()) if(checkHomeFolderExist(defaultLocation, dir, osName)) { name = dir; - location = defaultLocation; + profileLocation = defaultLocation; break; } } } - System.setProperty(PNAME_SC_HOME_DIR_LOCATION, location); + System.setProperty(PNAME_SC_HOME_DIR_LOCATION, profileLocation); + System.setProperty(PNAME_SC_CACHE_DIR_LOCATION, cacheLocation); + System.setProperty(PNAME_SC_LOG_DIR_LOCATION, logLocation); System.setProperty(PNAME_SC_HOME_DIR_NAME, name); } // when we end up with the home dirs, make sure we have log dir - new File(location, name + File.separator + "log").mkdirs(); + new File(new File(logLocation, name), "log").mkdirs(); } /** diff --git a/src/net/java/sip/communicator/plugin/dnsconfig/DnssecPanel.java b/src/net/java/sip/communicator/plugin/dnsconfig/DnssecPanel.java index 4faa6c15c..722e26487 100644 --- a/src/net/java/sip/communicator/plugin/dnsconfig/DnssecPanel.java +++ b/src/net/java/sip/communicator/plugin/dnsconfig/DnssecPanel.java @@ -20,6 +20,7 @@ import net.java.sip.communicator.util.*; import org.jitsi.service.configuration.*; +import org.jitsi.service.fileaccess.*; import org.jitsi.service.resources.*; import org.osgi.framework.*; @@ -250,7 +251,8 @@ public void actionPerformed(ActionEvent e) try { f = DnsConfigActivator.getFileAccessService() - .getPrivatePersistentFile(".usednsjava"); + .getPrivatePersistentFile(".usednsjava", + FileCategory.PROFILE); if(chkEnabled.isSelected()) { if(!f.createNewFile() && !f.exists()) diff --git a/src/net/java/sip/communicator/plugin/loggingutils/LogsCollector.java b/src/net/java/sip/communicator/plugin/loggingutils/LogsCollector.java index 93a87c5c5..df8558620 100644 --- a/src/net/java/sip/communicator/plugin/loggingutils/LogsCollector.java +++ b/src/net/java/sip/communicator/plugin/loggingutils/LogsCollector.java @@ -13,6 +13,7 @@ import net.java.sip.communicator.util.Logger; +import org.jitsi.service.fileaccess.*; import org.jitsi.util.*; /** @@ -124,7 +125,8 @@ private static void collectHomeFolderLogs(ZipOutputStream out) try { File[] fs = LoggingUtilsActivator.getFileAccessService() - .getPrivatePersistentDirectory(LOGGING_DIR_NAME).listFiles(); + .getPrivatePersistentDirectory(LOGGING_DIR_NAME, + FileCategory.LOG).listFiles(); for(File f : fs) { diff --git a/src/net/java/sip/communicator/plugin/spellcheck/SpellChecker.java b/src/net/java/sip/communicator/plugin/spellcheck/SpellChecker.java index 51204e6c2..092542a89 100644 --- a/src/net/java/sip/communicator/plugin/spellcheck/SpellChecker.java +++ b/src/net/java/sip/communicator/plugin/spellcheck/SpellChecker.java @@ -98,7 +98,8 @@ synchronized void start(BundleContext bc) throws Exception SpellCheckActivator.getFileAccessService(); // checks if DICT_DIR exists to see if this is the first run - File dictionaryDir = faService.getPrivatePersistentFile(DICT_DIR); + File dictionaryDir = faService.getPrivatePersistentFile(DICT_DIR, + FileCategory.CACHE); if (!dictionaryDir.exists()) { @@ -124,7 +125,8 @@ synchronized void start(BundleContext bc) throws Exception String filename = dictUrl.getPath().substring(filenameStart); File dictLocation = - faService.getPrivatePersistentFile(DICT_DIR + filename); + faService.getPrivatePersistentFile(DICT_DIR + filename, + FileCategory.CACHE); copyDictionary(source, dictLocation); } @@ -133,7 +135,8 @@ synchronized void start(BundleContext bc) throws Exception // gets resource for personal dictionary this.personalDictLocation = - faService.getPrivatePersistentFile(DICT_DIR + PERSONAL_DICT_NAME); + faService.getPrivatePersistentFile(DICT_DIR + PERSONAL_DICT_NAME, + FileCategory.PROFILE); if (!personalDictLocation.exists()) personalDictLocation.createNewFile(); @@ -379,7 +382,8 @@ void setLocale(Parameters.Locale locale) throws Exception File dictLocation = SpellCheckActivator.getFileAccessService() - .getPrivatePersistentFile(DICT_DIR + filename); + .getPrivatePersistentFile(DICT_DIR + filename, + FileCategory.CACHE); // downloads dictionary if unavailable (not cached) if (!dictLocation.exists()) @@ -430,7 +434,8 @@ void removeLocale(Parameters.Locale locale) throws Exception File dictLocation = SpellCheckActivator.getFileAccessService() - .getPrivatePersistentFile(DICT_DIR + filename); + .getPrivatePersistentFile(DICT_DIR + filename, + FileCategory.CACHE); if (dictLocation.exists()) dictLocation.delete(); @@ -457,7 +462,8 @@ boolean isLocaleAvailable(Parameters.Locale locale) { File dictLocation = SpellCheckActivator.getFileAccessService() - .getPrivatePersistentFile(DICT_DIR + filename); + .getPrivatePersistentFile(DICT_DIR + filename, + FileCategory.CACHE); return dictLocation.exists(); } diff --git a/src/net/java/sip/communicator/util/AvatarCacheUtils.java b/src/net/java/sip/communicator/util/AvatarCacheUtils.java index 37dcac199..b9418bc32 100644 --- a/src/net/java/sip/communicator/util/AvatarCacheUtils.java +++ b/src/net/java/sip/communicator/util/AvatarCacheUtils.java @@ -176,7 +176,8 @@ private static byte[] getLocallyStoredAvatar(String avatarPath) File avatarFile = UtilActivator .getFileAccessService() - .getPrivatePersistentFile(avatarPath); + .getPrivatePersistentFile(avatarPath, + FileCategory.CACHE); if(avatarFile.exists()) { @@ -297,10 +298,11 @@ private static void cacheAvatar(String avatarDirPath, avatarDir = fileAccessService.getPrivatePersistentDirectory( - avatarDirPath); + avatarDirPath, FileCategory.CACHE); avatarFile = fileAccessService.getPrivatePersistentFile( - avatarDirPath + File.separator + avatarFileName); + new File(avatarDirPath, avatarFileName).toString(), + FileCategory.CACHE); if(!avatarFile.exists()) { diff --git a/src/net/java/sip/communicator/util/FileHandler.java b/src/net/java/sip/communicator/util/FileHandler.java index 49b2ecb21..6a971c990 100644 --- a/src/net/java/sip/communicator/util/FileHandler.java +++ b/src/net/java/sip/communicator/util/FileHandler.java @@ -41,7 +41,7 @@ public class FileHandler * %t, %h, %g, %u. * Also adds the special component : * %s sip-communicator's home directory, typically - - * ${net.java.sip.communicator.SC_HOME_DIR_LOCATION}/ + * ${net.java.sip.communicator.SC_LOG_DIR_LOCATION}/ * ${net.java.sip.communicator.SC_HOME_DIR_NAME}. *

* The field is public so that our Logger could reset it if @@ -135,9 +135,9 @@ private static String getPattern() FileHandler.class.getName() + ".pattern"); String homeLocation = System.getProperty( - "net.java.sip.communicator.SC_HOME_DIR_LOCATION"); + "net.java.sip.communicator.SC_LOG_DIR_LOCATION"); String dirName = System.getProperty( - "net.java.sip.communicator.SC_HOME_DIR_NAME"); + "net.java.sip.communicator.SC_HOME_DIR_NAME"); if(homeLocation != null && dirName != null) { @@ -149,7 +149,7 @@ private static String getPattern() homeLocation + "/" + dirName); } - // if pattern is missing and both dir name and home lcation + // if pattern is missing and both dir name and home location // properties are also not defined its most probably running from // source or testing - lets create log directory in working dir. if(pattern == null) diff --git a/src/net/java/sip/communicator/util/launchutils/LaunchArgHandler.java b/src/net/java/sip/communicator/util/launchutils/LaunchArgHandler.java index adc6c3633..a6de4cb85 100644 --- a/src/net/java/sip/communicator/util/launchutils/LaunchArgHandler.java +++ b/src/net/java/sip/communicator/util/launchutils/LaunchArgHandler.java @@ -34,6 +34,20 @@ public class LaunchArgHandler private static final String PNAME_SC_HOME_DIR_LOCATION = "net.java.sip.communicator.SC_HOME_DIR_LOCATION"; + /** + * The name of the property that stores the home dir for cache data, such + * as avatars or spelling dictionaries. + */ + private static final String PNAME_SC_CACHE_DIR_LOCATION = + "net.java.sip.communicator.SC_CACHE_DIR_LOCATION"; + + /** + * The name of the property that stores the home dir for application logs + * (not history). + */ + private static final String PNAME_SC_LOG_DIR_LOCATION = + "net.java.sip.communicator.SC_LOG_DIR_LOCATION"; + /** * The name of the property that contains the name of the SC configuration * directory. @@ -381,6 +395,8 @@ private int handleConfigArg(String configArg) } System.setProperty(PNAME_SC_HOME_DIR_LOCATION, configDir.getParent()); + System.setProperty(PNAME_SC_CACHE_DIR_LOCATION, configDir.getParent()); + System.setProperty(PNAME_SC_LOG_DIR_LOCATION, configDir.getParent()); System.setProperty(PNAME_SC_HOME_DIR_NAME, configDir.getName()); //we instantiated our class logger before we had a chance to change diff --git a/src/net/java/sip/communicator/util/launchutils/SipCommunicatorLock.java b/src/net/java/sip/communicator/util/launchutils/SipCommunicatorLock.java index 33b0fb922..f0d084497 100644 --- a/src/net/java/sip/communicator/util/launchutils/SipCommunicatorLock.java +++ b/src/net/java/sip/communicator/util/launchutils/SipCommunicatorLock.java @@ -473,17 +473,13 @@ private int writeLockFile(File lockFile, InetSocketAddress lockAddress) */ private File getLockFile() { - String homeDirLocation - = System.getProperty(SIPCommunicator.PNAME_SC_HOME_DIR_LOCATION); - String homeDirName - = System.getProperty(SIPCommunicator.PNAME_SC_HOME_DIR_NAME); - String fileSeparator = System.getProperty("file.separator"); - String fullLockFileName - = homeDirLocation + fileSeparator - + homeDirName + fileSeparator - + LOCK_FILE_NAME; - - return new File(fullLockFileName); + String homeDirLocation = + System + .getProperty(SIPCommunicator.PNAME_SC_CACHE_DIR_LOCATION); + String homeDirName = System + .getProperty(SIPCommunicator.PNAME_SC_HOME_DIR_NAME); + + return new File(new File(homeDirLocation, homeDirName), LOCK_FILE_NAME); } /** diff --git a/test/net/java/sip/communicator/slick/fileaccess/TestFileAccessService.java b/test/net/java/sip/communicator/slick/fileaccess/TestFileAccessService.java index 923eeb8c0..d4c17ce28 100644 --- a/test/net/java/sip/communicator/slick/fileaccess/TestFileAccessService.java +++ b/test/net/java/sip/communicator/slick/fileaccess/TestFileAccessService.java @@ -31,12 +31,6 @@ public class TestFileAccessService extends TestCase { */ private static final String dirName = "fileaccessservice.dir.tst"; - /** - * The persistent directory's name. - */ - private static final String[] dirNames = { "fileaccessservice.dir.tst", - "subdir1", "subdir2" }; - /** * The persistent file's name. */ @@ -128,8 +122,8 @@ public void testCreateReadWriteFileInTemporaryDirectory() public void testCreatePersistentDirectory() throws Exception { try { - this.fileAccessService.getPrivatePersistentDirectory(dirName); - this.fileAccessService.getPrivatePersistentDirectory(dirNames); + this.fileAccessService.getPrivatePersistentDirectory(dirName, + FileCategory.PROFILE); } catch (IOException e) { fail("Error creating the temp directory: " + e.getMessage()); @@ -146,7 +140,8 @@ public void testCreateReadWriteFileInPersistentDirectory() File privateDir = null; try { privateDir = this.fileAccessService - .getPrivatePersistentDirectory(dirName); + .getPrivatePersistentDirectory(dirName, + FileCategory.PROFILE); } catch (IOException e) { fail("Error creating the private directory: " + e.getMessage()); @@ -178,7 +173,7 @@ public void testCreatePersistentFile() { try { File file = this.fileAccessService - .getPrivatePersistentFile(fileName); + .getPrivatePersistentFile(fileName, FileCategory.PROFILE); if (!file.exists()) { @@ -201,7 +196,7 @@ public void testDeletePersistentFile() { try { File file = this.fileAccessService - .getPrivatePersistentFile(fileName); + .getPrivatePersistentFile(fileName, FileCategory.PROFILE); if (file.exists()) { @@ -221,7 +216,7 @@ public void testCreateReadWritePersistentFile() try { File file = this.fileAccessService - .getPrivatePersistentFile(fileName); + .getPrivatePersistentFile(fileName, FileCategory.PROFILE); if (!file.exists()) { @@ -243,7 +238,7 @@ public void testPersistentFilePersistency() try { File file = this.fileAccessService - .getPrivatePersistentFile(fileName); + .getPrivatePersistentFile(fileName, FileCategory.PROFILE); if (!file.exists()) { @@ -253,7 +248,7 @@ public void testPersistentFilePersistency() writeReadFile(file); File newFile = this.fileAccessService - .getPrivatePersistentFile(fileName); + .getPrivatePersistentFile(fileName, FileCategory.PROFILE); // Assert that those files are in fact the same assertEquals(file, newFile);