Author: markt
Date: Wed Nov 11 20:46:09 2015
New Revision: 1713931

URL: http://svn.apache.org/viewvc?rev=1713931&view=rev
Log:
FindBugs fixes

Modified:
    tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
    tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java
    tomcat/trunk/java/org/apache/catalina/startup/HomesUserDatabase.java
    tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java
    tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
    tomcat/trunk/java/org/apache/jasper/JspC.java
    tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
    tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java
    tomcat/trunk/res/findbugs/filter-false-positives.xml
    tomcat/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java

Modified: tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java Wed Nov 11 
20:46:09 2015
@@ -889,15 +889,11 @@ public class JDBCStore extends StoreBase
             try {
                 Class<?> clazz = Class.forName(driverName);
                 driver = (Driver) clazz.newInstance();
-            } catch (ClassNotFoundException ex) {
-                
manager.getContext().getLogger().error(sm.getString(getStoreName() + 
".checkConnectionClassNotFoundException",
-                        ex.toString()));
-            } catch (InstantiationException ex) {
-                
manager.getContext().getLogger().error(sm.getString(getStoreName() + 
".checkConnectionClassNotFoundException",
-                        ex.toString()));
-            } catch (IllegalAccessException ex) {
-                
manager.getContext().getLogger().error(sm.getString(getStoreName() + 
".checkConnectionClassNotFoundException",
-                        ex.toString()));
+            } catch (ClassNotFoundException | InstantiationException | 
IllegalAccessException e) {
+                manager.getContext().getLogger().error(
+                        sm.getString(getStoreName() + 
".checkConnectionClassNotFoundException",
+                        e.toString()));
+                throw new SQLException(e);
             }
         }
 

