Example #1
0
 static String guessConfigName(String configFileName, String defaultFile) {
   try {
     if (configFileName == null) return DEFAULT;
     final File f = new File(configFileName);
     if (f.canRead()) {
       final String confname = XmlConfigUtils.read(f).getName();
       if (confname != null && confname.length() > 0) return confname;
     }
     final File f2 = new File(defaultFile);
     if (f.equals(f2)) return DEFAULT;
     final String guess = getBasename(f.getName());
     if (guess == null) return DEFAULT;
     if (guess.length() == 0) return DEFAULT;
     return guess;
   } catch (Exception x) {
     return DEFAULT;
   }
 }
  /**
   * Constructs a new {@code DirectoryScanner}.
   *
   * <p>This constructor is package protected, and this MBean cannot be created by a remote client,
   * because it needs a reference to the {@link ResultLogManager}, which cannot be provided from
   * remote.
   *
   * <p>This is a conscious design choice: {@code DirectoryScanner} MBeans are expected to be
   * completely managed (created, registered, unregistered) by the {@link ScanManager} which does
   * provide this reference.
   *
   * @param config This {@code DirectoryScanner} configuration.
   * @param logManager The info log manager with which to log the info records.
   * @throws IllegalArgumentException if one of the parameter is null, or if the provided {@code
   *     config} doesn't have its {@code name} set, or if the {@link
   *     DirectoryScannerConfig#getRootDirectory root directory} provided in the {@code config} is
   *     not acceptable (not provided or not found or not readable, etc...).
   */
  public DirectoryScanner(DirectoryScannerConfig config, ResultLogManager logManager)
      throws IllegalArgumentException {
    if (logManager == null) throw new IllegalArgumentException("log=null");
    if (config == null) throw new IllegalArgumentException("config=null");
    if (config.getName() == null) throw new IllegalArgumentException("config.name=null");

    broadcaster = new NotificationBroadcasterSupport();

    // Clone the config: ensure data encapsulation.
    //
    this.config = XmlConfigUtils.xmlClone(config);

    // Checks that the provided root directory is valid.
    // Throws IllegalArgumentException if it isn't.
    //
    rootFile = validateRoot(config.getRootDirectory());

    // Initialize the Set<Action> for which this DirectoryScanner
    // is configured.
    //
    if (config.getActions() == null) actions = Collections.emptySet();
    else actions = EnumSet.copyOf(Arrays.asList(config.getActions()));
    this.logManager = logManager;
  }
Example #3
0
 // see ScanDirConfigMXBean
 public ScanManagerConfig getConfiguration() {
   synchronized (this) {
     return XmlConfigUtils.xmlClone(config);
   }
 }