This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push: new 16af3080f7 Cleanups 16af3080f7 is described below commit 16af3080f786203eab322f48a4d5e3aa6781532a Author: remm <r...@apache.org> AuthorDate: Wed Mar 19 00:10:54 2025 +0100 Cleanups --- java/org/apache/el/lang/ELArithmetic.java | 14 +-- java/org/apache/el/lang/ELSupport.java | 26 ++--- java/org/apache/el/lang/ExpressionBuilder.java | 7 +- java/org/apache/el/parser/AstAbstractEmpty.java | 2 +- .../apache/el/parser/AstCompositeExpression.java | 2 +- java/org/apache/el/parser/AstFunction.java | 10 +- java/org/apache/el/parser/AstValue.java | 20 ++-- java/org/apache/el/parser/SimpleNode.java | 9 +- java/org/apache/el/stream/Stream.java | 5 +- java/org/apache/el/util/ReflectionUtil.java | 2 +- java/org/apache/el/util/Validation.java | 10 +- java/org/apache/jasper/EmbeddedServletOptions.java | 4 +- java/org/apache/jasper/JspC.java | 29 ++---- java/org/apache/jasper/JspCompilationContext.java | 12 +-- java/org/apache/jasper/compiler/AntCompiler.java | 22 ++-- .../org/apache/jasper/compiler/BeanRepository.java | 2 +- java/org/apache/jasper/compiler/Compiler.java | 6 +- .../jasper/compiler/DefaultErrorHandler.java | 2 +- .../apache/jasper/compiler/ELFunctionMapper.java | 23 +++-- java/org/apache/jasper/compiler/ELNode.java | 2 +- java/org/apache/jasper/compiler/ELParser.java | 16 +-- .../apache/jasper/compiler/ErrorDispatcher.java | 6 +- java/org/apache/jasper/compiler/Generator.java | 111 ++++++++++----------- .../jasper/compiler/ImplicitTagLibraryInfo.java | 2 +- java/org/apache/jasper/compiler/JspConfig.java | 6 +- .../apache/jasper/compiler/JspDocumentParser.java | 16 +-- java/org/apache/jasper/compiler/JspReader.java | 8 +- .../apache/jasper/compiler/JspRuntimeContext.java | 6 +- java/org/apache/jasper/compiler/JspUtil.java | 55 +++++----- java/org/apache/jasper/compiler/Localizer.java | 1 + java/org/apache/jasper/compiler/Node.java | 16 +-- java/org/apache/jasper/compiler/PageDataImpl.java | 9 +- java/org/apache/jasper/compiler/PageInfo.java | 4 +- java/org/apache/jasper/compiler/Parser.java | 14 +-- .../apache/jasper/compiler/ParserController.java | 22 ++-- .../apache/jasper/compiler/ScriptingVariabler.java | 2 +- java/org/apache/jasper/compiler/SmapStratum.java | 16 +-- java/org/apache/jasper/compiler/SmapUtil.java | 8 +- .../apache/jasper/compiler/TagFileProcessor.java | 44 ++++---- .../apache/jasper/compiler/TagLibraryInfoImpl.java | 4 +- java/org/apache/jasper/compiler/TldCache.java | 4 +- java/org/apache/jasper/compiler/Validator.java | 18 ++-- java/org/apache/jasper/el/JasperELResolver.java | 18 ++-- .../org/apache/jasper/runtime/BodyContentImpl.java | 2 +- .../jasper/runtime/JspApplicationContextImpl.java | 4 +- .../apache/jasper/runtime/JspRuntimeLibrary.java | 80 +++++++-------- java/org/apache/jasper/runtime/JspWriterImpl.java | 15 ++- .../org/apache/jasper/runtime/PageContextImpl.java | 15 ++- .../runtime/ServletResponseWrapperInclude.java | 1 + java/org/apache/jasper/runtime/TagHandlerPool.java | 3 +- java/org/apache/jasper/servlet/JasperLoader.java | 2 +- .../apache/jasper/servlet/JspCServletContext.java | 8 +- java/org/apache/jasper/servlet/JspServlet.java | 6 +- .../apache/jasper/servlet/JspServletWrapper.java | 12 +-- java/org/apache/jasper/servlet/TldScanner.java | 1 - java/org/apache/jasper/tagplugins/jstl/Util.java | 2 +- .../jasper/tagplugins/jstl/core/ForEach.java | 2 +- .../apache/jasper/tagplugins/jstl/core/Out.java | 5 +- .../apache/jasper/tagplugins/jstl/core/Set.java | 13 +-- 59 files changed, 367 insertions(+), 419 deletions(-) diff --git a/java/org/apache/el/lang/ELArithmetic.java b/java/org/apache/el/lang/ELArithmetic.java index 9cf2c9cde7..47fa9c9ab5 100644 --- a/java/org/apache/el/lang/ELArithmetic.java +++ b/java/org/apache/el/lang/ELArithmetic.java @@ -252,7 +252,7 @@ public abstract class ELArithmetic { private static final Long ZERO = Long.valueOf(0); - public static final Number add(final Object obj0, final Object obj1) { + public static Number add(final Object obj0, final Object obj1) { final ELArithmetic delegate = findDelegate(obj0, obj1); if (delegate == null) { return Long.valueOf(0); @@ -264,7 +264,7 @@ public abstract class ELArithmetic { return delegate.add(num0, num1); } - public static final Number mod(final Object obj0, final Object obj1) { + public static Number mod(final Object obj0, final Object obj1) { if (obj0 == null && obj1 == null) { return Long.valueOf(0); } @@ -286,7 +286,7 @@ public abstract class ELArithmetic { return delegate.mod(num0, num1); } - public static final Number subtract(final Object obj0, final Object obj1) { + public static Number subtract(final Object obj0, final Object obj1) { final ELArithmetic delegate = findDelegate(obj0, obj1); if (delegate == null) { return Long.valueOf(0); @@ -298,7 +298,7 @@ public abstract class ELArithmetic { return delegate.subtract(num0, num1); } - public static final Number divide(final Object obj0, final Object obj1) { + public static Number divide(final Object obj0, final Object obj1) { if (obj0 == null && obj1 == null) { return ZERO; } @@ -318,7 +318,7 @@ public abstract class ELArithmetic { return delegate.divide(num0, num1); } - public static final Number multiply(final Object obj0, final Object obj1) { + public static Number multiply(final Object obj0, final Object obj1) { final ELArithmetic delegate = findDelegate(obj0, obj1); if (delegate == null) { return Long.valueOf(0); @@ -350,11 +350,11 @@ public abstract class ELArithmetic { } } - public static final boolean isNumber(final Object obj) { + public static boolean isNumber(final Object obj) { return (obj != null && isNumberType(obj.getClass())); } - public static final boolean isNumberType(final Class<?> type) { + public static boolean isNumberType(final Class<?> type) { return type == Long.TYPE || type == Double.TYPE || type == Byte.TYPE || type == Short.TYPE || type == Integer.TYPE || type == Float.TYPE || Number.class.isAssignableFrom(type); } diff --git a/java/org/apache/el/lang/ELSupport.java b/java/org/apache/el/lang/ELSupport.java index d16d33b376..61167eb527 100644 --- a/java/org/apache/el/lang/ELSupport.java +++ b/java/org/apache/el/lang/ELSupport.java @@ -88,7 +88,7 @@ public class ELSupport { * @throws ELException if neither object is Comparable * @throws ClassCastException if the objects are not mutually comparable */ - public static final int compare(final ELContext ctx, final Object obj0, final Object obj1) throws ELException { + public static int compare(final ELContext ctx, final Object obj0, final Object obj1) throws ELException { if (obj0 == obj1 || equals(ctx, obj0, obj1)) { return 0; } @@ -149,7 +149,7 @@ public class ELSupport { * * @throws ELException if one of the coercion fails */ - public static final boolean equals(final ELContext ctx, final Object obj0, final Object obj1) throws ELException { + public static boolean equals(final ELContext ctx, final Object obj0, final Object obj1) throws ELException { if (obj0 == obj1) { return true; } else if (obj0 == null || obj1 == null) { @@ -178,7 +178,7 @@ public class ELSupport { return obj1.equals(coerceToEnum(ctx, obj0, obj1.getClass())); } else if (obj0 instanceof String || obj1 instanceof String) { int lexCompare = coerceToString(ctx, obj0).compareTo(coerceToString(ctx, obj1)); - return (lexCompare == 0) ? true : false; + return lexCompare == 0; } else { return obj0.equals(obj1); } @@ -189,7 +189,7 @@ public class ELSupport { * be a neater / better solution but I couldn't find it. */ @SuppressWarnings("unchecked") - public static final Enum<?> coerceToEnum(final ELContext ctx, final Object obj, + public static Enum<?> coerceToEnum(final ELContext ctx, final Object obj, @SuppressWarnings("rawtypes") Class type) { if (ctx != null) { @@ -235,7 +235,7 @@ public class ELSupport { * * @throws ELException if object is not Boolean or String */ - public static final Boolean coerceToBoolean(final ELContext ctx, final Object obj, boolean primitive) + public static Boolean coerceToBoolean(final ELContext ctx, final Object obj, boolean primitive) throws ELException { if (ctx != null) { @@ -300,7 +300,7 @@ public class ELSupport { throw new ELException(MessageFactory.get("error.convert", obj, objType, Character.class)); } - protected static final Number coerceToNumber(final Number number, final Class<?> type) throws ELException { + protected static Number coerceToNumber(final Number number, final Class<?> type) throws ELException { if (Long.TYPE == type || Long.class.equals(type)) { return Long.valueOf(number.longValue()); } @@ -344,7 +344,7 @@ public class ELSupport { throw new ELException(MessageFactory.get("error.convert", number, number.getClass(), type)); } - public static final Number coerceToNumber(final ELContext ctx, final Object obj, final Class<?> type) + public static Number coerceToNumber(final ELContext ctx, final Object obj, final Class<?> type) throws ELException { if (ctx != null) { @@ -382,7 +382,7 @@ public class ELSupport { throw new ELException(MessageFactory.get("error.convert", obj, obj.getClass(), type)); } - protected static final Number coerceToNumber(final String val, final Class<?> type) throws ELException { + protected static Number coerceToNumber(final String val, final Class<?> type) throws ELException { if (Long.TYPE == type || Long.class.equals(type)) { try { return Long.valueOf(val); @@ -451,7 +451,7 @@ public class ELSupport { * * @return the String value of the object */ - public static final String coerceToString(final ELContext ctx, final Object obj) { + public static String coerceToString(final ELContext ctx, final Object obj) { if (ctx != null) { boolean originalIsPropertyResolved = ctx.isPropertyResolved(); @@ -588,21 +588,21 @@ public class ELSupport { return (obj0 instanceof BigDecimal || obj1 instanceof BigDecimal); } - public static final boolean isBigIntegerOp(final Object obj0, final Object obj1) { + public static boolean isBigIntegerOp(final Object obj0, final Object obj1) { return (obj0 instanceof BigInteger || obj1 instanceof BigInteger); } - public static final boolean isDoubleOp(final Object obj0, final Object obj1) { + public static boolean isDoubleOp(final Object obj0, final Object obj1) { return (obj0 instanceof Double || obj1 instanceof Double || obj0 instanceof Float || obj1 instanceof Float); } - public static final boolean isLongOp(final Object obj0, final Object obj1) { + public static boolean isLongOp(final Object obj0, final Object obj1) { return (obj0 instanceof Long || obj1 instanceof Long || obj0 instanceof Integer || obj1 instanceof Integer || obj0 instanceof Character || obj1 instanceof Character || obj0 instanceof Short || obj1 instanceof Short || obj0 instanceof Byte || obj1 instanceof Byte); } - public static final boolean isStringFloat(final String str) { + public static boolean isStringFloat(final String str) { int len = str.length(); if (len > 1) { for (int i = 0; i < len; i++) { diff --git a/java/org/apache/el/lang/ExpressionBuilder.java b/java/org/apache/el/lang/ExpressionBuilder.java index f9eb10be72..45a5ae5d5e 100644 --- a/java/org/apache/el/lang/ExpressionBuilder.java +++ b/java/org/apache/el/lang/ExpressionBuilder.java @@ -88,8 +88,7 @@ public final class ExpressionBuilder implements NodeVisitor { } public static Node createNode(String expr) throws ELException { - Node n = createNodeInternal(expr); - return n; + return createNodeInternal(expr); } private static Node createNodeInternal(String expr) throws ELException { @@ -114,7 +113,7 @@ public final class ExpressionBuilder implements NodeVisitor { n = n.jjtGetChild(0); } else { Class<?> type = null; - Node child = null; + Node child; for (int i = 0; i < numChildren; i++) { child = n.jjtGetChild(i); if (child instanceof AstLiteralExpression) { @@ -188,7 +187,7 @@ public final class ExpressionBuilder implements NodeVisitor { // References to variables that refer to lambda expressions will be // parsed as functions. This is handled at runtime but at this point // need to treat it as a variable rather than a function. - if (m == null && this.varMapper != null && funcNode.getPrefix().length() == 0) { + if (m == null && this.varMapper != null && funcNode.getPrefix().isEmpty()) { this.varMapper.resolveVariable(funcNode.getLocalName()); return; } diff --git a/java/org/apache/el/parser/AstAbstractEmpty.java b/java/org/apache/el/parser/AstAbstractEmpty.java index 844d183291..d2a5c7c73a 100644 --- a/java/org/apache/el/parser/AstAbstractEmpty.java +++ b/java/org/apache/el/parser/AstAbstractEmpty.java @@ -49,7 +49,7 @@ public abstract class AstAbstractEmpty extends SimpleNode { @Override public Object getValue(EvaluationContext ctx) throws ELException { Object obj = this.children[0].getValue(ctx); - if (obj == null || obj instanceof String && ((String) obj).length() == 0 || + if (obj == null || obj instanceof String && ((String) obj).isEmpty() || obj instanceof Object[] && ((Object[]) obj).length == 0 || obj instanceof Collection<?> && ((Collection<?>) obj).isEmpty() || obj instanceof Map<?,?> && ((Map<?,?>) obj).isEmpty()) { diff --git a/java/org/apache/el/parser/AstCompositeExpression.java b/java/org/apache/el/parser/AstCompositeExpression.java index 604013698f..ea8484740e 100644 --- a/java/org/apache/el/parser/AstCompositeExpression.java +++ b/java/org/apache/el/parser/AstCompositeExpression.java @@ -41,8 +41,8 @@ public final class AstCompositeExpression extends SimpleNode { @Override public Object getValue(EvaluationContext ctx) throws ELException { StringBuilder sb = new StringBuilder(16); - Object obj = null; if (this.children != null) { + Object obj; for (Node child : this.children) { obj = child.getValue(ctx); if (obj != null) { diff --git a/java/org/apache/el/parser/AstFunction.java b/java/org/apache/el/parser/AstFunction.java index 08eb45d593..995075934c 100644 --- a/java/org/apache/el/parser/AstFunction.java +++ b/java/org/apache/el/parser/AstFunction.java @@ -35,9 +35,9 @@ import org.apache.el.util.MessageFactory; */ public final class AstFunction extends SimpleNode { - protected String localName = ""; + private String localName = ""; - protected String prefix = ""; + private String prefix = ""; public AstFunction(int id) { @@ -92,7 +92,7 @@ public final class AstFunction extends SimpleNode { } Method m = fnMapper.resolveFunction(this.prefix, this.localName); - if (m == null && this.prefix.length() == 0) { + if (m == null && this.prefix.isEmpty()) { // TODO: Do we need to think about precedence of the various ways // a lambda expression may be obtained from something that // the parser thinks is a function? @@ -104,7 +104,7 @@ public final class AstFunction extends SimpleNode { VariableMapper varMapper = ctx.getVariableMapper(); if (varMapper != null) { obj = varMapper.resolveVariable(this.localName); - if (obj instanceof ValueExpression) { + if (obj != null) { // See if this returns a LambdaExpression obj = ((ValueExpression) obj).getValue(ctx); } @@ -155,7 +155,6 @@ public final class AstFunction extends SimpleNode { Node parameters = jjtGetChild(0); Class<?>[] paramTypes = m.getParameterTypes(); Object[] params = null; - Object result = null; int inputParameterCount = parameters.jjtGetNumChildren(); int methodParameterCount = paramTypes.length; if (inputParameterCount == 0 && methodParameterCount == 1 && m.isVarArgs()) { @@ -188,6 +187,7 @@ public final class AstFunction extends SimpleNode { throw new ELException(MessageFactory.get("error.function", this.getOutputName()), ele); } } + Object result; try { result = m.invoke(null, params); } catch (IllegalAccessException iae) { diff --git a/java/org/apache/el/parser/AstValue.java b/java/org/apache/el/parser/AstValue.java index cb58b4034e..66e16a4112 100644 --- a/java/org/apache/el/parser/AstValue.java +++ b/java/org/apache/el/parser/AstValue.java @@ -200,7 +200,7 @@ public final class AstValue extends SimpleNode { public MethodInfo getMethodInfo(EvaluationContext ctx, @SuppressWarnings("rawtypes") Class[] paramTypes) throws ELException { Target t = getTarget(ctx); - Class<?>[] types = null; + Class<?>[] types; if (isParametersProvided()) { Object[] values = ((AstMethodParameters) this.jjtGetChild(this.jjtGetNumChildren() - 1)).getParameters(ctx); types = getTypesFromValues(values); @@ -218,9 +218,9 @@ public final class AstValue extends SimpleNode { throws ELException { Target t = getTarget(ctx); - Method m = null; - Object[] values = null; - Class<?>[] types = null; + Method m; + Object[] values; + Class<?>[] types; if (isParametersProvided()) { values = ((AstMethodParameters) this.jjtGetChild(this.jjtGetNumChildren() - 1)).getParameters(ctx); types = getTypesFromValues(values); @@ -233,7 +233,7 @@ public final class AstValue extends SimpleNode { // Handle varArgs and any coercion required values = convertArgs(ctx, values, m); - Object result = null; + Object result; try { result = m.invoke(t.base, values); } catch (IllegalAccessException | IllegalArgumentException e) { @@ -261,8 +261,8 @@ public final class AstValue extends SimpleNode { int paramCount = types.length; - if (m.isVarArgs() && paramCount > 1 && (src == null || paramCount > src.length) || - !m.isVarArgs() && (paramCount > 0 && src == null || src != null && src.length != paramCount)) { + if (m.isVarArgs() && paramCount > 1 && (src == null || paramCount > src.length) || !m.isVarArgs() && + (src == null || src.length != paramCount)) { String srcCount = null; if (src != null) { srcCount = Integer.toString(src.length); @@ -311,7 +311,7 @@ public final class AstValue extends SimpleNode { return null; } - Class<?> result[] = new Class<?>[values.length]; + Class<?>[] result = new Class<?>[values.length]; for (int i = 0; i < values.length; i++) { if (values[i] == null) { result[i] = null; @@ -347,9 +347,7 @@ public final class AstValue extends SimpleNode { // child int len = children.length; if (len > 2) { - if (this.jjtGetChild(len - 1) instanceof AstMethodParameters) { - return true; - } + return this.jjtGetChild(len - 1) instanceof AstMethodParameters; } return false; } diff --git a/java/org/apache/el/parser/SimpleNode.java b/java/org/apache/el/parser/SimpleNode.java index c07e9a66c7..15ae91addd 100644 --- a/java/org/apache/el/parser/SimpleNode.java +++ b/java/org/apache/el/parser/SimpleNode.java @@ -81,7 +81,7 @@ public abstract class SimpleNode extends ELSupport implements Node { if (children == null) { children = new SimpleNode[i + 1]; } else if (i >= children.length) { - SimpleNode c[] = new SimpleNode[i + 1]; + SimpleNode[] c = new SimpleNode[i + 1]; System.arraycopy(children, 0, c, 0, children.length); children = c; } @@ -154,7 +154,7 @@ public abstract class SimpleNode extends ELSupport implements Node { @Override public void accept(NodeVisitor visitor) throws Exception { visitor.visit(this); - if (this.children != null && this.children.length > 0) { + if (this.children != null) { for (Node child : this.children) { child.accept(visitor); } @@ -204,10 +204,7 @@ public abstract class SimpleNode extends ELSupport implements Node { } else if (!image.equals(other.image)) { return false; } - if (!Arrays.equals(children, other.children)) { - return false; - } - return true; + return Arrays.equals(children, other.children); } diff --git a/java/org/apache/el/stream/Stream.java b/java/org/apache/el/stream/Stream.java index 11d0acd329..067d14e7fd 100644 --- a/java/org/apache/el/stream/Stream.java +++ b/java/org/apache/el/stream/Stream.java @@ -102,7 +102,7 @@ public class Stream { public Stream distinct() { Iterator<Object> downStream = new OpIterator() { - private Set<Object> values = new HashSet<>(); + private final Set<Object> values = new HashSet<>(); @Override protected void findNext() { @@ -440,8 +440,7 @@ public class Stream { Object result = null; if (iterator.hasNext()) { - Object obj = iterator.next(); - result = obj; + result = iterator.next(); } while (iterator.hasNext()) { diff --git a/java/org/apache/el/util/ReflectionUtil.java b/java/org/apache/el/util/ReflectionUtil.java index d92eba762b..baf32a1fef 100644 --- a/java/org/apache/el/util/ReflectionUtil.java +++ b/java/org/apache/el/util/ReflectionUtil.java @@ -449,7 +449,7 @@ public class ReflectionUtil { return m; } Class<?>[] interfaces = type.getInterfaces(); - Method mp = null; + Method mp; for (Class<?> iface : interfaces) { try { mp = iface.getMethod(m.getName(), m.getParameterTypes()); diff --git a/java/org/apache/el/util/Validation.java b/java/org/apache/el/util/Validation.java index ed40dbc570..db05b790e4 100644 --- a/java/org/apache/el/util/Validation.java +++ b/java/org/apache/el/util/Validation.java @@ -22,7 +22,7 @@ import java.security.PrivilegedAction; public class Validation { // Java keywords, boolean literals & the null literal in alphabetical order - private static final String invalidIdentifiers[] = { "abstract", "assert", "boolean", "break", "byte", "case", + private static final String[] invalidIdentifiers = { "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "false", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "null", "package", "private", "protected", "public", "return", @@ -64,7 +64,7 @@ public class Validation { } // Should not be the case but check to be sure - if (key == null || key.length() == 0) { + if (key == null || key.isEmpty()) { return false; } @@ -88,10 +88,6 @@ public class Validation { * The parser checks Character.isJavaIdentifierStart() and Character.isJavaIdentifierPart() so no need to check * them again here. However, we do need to check that '#' hasn't been used at the start of the identifier. */ - if (key.charAt(0) == '#') { - return false; - } - - return true; + return key.charAt(0) != '#'; } } diff --git a/java/org/apache/jasper/EmbeddedServletOptions.java b/java/org/apache/jasper/EmbeddedServletOptions.java index f0ac9fb79c..fa00c6f3e9 100644 --- a/java/org/apache/jasper/EmbeddedServletOptions.java +++ b/java/org/apache/jasper/EmbeddedServletOptions.java @@ -45,7 +45,7 @@ public final class EmbeddedServletOptions implements Options { // Logger private final Log log = LogFactory.getLog(EmbeddedServletOptions.class); // must not be static - private Properties settings = new Properties(); + private final Properties settings = new Properties(); /** * Is Jasper being used in development mode? @@ -110,7 +110,7 @@ public final class EmbeddedServletOptions implements Options { * I want to see my generated servlets. Which directory are they * in? */ - private File scratchDir; + private final File scratchDir; /** * Need to have this as is for versions 4 and 5 of IE. Can be set from diff --git a/java/org/apache/jasper/JspC.java b/java/org/apache/jasper/JspC.java index 71f138526a..166ba89399 100644 --- a/java/org/apache/jasper/JspC.java +++ b/java/org/apache/jasper/JspC.java @@ -280,9 +280,9 @@ public class JspC extends Task implements Options { protected boolean showSuccess = false; protected int argPos; protected boolean fullstop = false; - protected String args[]; + protected String[] args; - public static void main(String arg[]) { + public static void main(String[] arg) { if (arg.length == 0) { System.out.println(Localizer.getMessage("jspc.usage")); } else { @@ -373,11 +373,7 @@ public class JspC extends Task implements Options { } } else if (tok.equals(SWITCH_CACHE)) { tok = nextArg(); - if ("false".equals(tok)) { - caching = false; - } else { - caching = true; - } + caching = !"false".equals(tok); } else if (tok.equals(SWITCH_CLASSPATH)) { setClassPath(nextArg()); } else if (tok.startsWith(SWITCH_DIE)) { @@ -391,11 +387,7 @@ public class JspC extends Task implements Options { helpNeeded = true; } else if (tok.equals(SWITCH_POOLING)) { tok = nextArg(); - if ("false".equals(tok)) { - poolingEnabled = false; - } else { - poolingEnabled = true; - } + poolingEnabled = !"false".equals(tok); } else if (tok.equals(SWITCH_ENCODING)) { setJavaEncoding(nextArg()); } else if (tok.equals(SWITCH_SOURCE)) { @@ -1189,10 +1181,9 @@ public class JspC extends Task implements Options { } } } - current = reader.read(); - while (current == '\n' || current == '\r') { + do { current = reader.read(); - } + } while (current == '\n' || current == '\r'); continue; } else { writer.write(element); @@ -1207,7 +1198,7 @@ public class JspC extends Task implements Options { try (FileInputStream fis = new FileInputStream(webXml2); FileOutputStream fos = new FileOutputStream(webXml)) { - byte buf[] = new byte[512]; + byte[] buf = new byte[512]; while (true) { int n = fis.read(buf); if (n < 0) { @@ -1287,7 +1278,7 @@ public class JspC extends Task implements Options { ( jspUri, this, context, null, rctxt ); /* Override the defaults */ - if ((targetClassName != null) && (targetClassName.length() > 0)) { + if ((targetClassName != null) && (!targetClassName.isEmpty())) { clctxt.setServletClassName(targetClassName); targetClassName = null; } @@ -1403,7 +1394,7 @@ public class JspC extends Task implements Options { try { if (uriRoot == null) { - if (pages.size() == 0) { + if (pages.isEmpty()) { throw new JasperException(Localizer.getMessage("jsp.error.jspc.missingTarget")); } String firstJsp = pages.get(0); @@ -1432,7 +1423,7 @@ public class JspC extends Task implements Options { } // No explicit pages, we'll process all .jsp in the webapp - if (pages.size() == 0) { + if (pages.isEmpty()) { scanFiles(); } else { // Ensure pages are all relative to the uriRoot. diff --git a/java/org/apache/jasper/JspCompilationContext.java b/java/org/apache/jasper/JspCompilationContext.java index d8f926cb4c..d7c2ab2e50 100644 --- a/java/org/apache/jasper/JspCompilationContext.java +++ b/java/org/apache/jasper/JspCompilationContext.java @@ -215,7 +215,6 @@ public class JspCompilationContext { if (jspCompiler != null ) { return jspCompiler; } - jspCompiler = null; if (options.getCompilerClassName() != null) { jspCompiler = createCompiler(options.getCompilerClassName()); } else { @@ -401,7 +400,6 @@ public class JspCompilationContext { log.debug(Localizer.getMessage( "jsp.error.lastModified", getJspFile()), e); } - result = -1; } finally { if (uc != null) { try { @@ -461,7 +459,7 @@ public class JspCompilationContext { return packageName; } else { String dPackageName = getDerivedPackageName(); - if (dPackageName.length() == 0) { + if (dPackageName.isEmpty()) { return basePackageName; } return basePackageName + '.' + getDerivedPackageName(); @@ -579,7 +577,7 @@ public class JspCompilationContext { // ==================== Removal ==================== public void incrementRemoved() { - if (removed == false && rctxt != null) { + if (!removed && rctxt != null) { rctxt.removeWrapper(jspUri); } removed = true; @@ -676,7 +674,7 @@ public class JspCompilationContext { } protected void createOutputDir() { - String path = null; + String path; if (isTagFile()) { String tagName = tagInfo.getTagClassName(); path = tagName.replace('.', File.separatorChar); @@ -699,11 +697,11 @@ public class JspCompilationContext { } } - protected static final boolean isPathSeparator(char c) { + protected static boolean isPathSeparator(char c) { return (c == '/' || c == '\\'); } - protected static final String canonicalURI(String s) { + protected static String canonicalURI(String s) { if (s == null) { return null; } diff --git a/java/org/apache/jasper/compiler/AntCompiler.java b/java/org/apache/jasper/compiler/AntCompiler.java index 06f6f3596f..7a76aeefa0 100644 --- a/java/org/apache/jasper/compiler/AntCompiler.java +++ b/java/org/apache/jasper/compiler/AntCompiler.java @@ -130,8 +130,8 @@ public class AntCompiler extends Compiler { StringBuilder errorReport = new StringBuilder(); StringBuilder info = new StringBuilder(); - info.append("Compile: javaFileName=" + javaFileName + "\n"); - info.append(" classpath=" + classpath + "\n"); + info.append("Compile: javaFileName=").append(javaFileName).append("\n"); + info.append(" classpath=").append(classpath).append("\n"); // Start capturing the System.err output for this thread SystemLogHandler.setThread(); @@ -143,13 +143,13 @@ public class AntCompiler extends Compiler { // Initializing classpath Path path = new Path(project); path.setPath(System.getProperty("java.class.path")); - info.append(" cp=" + System.getProperty("java.class.path") + "\n"); + info.append(" cp=").append(System.getProperty("java.class.path")).append("\n"); StringTokenizer tokenizer = new StringTokenizer(classpath, File.pathSeparator); while (tokenizer.hasMoreElements()) { String pathElement = tokenizer.nextToken(); File repository = new File(pathElement); path.setLocation(repository); - info.append(" cp=" + repository + "\n"); + info.append(" cp=").append(repository).append("\n"); } if (log.isTraceEnabled()) { @@ -160,7 +160,7 @@ public class AntCompiler extends Compiler { Path srcPath = new Path(project); srcPath.setLocation(options.getScratchDir()); - info.append(" work dir=" + options.getScratchDir() + "\n"); + info.append(" work dir=").append(options.getScratchDir()).append("\n"); // Initialize and set java extensions String exts = System.getProperty("java.ext.dirs"); @@ -168,7 +168,7 @@ public class AntCompiler extends Compiler { Path extdirs = new Path(project); extdirs.setPath(exts); javac.setExtdirs(extdirs); - info.append(" extension dir=" + exts + "\n"); + info.append(" extension dir=").append(exts).append("\n"); } // Add endorsed directories if any are specified and we're forking @@ -191,29 +191,29 @@ public class AntCompiler extends Compiler { javac.setSrcdir(srcPath); javac.setTempdir(options.getScratchDir()); javac.setFork(ctxt.getOptions().getFork()); - info.append(" srcDir=" + srcPath + "\n"); + info.append(" srcDir=").append(srcPath).append("\n"); // Set the Java compiler to use if (options.getCompiler() != null) { javac.setCompiler(options.getCompiler()); - info.append(" compiler=" + options.getCompiler() + "\n"); + info.append(" compiler=").append(options.getCompiler()).append("\n"); } if (options.getCompilerTargetVM() != null) { javac.setTarget(options.getCompilerTargetVM()); - info.append(" compilerTargetVM=" + options.getCompilerTargetVM() + "\n"); + info.append(" compilerTargetVM=").append(options.getCompilerTargetVM()).append("\n"); } if (options.getCompilerSourceVM() != null) { javac.setSource(options.getCompilerSourceVM()); - info.append(" compilerSourceVM=" + options.getCompilerSourceVM() + "\n"); + info.append(" compilerSourceVM=").append(options.getCompilerSourceVM()).append("\n"); } // Build includes path PatternSet.NameEntry includes = javac.createInclude(); includes.setName(ctxt.getJavaPath()); - info.append(" include=" + ctxt.getJavaPath() + "\n"); + info.append(" include=").append(ctxt.getJavaPath()).append("\n"); BuildException be = null; diff --git a/java/org/apache/jasper/compiler/BeanRepository.java b/java/org/apache/jasper/compiler/BeanRepository.java index 3991773f6e..a1dbf7f895 100644 --- a/java/org/apache/jasper/compiler/BeanRepository.java +++ b/java/org/apache/jasper/compiler/BeanRepository.java @@ -56,7 +56,7 @@ public class BeanRepository { } public Class<?> getBeanType(String bean) throws JasperException { - Class<?> clazz = null; + Class<?> clazz; try { clazz = loader.loadClass(beanTypes.get(bean)); } catch (ClassNotFoundException ex) { diff --git a/java/org/apache/jasper/compiler/Compiler.java b/java/org/apache/jasper/compiler/Compiler.java index 31fa1ef968..e3ef2d3b69 100644 --- a/java/org/apache/jasper/compiler/Compiler.java +++ b/java/org/apache/jasper/compiler/Compiler.java @@ -424,8 +424,8 @@ public abstract class Compiler { if (jsw != null && (ctxt.getOptions().getModificationTestInterval() > 0)) { - if (jsw.getLastModificationTest() + (ctxt.getOptions().getModificationTestInterval() * 1000) > System - .currentTimeMillis()) { + if (jsw.getLastModificationTest() + + (ctxt.getOptions().getModificationTestInterval() * 1000L) > System.currentTimeMillis()) { return false; } jsw.setLastModificationTest(System.currentTimeMillis()); @@ -477,7 +477,7 @@ public abstract class Compiler { try { String key = include.getKey(); URL includeUrl; - long includeLastModified = 0; + long includeLastModified; if (key.startsWith("jar:jar:")) { // Assume we constructed this correctly int entryStart = key.lastIndexOf("!/"); diff --git a/java/org/apache/jasper/compiler/DefaultErrorHandler.java b/java/org/apache/jasper/compiler/DefaultErrorHandler.java index 400867f5ca..2b47513948 100644 --- a/java/org/apache/jasper/compiler/DefaultErrorHandler.java +++ b/java/org/apache/jasper/compiler/DefaultErrorHandler.java @@ -44,7 +44,7 @@ class DefaultErrorHandler implements ErrorHandler { return; } - Object[] args = null; + Object[] args; StringBuilder buf = new StringBuilder(); for (JavacErrorDetail detail : details) { diff --git a/java/org/apache/jasper/compiler/ELFunctionMapper.java b/java/org/apache/jasper/compiler/ELFunctionMapper.java index e6ec970198..795ad18e49 100644 --- a/java/org/apache/jasper/compiler/ELFunctionMapper.java +++ b/java/org/apache/jasper/compiler/ELFunctionMapper.java @@ -60,7 +60,7 @@ public class ELFunctionMapper { // Append the declarations to the root node String ds = map.ds.toString(); - if (ds.length() > 0) { + if (!ds.isEmpty()) { Node root = page.getRoot(); @SuppressWarnings("unused") Node unused = new Node.Declaration(map.ss.toString(), null, root); @@ -185,7 +185,7 @@ public class ELFunctionMapper { el.visit(fv); List<ELNode.Function> functions = fv.funcs; - if (functions.size() == 0) { + if (functions.isEmpty()) { return; } @@ -198,13 +198,13 @@ public class ELFunctionMapper { // Generate declaration for the map statically decName = getMapName(); - ss.append("private static org.apache.jasper.runtime.ProtectedFunctionMapper " + decName + ";\n"); + ss.append("private static org.apache.jasper.runtime.ProtectedFunctionMapper ").append(decName).append(";\n"); - ds.append(" " + decName + "= "); + ds.append(" ").append(decName).append("= "); ds.append("org.apache.jasper.runtime.ProtectedFunctionMapper"); // Special case if there is only one function in the map - String funcMethod = null; + String funcMethod; if (functions.size() == 1) { funcMethod = ".getMapForFunction"; } else { @@ -219,18 +219,19 @@ public class ELFunctionMapper { if (funcInfo == null) { // Added via Lambda or ImportHandler. EL will expect a // function mapper even if one isn't used so just pass null - ds.append(funcMethod + "(null, null, null, null);\n"); + ds.append(funcMethod).append("(null, null, null, null);\n"); } else { - ds.append(funcMethod + "(\"" + fnQName + "\", " + getCanonicalName(funcInfo.getFunctionClass()) + - ".class, " + '\"' + f.getMethodName() + "\", " + "new Class[] {"); - String params[] = f.getParameters(); + ds.append(funcMethod).append("(\"").append(fnQName).append("\", "); + ds.append(getCanonicalName(funcInfo.getFunctionClass())).append(".class, ").append('\"'); + ds.append(f.getMethodName()).append("\", ").append("new Class[] {"); + String[] params = f.getParameters(); for (int k = 0; k < params.length; k++) { if (k != 0) { ds.append(", "); } int iArray = params[k].indexOf('['); if (iArray < 0) { - ds.append(params[k] + ".class"); + ds.append(params[k]).append(".class"); } else { String baseType = params[k].substring(0, iArray); ds.append("java.lang.reflect.Array.newInstance("); @@ -247,7 +248,7 @@ public class ELFunctionMapper { if (aCount == 1) { ds.append("0).getClass()"); } else { - ds.append("new int[" + aCount + "]).getClass()"); + ds.append("new int[").append(aCount).append("]).getClass()"); } } } diff --git a/java/org/apache/jasper/compiler/ELNode.java b/java/org/apache/jasper/compiler/ELNode.java index d9f936dc7d..9012a8fec5 100644 --- a/java/org/apache/jasper/compiler/ELNode.java +++ b/java/org/apache/jasper/compiler/ELNode.java @@ -211,7 +211,7 @@ abstract class ELNode { } public boolean isEmpty() { - return list.size() == 0; + return list.isEmpty(); } /** diff --git a/java/org/apache/jasper/compiler/ELParser.java b/java/org/apache/jasper/compiler/ELParser.java index f072a7035e..fed10bf8db 100644 --- a/java/org/apache/jasper/compiler/ELParser.java +++ b/java/org/apache/jasper/compiler/ELParser.java @@ -47,7 +47,7 @@ public class ELParser { private final boolean isDeferredSyntaxAllowedAsLiteral; - private static final String reservedWords[] = { "and", "div", "empty", "eq", "false", "ge", "gt", "instanceof", + private static final String[] reservedWords = { "and", "div", "empty", "eq", "false", "ge", "gt", "instanceof", "le", "lt", "mod", "ne", "not", "null", "or", "true" }; public ELParser(String expression, boolean isDeferredSyntaxAllowedAsLiteral) { @@ -69,7 +69,7 @@ public class ELParser { ELParser parser = new ELParser(expression, isDeferredSyntaxAllowedAsLiteral); while (parser.hasNextChar()) { String text = parser.skipUntilEL(); - if (text.length() > 0) { + if (!text.isEmpty()) { parser.expr.add(new ELNode.Text(text)); } ELNode.Nodes elexpr = parser.parseEL(); @@ -234,7 +234,7 @@ public class ELParser { if (output == null) { output = new StringBuilder(len + 20); } - output.append(input.substring(lastAppend, i)); + output.append(input, lastAppend, i); lastAppend = i + 1; output.append('\\'); output.append(ch); @@ -244,7 +244,7 @@ public class ELParser { if (output == null) { return input; } else { - output.append(input.substring(lastAppend, len)); + output.append(input, lastAppend, len); return output.toString(); } } @@ -289,7 +289,7 @@ public class ELParser { if (output == null) { output = new StringBuilder(len + 20); } - output.append(input.substring(lastAppend, i)); + output.append(input, lastAppend, i); lastAppend = i + 1; output.append('\\'); output.append(ch); @@ -298,7 +298,7 @@ public class ELParser { if (output == null) { return input; } else { - output.append(input.substring(lastAppend, len)); + output.append(input, lastAppend, len); return output.toString(); } } @@ -471,7 +471,7 @@ public class ELParser { */ private static class Char extends Token { - private char ch; + private final char ch; Char(String whiteSpace, char ch) { super(whiteSpace); @@ -499,7 +499,7 @@ public class ELParser { */ private static class QuotedString extends Token { - private String value; + private final String value; QuotedString(String whiteSpace, String v) { super(whiteSpace); diff --git a/java/org/apache/jasper/compiler/ErrorDispatcher.java b/java/org/apache/jasper/compiler/ErrorDispatcher.java index 9de7018f02..436ae5354a 100644 --- a/java/org/apache/jasper/compiler/ErrorDispatcher.java +++ b/java/org/apache/jasper/compiler/ErrorDispatcher.java @@ -291,7 +291,7 @@ public class ErrorDispatcher { List<JavacErrorDetail> errors = new ArrayList<>(); StringBuilder errMsgBuf = null; - int lineNum = -1; + int lineNum; JavacErrorDetail javacError = null; BufferedReader reader = new BufferedReader(new StringReader(errMsg)); @@ -300,7 +300,7 @@ public class ErrorDispatcher { * Parse compilation errors. Each compilation error consists of a file path and error line number, followed by a * number of lines describing the error. */ - String line = null; + String line; while ((line = reader.readLine()) != null) { /* @@ -344,7 +344,7 @@ public class ErrorDispatcher { reader.close(); JavacErrorDetail[] errDetails = null; - if (errors.size() > 0) { + if (!errors.isEmpty()) { errDetails = errors.toArray(new JavacErrorDetail[0]); } diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java index b35daa9134..afaee44bbf 100644 --- a/java/org/apache/jasper/compiler/Generator.java +++ b/java/org/apache/jasper/compiler/Generator.java @@ -481,8 +481,8 @@ class Generator { out.pushIndent(); if (isPoolingEnabled) { - for (int i = 0; i < tagHandlerPoolNames.size(); i++) { - out.printin(tagHandlerPoolNames.get(i)); + for (String tagHandlerPoolName : tagHandlerPoolNames) { + out.printin(tagHandlerPoolName); out.print(" = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool("); if (ctxt.isTagFile()) { out.print("config"); @@ -517,8 +517,8 @@ class Generator { out.pushIndent(); if (isPoolingEnabled) { - for (int i = 0; i < tagHandlerPoolNames.size(); i++) { - out.printin(tagHandlerPoolNames.get(i)); + for (String tagHandlerPoolName : tagHandlerPoolNames) { + out.printin(tagHandlerPoolName); out.println(".release();"); } } @@ -612,7 +612,7 @@ class Generator { out.println("\");"); } // classes however, may be empty depending on the import declarations - if (classes.size() == 0) { + if (classes.isEmpty()) { out.printin("_jspx_imports_classes = null;"); out.println(); } else { @@ -639,8 +639,8 @@ class Generator { */ private void genPreambleClassVariableDeclarations() { if (isPoolingEnabled && !tagHandlerPoolNames.isEmpty()) { - for (int i = 0; i < tagHandlerPoolNames.size(); i++) { - out.printil("private org.apache.jasper.runtime.TagHandlerPool " + tagHandlerPoolNames.get(i) + ";"); + for (String tagHandlerPoolName : tagHandlerPoolNames) { + out.printil("private org.apache.jasper.runtime.TagHandlerPool " + tagHandlerPoolName + ";"); } out.println(); } @@ -1315,7 +1315,7 @@ class Generator { canonicalName = klass; } // Check that there is a 0 arg constructor - Constructor<?> constructor = bean.getConstructor(new Class[] {}); + Constructor<?> constructor = bean.getConstructor(); // Check the bean is public, not an interface, not abstract // and (for Java 9+) in an exported module int modifiers = bean.getModifiers(); @@ -1807,26 +1807,22 @@ class Generator { VariableInfo[] infos = n.getVariableInfos(); // The Validator always calls setTagData() which ensures infos is // non-null - if (infos.length > 0) { - for (VariableInfo info : infos) { - // A null variable name will trigger multiple compilation - // failures so assume non-null here - pageInfo.getVarInfoNames().add(info.getVarName()); - } + for (VariableInfo info : infos) { + // A null variable name will trigger multiple compilation + // failures so assume non-null here + pageInfo.getVarInfoNames().add(info.getVarName()); } TagVariableInfo[] tagInfos = n.getTagVariableInfos(); // The way Tomcat constructs the TagInfo, getTagVariableInfos() // will never return null. - if (tagInfos.length > 0) { - for (TagVariableInfo tagInfo : tagInfos) { - // tagInfo is always non-null - String name = tagInfo.getNameGiven(); - if (name == null) { - String nameFromAttribute = tagInfo.getNameFromAttribute(); - name = n.getAttributeValue(nameFromAttribute); - } - pageInfo.getVarInfoNames().add(name); + for (TagVariableInfo tagInfo : tagInfos) { + // tagInfo is always non-null + String name = tagInfo.getNameGiven(); + if (name == null) { + String nameFromAttribute = tagInfo.getNameFromAttribute(); + name = n.getAttributeValue(nameFromAttribute); } + pageInfo.getVarInfoNames().add(name); } @@ -1952,11 +1948,11 @@ class Generator { Map<String,String> map = new HashMap<>(); // Validator ensures this is non-null Node.JspAttribute[] attrs = n.getJspAttributes(); - for (int i = 0; i < attrs.length; i++) { - String value = null; - String nvp = null; - if (attrs[i].isNamedAttribute()) { - NamedAttribute attr = attrs[i].getNamedAttributeNode(); + for (Node.JspAttribute jspAttribute : attrs) { + String value; + String nvp; + if (jspAttribute.isNamedAttribute()) { + NamedAttribute attr = jspAttribute.getNamedAttributeNode(); Node.JspAttribute omitAttr = attr.getOmit(); String omit; if (omitAttr == null) { @@ -1969,18 +1965,18 @@ class Generator { continue; } } - value = generateNamedAttributeValue(attrs[i].getNamedAttributeNode()); + value = generateNamedAttributeValue(jspAttribute.getNamedAttributeNode()); if ("\"false\"".equals(omit)) { - nvp = " + \" " + attrs[i].getName() + "=\\\"\" + " + value + " + \"\\\"\""; + nvp = " + \" " + jspAttribute.getName() + "=\\\"\" + " + value + " + \"\\\"\""; } else { - nvp = " + (java.lang.Boolean.valueOf(" + omit + ")?\"\":\" " + attrs[i].getName() + - "=\\\"\" + " + value + " + \"\\\"\")"; + nvp = " + (java.lang.Boolean.valueOf(" + omit + ")?\"\":\" " + jspAttribute.getName() + + "=\\\"\" + " + value + " + \"\\\"\")"; } } else { - value = attributeValue(attrs[i], false, Object.class); - nvp = " + \" " + attrs[i].getName() + "=\\\"\" + " + value + " + \"\\\"\""; + value = attributeValue(jspAttribute, false, Object.class); + nvp = " + \" " + jspAttribute.getName() + "=\\\"\" + " + value + " + \"\\\"\""; } - map.put(attrs[i].getName(), nvp); + map.put(jspAttribute.getName(), nvp); } // Write begin tag, using XML-style 'name' attribute as the @@ -2085,12 +2081,7 @@ class Generator { int textIndex = 0; int textLength = text.length(); while (textIndex < textLength) { - int len = 0; - if (textLength - textIndex > 16384) { - len = 16384; - } else { - len = textLength - textIndex; - } + int len = Math.min(textLength - textIndex, 16384); String output = text.substring(textIndex, textIndex + len); String charArrayName = textMap.get(output); if (charArrayName == null) { @@ -2275,9 +2266,9 @@ class Generator { Node.JspAttribute[] attrs = tag.getJspAttributes(); // The TagPluginManager only creates AttributeGenerator nodes for // attributes that are present. - for (int i = 0; i < attrs.length; i++) { - if (attrs[i].getName().equals(n.getName())) { - out.print(evaluateAttribute(getTagHandlerInfo(tag), attrs[i], tag, null)); + for (Node.JspAttribute attr : attrs) { + if (attr.getName().equals(n.getName())) { + out.print(evaluateAttribute(getTagHandlerInfo(tag), attr, tag, null)); break; } } @@ -2894,8 +2885,8 @@ class Generator { String localName = attr.getLocalName(); - Method m = null; - Class<?>[] c = null; + Method m; + Class<?>[] c; if (attr.isDynamic()) { c = OBJECT_CLASS; } else { @@ -2964,10 +2955,8 @@ class Generator { sb.append("))"); // should the expression be evaluated before passing to // the setter? - boolean evaluate = false; - if (tai.canBeRequestTime()) { - evaluate = true; // JSP.2.3.2 - } + boolean evaluate = tai.canBeRequestTime(); + // JSP.2.3.2 if (attr.isDeferredInput()) { evaluate = false; // JSP.2.3.3 } @@ -3879,11 +3868,11 @@ class Generator { */ private static class TagHandlerInfo { - private Map<String,Method> methodMaps; + private final Map<String,Method> methodMaps; - private Map<String,Class<?>> propertyEditorMaps; + private final Map<String,Class<?>> propertyEditorMaps; - private Class<?> tagHandlerClass; + private final Class<?> tagHandlerClass; /** * Constructor. @@ -3946,11 +3935,11 @@ class Generator { * those for the body of the tag. Two fields are used here to keep this straight. For codes that do not * corresponds to any JSP lines, they should be null. */ - private Node node; + private final Node node; - private Node.Nodes body; + private final Node.Nodes body; - private java.io.CharArrayWriter charWriter; + private final java.io.CharArrayWriter charWriter; protected ServletWriter out; @@ -4029,9 +4018,9 @@ class Generator { private static class FragmentHelperClass { private static class Fragment { - private GenBuffer genBuffer; + private final GenBuffer genBuffer; - private int id; + private final int id; Fragment(int id, Node node) { this.id = id; @@ -4050,12 +4039,12 @@ class Generator { // True if the helper class should be generated. private boolean used = false; - private List<Fragment> fragments = new ArrayList<>(); + private final List<Fragment> fragments = new ArrayList<>(); - private String className; + private final String className; // Buffer for entire helper class - private GenBuffer classBuffer = new GenBuffer(); + private final GenBuffer classBuffer = new GenBuffer(); FragmentHelperClass(String className) { this.className = className; diff --git a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java index d8a2e7c23c..72fca195e7 100644 --- a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java +++ b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java @@ -165,7 +165,7 @@ class ImplicitTagLibraryInfo extends TagLibraryInfo { return null; } - TagInfo tagInfo = null; + TagInfo tagInfo; try { tagInfo = TagFileProcessor.parseTagFileDirectives(pc, shortName, path, null, this); } catch (JasperException je) { diff --git a/java/org/apache/jasper/compiler/JspConfig.java b/java/org/apache/jasper/compiler/JspConfig.java index b9012fe3e8..762c26dde5 100644 --- a/java/org/apache/jasper/compiler/JspConfig.java +++ b/java/org/apache/jasper/compiler/JspConfig.java @@ -89,7 +89,7 @@ public class JspConfig { Collection<String> urlPatterns = jspPropertyGroup.getUrlPatterns(); - if (urlPatterns.size() == 0) { + if (urlPatterns.isEmpty()) { continue; } @@ -183,10 +183,10 @@ public class JspConfig { // Both specifies a *.ext, keep the first one return prev; } - if (prevPath == null && currPath != null) { + if (prevPath == null) { return curr; } - if (prevPath != null && currPath == null) { + if (currPath == null) { return prev; } if (prevPath.length() >= currPath.length()) { diff --git a/java/org/apache/jasper/compiler/JspDocumentParser.java b/java/org/apache/jasper/compiler/JspDocumentParser.java index 32b2638337..c94ce1f18e 100644 --- a/java/org/apache/jasper/compiler/JspDocumentParser.java +++ b/java/org/apache/jasper/compiler/JspDocumentParser.java @@ -276,9 +276,7 @@ class JspDocumentParser extends DefaultHandler2 implements TagConstants { /* * Notice that due to a bug in the underlying SAX parser, the attributes must be enumerated in descending order. */ - boolean isTaglib = false; for (int i = attrs.getLength() - 1; i >= 0; i--) { - isTaglib = false; String attrQName = attrs.getQName(i); if (!attrQName.startsWith("xmlns")) { if (nonTaglibAttrs == null) { @@ -287,6 +285,7 @@ class JspDocumentParser extends DefaultHandler2 implements TagConstants { nonTaglibAttrs.addAttribute(attrs.getURI(i), attrs.getLocalName(i), attrs.getQName(i), attrs.getType(i), attrs.getValue(i)); } else { + boolean isTaglib; if (attrQName.startsWith("xmlns:jsp")) { isTaglib = true; } else { @@ -311,7 +310,7 @@ class JspDocumentParser extends DefaultHandler2 implements TagConstants { } } - Node node = null; + Node node; if (tagDependentPending && JSP_URI.equals(uri) && localName.equals(BODY_ACTION)) { tagDependentPending = false; @@ -427,7 +426,8 @@ class JspDocumentParser extends DefaultHandler2 implements TagConstants { int column = startMark.getColumnNumber(); CharArrayWriter ttext = new CharArrayWriter(); - int lastCh = 0, elType = 0; + int lastCh = 0; + int elType; for (int i = 0; i < charBuffer.length(); i++) { int ch = charBuffer.charAt(i); @@ -563,7 +563,7 @@ class JspDocumentParser extends DefaultHandler2 implements TagConstants { tagDependentNesting--; } - if (scriptlessBodyNode != null && current.equals(scriptlessBodyNode)) { + if (current.equals(scriptlessBodyNode)) { scriptlessBodyNode = null; } @@ -717,7 +717,7 @@ class JspDocumentParser extends DefaultHandler2 implements TagConstants { private Node parseStandardAction(String qName, String localName, Attributes nonTaglibAttrs, Attributes nonTaglibXmlnsAttrs, Attributes taglibAttrs, Mark start) throws SAXException { - Node node = null; + Node node; if (localName.equals(ROOT_ACTION)) { if (!(current instanceof Node.Root)) { @@ -856,7 +856,7 @@ class JspDocumentParser extends DefaultHandler2 implements TagConstants { String prefix = getPrefix(qName); - Node.CustomTag ret = null; + Node.CustomTag ret; if (tagInfo != null) { ret = new Node.CustomTag(qName, prefix, localName, uri, nonTaglibAttrs, nonTaglibXmlnsAttrs, taglibAttrs, start, parent, tagInfo, tagHandlerClass); @@ -998,7 +998,7 @@ class JspDocumentParser extends DefaultHandler2 implements TagConstants { private void checkPrefix(String uri, String qName) { String prefix = getPrefix(qName); - if (prefix.length() > 0) { + if (!prefix.isEmpty()) { pageInfo.addPrefix(prefix); if ("jsp".equals(prefix) && !JSP_URI.equals(uri)) { pageInfo.setIsJspPrefixHijacked(true); diff --git a/java/org/apache/jasper/compiler/JspReader.java b/java/org/apache/jasper/compiler/JspReader.java index 7681a9b446..95e20ad5c5 100644 --- a/java/org/apache/jasper/compiler/JspReader.java +++ b/java/org/apache/jasper/compiler/JspReader.java @@ -102,8 +102,8 @@ class JspReader { try { CharArrayWriter caw = new CharArrayWriter(); - char buf[] = new char[1024]; - for (int i = 0; (i = reader.read(buf)) != -1;) { + char[] buf = new char[1024]; + for (int i; (i = reader.read(buf)) != -1;) { caw.write(buf, 0, i); } caw.close(); @@ -319,7 +319,7 @@ class JspReader { current.update(i + cursor, line, col); } else { Mark mark = mark(); - int ch = 0; + int ch; int i = 0; do { ch = nextChar(); @@ -402,7 +402,7 @@ class JspReader { Mark ret = mark(); int limlen = limit.length(); char firstChar = limit.charAt(0); - Boolean result = null; + Boolean result; Mark restart = null; skip: while ((result = indexOf(firstChar, ret)) != null) { diff --git a/java/org/apache/jasper/compiler/JspRuntimeContext.java b/java/org/apache/jasper/compiler/JspRuntimeContext.java index 5a0760c1e8..023a494f0c 100644 --- a/java/org/apache/jasper/compiler/JspRuntimeContext.java +++ b/java/org/apache/jasper/compiler/JspRuntimeContext.java @@ -132,7 +132,7 @@ public final class JspRuntimeContext { } /* Init parameter is in seconds, locally we use milliseconds */ - jspIdleTimeout = options.getJspIdleTimeout() * 1000; + jspIdleTimeout = options.getJspIdleTimeout() * 1000L; } // ----------------------------------------------------- Instance Variables @@ -449,7 +449,7 @@ public final class JspRuntimeContext { // Need to decode the URL, primarily to convert %20 // sequences back to spaces String decoded = url.toURI().getPath(); - cpath.append(decoded + File.pathSeparator); + cpath.append(decoded).append(File.pathSeparator); } catch (URISyntaxException e) { log.warn(Localizer.getMessage("jsp.warning.classpathUrl"), e); } @@ -457,7 +457,7 @@ public final class JspRuntimeContext { } } - cpath.append(options.getScratchDir() + File.pathSeparator); + cpath.append(options.getScratchDir()).append(File.pathSeparator); String cp = (String) context.getAttribute(Constants.SERVLET_CLASSPATH); if (cp == null || cp.equals("")) { diff --git a/java/org/apache/jasper/compiler/JspUtil.java b/java/org/apache/jasper/compiler/JspUtil.java index 77103db6bc..5063c6d7fa 100644 --- a/java/org/apache/jasper/compiler/JspUtil.java +++ b/java/org/apache/jasper/compiler/JspUtil.java @@ -51,7 +51,7 @@ public class JspUtil { private static final String OPEN_EXPR = "<%="; private static final String CLOSE_EXPR = "%>"; - private static final String javaKeywords[] = + private static final String[] javaKeywords = { "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "package", @@ -160,7 +160,6 @@ public class JspUtil { attrPos = temp.indexOf(validAttribute.name); if (attrPos != -1) { temp.remove(attrPos); - valid = true; } else { valid = false; missingAttribute = validAttribute.name; @@ -247,7 +246,6 @@ public class JspUtil { */ public static Class<?> toClass(String type, ClassLoader loader) throws ClassNotFoundException { - Class<?> c = null; int i0 = type.indexOf('['); int dims = 0; if (i0 > 0) { @@ -260,6 +258,7 @@ public class JspUtil { type = type.substring(0, i0); } + Class<?> c = null; if ("boolean".equals(type)) { c = boolean.class; } else if ("char".equals(type)) { @@ -308,7 +307,7 @@ public class JspUtil { /* * Determine which context object to use. */ - String jspCtxt = null; + String jspCtxt; if (isTagFile) { jspCtxt = "this.getJspContext()"; } else { @@ -363,7 +362,7 @@ public class JspUtil { */ if (primitiveConverterMethod != null) { call.insert(0, "("); - call.append(")." + primitiveConverterMethod + "()"); + call.append(").").append(primitiveConverterMethod).append("()"); } return call.toString(); @@ -373,7 +372,7 @@ public class JspUtil { if (isNamedAttribute) { return "org.apache.jasper.runtime.JspRuntimeLibrary.coerceToBoolean(" + s + ")"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "false"; } else { return Boolean.valueOf(s).toString(); @@ -386,7 +385,7 @@ public class JspUtil { return "(java.lang.Boolean) org.apache.jasper.runtime.JspRuntimeLibrary.coerce(" + s + ", java.lang.Boolean.class)"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "java.lang.Boolean.FALSE"; } else { // Detect format error at translation time @@ -399,7 +398,7 @@ public class JspUtil { if (isNamedAttribute) { return "org.apache.jasper.runtime.JspRuntimeLibrary.coerceToByte(" + s + ")"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "(byte) 0"; } else { return "((byte)" + Byte.valueOf(s).toString() + ")"; @@ -412,7 +411,7 @@ public class JspUtil { return "(java.lang.Byte) org.apache.jasper.runtime.JspRuntimeLibrary.coerce(" + s + ", java.lang.Byte.class)"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "java.lang.Byte.valueOf((byte) 0)"; } else { // Detect format error at translation time @@ -425,7 +424,7 @@ public class JspUtil { if (isNamedAttribute) { return "org.apache.jasper.runtime.JspRuntimeLibrary.coerceToChar(" + s + ")"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "(char) 0"; } else { char ch = s.charAt(0); @@ -440,7 +439,7 @@ public class JspUtil { return "(java.lang.Character) org.apache.jasper.runtime.JspRuntimeLibrary.coerce(" + s + ", java.lang.Character.class)"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "java.lang.Character.valueOf((char) 0)"; } else { char ch = s.charAt(0); @@ -454,7 +453,7 @@ public class JspUtil { if (isNamedAttribute) { return "org.apache.jasper.runtime.JspRuntimeLibrary.coerceToDouble(" + s + ")"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "(double) 0"; } else { return Double.valueOf(s).toString(); @@ -466,7 +465,7 @@ public class JspUtil { if (isNamedAttribute) { return "(java.lang.Double) org.apache.jasper.runtime.JspRuntimeLibrary.coerce(" + s + ", Double.class)"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "java.lang.Double.valueOf(0)"; } else { // Detect format error at translation time @@ -479,7 +478,7 @@ public class JspUtil { if (isNamedAttribute) { return "org.apache.jasper.runtime.JspRuntimeLibrary.coerceToFloat(" + s + ")"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "(float) 0"; } else { return Float.valueOf(s).toString() + "f"; @@ -492,7 +491,7 @@ public class JspUtil { return "(java.lang.Float) org.apache.jasper.runtime.JspRuntimeLibrary.coerce(" + s + ", java.lang.Float.class)"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "java.lang.Float.valueOf(0)"; } else { // Detect format error at translation time @@ -505,7 +504,7 @@ public class JspUtil { if (isNamedAttribute) { return "org.apache.jasper.runtime.JspRuntimeLibrary.coerceToInt(" + s + ")"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "0"; } else { return Integer.valueOf(s).toString(); @@ -518,7 +517,7 @@ public class JspUtil { return "(java.lang.Integer) org.apache.jasper.runtime.JspRuntimeLibrary.coerce(" + s + ", java.lang.Integer.class)"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "java.lang.Integer.valueOf(0)"; } else { // Detect format error at translation time @@ -531,7 +530,7 @@ public class JspUtil { if (isNamedAttribute) { return "org.apache.jasper.runtime.JspRuntimeLibrary.coerceToShort(" + s + ")"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "(short) 0"; } else { return "((short) " + Short.valueOf(s).toString() + ")"; @@ -544,7 +543,7 @@ public class JspUtil { return "(java.lang.Short) org.apache.jasper.runtime.JspRuntimeLibrary.coerce(" + s + ", java.lang.Short.class)"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "java.lang.Short.valueOf((short) 0)"; } else { // Detect format error at translation time @@ -557,7 +556,7 @@ public class JspUtil { if (isNamedAttribute) { return "org.apache.jasper.runtime.JspRuntimeLibrary.coerceToLong(" + s + ")"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "(long) 0"; } else { return Long.valueOf(s).toString() + "l"; @@ -570,7 +569,7 @@ public class JspUtil { return "(java.lang.Long) org.apache.jasper.runtime.JspRuntimeLibrary.coerce(" + s + ", java.lang.Long.class)"; } else { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return "java.lang.Long.valueOf(0)"; } else { // Detect format error at translation time @@ -582,7 +581,7 @@ public class JspUtil { public static BufferedInputStream getInputStream(String fname, Jar jar, JspCompilationContext ctxt) throws IOException { - InputStream in = null; + InputStream in; if (jar != null) { String jarEntryName = fname.substring(1); @@ -679,11 +678,11 @@ public class JspUtil { * * @return Java package corresponding to the given path */ - public static final String makeJavaPackage(String path) { - String classNameComponents[] = path.split("/"); + public static String makeJavaPackage(String path) { + String[] classNameComponents = path.split("/"); StringBuilder legalClassNames = new StringBuilder(); for (String classNameComponent : classNameComponents) { - if (classNameComponent.length() > 0) { + if (!classNameComponent.isEmpty()) { if (legalClassNames.length() > 0) { legalClassNames.append('.'); } @@ -700,7 +699,7 @@ public class JspUtil { * * @return Legal Java identifier corresponding to the given identifier */ - public static final String makeJavaIdentifier(String identifier) { + public static String makeJavaIdentifier(String identifier) { return makeJavaIdentifier(identifier, true); } @@ -711,7 +710,7 @@ public class JspUtil { * * @return Legal Java identifier corresponding to the given identifier */ - public static final String makeJavaIdentifierForAttribute(String identifier) { + public static String makeJavaIdentifierForAttribute(String identifier) { return makeJavaIdentifier(identifier, false); } @@ -750,7 +749,7 @@ public class JspUtil { * * @return the replacement character as a string */ - public static final String mangleChar(char ch) { + public static String mangleChar(char ch) { char[] result = new char[5]; result[0] = '_'; result[1] = Character.forDigit((ch >> 12) & 0xf, 16); diff --git a/java/org/apache/jasper/compiler/Localizer.java b/java/org/apache/jasper/compiler/Localizer.java index d0645338df..fa0e8fc768 100644 --- a/java/org/apache/jasper/compiler/Localizer.java +++ b/java/org/apache/jasper/compiler/Localizer.java @@ -56,6 +56,7 @@ public class Localizer { errMsg = bundle.getString(errCode); } } catch (MissingResourceException e) { + // Ignore } return errMsg; } diff --git a/java/org/apache/jasper/compiler/Node.java b/java/org/apache/jasper/compiler/Node.java index 15f88986d7..a2c2296d16 100644 --- a/java/org/apache/jasper/compiler/Node.java +++ b/java/org/apache/jasper/compiler/Node.java @@ -243,7 +243,7 @@ abstract class Node implements TagConstants { int numChildNodes = nodes.size(); for (int i = 0; i < numChildNodes; i++) { NamedAttribute na = (NamedAttribute) nodes.getNode(i); - boolean found = false; + boolean found; int index = name.indexOf(':'); if (index != -1) { // qualified name @@ -1674,7 +1674,7 @@ abstract class Node implements TagConstants { int n = 0; Node p = parent; while (p != null) { - if ((p instanceof Node.CustomTag) && qName.equals(((Node.CustomTag) p).qName)) { + if ((p instanceof Node.CustomTag) && qName.equals(p.qName)) { n++; } p = p.parent; @@ -1719,9 +1719,9 @@ abstract class Node implements TagConstants { * only). */ public static class AttributeGenerator extends Node { - private String name; // name of the attribute + private final String name; // name of the attribute - private CustomTag tag; // The tag this attribute belongs to + private final CustomTag tag; // The tag this attribute belongs to AttributeGenerator(Mark start, String name, CustomTag tag) { super(start, null); @@ -1873,6 +1873,7 @@ abstract class Node implements TagConstants { try { getBody().visit(attributeVisitor); } catch (JasperException e) { + // Ignore } text = attributeVisitor.getAttrValue(); } @@ -2079,14 +2080,14 @@ abstract class Node implements TagConstants { * @return return true if there's TagAttributeInfo meaning we need to assign a ValueExpression */ public boolean isDeferredInput() { - return (this.tai != null) ? this.tai.isDeferredValue() : false; + return this.tai != null && this.tai.isDeferredValue(); } /** * @return return true if there's TagAttributeInfo meaning we need to assign a MethodExpression */ public boolean isDeferredMethodInput() { - return (this.tai != null) ? this.tai.isDeferredMethod() : false; + return this.tai != null && this.tai.isDeferredMethod(); } public String getExpectedTypeName() { @@ -2114,7 +2115,7 @@ abstract class Node implements TagConstants { m = m.trim(); m = m.substring(m.indexOf('(') + 1); m = m.substring(0, m.length() - 1); - if (m.trim().length() > 0) { + if (!m.trim().isEmpty()) { String[] p = m.split(","); for (int i = 0; i < p.length; i++) { p[i] = p[i].trim(); @@ -2250,6 +2251,7 @@ abstract class Node implements TagConstants { try { n = list.get(index); } catch (ArrayIndexOutOfBoundsException e) { + // Ignore } return n; } diff --git a/java/org/apache/jasper/compiler/PageDataImpl.java b/java/org/apache/jasper/compiler/PageDataImpl.java index 6ffc698154..5019e2afe6 100644 --- a/java/org/apache/jasper/compiler/PageDataImpl.java +++ b/java/org/apache/jasper/compiler/PageDataImpl.java @@ -124,10 +124,9 @@ class PageDataImpl extends PageData implements TagConstants { * Therefore, create a new prefix (one that is unique across the translation unit) for use by the * 'id' attribute, and bind it to the JSP namespace */ - jspIdPrefix += "jsp"; - while (pageInfo.containsPrefix(jspIdPrefix)) { + do { jspIdPrefix += "jsp"; - } + } while (pageInfo.containsPrefix(jspIdPrefix)); rootAttrs.addAttribute("", "", "xmlns:" + jspIdPrefix, "CDATA", JSP_URI); } @@ -449,7 +448,7 @@ class PageDataImpl extends PageData implements TagConstants { } else { appendText(text, false); } - buf.append("</" + n.getQName() + ">\n"); + buf.append("</").append(n.getQName()).append(">\n"); } else { buf.append("/>\n"); } @@ -504,7 +503,7 @@ class PageDataImpl extends PageData implements TagConstants { buf.append(" ").append(attrName).append("=\""); buf.append(JspUtil.getExprInXml(value)).append("\"\n"); } - if (n.getImports().size() > 0) { + if (!n.getImports().isEmpty()) { // Concatenate names of imported classes/packages boolean first = true; for (String i : n.getImports()) { diff --git a/java/org/apache/jasper/compiler/PageInfo.java b/java/org/apache/jasper/compiler/PageInfo.java index 2ecf8d6e7c..d409291774 100644 --- a/java/org/apache/jasper/compiler/PageInfo.java +++ b/java/org/apache/jasper/compiler/PageInfo.java @@ -353,10 +353,10 @@ class PageInfo { */ public String getURI(String prefix) { - String uri = null; + String uri; Deque<String> stack = xmlPrefixMapper.get(prefix); - if (stack == null || stack.size() == 0) { + if (stack == null || stack.isEmpty()) { uri = jspPrefixMapper.get(prefix); } else { uri = stack.getFirst(); diff --git a/java/org/apache/jasper/compiler/Parser.java b/java/org/apache/jasper/compiler/Parser.java index 5d9311d247..f308f0df25 100644 --- a/java/org/apache/jasper/compiler/Parser.java +++ b/java/org/apache/jasper/compiler/Parser.java @@ -141,8 +141,7 @@ class Parser implements TagConstants { parser.addInclude(root, pageInfo.getIncludeCoda()); } - Node.Nodes page = new Node.Nodes(root); - return page; + return new Node.Nodes(root); } /** @@ -249,15 +248,12 @@ class Parser implements TagConstants { char ch = (char) reader.peekChar(); if (Character.isLetter(ch) || ch == '_' || ch == ':') { StringBuilder buf = new StringBuilder(); - buf.append(ch); - reader.nextChar(); - ch = (char) reader.peekChar(); - while (Character.isLetter(ch) || Character.isDigit(ch) || ch == '.' || ch == '_' || ch == '-' || - ch == ':') { + do { buf.append(ch); reader.nextChar(); ch = (char) reader.peekChar(); - } + } while (Character.isLetter(ch) || Character.isDigit(ch) || + ch == '.' || ch == '_' || ch == '-' || ch == ':'); return buf.toString(); } return null; @@ -1207,7 +1203,7 @@ class Parser implements TagConstants { bc = tagFileInfo.getTagInfo().getBodyContent(); } - Node tagNode = null; + Node tagNode; if (tagInfo != null) { tagNode = new Node.CustomTag(tagName, prefix, shortTagName, uri, attrs, start, parent, tagInfo, tagHandlerClass); diff --git a/java/org/apache/jasper/compiler/ParserController.java b/java/org/apache/jasper/compiler/ParserController.java index d3f6b69bc8..6fefdbcfdc 100644 --- a/java/org/apache/jasper/compiler/ParserController.java +++ b/java/org/apache/jasper/compiler/ParserController.java @@ -180,7 +180,7 @@ class ParserController implements TagConstants { private Node.Nodes doParse(String inFileName, Node parent, Jar jar) throws FileNotFoundException, JasperException, IOException { - Node.Nodes parsedPage = null; + Node.Nodes parsedPage; isEncodingSpecifiedInProlog = false; isBomPresent = false; isDefaultPageEncoding = false; @@ -347,7 +347,7 @@ class ParserController implements TagConstants { * is TRUE and 'isXml' is FALSE). No check for XML prolog, since nothing prevents a page from outputting XML and * still using JSP syntax (in this case, the XML prolog is treated as template text). */ - JspReader jspReader = null; + JspReader jspReader; try { jspReader = new JspReader(ctxt, absFileName, sourceEnc, jar, err); } catch (FileNotFoundException ex) { @@ -469,12 +469,11 @@ class ParserController implements TagConstants { } // attrName = contentType - String contentType = value; String encoding = null; - if (contentType != null) { - int loc = contentType.indexOf(CHARSET); + if (value != null) { + int loc = value.indexOf(CHARSET); if (loc != -1) { - encoding = contentType.substring(loc + CHARSET.length()); + encoding = value.substring(loc + CHARSET.length()); } } @@ -511,7 +510,7 @@ class ParserController implements TagConstants { private boolean hasJspRoot(JspReader reader) { // <prefix>:root must be the first element - Mark start = null; + Mark start; while ((start = reader.skipUntil("<")) != null) { int c = reader.nextChar(); if (c != '!' && c != '?') { @@ -546,15 +545,12 @@ class ParserController implements TagConstants { index++; } if (index < root.length() && root.charAt(index) == '=') { - index++; - while (index < root.length() && Character.isWhitespace(root.charAt(index))) { + do { index++; - } + } while (index < root.length() && Character.isWhitespace(root.charAt(index))); if (index < root.length() && (root.charAt(index) == '"' || root.charAt(index) == '\'')) { index++; - if (root.regionMatches(index, JSP_URI, 0, JSP_URI.length())) { - return true; - } + return root.regionMatches(index, JSP_URI, 0, JSP_URI.length()); } } diff --git a/java/org/apache/jasper/compiler/ScriptingVariabler.java b/java/org/apache/jasper/compiler/ScriptingVariabler.java index cce11ecd05..23b2280e6e 100644 --- a/java/org/apache/jasper/compiler/ScriptingVariabler.java +++ b/java/org/apache/jasper/compiler/ScriptingVariabler.java @@ -86,7 +86,7 @@ class ScriptingVariabler { List<Object> vec = new ArrayList<>(); - Integer ownRange = null; + Integer ownRange; Node.CustomTag parent = n.getCustomTagParent(); if (scope == VariableInfo.AT_BEGIN || scope == VariableInfo.AT_END) { if (parent == null) { diff --git a/java/org/apache/jasper/compiler/SmapStratum.java b/java/org/apache/jasper/compiler/SmapStratum.java index f2c5da089a..8eab419f9e 100644 --- a/java/org/apache/jasper/compiler/SmapStratum.java +++ b/java/org/apache/jasper/compiler/SmapStratum.java @@ -101,14 +101,14 @@ public class SmapStratum { StringBuilder out = new StringBuilder(); out.append(inputStartLine); if (lineFileIDSet) { - out.append("#" + lineFileID); + out.append("#").append(lineFileID); } if (inputLineCount != 1) { - out.append("," + inputLineCount); + out.append(",").append(inputLineCount); } - out.append(":" + outputStartLine); + out.append(":").append(outputStartLine); if (outputLineIncrement != 1) { - out.append("," + outputLineIncrement); + out.append(",").append(outputLineIncrement); } out.append('\n'); return out.toString(); @@ -281,7 +281,7 @@ public class SmapStratum { // start the SMAP out.append("SMAP\n"); - out.append(outputFileName + '\n'); + out.append(outputFileName).append('\n'); out.append("JSP\n"); // print StratumSection @@ -292,16 +292,16 @@ public class SmapStratum { int bound = fileNameList.size(); for (int i = 0; i < bound; i++) { if (filePathList.get(i) != null) { - out.append("+ " + i + " " + fileNameList.get(i) + "\n"); + out.append("+ ").append(i).append(" ").append(fileNameList.get(i)).append("\n"); // Source paths must be relative, not absolute, so we // remove the leading "/", if one exists. String filePath = filePathList.get(i); if (filePath.startsWith("/")) { filePath = filePath.substring(1); } - out.append(filePath + "\n"); + out.append(filePath).append("\n"); } else { - out.append(i + " " + fileNameList.get(i) + "\n"); + out.append(i).append(" ").append(fileNameList.get(i)).append("\n"); } } diff --git a/java/org/apache/jasper/compiler/SmapUtil.java b/java/org/apache/jasper/compiler/SmapUtil.java index b30b99c025..f6bbdc327b 100644 --- a/java/org/apache/jasper/compiler/SmapUtil.java +++ b/java/org/apache/jasper/compiler/SmapUtil.java @@ -71,6 +71,7 @@ public class SmapUtil { try { pageNodes.visit(psVisitor); } catch (JasperException ex) { + // Ignore } HashMap<String,SmapStratum> map = psVisitor.getMap(); @@ -401,7 +402,7 @@ public class SmapUtil { int len = readU2(); writeU2(len); byte[] utf8 = readBytes(len); - String str = new String(utf8, "UTF-8"); + String str = new String(utf8, StandardCharsets.UTF_8); if (log.isTraceEnabled()) { log.trace(i + " read class attr -- '" + str + "'"); } @@ -432,6 +433,7 @@ public class SmapUtil { try { nodes.visit(new SmapGenVisitor(s, breakAtLF, innerClassMap)); } catch (JasperException ex) { + // Ignore } } @@ -609,7 +611,7 @@ public class SmapUtil { private void doSmapText(Node n) { String text = n.getText(); int index = 0; - int next = 0; + int next; int lineCount = 1; int skippedLines = 0; boolean slashStarSeen = false; @@ -635,7 +637,7 @@ public class SmapUtil { beginning = false; } } - } else if (line.length() == 0 || line.startsWith("//")) { + } else if (line.isEmpty() || line.startsWith("//")) { skippedLines++; } else { beginning = false; diff --git a/java/org/apache/jasper/compiler/TagFileProcessor.java b/java/org/apache/jasper/compiler/TagFileProcessor.java index 208f0c879d..0767521162 100644 --- a/java/org/apache/jasper/compiler/TagFileProcessor.java +++ b/java/org/apache/jasper/compiler/TagFileProcessor.java @@ -76,15 +76,15 @@ class TagFileProcessor { new JspUtil.ValidAttribute("scope"), new JspUtil.ValidAttribute("declare"), new JspUtil.ValidAttribute("description") }; - private ErrorDispatcher err; + private final ErrorDispatcher err; - private TagLibraryInfo tagLibInfo; + private final TagLibraryInfo tagLibInfo; - private String name = null; + private final String name; - private String path = null; + private final String path; - private String bodycontent = null; + private String bodyContent = null; private String description = null; @@ -98,9 +98,9 @@ class TagFileProcessor { private String example = null; - private List<TagAttributeInfo> attributeList; + private final List<TagAttributeInfo> attributeList; - private List<TagVariableInfo> variableList; + private final List<TagVariableInfo> variableList; private static final String ATTR_NAME = "the name attribute of the attribute directive"; @@ -112,9 +112,9 @@ class TagFileProcessor { private static final String TAG_DYNAMIC = "the dynamic-attributes attribute of the tag directive"; - private Map<String,NameEntry> nameTable = new HashMap<>(); + private final Map<String,NameEntry> nameTable = new HashMap<>(); - private Map<String,NameEntry> nameFromTable = new HashMap<>(); + private final Map<String,NameEntry> nameFromTable = new HashMap<>(); TagFileDirectiveVisitor(Compiler compiler, TagLibraryInfo tagLibInfo, String name, String path) { err = compiler.getErrorDispatcher(); @@ -130,11 +130,11 @@ class TagFileProcessor { JspUtil.checkAttributes("Tag directive", n, tagDirectiveAttrs, err); - bodycontent = checkConflict(n, bodycontent, "body-content"); - if (bodycontent != null && !bodycontent.equalsIgnoreCase(TagInfo.BODY_CONTENT_EMPTY) && - !bodycontent.equalsIgnoreCase(TagInfo.BODY_CONTENT_TAG_DEPENDENT) && - !bodycontent.equalsIgnoreCase(TagInfo.BODY_CONTENT_SCRIPTLESS)) { - err.jspError(n, "jsp.error.tagdirective.badbodycontent", bodycontent); + bodyContent = checkConflict(n, bodyContent, "body-content"); + if (bodyContent != null && !bodyContent.equalsIgnoreCase(TagInfo.BODY_CONTENT_EMPTY) && + !bodyContent.equalsIgnoreCase(TagInfo.BODY_CONTENT_TAG_DEPENDENT) && + !bodyContent.equalsIgnoreCase(TagInfo.BODY_CONTENT_SCRIPTLESS)) { + err.jspError(n, "jsp.error.tagdirective.badbodycontent", bodyContent); } dynamicAttrsMapName = checkConflict(n, dynamicAttrsMapName, "dynamic-attributes"); if (dynamicAttrsMapName != null) { @@ -321,8 +321,8 @@ class TagFileProcessor { // XXX Get it from tag file name } - if (bodycontent == null) { - bodycontent = TagInfo.BODY_CONTENT_SCRIPTLESS; + if (bodyContent == null) { + bodyContent = TagInfo.BODY_CONTENT_SCRIPTLESS; } String tagClassName = JspUtil.getTagHandlerClassName(path, tagLibInfo.getReliableURN(), err); @@ -330,16 +330,16 @@ class TagFileProcessor { TagVariableInfo[] tagVariableInfos = variableList.toArray(new TagVariableInfo[0]); TagAttributeInfo[] tagAttributeInfo = attributeList.toArray(new TagAttributeInfo[0]); - return new JasperTagInfo(name, tagClassName, bodycontent, description, tagLibInfo, null, tagAttributeInfo, + return new JasperTagInfo(name, tagClassName, bodyContent, description, tagLibInfo, null, tagAttributeInfo, displayName, smallIcon, largeIcon, tagVariableInfos, dynamicAttrsMapName); } static class NameEntry { - private String type; + private final String type; - private Node node; + private final Node node; - private TagAttributeInfo attr; + private final TagAttributeInfo attr; NameEntry(String type, Node node, TagAttributeInfo attr) { this.type = type; @@ -559,9 +559,9 @@ class TagFileProcessor { */ private class TagFileLoaderVisitor extends Node.Visitor { - private Compiler compiler; + private final Compiler compiler; - private PageInfo pageInfo; + private final PageInfo pageInfo; TagFileLoaderVisitor(Compiler compiler) { diff --git a/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java b/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java index 635fb8a3e3..96e2a0f2da 100644 --- a/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java +++ b/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java @@ -141,7 +141,7 @@ class TagLibraryInfoImpl extends TagLibraryInfo implements TagConstants { if (path == null) { // JAR not in the web application so add it directly URL jarUrl = jar.getJarFileURL(); - long lastMod = -1; + long lastMod; URLConnection urlConn = null; try { urlConn = jarUrl.openConnection(); @@ -393,5 +393,5 @@ class TagLibraryInfoImpl extends TagLibraryInfo implements TagConstants { return tlv.validate(getPrefixString(), uri, thePage); } - private TagLibraryValidator tagLibraryValidator; + private final TagLibraryValidator tagLibraryValidator; } diff --git a/java/org/apache/jasper/compiler/TldCache.java b/java/org/apache/jasper/compiler/TldCache.java index 47df974728..869173d598 100644 --- a/java/org/apache/jasper/compiler/TldCache.java +++ b/java/org/apache/jasper/compiler/TldCache.java @@ -63,7 +63,7 @@ public class TldCache { this.uriTldResourcePathMap.putAll(uriTldResourcePathMap); for (Entry<TldResourcePath,TaglibXml> entry : tldResourcePathTaglibXmlMap.entrySet()) { TldResourcePath tldResourcePath = entry.getKey(); - long lastModified[] = getLastModified(tldResourcePath); + long[] lastModified = getLastModified(tldResourcePath); TaglibXmlCacheEntry cacheEntry = new TaglibXmlCacheEntry(entry.getValue(), lastModified[0], lastModified[1]); this.tldResourcePathTaglibXmlMap.put(tldResourcePath, cacheEntry); @@ -91,7 +91,7 @@ public class TldCache { if (cacheEntry == null) { return null; } - long lastModified[] = getLastModified(tldResourcePath); + long[] lastModified = getLastModified(tldResourcePath); if (lastModified[0] != cacheEntry.getWebAppPathLastModified() || lastModified[1] != cacheEntry.getEntryLastModified()) { synchronized (cacheEntry) { diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java index 15c2280193..fab75f5861 100644 --- a/java/org/apache/jasper/compiler/Validator.java +++ b/java/org/apache/jasper/compiler/Validator.java @@ -715,10 +715,8 @@ class Validator { char c = value.charAt(i); if (c == '#' && (i + 1) < len && value.charAt(i + 1) == '{' && !prevCharIsEscape) { return true; - } else if (c == '\\') { - prevCharIsEscape = true; } else { - prevCharIsEscape = false; + prevCharIsEscape = c == '\\'; } i++; } @@ -1020,7 +1018,7 @@ class Validator { } for (int j = 0; tldAttrs != null && j < tldAttrs.length; j++) { if (attrs.getLocalName(i).equals(tldAttrs[j].getName()) && (attrs.getURI(i) == null || - attrs.getURI(i).length() == 0 || attrs.getURI(i).equals(n.getURI()))) { + attrs.getURI(i).isEmpty() || attrs.getURI(i).equals(n.getURI()))) { TagAttributeInfo tldAttr = tldAttrs[j]; if (tldAttr.canBeRequestTime() || tldAttr.isDeferredMethod() || tldAttr.isDeferredValue()) { // JSP @@ -1149,7 +1147,7 @@ class Validator { */ String attrPrefix = na.getPrefix(); if (na.getLocalName().equals(tldAttr.getName()) && - (attrPrefix == null || attrPrefix.length() == 0 || attrPrefix.equals(n.getPrefix()))) { + (attrPrefix == null || attrPrefix.isEmpty() || attrPrefix.equals(n.getPrefix()))) { jspAttrs[start + i] = new Node.JspAttribute(na, tldAttr, false); NamedAttributeVisitor nav = null; if (na.getBody() != null) { @@ -1379,7 +1377,7 @@ class Validator { class FVVisitor extends ELNode.Visitor { - private Node n; + private final Node n; FVVisitor(Node n) { this.n = n; @@ -1498,7 +1496,7 @@ class Validator { class ValidateFunctionMapper extends FunctionMapper { - private Map<String,Method> fnmap = new HashMap<>(); + private final Map<String,Method> fnmap = new HashMap<>(); @Override public void mapFunction(String prefix, String localName, Method method) { @@ -1512,7 +1510,7 @@ class Validator { } class MapperELVisitor extends ELNode.Visitor { - private ValidateFunctionMapper fmapper; + private final ValidateFunctionMapper fmapper; MapperELVisitor(ValidateFunctionMapper fmapper) { this.fmapper = fmapper; @@ -1535,9 +1533,9 @@ class Validator { err.jspError("jsp.error.function.classnotfound", n.getFunctionInfo().getFunctionClass(), n.getPrefix() + ':' + n.getName(), e.getMessage()); } - String paramTypes[] = n.getParameters(); + String[] paramTypes = n.getParameters(); int size = paramTypes.length; - Class<?> params[] = new Class[size]; + Class<?>[] params = new Class[size]; int i = 0; try { for (i = 0; i < size; i++) { diff --git a/java/org/apache/jasper/el/JasperELResolver.java b/java/org/apache/jasper/el/JasperELResolver.java index e9a929163c..3f41faa0ff 100644 --- a/java/org/apache/jasper/el/JasperELResolver.java +++ b/java/org/apache/jasper/el/JasperELResolver.java @@ -47,7 +47,7 @@ public class JasperELResolver extends CompositeELResolver { private static final int STANDARD_RESOLVERS_COUNT = 9; - private AtomicInteger resolversSize = new AtomicInteger(0); + private final AtomicInteger resolversSize = new AtomicInteger(0); private volatile ELResolver[] resolvers; private final int appResolversSize; @@ -96,7 +96,7 @@ public class JasperELResolver extends CompositeELResolver { context.setPropertyResolved(false); int start; - Object result = null; + Object result; if (base == null) { // call implicit and app resolvers @@ -132,13 +132,13 @@ public class JasperELResolver extends CompositeELResolver { @Override public Object invoke(ELContext context, Object base, Object method, Class<?>[] paramTypes, Object[] params) { String targetMethod = coerceToString(method); - if (targetMethod.length() == 0) { + if (targetMethod.isEmpty()) { throw new ELException(new NoSuchMethodException()); } context.setPropertyResolved(false); - Object result = null; + Object result; // skip implicit and call app resolvers, stream resolver and static // resolver @@ -233,11 +233,11 @@ public class JasperELResolver extends CompositeELResolver { Class<?> beanClass = base.getClass(); String prop = property.toString(); Method readMethod = getReadMethod(beanClass, prop); - return readMethod == null || !(getWriteMethod(beanClass, prop, readMethod.getReturnType()) != null); + return readMethod == null || getWriteMethod(beanClass, prop, readMethod.getReturnType()) == null; } private static Method getReadMethod(Class<?> beanClass, String prop) { - Method methods[] = beanClass.getMethods(); + Method[] methods = beanClass.getMethods(); String isGetter = "is" + capitalize(prop); String getter = "get" + capitalize(prop); for (Method method : methods) { @@ -254,7 +254,7 @@ public class JasperELResolver extends CompositeELResolver { private static Method getWriteMethod(Class<?> beanClass, String prop, Class<?> valueClass) { String setter = "set" + capitalize(prop); - Method methods[] = beanClass.getMethods(); + Method[] methods = beanClass.getMethods(); for (Method method : methods) { if (method.getParameterCount() == 1 && setter.equals(method.getName()) && (valueClass == null || valueClass.isAssignableFrom(method.getParameterTypes()[0]))) { @@ -265,10 +265,10 @@ public class JasperELResolver extends CompositeELResolver { } private static String capitalize(String name) { - if (name == null || name.length() == 0) { + if (name == null || name.isEmpty()) { return name; } - char chars[] = name.toCharArray(); + char[] chars = name.toCharArray(); chars[0] = Character.toUpperCase(chars[0]); return new String(chars); } diff --git a/java/org/apache/jasper/runtime/BodyContentImpl.java b/java/org/apache/jasper/runtime/BodyContentImpl.java index 620005c51e..c7a7aa5f19 100644 --- a/java/org/apache/jasper/runtime/BodyContentImpl.java +++ b/java/org/apache/jasper/runtime/BodyContentImpl.java @@ -291,7 +291,7 @@ public class BodyContentImpl extends BodyContent { } @Override - public void println(char x[]) throws IOException { + public void println(char[] x) throws IOException { print(x); println(); } diff --git a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java index deffeaf10e..019ca9ab7e 100644 --- a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java +++ b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java @@ -21,7 +21,6 @@ import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.List; -import javax.el.CompositeELResolver; import javax.el.ELContext; import javax.el.ELContextEvent; import javax.el.ELContextListener; @@ -110,8 +109,7 @@ public class JspApplicationContextImpl implements JspApplicationContext { private ELResolver createELResolver() { this.instantiated = true; if (this.resolver == null) { - CompositeELResolver r = new JasperELResolver(this.resolvers, expressionFactory.getStreamELResolver()); - this.resolver = r; + this.resolver = new JasperELResolver(this.resolvers, expressionFactory.getStreamELResolver()); } return this.resolver; } diff --git a/java/org/apache/jasper/runtime/JspRuntimeLibrary.java b/java/org/apache/jasper/runtime/JspRuntimeLibrary.java index 6898e0b93c..35261c5653 100644 --- a/java/org/apache/jasper/runtime/JspRuntimeLibrary.java +++ b/java/org/apache/jasper/runtime/JspRuntimeLibrary.java @@ -94,7 +94,7 @@ public class JspRuntimeLibrary { } public static boolean coerceToBoolean(String s) { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return false; } else { return Boolean.parseBoolean(s); @@ -102,7 +102,7 @@ public class JspRuntimeLibrary { } public static byte coerceToByte(String s) { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return (byte) 0; } else { return Byte.parseByte(s); @@ -110,7 +110,7 @@ public class JspRuntimeLibrary { } public static char coerceToChar(String s) { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return (char) 0; } else { return s.charAt(0); @@ -118,7 +118,7 @@ public class JspRuntimeLibrary { } public static double coerceToDouble(String s) { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return 0; } else { return Double.parseDouble(s); @@ -126,7 +126,7 @@ public class JspRuntimeLibrary { } public static float coerceToFloat(String s) { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return 0; } else { return Float.parseFloat(s); @@ -134,7 +134,7 @@ public class JspRuntimeLibrary { } public static int coerceToInt(String s) { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return 0; } else { return Integer.parseInt(s); @@ -142,7 +142,7 @@ public class JspRuntimeLibrary { } public static short coerceToShort(String s) { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return (short) 0; } else { return Short.parseShort(s); @@ -150,7 +150,7 @@ public class JspRuntimeLibrary { } public static long coerceToLong(String s) { - if (s == null || s.length() == 0) { + if (s == null || s.isEmpty()) { return 0; } else { return Long.parseLong(s); @@ -159,7 +159,7 @@ public class JspRuntimeLibrary { public static Object coerce(String s, Class<?> target) { - boolean isNullOrEmpty = (s == null || s.length() == 0); + boolean isNullOrEmpty = (s == null || s.isEmpty()); if (target == Boolean.class) { if (isNullOrEmpty) { @@ -231,43 +231,43 @@ public class JspRuntimeLibrary { } else if (t.equals(Boolean.class) || t.equals(Boolean.TYPE)) { return Boolean.valueOf(s); } else if (t.equals(Byte.class) || t.equals(Byte.TYPE)) { - if (s.length() == 0) { + if (s.isEmpty()) { return Byte.valueOf((byte) 0); } else { return Byte.valueOf(s); } } else if (t.equals(Character.class) || t.equals(Character.TYPE)) { - if (s.length() == 0) { + if (s.isEmpty()) { return Character.valueOf((char) 0); } else { return Character.valueOf(s.charAt(0)); } } else if (t.equals(Double.class) || t.equals(Double.TYPE)) { - if (s.length() == 0) { + if (s.isEmpty()) { return Double.valueOf(0); } else { return Double.valueOf(s); } } else if (t.equals(Integer.class) || t.equals(Integer.TYPE)) { - if (s.length() == 0) { + if (s.isEmpty()) { return Integer.valueOf(0); } else { return Integer.valueOf(s); } } else if (t.equals(Float.class) || t.equals(Float.TYPE)) { - if (s.length() == 0) { + if (s.isEmpty()) { return Float.valueOf(0); } else { return Float.valueOf(s); } } else if (t.equals(Long.class) || t.equals(Long.TYPE)) { - if (s.length() == 0) { + if (s.isEmpty()) { return Long.valueOf(0); } else { return Long.valueOf(s); } } else if (t.equals(Short.class) || t.equals(Short.TYPE)) { - if (s.length() == 0) { + if (s.isEmpty()) { return Short.valueOf((short) 0); } else { return Short.valueOf(s); @@ -309,7 +309,7 @@ public class JspRuntimeLibrary { } else { java.beans.BeanInfo info = java.beans.Introspector.getBeanInfo(bean.getClass()); if (info != null) { - java.beans.PropertyDescriptor pd[] = info.getPropertyDescriptors(); + java.beans.PropertyDescriptor[] pd = info.getPropertyDescriptors(); for (java.beans.PropertyDescriptor propertyDescriptor : pd) { if (propertyDescriptor.getName().equals(prop)) { method = propertyDescriptor.getWriteMethod(); @@ -337,12 +337,12 @@ public class JspRuntimeLibrary { createTypedArray(prop, bean, method, values, t, propertyEditorClass); } } else { - if (value == null || (param != null && value.equals(""))) { + if (value == null || (param != null && value.isEmpty())) { return; } Object oval = convert(prop, value, type, propertyEditorClass); if (oval != null) { - method.invoke(bean, new Object[] { oval }); + method.invoke(bean, oval); } } } @@ -568,7 +568,7 @@ public class JspRuntimeLibrary { if (o == null) { throw new JasperException(Localizer.getMessage("jsp.error.beans.nullbean")); } - Object value = null; + Object value; try { Method method = getReadMethod(o.getClass(), prop); value = method.invoke(o, (Object[]) null); @@ -585,8 +585,8 @@ public class JspRuntimeLibrary { ProtectedFunctionMapper functionMapper) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { PageContextImpl.proprietaryEvaluate(expression, - method.getParameterTypes()[0], pageContext, functionMapper) }); + method.invoke(bean, PageContextImpl.proprietaryEvaluate(expression, + method.getParameterTypes()[0], pageContext, functionMapper)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -597,7 +597,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, Object value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { value }); + method.invoke(bean, value); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -608,7 +608,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, int value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { Integer.valueOf(value) }); + method.invoke(bean, Integer.valueOf(value)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -619,7 +619,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, short value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { Short.valueOf(value) }); + method.invoke(bean, Short.valueOf(value)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -630,7 +630,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, long value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { Long.valueOf(value) }); + method.invoke(bean, Long.valueOf(value)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -641,7 +641,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, double value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { Double.valueOf(value) }); + method.invoke(bean, Double.valueOf(value)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -652,7 +652,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, float value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { Float.valueOf(value) }); + method.invoke(bean, Float.valueOf(value)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -663,7 +663,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, char value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { Character.valueOf(value) }); + method.invoke(bean, Character.valueOf(value)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -674,7 +674,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, byte value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { Byte.valueOf(value) }); + method.invoke(bean, Byte.valueOf(value)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -685,7 +685,7 @@ public class JspRuntimeLibrary { public static void handleSetProperty(Object bean, String prop, boolean value) throws JasperException { try { Method method = getWriteMethod(bean.getClass(), prop); - method.invoke(bean, new Object[] { Boolean.valueOf(value) }); + method.invoke(bean, Boolean.valueOf(value)); } catch (Exception ex) { Throwable thr = ExceptionUtils.unwrapInvocationTargetException(ex); ExceptionUtils.handleThrowable(thr); @@ -701,10 +701,10 @@ public class JspRuntimeLibrary { * @return the capitalized string */ public static String capitalize(String name) { - if (name == null || name.length() == 0) { + if (name == null || name.isEmpty()) { return name; } - char chars[] = name.toCharArray(); + char[] chars = name.toCharArray(); chars[0] = Character.toUpperCase(chars[0]); return new String(chars); } @@ -714,7 +714,7 @@ public class JspRuntimeLibrary { Class<?> type = null; if (GRAAL) { String setter = "set" + capitalize(prop); - Method methods[] = beanClass.getMethods(); + Method[] methods = beanClass.getMethods(); for (Method method : methods) { if (setter.equals(method.getName())) { return method; @@ -723,7 +723,7 @@ public class JspRuntimeLibrary { } else { try { java.beans.BeanInfo info = java.beans.Introspector.getBeanInfo(beanClass); - java.beans.PropertyDescriptor pd[] = info.getPropertyDescriptors(); + java.beans.PropertyDescriptor[] pd = info.getPropertyDescriptors(); for (java.beans.PropertyDescriptor propertyDescriptor : pd) { if (propertyDescriptor.getName().equals(prop)) { result = propertyDescriptor.getWriteMethod(); @@ -752,7 +752,7 @@ public class JspRuntimeLibrary { Class<?> type = null; if (GRAAL) { String setter = "get" + capitalize(prop); - Method methods[] = beanClass.getMethods(); + Method[] methods = beanClass.getMethods(); for (Method method : methods) { if (setter.equals(method.getName())) { return method; @@ -761,7 +761,7 @@ public class JspRuntimeLibrary { } else { try { java.beans.BeanInfo info = java.beans.Introspector.getBeanInfo(beanClass); - java.beans.PropertyDescriptor pd[] = info.getPropertyDescriptors(); + java.beans.PropertyDescriptor[] pd = info.getPropertyDescriptors(); for (java.beans.PropertyDescriptor propertyDescriptor : pd) { if (propertyDescriptor.getName().equals(prop)) { result = propertyDescriptor.getReadMethod(); @@ -794,7 +794,7 @@ public class JspRuntimeLibrary { pe.setAsText(attrValue); return pe.getValue(); } catch (Exception ex) { - if (attrValue.length() == 0) { + if (attrValue.isEmpty()) { return null; } else { throw new JasperException(Localizer.getMessage("jsp.error.beans.property.conversion", attrValue, @@ -810,14 +810,14 @@ public class JspRuntimeLibrary { if (propEditor != null) { propEditor.setAsText(attrValue); return propEditor.getValue(); - } else if (attrValue.length() == 0) { + } else if (attrValue.isEmpty()) { return null; } else { throw new IllegalArgumentException( Localizer.getMessage("jsp.error.beans.propertyeditor.notregistered")); } } catch (IllegalArgumentException ex) { - if (attrValue.length() == 0) { + if (attrValue.isEmpty()) { return null; } else { throw new JasperException(Localizer.getMessage("jsp.error.beans.property.conversion", attrValue, diff --git a/java/org/apache/jasper/runtime/JspWriterImpl.java b/java/org/apache/jasper/runtime/JspWriterImpl.java index ca53a18b7f..9b34ac7023 100644 --- a/java/org/apache/jasper/runtime/JspWriterImpl.java +++ b/java/org/apache/jasper/runtime/JspWriterImpl.java @@ -37,7 +37,7 @@ public class JspWriterImpl extends JspWriter { private Writer out; private ServletResponse response; - private char cb[]; + private char[] cb; private int nextChar; private boolean flushed = false; private boolean closed = false; @@ -206,14 +206,11 @@ public class JspWriterImpl extends JspWriter { * to print a stack trace. */ private static int min(int a, int b) { - if (a < b) { - return a; - } - return b; + return Math.min(a, b); } @Override - public void write(char cbuf[], int off, int len) throws IOException { + public void write(char[] cbuf, int off, int len) throws IOException { ensureOpen(); if (bufferSize == 0) { @@ -261,7 +258,7 @@ public class JspWriterImpl extends JspWriter { } @Override - public void write(char buf[]) throws IOException { + public void write(char[] buf) throws IOException { write(buf, 0, buf.length); } @@ -329,7 +326,7 @@ public class JspWriterImpl extends JspWriter { } @Override - public void print(char s[]) throws IOException { + public void print(char[] s) throws IOException { write(s); } @@ -390,7 +387,7 @@ public class JspWriterImpl extends JspWriter { } @Override - public void println(char x[]) throws IOException { + public void println(char[] x) throws IOException { print(x); println(); } diff --git a/java/org/apache/jasper/runtime/PageContextImpl.java b/java/org/apache/jasper/runtime/PageContextImpl.java index 8724ef4641..1c266d0ccf 100644 --- a/java/org/apache/jasper/runtime/PageContextImpl.java +++ b/java/org/apache/jasper/runtime/PageContextImpl.java @@ -162,8 +162,7 @@ public class PageContextImpl extends PageContext { try { ((JspWriterImpl) out).flushBuffer(); } catch (IOException ex) { - IllegalStateException ise = new IllegalStateException(Localizer.getMessage("jsp.error.flush"), ex); - throw ise; + throw new IllegalStateException(Localizer.getMessage("jsp.error.flush"), ex); } finally { servlet = null; config = null; @@ -575,7 +574,7 @@ public class PageContextImpl extends PageContext { throw new NullPointerException(Localizer.getMessage("jsp.error.page.nullThrowable")); } - if (errorPageURL != null && !errorPageURL.equals("")) { + if (errorPageURL != null && !errorPageURL.isEmpty()) { /* * Set request attributes. Do not set the javax.servlet.error.exception attribute here (instead, set in the @@ -619,20 +618,18 @@ public class PageContextImpl extends PageContext { if (t instanceof ServletException) { throw (ServletException) t; } - if (t instanceof RuntimeException) { - throw (RuntimeException) t; - } - Throwable rootCause = null; if (t instanceof JspException || t instanceof ELException || t instanceof javax.servlet.jsp.el.ELException) { rootCause = t.getCause(); } - if (rootCause != null) { throw new ServletException(t.getClass().getName() + ": " + t.getMessage(), rootCause); } - + // ELException is a runtime exception + if (t instanceof RuntimeException) { + throw (RuntimeException) t; + } throw new ServletException(t); } } diff --git a/java/org/apache/jasper/runtime/ServletResponseWrapperInclude.java b/java/org/apache/jasper/runtime/ServletResponseWrapperInclude.java index 4708127dcc..046c90c45a 100644 --- a/java/org/apache/jasper/runtime/ServletResponseWrapperInclude.java +++ b/java/org/apache/jasper/runtime/ServletResponseWrapperInclude.java @@ -68,6 +68,7 @@ public class ServletResponseWrapperInclude extends HttpServletResponseWrapper { try { jspWriter.clearBuffer(); } catch (IOException ioe) { + // Ignore } } } diff --git a/java/org/apache/jasper/runtime/TagHandlerPool.java b/java/org/apache/jasper/runtime/TagHandlerPool.java index f8a5e334ae..5b58a27de0 100644 --- a/java/org/apache/jasper/runtime/TagHandlerPool.java +++ b/java/org/apache/jasper/runtime/TagHandlerPool.java @@ -51,7 +51,6 @@ public class TagHandlerPool { result = (TagHandlerPool) c.getConstructor().newInstance(); } catch (Exception e) { LogFactory.getLog(TagHandlerPool.class).info(Localizer.getMessage("jsp.error.tagHandlerPool"), e); - result = null; } } if (result == null) { @@ -69,7 +68,7 @@ public class TagHandlerPool { try { maxSize = Integer.parseInt(maxSizeS); } catch (Exception ex) { - maxSize = -1; + // Ignore } } if (maxSize < 0) { diff --git a/java/org/apache/jasper/servlet/JasperLoader.java b/java/org/apache/jasper/servlet/JasperLoader.java index ec7e84d621..41660bdaf1 100644 --- a/java/org/apache/jasper/servlet/JasperLoader.java +++ b/java/org/apache/jasper/servlet/JasperLoader.java @@ -78,7 +78,7 @@ public class JasperLoader extends URLClassLoader { @Override public synchronized Class<?> loadClass(final String name, boolean resolve) throws ClassNotFoundException { - Class<?> clazz = null; + Class<?> clazz; // (0) Check our previously loaded class cache clazz = findLoadedClass(name); diff --git a/java/org/apache/jasper/servlet/JspCServletContext.java b/java/org/apache/jasper/servlet/JspCServletContext.java index c1a7b1d0c9..b92f40e981 100644 --- a/java/org/apache/jasper/servlet/JspCServletContext.java +++ b/java/org/apache/jasper/servlet/JspCServletContext.java @@ -104,13 +104,13 @@ public class JspCServletContext implements ServletContext { /** * Merged web.xml for the application. */ - private WebXml webXml; + private final WebXml webXml; private List<URL> resourceJARs; - private JspConfigDescriptor jspConfigDescriptor; + private final JspConfigDescriptor jspConfigDescriptor; /** @@ -325,7 +325,7 @@ public class JspCServletContext implements ServletContext { // Strip leading '/' path = path.substring(1); - URL url = null; + URL url; try { URI uri = new URI(myResourceBaseURL.toExternalForm() + path); url = uri.toURL(); @@ -380,7 +380,7 @@ public class JspCServletContext implements ServletContext { if (basePath != null) { File theBaseDir = new File(basePath); if (theBaseDir.isDirectory()) { - String theFiles[] = theBaseDir.list(); + String[] theFiles = theBaseDir.list(); if (theFiles != null) { for (String theFile : theFiles) { File testFile = new File(basePath + File.separator + theFile); diff --git a/java/org/apache/jasper/servlet/JspServlet.java b/java/org/apache/jasper/servlet/JspServlet.java index 8f2b15f73b..1b9d7c8688 100644 --- a/java/org/apache/jasper/servlet/JspServlet.java +++ b/java/org/apache/jasper/servlet/JspServlet.java @@ -96,10 +96,10 @@ public class JspServlet extends HttpServlet implements PeriodicEventListener { Object[] args = { config, context }; options = (Options) ctor.newInstance(args); } catch (Throwable e) { - e = ExceptionUtils.unwrapInvocationTargetException(e); - ExceptionUtils.handleThrowable(e); + Throwable throwable = ExceptionUtils.unwrapInvocationTargetException(e); + ExceptionUtils.handleThrowable(throwable); // Need to localize this. - log.warn(Localizer.getMessage("jsp.warning.engineOptionsClass", engineOptionsName), e); + log.warn(Localizer.getMessage("jsp.warning.engineOptionsClass", engineOptionsName), throwable); // Use the default Options implementation options = new EmbeddedServletOptions(config, context); } diff --git a/java/org/apache/jasper/servlet/JspServletWrapper.java b/java/org/apache/jasper/servlet/JspServletWrapper.java index db5319f2da..076426f2c9 100644 --- a/java/org/apache/jasper/servlet/JspServletWrapper.java +++ b/java/org/apache/jasper/servlet/JspServletWrapper.java @@ -112,9 +112,9 @@ public class JspServletWrapper { this.config = config; this.options = options; this.jspUri = jspUri; - unloadByCount = options.getMaxLoadedJsps() > 0 ? true : false; - unloadByIdle = options.getJspIdleTimeout() > 0 ? true : false; - unloadAllowed = unloadByCount || unloadByIdle ? true : false; + unloadByCount = options.getMaxLoadedJsps() > 0; + unloadByIdle = options.getJspIdleTimeout() > 0; + unloadAllowed = unloadByCount || unloadByIdle; ctxt = new JspCompilationContext(jspUri, options, config.getServletContext(), this, rctxt); } @@ -129,9 +129,9 @@ public class JspServletWrapper { this.options = options; this.jspUri = tagFilePath; this.tripCount = 0; - unloadByCount = options.getMaxLoadedJsps() > 0 ? true : false; - unloadByIdle = options.getJspIdleTimeout() > 0 ? true : false; - unloadAllowed = unloadByCount || unloadByIdle ? true : false; + unloadByCount = options.getMaxLoadedJsps() > 0; + unloadByIdle = options.getJspIdleTimeout() > 0; + unloadAllowed = unloadByCount || unloadByIdle; ctxt = new JspCompilationContext(jspUri, tagInfo, options, servletContext, this, rctxt, tagJar); } diff --git a/java/org/apache/jasper/servlet/TldScanner.java b/java/org/apache/jasper/servlet/TldScanner.java index 2379955ad8..8904de28ce 100644 --- a/java/org/apache/jasper/servlet/TldScanner.java +++ b/java/org/apache/jasper/servlet/TldScanner.java @@ -192,7 +192,6 @@ public class TldScanner { } } else { log.warn(Localizer.getMessage(MSG + ".webxmlFailPathDoesNotExist", resourcePath, taglibURI)); - continue; } } } diff --git a/java/org/apache/jasper/tagplugins/jstl/Util.java b/java/org/apache/jasper/tagplugins/jstl/Util.java index 33a7473a6f..8935c6ab32 100644 --- a/java/org/apache/jasper/tagplugins/jstl/Util.java +++ b/java/org/apache/jasper/tagplugins/jstl/Util.java @@ -373,7 +373,7 @@ public class Util { if (isWriterUsed) { return sw.toString(); } else if (isStreamUsed) { - if (this.charEncoding != null && !this.charEncoding.equals("")) { + if (this.charEncoding != null && !this.charEncoding.isEmpty()) { return bos.toString(charEncoding); } else { return bos.toString("ISO-8859-1"); diff --git a/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java b/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java index c62283abfe..87c4b87854 100644 --- a/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java +++ b/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java @@ -26,7 +26,7 @@ public final class ForEach implements TagPlugin { @Override public void doTag(TagPluginContext ctxt) { - String index = null; + String index; boolean hasVarStatus = ctxt.isAttributeSpecified("varStatus"); if (hasVarStatus) { diff --git a/java/org/apache/jasper/tagplugins/jstl/core/Out.java b/java/org/apache/jasper/tagplugins/jstl/core/Out.java index aa324db222..a4590bcc0a 100644 --- a/java/org/apache/jasper/tagplugins/jstl/core/Out.java +++ b/java/org/apache/jasper/tagplugins/jstl/core/Out.java @@ -33,9 +33,8 @@ public final class Out implements TagPlugin { //these two data member are to indicate //whether the corresponding attribute is specified - boolean hasDefault=false, hasEscapeXml=false; - hasDefault = ctxt.isAttributeSpecified("default"); - hasEscapeXml = ctxt.isAttributeSpecified("escapeXml"); + boolean hasDefault = ctxt.isAttributeSpecified("default"); + boolean hasEscapeXml = ctxt.isAttributeSpecified("escapeXml"); //strValName, strEscapeXmlName & strDefName are two variables' name //standing for value, escapeXml and default attribute diff --git a/java/org/apache/jasper/tagplugins/jstl/core/Set.java b/java/org/apache/jasper/tagplugins/jstl/core/Set.java index 81dbf797a3..8a64a1df74 100644 --- a/java/org/apache/jasper/tagplugins/jstl/core/Set.java +++ b/java/org/apache/jasper/tagplugins/jstl/core/Set.java @@ -25,20 +25,17 @@ public class Set implements TagPlugin { @Override public void doTag(TagPluginContext ctxt) { - //the flags to indicate whether the attributes have been specified - boolean hasValue = false, hasVar = false, hasScope = false, - hasTarget = false; - //the scope name String strScope; //the id of the scope int iScope; + //the flags to indicate whether the attributes have been specified //initialize the flags - hasValue = ctxt.isAttributeSpecified("value"); - hasVar = ctxt.isAttributeSpecified("var"); - hasScope = ctxt.isAttributeSpecified("scope"); - hasTarget = ctxt.isAttributeSpecified("target"); + boolean hasValue = ctxt.isAttributeSpecified("value"); + boolean hasVar = ctxt.isAttributeSpecified("var"); + boolean hasScope = ctxt.isAttributeSpecified("scope"); + boolean hasTarget = ctxt.isAttributeSpecified("target"); //the temp variables name String resultName = ctxt.getTemporaryVariableName(); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org