86 private static boolean isUserRootWritable;
87
88 /**
89 * The user root.
90 */
91 static Preferences userRoot = null;
92
93 static synchronized Preferences getUserRoot() {
94 if (userRoot == null) {
95 setupUserRoot();
96 userRoot = new FileSystemPreferences(true);
97 }
98 return userRoot;
99 }
100
101 private static void setupUserRoot() {
102 AccessController.doPrivileged(new PrivilegedAction<Void>() {
103 public Void run() {
104 userRootDir =
105 new File(System.getProperty("java.util.prefs.userRoot",
106 System.getProperty("user.home")), ".java/.userPrefs");
107 // Attempt to create root dir if it does not yet exist.
108 if (!userRootDir.exists()) {
109 if (userRootDir.mkdirs()) {
110 try {
111 chmod(userRootDir.getCanonicalPath(), USER_RWX);
112 } catch (IOException e) {
113 getLogger().warning("Could not change permissions" +
114 " on userRoot directory. ");
115 }
116 getLogger().info("Created user preferences directory.");
117 }
118 else
119 getLogger().warning("Couldn't create user preferences" +
120 " directory. User preferences are unusable.");
121 }
122 isUserRootWritable = userRootDir.canWrite();
123 String USER_NAME = System.getProperty("user.name");
124 userLockFile = new File (userRootDir,".user.lock." + USER_NAME);
125 userRootModFile = new File (userRootDir,
126 ".userRootModFile." + USER_NAME);
146 }
147
148
149 /**
150 * The system root.
151 */
152 static Preferences systemRoot;
153
154 static synchronized Preferences getSystemRoot() {
155 if (systemRoot == null) {
156 setupSystemRoot();
157 systemRoot = new FileSystemPreferences(false);
158 }
159 return systemRoot;
160 }
161
162 private static void setupSystemRoot() {
163 AccessController.doPrivileged(new PrivilegedAction<Void>() {
164 public Void run() {
165 String systemPrefsDirName =
166 System.getProperty("java.util.prefs.systemRoot","/etc/.java");
167 systemRootDir =
168 new File(systemPrefsDirName, ".systemPrefs");
169 // Attempt to create root dir if it does not yet exist.
170 if (!systemRootDir.exists()) {
171 // system root does not exist in /etc/.java
172 // Switching to java.home
173 systemRootDir =
174 new File(System.getProperty("java.home"),
175 ".systemPrefs");
176 if (!systemRootDir.exists()) {
177 if (systemRootDir.mkdirs()) {
178 getLogger().info(
179 "Created system preferences directory "
180 + "in java.home.");
181 try {
182 chmod(systemRootDir.getCanonicalPath(),
183 USER_RWX_ALL_RX);
184 } catch (IOException e) {
185 }
186 } else {
187 getLogger().warning("Could not create "
188 + "system preferences directory. System "
189 + "preferences are unusable.");
190 }
191 }
192 }
193 isSystemRootWritable = systemRootDir.canWrite();
194 systemLockFile = new File(systemRootDir, ".system.lock");
195 systemRootModFile =
|
86 private static boolean isUserRootWritable;
87
88 /**
89 * The user root.
90 */
91 static Preferences userRoot = null;
92
93 static synchronized Preferences getUserRoot() {
94 if (userRoot == null) {
95 setupUserRoot();
96 userRoot = new FileSystemPreferences(true);
97 }
98 return userRoot;
99 }
100
101 private static void setupUserRoot() {
102 AccessController.doPrivileged(new PrivilegedAction<Void>() {
103 public Void run() {
104 userRootDir =
105 new File(System.getProperty("java.util.prefs.userRoot",
106 System.getProperty("user.home")), ".java/user-prefs");
107 // Attempt to create root dir if it does not yet exist.
108 if (!userRootDir.exists()) {
109 if (userRootDir.mkdirs()) {
110 try {
111 chmod(userRootDir.getCanonicalPath(), USER_RWX);
112 } catch (IOException e) {
113 getLogger().warning("Could not change permissions" +
114 " on userRoot directory. ");
115 }
116 getLogger().info("Created user preferences directory.");
117 }
118 else
119 getLogger().warning("Couldn't create user preferences" +
120 " directory. User preferences are unusable.");
121 }
122 isUserRootWritable = userRootDir.canWrite();
123 String USER_NAME = System.getProperty("user.name");
124 userLockFile = new File (userRootDir,".user.lock." + USER_NAME);
125 userRootModFile = new File (userRootDir,
126 ".userRootModFile." + USER_NAME);
146 }
147
148
149 /**
150 * The system root.
151 */
152 static Preferences systemRoot;
153
154 static synchronized Preferences getSystemRoot() {
155 if (systemRoot == null) {
156 setupSystemRoot();
157 systemRoot = new FileSystemPreferences(false);
158 }
159 return systemRoot;
160 }
161
162 private static void setupSystemRoot() {
163 AccessController.doPrivileged(new PrivilegedAction<Void>() {
164 public Void run() {
165 String systemPrefsDirName =
166 System.getProperty("java.util.prefs.systemRoot","/etc/java");
167 systemRootDir =
168 new File(systemPrefsDirName, "system-prefs");
169 // Attempt to create root dir if it does not yet exist.
170 if (!systemRootDir.exists()) {
171 // system root does not exist in /etc/java
172 // Switching to java.home
173 systemRootDir =
174 new File(System.getProperty("java.home"),
175 "system-prefs");
176 if (!systemRootDir.exists()) {
177 if (systemRootDir.mkdirs()) {
178 getLogger().info(
179 "Created system preferences directory "
180 + "in java.home.");
181 try {
182 chmod(systemRootDir.getCanonicalPath(),
183 USER_RWX_ALL_RX);
184 } catch (IOException e) {
185 }
186 } else {
187 getLogger().warning("Could not create "
188 + "system preferences directory. System "
189 + "preferences are unusable.");
190 }
191 }
192 }
193 isSystemRootWritable = systemRootDir.canWrite();
194 systemLockFile = new File(systemRootDir, ".system.lock");
195 systemRootModFile =
|