diff --git a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java b/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java index e6d10c871bc0..90837d979842 100644 --- a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java +++ b/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java @@ -35,101 +35,65 @@ * Class for managing the LocalMonitoredVm instances on the local system. *
* This class is responsible for the mechanism that detects the active - * HotSpot Java Virtual Machines on the local host and possibly for a - * specific user. The ability to detect all possible HotSpot Java Virtual + * HotSpot Java Virtual Machines on the local host that can be accessed + * by the current user. The ability to detect all possible HotSpot Java Virtual * Machines on the local host may be limited by the permissions of the - * principal running this JVM. + * current user running this JVM. * * @author Brian Doherty * @since 1.5 */ public class LocalVmManager { - private String userName; // user name for monitored jvm - private Pattern userPattern; - private Matcher userMatcher; - private FilenameFilter userFilter; - private Pattern filePattern; - private Matcher fileMatcher; - private FilenameFilter fileFilter; - private Pattern tmpFilePattern; - private Matcher tmpFileMatcher; - private FilenameFilter tmpFileFilter; + private FilenameFilter userDirFilter; + private FilenameFilter userDirFileFilter; + private FilenameFilter oldtmpFileFilter; /** * Creates a LocalVmManager instance for the local system. *
- * Manages LocalMonitoredVm instances for which the principal + * Manages LocalMonitoredVm instances for which the current user * has appropriate permissions. */ public LocalVmManager() { - this(null); - } - - /** - * Creates a LocalVmManager instance for the given user. - *
- * Manages LocalMonitoredVm instances for all JVMs owned by the specified - * user. - * - * @param user the name of the user - */ - public LocalVmManager(String user) { - this.userName = user; - - if (userName == null) { - userPattern = Pattern.compile(PerfDataFile.userDirNamePattern); - userMatcher = userPattern.matcher(""); - - userFilter = new FilenameFilter() { - public boolean accept(File dir, String name) { - userMatcher.reset(name); - return userMatcher.lookingAt(); - } - }; - } - - filePattern = Pattern.compile(PerfDataFile.fileNamePattern); - fileMatcher = filePattern.matcher(""); - - fileFilter = new FilenameFilter() { + // 1.4.2 and later: The files are in {tmpdir}/hsperfdata_{any_user_name}/[0-9]+ + Pattern userDirPattern = Pattern.compile(PerfDataFile.userDirNamePattern); + userDirFilter = new FilenameFilter() { public boolean accept(File dir, String name) { - fileMatcher.reset(name); - return fileMatcher.matches(); + return userDirPattern.matcher(name).lookingAt(); } }; - tmpFilePattern = Pattern.compile(PerfDataFile.tmpFileNamePattern); - tmpFileMatcher = tmpFilePattern.matcher(""); + Pattern userDirFilePattern = Pattern.compile(PerfDataFile.fileNamePattern); + userDirFileFilter = new FilenameFilter() { + public boolean accept(File dir, String name) { + return userDirFilePattern.matcher(name).matches(); + } + }; - tmpFileFilter = new FilenameFilter() { + // 1.4.1 (or earlier?): the files are stored directly under {tmpdir}/ with + // the following pattern. + Pattern oldtmpFilePattern = Pattern.compile(PerfDataFile.tmpFileNamePattern); + oldtmpFileFilter = new FilenameFilter() { public boolean accept(File dir, String name) { - tmpFileMatcher.reset(name); - return tmpFileMatcher.matches(); + return oldtmpFilePattern.matcher(name).matches(); } }; } /** - * Return the current set of monitorable Java Virtual Machines. - *
- * The set returned by this method depends on the user name passed
- * to the constructor. If no user name was specified, then this
- * method will return all candidate JVMs on the system. Otherwise,
- * only the JVMs for the given user will be returned. This assumes
- * that principal associated with this JVM has the appropriate
- * permissions to access the target set of JVMs.
+ * Return the current set of monitorable Java Virtual Machines that
+ * are accessible by the current user.
*
* @return Set - the Set of monitorable Java Virtual Machines
*/
public synchronized Set
- * This method looks for the most up to date backing store file for
- * the given {@code lvmid}. It will search all the user specific
- * directories in the temporary directory for the host operating
- * system, which may be influenced by platform specific environment
- * variables.
- *
- * @param lvmid the local Java Virtual Machine Identifier for the target
- * @return File - a File object to the backing store file for the named
- * shared memory region of the target JVM.
- * @see java.io.File
- * @see #getTempDirectories()
- */
- public static File getFile(int lvmid) {
- if (lvmid == 0) {
- /*
- * lvmid == 0 is used to indicate the current Java Virtual Machine.
- * If the SDK provided an API to get a unique Java Virtual Machine
- * identifier, then a filename could be constructed with that
- * identifier. In absence of such an api, return null.
- */
- return null;
- }
-
- List
- * This method looks for the most up to date backing store file for
- * the JVM identified by the given user name and lvmid. The directory
- * searched is the temporary directory for the host operating system,
- * which may be influenced by environment variables.
- *
- * @param user the user name
- * @param lvmid the local Java Virtual Machine Identifier for the target
- * @return File - a File object to the backing store file for the named
- * shared memory region of the target JVM.
- * @see java.io.File
- * @see #getTempDirectories()
- */
- public static File getFile(String user, int lvmid) {
- if (lvmid == 0) {
- /*
- * lvmid == 0 is used to indicate the current Java Virtual Machine.
- * If the SDK provided an API to get a unique Java Virtual Machine
- * identifier, then a filename could be constructed with that
- * identifier. In absence of such an api, return null.
- */
- return null;
- }
-
- // first try for 1.4.2 and later JVMs
- List
- * This method generally returns the name of a subdirectory of
- * the directory indicated in the java.io.tmpdir property. However,
- * on some platforms it may return a different directory, as the
- * JVM implementation may store the PerfData backing store files
- * in a different directory for performance reasons.
- *
- * @return String - the name of the temporary directory.
- */
- public static String getTempDirectory(String user) {
- return getTempDirectory() + dirNamePrefix + user + File.separator;
- }
-
/**
* Return the names of the temporary directories being searched for
* HotSpot PerfData backing store files.
@@ -319,16 +141,7 @@ public static String getTempDirectory(String user) {
*
* @return List