View Javadoc
1   ////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code for adherence to a set of rules.
3   // Copyright (C) 2001-2018 the original author or authors.
4   //
5   // This library is free software; you can redistribute it and/or
6   // modify it under the terms of the GNU Lesser General Public
7   // License as published by the Free Software Foundation; either
8   // version 2.1 of the License, or (at your option) any later version.
9   //
10  // This library is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  // Lesser General Public License for more details.
14  //
15  // You should have received a copy of the GNU Lesser General Public
16  // License along with this library; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ////////////////////////////////////////////////////////////////////////////////
19  
20  package com.puppycrawl.tools.checkstyle.utils;
21  
22  import java.io.IOException;
23  import java.io.InputStream;
24  import java.net.URI;
25  import java.net.URL;
26  
27  import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
28  
29  /**
30   * Utility methods for suppression filters.
31   *
32   * @author Timur Tibeyev.
33   */
34  public final class FilterUtils {
35  
36      /** Stop instances being created. **/
37      private FilterUtils() {
38      }
39  
40      /**
41       * Checks if suppression source with given fileName exists.
42       * @param fileName name of the suppressions file.
43       * @return true if suppression file exists, otherwise false
44       */
45      public static boolean isFileExists(String fileName) {
46          boolean suppressionSourceExists = true;
47          InputStream sourceInput = null;
48          try {
49              final URI uriByFilename = CommonUtils.getUriByFilename(fileName);
50              final URL url = uriByFilename.toURL();
51              sourceInput = url.openStream();
52          }
53          catch (CheckstyleException | IOException ignored) {
54              suppressionSourceExists = false;
55          }
56          finally {
57              suppressionSourceExists = closeQuietlyWithResult(sourceInput, suppressionSourceExists);
58          }
59          return suppressionSourceExists;
60      }
61  
62      /**
63       * Close input.
64       * This method is required till https://github.com/cobertura/cobertura/issues/170
65       * @param sourceInput stream to close
66       * @param suppressionSourceExists previous state of flag
67       * @return result of close operation
68       */
69      private static boolean closeQuietlyWithResult(InputStream sourceInput,
70                                                    boolean suppressionSourceExists) {
71          boolean closed = suppressionSourceExists;
72          if (sourceInput != null) {
73              try {
74                  sourceInput.close();
75              }
76              catch (IOException ignored) {
77                  closed = false;
78              }
79          }
80          return closed;
81      }
82  
83  }