Modified: tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java Wed 
Nov 11 20:46:09 2015
@@ -102,6 +102,9 @@ public final class ClassLoaderFactory {
                 if (!directory.isDirectory() || !directory.canRead())
                     continue;
                 String filenames[] = directory.list();
+                if (filenames == null) {
+                    continue;
+                }
                 for (int j = 0; j < filenames.length; j++) {
                     String filename = filenames[j].toLowerCase(Locale.ENGLISH);
                     if (!filename.endsWith(".jar"))
@@ -189,6 +192,9 @@ public final class ClassLoaderFactory {
                         log.debug("  Including directory glob "
                             + directory.getAbsolutePath());
                     String filenames[] = directory.list();
+                    if (filenames == null) {
+                        continue;
+                    }
                     for (int j = 0; j < filenames.length; j++) {
                         String filename = 
filenames[j].toLowerCase(Locale.ENGLISH);
                         if (!filename.endsWith(".jar"))

Modified: tomcat/trunk/java/org/apache/catalina/startup/HomesUserDatabase.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/HomesUserDatabase.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/HomesUserDatabase.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/HomesUserDatabase.java Wed 
Nov 11 20:46:09 2015
@@ -131,6 +131,9 @@ public final class HomesUserDatabase
         if (!homeBaseDir.exists() || !homeBaseDir.isDirectory())
             return;
         String homeBaseFiles[] = homeBaseDir.list();
+        if (homeBaseFiles == null) {
+            return;
+        }
 
         for (int i = 0; i < homeBaseFiles.length; i++) {
             File homeDir = new File(homeBaseDir, homeBaseFiles[i]);
@@ -138,9 +141,5 @@ public final class HomesUserDatabase
                 continue;
             homes.put(homeBaseFiles[i], homeDir.toString());
         }
-
-
     }
-
-
 }

Modified: tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java Wed Nov 
11 20:46:09 2015
@@ -354,6 +354,9 @@ public final class ExtensionValidator {
                     continue;
                 }
                 File[] files = targetDir.listFiles();
+                if (files == null) {
+                    continue;
+                }
                 for (int i = 0; i < files.length; i++) {
                     if 
(files[i].getName().toLowerCase(Locale.ENGLISH).endsWith(".jar") &&
                             files[i].isFile()) {

Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java 
(original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Wed Nov 
11 20:46:09 2015
@@ -931,6 +931,7 @@ public class Http2UpgradeHandler extends
     private void pruneClosedStreams() {
         // Only prune every 10 new streams
         if (newStreamsSinceLastPrune < 9) {
+            // Not atomic. Increments may be lost. Not a problem.
             newStreamsSinceLastPrune++;
             return;
         }

Modified: tomcat/trunk/java/org/apache/jasper/JspC.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspC.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/JspC.java (original)
+++ tomcat/trunk/java/org/apache/jasper/JspC.java Wed Nov 11 20:46:09 2015
@@ -1577,26 +1577,28 @@ public class JspC extends Task implement
             File lib = new File(webappBase, "/WEB-INF/lib");
             if (lib.exists() && lib.isDirectory()) {
                 String[] libs = lib.list();
-                for (int i = 0; i < libs.length; i++) {
-                    if( libs[i].length() <5 ) continue;
-                    String ext=libs[i].substring( libs[i].length() - 4 );
-                    if (! ".jar".equalsIgnoreCase(ext)) {
-                        if (".tld".equalsIgnoreCase(ext)) {
-                            log.warn("TLD files should not be placed in "
-                                     + "/WEB-INF/lib");
+                if (libs != null) {
+                    for (int i = 0; i < libs.length; i++) {
+                        if( libs[i].length() <5 ) continue;
+                        String ext=libs[i].substring( libs[i].length() - 4 );
+                        if (! ".jar".equalsIgnoreCase(ext)) {
+                            if (".tld".equalsIgnoreCase(ext)) {
+                                log.warn("TLD files should not be placed in "
+                                         + "/WEB-INF/lib");
+                            }
+                            continue;
+                        }
+                        try {
+                            File libFile = new File(lib, libs[i]);
+                            classPath = classPath + File.pathSeparator
+                                + libFile.getAbsolutePath();
+                            
urls.add(libFile.getAbsoluteFile().toURI().toURL());
+                        } catch (IOException ioe) {
+                            // failing a toCanonicalPath on a file that
+                            // exists() should be a JVM regression test,
+                            // therefore we have permission to freak out
+                            throw new RuntimeException(ioe.toString());
                         }
-                        continue;
-                    }
-                    try {
-                        File libFile = new File(lib, libs[i]);
-                        classPath = classPath + File.pathSeparator
-                            + libFile.getAbsolutePath();
-                        urls.add(libFile.getAbsoluteFile().toURI().toURL());
-                    } catch (IOException ioe) {
-                        // failing a toCanonicalPath on a file that
-                        // exists() should be a JVM regression test,
-                        // therefore we have permission to freak out
-                        throw new RuntimeException(ioe.toString());
                     }
                 }
             }

Modified: tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java 
(original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java Wed Nov 
11 20:46:09 2015
@@ -389,6 +389,9 @@ public class JspCServletContext implemen
         if (!theBaseDir.exists() || !theBaseDir.isDirectory())
             return (thePaths);
         String theFiles[] = theBaseDir.list();
+        if (theFiles == null) {
+            return thePaths;
+        }
         for (int i = 0; i < theFiles.length; i++) {
             File testFile = new File(basePath + File.separator + theFiles[i]);
             if (testFile.isFile())

Modified: tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java (original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java Wed Nov 11 
20:46:09 2015
@@ -344,8 +344,9 @@ public class TldScanner {
                 public FileVisitResult visitFile(Path file,
                                                  BasicFileAttributes attrs)
                         throws IOException {
-                    if (!file.getFileName().toString()
-                            .toLowerCase(Locale.ENGLISH).endsWith(TLD_EXT)) {
+                    Path fileName = file.getFileName();
+                    if (fileName == null || !fileName.toString().toLowerCase(
+                            Locale.ENGLISH).endsWith(TLD_EXT)) {
                         return FileVisitResult.CONTINUE;
                     }
 

Modified: tomcat/trunk/res/findbugs/filter-false-positives.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/res/findbugs/filter-false-positives.xml?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/res/findbugs/filter-false-positives.xml (original)
+++ tomcat/trunk/res/findbugs/filter-false-positives.xml Wed Nov 11 20:46:09 
2015
@@ -183,6 +183,21 @@
     <Bug code="NS"/>
   </Match>
   <Match>
+    <!-- Sync is to protect construction of data not individual fields -->
+    <Class name="org.apache.catalina.tribes.membership.MemberImpl"/>
+    <Or>
+      <Method name="getCommand"/>
+      <Method name="getDomain"/>
+      <Method name="getHost"/>
+      <Method name="getPayload"/>
+      <Method name="getPort"/>
+      <Method name="getSecurePort"/>
+      <Method name="getUdpPort"/>
+      <Method name="getUniqueId"/>
+    </Or>
+    <Bug pattern="UG_SYNC_SET_UNSYNC_GET"/>
+  </Match>
+  <Match>
     <!-- Intentional in case thread is waiting -->
     <Class name="org.apache.catalina.tribes.transport.RxTaskPool"/>
     <Method name="returnWorker"/>
@@ -201,6 +216,17 @@
     <Bug code="SQL" />
   </Match>
   <Match>
+    <!-- Use of synchronisation is required to make a sequence of calls in   
-->
+    <!-- one method appear to be atomic.                                     
-->
+    <Class name="org.apache.coyote.AbstractProcessorLight"/>
+    <Or>
+      <Method name="addDispatch"/>
+      <Method name="getIteratorAndClearDispatches"/>
+      <Method name="clearDispatches"/>
+    </Or>
+    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER" />
+  </Match>
+  <Match>
     <!-- Correct behaviour does not assume sequential operations on concurrent
          hash map are atomic. -->
     <Class name="org.apache.coyote.AbstractProtocol$AbstractConnectionHandler" 
/>
@@ -242,6 +268,12 @@
     <Bug pattern="IM_BAD_CHECK_FOR_ODD" />
   </Match>
   <Match>
+    <!-- Loss of the occasional increment is acceptable. -->
+    <Class name="org.apache.coyote.http2.Http2UpgradeHandler" />
+    <Method name="pruneClosedStreams" />
+    <Bug pattern="VO_VOLATILE_INCREMENT" />
+  </Match>
+  <Match>
     <!-- Notify is correct. Condition changed outside of this method. -->
     <Class name="org.apache.coyote.http2.Http2UpgradeHandler" />
     <Mehtod name="releaseBackLog" />
@@ -465,6 +497,15 @@
     <Bug code="ML" />
   </Match>
   <Match>
+    <!-- Modifications to SocketLists are always protected by syncs -->
+    <Class name="org.apache.tomcat.util.net.AprEndpoint$SocketList"/>
+    <Or>
+      <Method name="add"/>
+      <Method name="remove"/>
+    </Or>
+    <Bug pattern="VO_VOLATILE_INCREMENT"/>
+  </Match>
+  <Match>
     <!-- Object is only ever set to null, sync therefore is still valid -->
     <Class name="org.apache.tomcat.util.net.AprEndpoint$SocketProcessor"/>
     <Method name="run"/>
@@ -498,17 +539,6 @@
     <Bug code="DE" />
   </Match>
   <Match>
-    <!-- Use of synchronisation is required to make a sequence of calls in   
-->
-    <!-- one method appear to be atomic.                                     
-->
-    <Class name="org.apache.tomcat.util.net.SocketWrapper"/>
-    <Or>
-      <Method name="addDispatch"/>
-      <Method name="getIteratorAndClearDispatches"/>
-      <Method name="clearDispatches"/>
-    </Or>
-    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER" />
-  </Match>
-  <Match>
     <!-- Yes the simple name is the same as the super class. Accept it. -->
     <Class name="org.apache.tomcat.util.threads.ThreadPoolExecutor" />
     <Bug code="Nm" />
@@ -691,8 +721,8 @@
   <Match>
     <!-- Code is deliberately unused -->
     <Or>
-      <Class 
name="org.apache.catalina.webresources.AbstractTestDirResourceSet" />
       <Class 
name="org.apache.catalina.webresources.AbstractTestFileResourceSet" />
+      <Class name="org.apache.catalina.webresources.TestDirResourceSet" />
       <Class name="org.apache.catalina.webresources.TestJarResourceSet" />
       <Class 
name="org.apache.catalina.webresources.TestJarResourceSetInternal" />
     </Or>
@@ -734,6 +764,22 @@
     <Bug code="RR" />
   </Match>
   <Match>
+    <Class name="org.apache.tomcat.util.threads.TestLimitLatch" />
+    <Or>
+      <Method name="waitForThreadToStop" />
+      <Method name="testTenWait" />
+    </Or>
+    <Bug pattern="NN_NAKED_NOTIFY " />
+  </Match>
+  <Match>
+    <Class name="org.apache.tomcat.util.threads.TestLimitLatch$TestThread" />
+     <Method name="run" />
+     <Or>
+      <Bug pattern="WA_NOT_IN_LOOP" />
+      <Bug pattern="UW_UNCOND_WAIT " />
+    </Or>
+  </Match>
+  <Match>
     <!-- Code is deliberately unused -->
     <Class name="org.apache.tomcat.websocket.server.TestUriTemplate" />
     <Or>

Modified: tomcat/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java?rev=1713931&r1=1713930&r2=1713931&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java 
(original)
+++ tomcat/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java Wed 
Nov 11 20:46:09 2015
@@ -24,6 +24,7 @@ import java.util.HashSet;
 import java.util.Locale;
 import java.util.Set;
 
+import org.junit.Assert;
 import org.junit.Test;
 
 import org.apache.tomcat.util.bcel.classfile.ClassParser;
@@ -39,6 +40,8 @@ public class TesterPerformance {
         File libDir = new File(JAR_LOCATION);
         String[] libs = libDir.list();
 
+        Assert.assertNotNull(libs);
+
         Set<URL> jarURLs = new HashSet<>();
 
         for (String lib : libs) {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to