Crossfire JXClient, Trunk
|
Classes | |
class | ScanTask |
Public Member Functions | |
void | addNotificationListener (NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException |
DirectoryScanner (DirectoryScannerConfig config, ResultLogManager logManager) throws IllegalArgumentException | |
DirectoryScannerConfig | getConfiguration () |
String | getCurrentScanInfo () |
MBeanNotificationInfo[] | getNotificationInfo () |
String | getRootDirectory () |
ScanState | getState () |
void | removeNotificationListener (NotificationListener listener) throws ListenerNotFoundException |
void | removeNotificationListener (NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException |
void | scan () |
void | stop () |
Static Public Attributes | |
static final String | FILE_MATCHES_NOTIFICATION |
Package Functions | |
void | actOn (File file) |
Package Attributes | |
final Set< Action > | actions |
final ResultLogManager | logManager |
Private Member Functions | |
boolean | deleteFile (File file) |
boolean | logResult (File file, Action[] actions) |
boolean | notifyMatch (File file) |
void | scan (ScanTask task, LinkedList< File > list) |
final void | setStateAndNotify (ScanState desired) |
Static Private Member Functions | |
static File | validateRoot (String root) |
Private Attributes | |
final NotificationBroadcasterSupport | broadcaster |
final DirectoryScannerConfig | config |
volatile ScanTask | currentTask = null |
final File | rootFile |
volatile ScanState | state = STOPPED |
Static Private Attributes | |
static final Logger | LOG |
A DirectoryScanner
is an MBean that scans a file system starting at a given root directory, and then looks for files that match a given criteria.
When such a file is found, the DirectoryScanner
takes the action for which it was configured: emit a notification, and or log a {} for this file, and or delete that file.
The code that would actually delete the file is commented out - so that nothing valuable is lost if this example is run by mistake on the wrong set of directories.
Logged results are logged by sending them to the ResultLogManager.
DirectoryScannerMXBeans
are created, initialized, and registered by the ScanManagerMXBean. The ScanManagerMXBean will also schedule and run them in background by calling their scan method.
Client code is not expected to create or register directly any such MBean. Instead, clients are expected to modify the configuration, using the ScanDirConfigMXBean, and then apply it, using the {}. Instances of DirectoryScannerMXBeans
will then be created and registered (or unregistered and garbage collected) as a side effect of applying that configuration.
Definition at line 105 of file DirectoryScanner.java.
com.sun.jmx.examples.scandir.DirectoryScanner.DirectoryScanner | ( | DirectoryScannerConfig | config, |
ResultLogManager | logManager | ||
) | throws IllegalArgumentException |
Constructs a new
.
This constructor is package protected, and this MBean cannot be created by a remote client, because it needs a reference to the ResultLogManager, which cannot be provided from remote.
This is a conscious design choice:
MBeans are expected to be completely managed (created, registered, unregistered) by the ScanManager which does provide this reference.
config | This configuration. |
logManager | The info log manager with which to log the info records. |
IllegalArgumentException | if one of the parameter is null, or if the provided doesn't have its set, or if the root directory provided in the is not acceptable (not provided or not found or not readable, etc...). |
Definition at line 178 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.actions, com.sun.jmx.examples.scandir.DirectoryScanner.broadcaster, com.sun.jmx.examples.scandir.DirectoryScanner.config, com.sun.jmx.examples.scandir.DirectoryScanner.logManager, com.sun.jmx.examples.scandir.DirectoryScanner.rootFile, com.sun.jmx.examples.scandir.DirectoryScanner.validateRoot(), and com.sun.jmx.examples.scandir.config.XmlConfigUtils.xmlClone().
|
package |
Definition at line 287 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.actions, com.sun.jmx.examples.scandir.DirectoryScanner.deleteFile(), file, com.sun.jmx.examples.scandir.DirectoryScanner.LOG, com.sun.jmx.examples.scandir.DirectoryScanner.logResult(), and com.sun.jmx.examples.scandir.DirectoryScanner.notifyMatch().
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.scan().
void com.sun.jmx.examples.scandir.DirectoryScanner.addNotificationListener | ( | NotificationListener | listener, |
NotificationFilter | filter, | ||
Object | handback | ||
) | throws IllegalArgumentException |
MBeanNotification support - delegates to broadcaster.
Definition at line 514 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.broadcaster.
|
private |
Definition at line 337 of file DirectoryScanner.java.
References file, and com.sun.jmx.examples.scandir.DirectoryScanner.LOG.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.actOn().
DirectoryScannerConfig com.sun.jmx.examples.scandir.DirectoryScanner.getConfiguration | ( | ) |
The configuration data from which this DirectoryScanner was created.
You cannot change this configuration here. You can however modify the ScanDirConfigMXBean configuration, and ask the ScanManagerMXBean to apply it. This will get all DirectoryScannerMXBean
replaced by new MBeans created from the modified configuration.
DirectoryScannerMXBean
configuration data. IOException | A connection problem occurred when accessing the underlying resource. |
InstanceNotFoundException | The underlying MBean is not registered in the MBeanServer. |
Implements com.sun.jmx.examples.scandir.DirectoryScannerMXBean.
Definition at line 227 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.config.
String com.sun.jmx.examples.scandir.DirectoryScanner.getCurrentScanInfo | ( | ) |
A short string describing what's happening in current/latest scan.
IOException | A connection problem occurred when accessing the underlying resource. |
InstanceNotFoundException | The underlying MBean is not registered in the MBeanServer. |
Implements com.sun.jmx.examples.scandir.DirectoryScannerMXBean.
Definition at line 232 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.currentTask, and com.sun.jmx.examples.scandir.DirectoryScanner.ScanTask.getScanInfo().
MBeanNotificationInfo [] com.sun.jmx.examples.scandir.DirectoryScanner.getNotificationInfo | ( | ) |
The DirectoryScannerMXBean may send two types of notifications: filematch, and state attribute changed.
Definition at line 541 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.FILE_MATCHES_NOTIFICATION.
String com.sun.jmx.examples.scandir.DirectoryScanner.getRootDirectory | ( | ) |
Gets the root directory at which this DirectoryScannerMXBean
will start scanning the file system.
This is a shortcut to getConfiguration().{getRootDirectory()}.
DirectoryScannerMXBean
root directory. IOException | A connection problem occurred when accessing the underlying resource. |
InstanceNotFoundException | The underlying MBean is not registered in the MBeanServer. |
Implements com.sun.jmx.examples.scandir.DirectoryScannerMXBean.
Definition at line 216 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.rootFile.
ScanState com.sun.jmx.examples.scandir.DirectoryScanner.getState | ( | ) |
Get The DirectoryScanner state.
DirectoryScanner
. IOException | A connection problem occurred when accessing the underlying resource. |
InstanceNotFoundException | The underlying MBean is not registered in the MBeanServer. |
Implements com.sun.jmx.examples.scandir.DirectoryScannerMXBean.
Definition at line 222 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.state.
Referenced by com.sun.jmx.examples.scandir.DirectoryScannerTest.testGetState().
|
private |
Definition at line 375 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.actions, com.sun.jmx.examples.scandir.DirectoryScanner.config, file, com.sun.jmx.examples.scandir.DirectoryScanner.LOG, com.sun.jmx.examples.scandir.ResultLogManager.log(), and com.sun.jmx.examples.scandir.DirectoryScanner.logManager.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.actOn().
|
private |
Definition at line 353 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.broadcaster, file, com.sun.jmx.examples.scandir.DirectoryScanner.FILE_MATCHES_NOTIFICATION, and com.sun.jmx.examples.scandir.DirectoryScanner.LOG.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.actOn().
void com.sun.jmx.examples.scandir.DirectoryScanner.removeNotificationListener | ( | NotificationListener | listener | ) | throws ListenerNotFoundException |
MBeanNotification support - delegates to broadcaster.
Definition at line 559 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.broadcaster.
void com.sun.jmx.examples.scandir.DirectoryScanner.removeNotificationListener | ( | NotificationListener | listener, |
NotificationFilter | filter, | ||
Object | handback | ||
) | throws ListenerNotFoundException |
MBeanNotification support - delegates to broadcaster.
Definition at line 567 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.broadcaster.
void com.sun.jmx.examples.scandir.DirectoryScanner.scan | ( | ) |
Scans the file system starting at the specified root directory.
If a file that matches this DirectoryScannerMXBean
getConfiguration criteria is found, the DirectoryScannerMXBean
takes the {actions} for which it was #getConfiguration configured}: emit a notification, and or log a { com.sun.jmx.examples.scandir.config.ResultRecord} for this file, and or delete that file.
The code that would actually delete the file is commented out - so that nothing valuable is lost if this example is run by mistake on the wrong set of directories.
This method returns only when the directory scan is completed, or if it was stopped by another thread.
IllegalStateException | if already ScanState#RUNNING |
IOException | A connection problem occurred when accessing the underlying resource. |
InstanceNotFoundException | The underlying MBean is not registered in the MBeanServer. |
Implements com.sun.jmx.examples.scandir.DirectoryScannerMXBean.
Definition at line 243 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.currentTask, com.sun.jmx.examples.scandir.DirectoryScanner.ScanTask.execute(), com.sun.jmx.examples.scandir.DirectoryScanner.rootFile, com.sun.jmx.examples.scandir.DirectoryScanner.setStateAndNotify(), and com.sun.jmx.examples.scandir.DirectoryScanner.state.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.ScanTask.scan(), and com.sun.jmx.examples.scandir.DirectoryScannerTest.testGetState().
|
private |
Definition at line 429 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.actOn(), com.sun.jmx.examples.scandir.DirectoryScanner.config, com.sun.jmx.examples.scandir.DirectoryScanner.ScanTask.info, com.sun.jmx.examples.scandir.DirectoryScanner.LOG, com.sun.jmx.examples.scandir.DirectoryScanner.ScanTask.matching, com.sun.jmx.examples.scandir.DirectoryScanner.ScanTask.scanned, com.sun.jmx.examples.scandir.DirectoryScanner.setStateAndNotify(), and com.sun.jmx.examples.scandir.DirectoryScanner.state.
|
private |
Definition at line 524 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.broadcaster, and com.sun.jmx.examples.scandir.DirectoryScanner.state.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.scan(), and com.sun.jmx.examples.scandir.DirectoryScanner.stop().
void com.sun.jmx.examples.scandir.DirectoryScanner.stop | ( | ) |
Stops the current scan if running. After this method completes the state of the application will be STOPPED.
IOException | A connection problem occurred when accessing the underlying resource. |
InstanceNotFoundException | The underlying MBean is not registered in the MBeanServer. |
Implements com.sun.jmx.examples.scandir.DirectoryScannerMXBean.
Definition at line 210 of file DirectoryScanner.java.
References com.sun.jmx.examples.scandir.DirectoryScanner.setStateAndNotify().
|
staticprivate |
Definition at line 578 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.DirectoryScanner().
|
package |
Definition at line 147 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.actOn(), com.sun.jmx.examples.scandir.DirectoryScanner.DirectoryScanner(), and com.sun.jmx.examples.scandir.DirectoryScanner.logResult().
|
private |
Definition at line 132 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.addNotificationListener(), com.sun.jmx.examples.scandir.DirectoryScanner.DirectoryScanner(), com.sun.jmx.examples.scandir.DirectoryScanner.notifyMatch(), com.sun.jmx.examples.scandir.DirectoryScanner.removeNotificationListener(), and com.sun.jmx.examples.scandir.DirectoryScanner.setStateAndNotify().
|
private |
Definition at line 142 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.DirectoryScanner(), com.sun.jmx.examples.scandir.DirectoryScanner.getConfiguration(), com.sun.jmx.examples.scandir.DirectoryScanner.logResult(), and com.sun.jmx.examples.scandir.DirectoryScanner.scan().
|
private |
Definition at line 240 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.getCurrentScanInfo(), and com.sun.jmx.examples.scandir.DirectoryScanner.scan().
|
static |
The type for com.sun.jmx.examples.scandir.filematch notifications. Notifications of this type will be emitted whenever a file that matches this
criteria is found, but only if this
was configured to {notify} for matching files.
Definition at line 115 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.getNotificationInfo(), and com.sun.jmx.examples.scandir.DirectoryScanner.notifyMatch().
|
staticprivate |
A logger for this class.
Definition at line 121 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.actOn(), com.sun.jmx.examples.scandir.DirectoryScanner.deleteFile(), com.sun.jmx.examples.scandir.DirectoryScanner.logResult(), com.sun.jmx.examples.scandir.DirectoryScanner.notifyMatch(), and com.sun.jmx.examples.scandir.DirectoryScanner.scan().
|
package |
Definition at line 155 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.DirectoryScanner(), and com.sun.jmx.examples.scandir.DirectoryScanner.logResult().
|
private |
Definition at line 137 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.DirectoryScanner(), com.sun.jmx.examples.scandir.DirectoryScanner.getRootDirectory(), and com.sun.jmx.examples.scandir.DirectoryScanner.scan().
|
private |
Definition at line 126 of file DirectoryScanner.java.
Referenced by com.sun.jmx.examples.scandir.DirectoryScanner.getState(), com.sun.jmx.examples.scandir.DirectoryScanner.scan(), and com.sun.jmx.examples.scandir.DirectoryScanner.setStateAndNotify().