View Javadoc

    1   // ========================================================================
    2   // Copyright 2006-2007 Sabre Holdings.
    3   // ------------------------------------------------------------------------
    4   // Licensed under the Apache License, Version 2.0 (the "License");
    5   // you may not use this file except in compliance with the License.
    6   // You may obtain a copy of the License at
    7   // http://www.apache.org/licenses/LICENSE-2.0
    8   // Unless required by applicable law or agreed to in writing, software
    9   // distributed under the License is distributed on an "AS IS" BASIS,
    10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  // ========================================================================
    14
    15  package org.mortbay.jetty.ant.types;
    16
    17  import java.io.File;
    18  import java.util.ArrayList;
    19  import java.util.Iterator;
    20  import java.util.List;
    21
    22  import org.apache.tools.ant.DirectoryScanner;
    23
    24  /**
    25   * Describes set of files matched by <fileset/> elements in ant configuration
    26   * file. It is used to group application classes, libraries, and scannedTargets
    27   * elements.
    28   *
    29   * @author Jakub Pawlowicz
    30   */
    31  public class FileMatchingConfiguration
    32  {
    33
    34      private List directoryScanners;
    35
    36      public FileMatchingConfiguration()
    37      {
    38          this.directoryScanners = new ArrayList();
    39      }
    40
    41      /**
    42       * @param directoryScanner new directory scanner retrieved from the
    43       *            <fileset/> element.
    44       */
    45      public void addDirectoryScanner(DirectoryScanner directoryScanner)
    46      {
    47          this.directoryScanners.add(directoryScanner);
    48      }
    49
    50      /**
    51       * @return a list of base directories denoted by a list of directory
    52       *         scanners.
    53       */
    54      public List getBaseDirectories()
    55      {
    56          List baseDirs = new ArrayList();
    57          Iterator scanners = directoryScanners.iterator();
    58          while (scanners.hasNext())
    59          {
    60              DirectoryScanner scanner = (DirectoryScanner) scanners.next();
    61              baseDirs.add(scanner.getBasedir());
    62          }
    63
    64          return baseDirs;
    65      }
    66
    67      /**
    68       * Checks if passed file is scanned by any of the directory scanners.
    69       *
    70       * @param pathToFile a fully qualified path to tested file.
    71       * @return true if so, false otherwise.
    72       */
    73      public boolean isIncluded(String pathToFile)
    74      {
    75          Iterator scanners = directoryScanners.iterator();
    76          while (scanners.hasNext())
    77          {
    78              DirectoryScanner scanner = (DirectoryScanner) scanners.next();
    79              scanner.scan();
    80              String[] includedFiles = scanner.getIncludedFiles();
    81
    82              for (int i = 0; i < includedFiles.length; i++)
    83              {
    84                  File includedFile = new File(scanner.getBasedir(), includedFiles[i]);
    85                  if (pathToFile.equalsIgnoreCase(includedFile.getAbsolutePath()))
    86                  {
    87                      return true;
    88                  }
    89              }
    90          }
    91
    92          return false;
    93      }
    94  }