Author: markt
Date: Fri Apr 6 20:11:55 2018
New Revision: 1828559
URL: http://svn.apache.org/viewvc?rev=1828559&view=rev
Log:
SpotBugs
Fixes for Jasper (rank 17 and above)
Modified:
tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java
tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java
tomcat/trunk/res/findbugs/filter-false-positives.xml
Modified: tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java?rev=1828559&r1=1828558&r2=1828559&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java (original)
+++ tomcat/trunk/java/org/apache/jasper/el/JasperELResolver.java Fri Apr 6
20:11:55 2018
@@ -18,6 +18,7 @@
package org.apache.jasper.el;
import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
import javax.el.ArrayELResolver;
import javax.el.BeanELResolver;
@@ -41,15 +42,14 @@ public class JasperELResolver extends Co
private static final int STANDARD_RESOLVERS_COUNT = 9;
- private int size;
- private ELResolver[] resolvers;
+ private AtomicInteger resolversSize = new AtomicInteger(0);
+ private volatile ELResolver[] resolvers;
private final int appResolversSize;
public JasperELResolver(List<ELResolver> appResolvers,
ELResolver streamResolver) {
appResolversSize = appResolvers.size();
resolvers = new ELResolver[appResolversSize +
STANDARD_RESOLVERS_COUNT];
- size = 0;
add(new ImplicitObjectELResolver());
for (ELResolver appResolver : appResolvers) {
@@ -69,6 +69,8 @@ public class JasperELResolver extends Co
public synchronized void add(ELResolver elResolver) {
super.add(elResolver);
+ int size = resolversSize.get();
+
if (resolvers.length > size) {
resolvers[size] = elResolver;
} else {
@@ -78,7 +80,7 @@ public class JasperELResolver extends Co
resolvers = nr;
}
- size ++;
+ resolversSize.incrementAndGet();
}
@Override
@@ -106,6 +108,7 @@ public class JasperELResolver extends Co
start = 1;
}
+ int size = resolversSize.get();
for (int i = start; i < size; i++) {
result = resolvers[i].getValue(context, base, property);
if (context.isPropertyResolved()) {
@@ -143,6 +146,7 @@ public class JasperELResolver extends Co
// skip collection (map, resource, list, and array) resolvers
index += 4;
// call bean and the rest of resolvers
+ int size = resolversSize.get();
for (int i = index; i < size; i++) {
result = resolvers[i].invoke(
context, base, targetMethod, paramTypes, params);
Modified: tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java?rev=1828559&r1=1828558&r2=1828559&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java
(original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java Fri Apr
6 20:11:55 2018
@@ -89,7 +89,7 @@ public class JspServletWrapper {
private long available = 0L;
private final ServletConfig config;
private final Options options;
- private boolean firstTime = true;
+ private volatile boolean firstTime = true;
/** Whether the servlet needs reloading on next access */
private volatile boolean reload = true;
private final boolean isTagFile;
Modified: tomcat/trunk/res/findbugs/filter-false-positives.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/res/findbugs/filter-false-positives.xml?rev=1828559&r1=1828558&r2=1828559&view=diff
==============================================================================
--- tomcat/trunk/res/findbugs/filter-false-positives.xml (original)
+++ tomcat/trunk/res/findbugs/filter-false-positives.xml Fri Apr 6 20:11:55
2018
@@ -824,7 +824,16 @@
silence an Eclipse warning -->
<Class name="org.apache.jasper.compiler.ELFunctionMapper"/>
<Method name="map"/>
- <Bug code="DLS"/>
+ <Bug pattern="DLS_DEAD_LOCAL_STORE"/>
+ </Match>
+ <Match>
+ <!-- Sync is not protecting these fields -->
+ <Class name="org.apache.jasper.compiler.JspConfig"/>
+ <Or>
+ <Field name="defaultDeferedSyntaxAllowedAsLiteral" />
+ <Field name="defaultIsELIgnored" />
+ </Or>
+ <Bug pattern="IS2_INCONSISTENT_SYNC"/>
</Match>
<Match>
<!-- NPE is not possible -->
@@ -836,7 +845,10 @@
<!-- Yes this is a dead store. This is so the IDE warning can be
suppressed.
The object creation has side-effects so the code is required. -->
<Class name="org.apache.jasper.compiler.JspDocumentParser" />
- <Method name="comment"/>
+ <Or>
+ <Method name="comment"/>
+ <Method name="processChars"/>
+ </Or>
<Bug pattern="DLS_DEAD_LOCAL_STORE"/>
</Match>
<Match>
@@ -869,6 +881,12 @@
<Bug code="NP" />
</Match>
<Match>
+ <!-- Array contents are not mutated -->
+ <Class name="org.apache.jasper.el.JasperELResolver"/>
+ <Field name="resolvers" />
+ <Bug pattern="VO_VOLATILE_REFERENCE_TO_ARRAY" />
+ </Match>
+ <Match>
<!-- base null is handled by this resolver -->
<Class name="org.apache.jasper.el.JasperELResolver"/>
<Method name="getValue" />
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]