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: [email protected]
For additional commands, e-mail: [email protected]