You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/05/04 07:21:32 UTC

[tomcat] 01/02: Replace indexed for loops and iterator while with foreach

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit af4ecdfe038f1b4bf3e8ce880385b6e095956912
Author: Lars Grefer <gi...@larsgrefer.de>
AuthorDate: Wed Apr 22 23:49:33 2020 +0200

    Replace indexed for loops and iterator while with foreach
---
 java/jakarta/el/BeanELResolver.java                |   6 +-
 java/jakarta/el/Util.java                          |  10 +-
 java/jakarta/servlet/ServletSecurityElement.java   |  12 +-
 java/jakarta/servlet/http/HttpServlet.java         |   4 +-
 .../servlet/jsp/el/ImplicitObjectELResolver.java   |  16 +-
 .../servlet/jsp/tagext/TagAttributeInfo.java       |   6 +-
 java/jakarta/servlet/jsp/tagext/TagData.java       |   4 +-
 .../jakarta/servlet/jsp/tagext/TagLibraryInfo.java |  18 +-
 .../catalina/ant/jmx/JMXAccessorQueryTask.java     |   6 +-
 .../catalina/authenticator/AuthenticatorBase.java  |   6 +-
 .../catalina/authenticator/BasicAuthenticator.java |   6 +-
 .../catalina/authenticator/FormAuthenticator.java  |   4 +-
 .../catalina/authenticator/SingleSignOn.java       |   6 +-
 .../apache/catalina/connector/CoyoteAdapter.java   |   8 +-
 java/org/apache/catalina/connector/Request.java    |  12 +-
 .../catalina/core/ApplicationFilterFactory.java    |  24 +--
 .../catalina/core/ApplicationHttpRequest.java      |   4 +-
 .../apache/catalina/core/ApplicationRequest.java   |   4 +-
 java/org/apache/catalina/core/ContainerBase.java   |  14 +-
 java/org/apache/catalina/core/StandardContext.java | 124 ++++++------
 java/org/apache/catalina/core/StandardHost.java    |   4 +-
 java/org/apache/catalina/core/StandardServer.java  |  22 +--
 .../catalina/filters/CsrfPreventionFilterBase.java |   6 +-
 .../apache/catalina/filters/RemoteIpFilter.java    |   4 +-
 .../catalina/filters/RequestDumperFilter.java      |   6 +-
 .../catalina/ha/context/ReplicatedContext.java     |   8 +-
 .../apache/catalina/ha/deploy/FarmWarDeployer.java |  10 +-
 java/org/apache/catalina/ha/deploy/WarWatcher.java |   8 +-
 .../apache/catalina/ha/session/DeltaManager.java   |  14 +-
 .../apache/catalina/ha/session/DeltaRequest.java   |  45 +++--
 .../apache/catalina/ha/session/DeltaSession.java   |  10 +-
 .../apache/catalina/ha/tcp/ReplicationValve.java   |   8 +-
 .../catalina/loader/WebappClassLoaderBase.java     |  20 +-
 java/org/apache/catalina/loader/WebappLoader.java  |  32 ++--
 .../catalina/manager/HTMLManagerServlet.java       |   5 +-
 .../apache/catalina/manager/ManagerServlet.java    |  18 +-
 .../manager/host/HTMLHostManagerServlet.java       |   5 +-
 .../catalina/manager/host/HostManagerServlet.java  |   4 +-
 .../apache/catalina/manager/util/SessionUtils.java |  16 +-
 java/org/apache/catalina/mapper/Mapper.java        |   4 +-
 .../org/apache/catalina/mbeans/ContainerMBean.java |   8 +-
 java/org/apache/catalina/mbeans/MBeanFactory.java  |  27 +--
 java/org/apache/catalina/mbeans/MBeanUtils.java    |   6 +-
 .../catalina/mbeans/NamingResourcesMBean.java      |  18 +-
 .../apache/catalina/realm/GenericPrincipal.java    |   4 +-
 .../apache/catalina/realm/JAASCallbackHandler.java |  46 +++--
 .../catalina/realm/JAASMemoryLoginModule.java      |   4 +-
 java/org/apache/catalina/realm/JAASRealm.java      |  12 +-
 java/org/apache/catalina/realm/JNDIRealm.java      |   6 +-
 java/org/apache/catalina/realm/RealmBase.java      | 103 +++++-----
 java/org/apache/catalina/session/FileStore.java    |   4 +-
 java/org/apache/catalina/session/ManagerBase.java  |   4 +-
 .../catalina/session/PersistentManagerBase.java    |  36 ++--
 .../apache/catalina/session/StandardManager.java   |   3 +-
 .../apache/catalina/session/StandardSession.java   |  63 ++++---
 java/org/apache/catalina/session/StoreBase.java    |  16 +-
 .../catalina/ssi/SSIServletExternalResolver.java   |   3 +-
 java/org/apache/catalina/startup/Catalina.java     |  22 ++-
 .../catalina/startup/ClassLoaderFactory.java       |  21 +--
 .../org/apache/catalina/startup/ContextConfig.java |  29 ++-
 java/org/apache/catalina/startup/ExpandWar.java    |   4 +-
 .../apache/catalina/startup/HomesUserDatabase.java |   6 +-
 java/org/apache/catalina/startup/HostConfig.java   |  70 +++----
 .../catalina/startup/SetAllPropertiesRule.java     |   2 +-
 java/org/apache/catalina/startup/Tomcat.java       |   4 +-
 .../catalina/storeconfig/StandardContextSF.java    |  16 +-
 .../catalina/storeconfig/StandardEngineSF.java     |   6 +-
 .../catalina/storeconfig/StandardHostSF.java       |   6 +-
 .../apache/catalina/storeconfig/StoreAppender.java |  14 +-
 .../catalina/storeconfig/StoreFactoryBase.java     |   4 +-
 .../apache/catalina/tribes/ChannelException.java   |   3 +-
 .../apache/catalina/tribes/group/GroupChannel.java |  11 +-
 .../interceptors/FragmentationInterceptor.java     |  16 +-
 .../group/interceptors/NonBlockingCoordinator.java |  12 +-
 .../group/interceptors/OrderInterceptor.java       |  10 +-
 .../group/interceptors/TcpFailureDetector.java     |  20 +-
 .../interceptors/TwoPhaseCommitInterceptor.java    |   6 +-
 .../catalina/tribes/io/ReplicationStream.java      |   6 +-
 .../tribes/membership/McastServiceImpl.java        |  15 +-
 .../catalina/tribes/membership/Membership.java     |  10 +-
 .../tribes/membership/MembershipServiceBase.java   |   6 +-
 .../membership/StaticMembershipProvider.java       |   8 +-
 .../membership/cloud/AbstractStreamProvider.java   |   9 +-
 .../tribes/tipis/AbstractReplicatedMap.java        |  39 ++--
 .../catalina/tribes/transport/PooledSender.java    |  12 +-
 .../tribes/transport/nio/NioReplicationTask.java   |  47 +++--
 .../tribes/transport/nio/ParallelNioSender.java    |  42 ++---
 .../tribes/transport/nio/PooledParallelSender.java |   4 +-
 java/org/apache/catalina/tribes/util/Arrays.java   |  17 +-
 java/org/apache/catalina/util/DOMWriter.java       |   3 +-
 .../apache/catalina/util/ExtensionValidator.java   |  12 +-
 java/org/apache/catalina/util/URLEncoder.java      |   3 +-
 .../catalina/valves/AbstractAccessLogValve.java    |  10 +-
 java/org/apache/catalina/valves/RemoteIpValve.java |   4 +-
 .../catalina/valves/rewrite/RewriteRule.java       |   8 +-
 .../catalina/valves/rewrite/RewriteValve.java      |  18 +-
 .../catalina/valves/rewrite/Substitution.java      |   4 +-
 java/org/apache/coyote/CompressionConfig.java      |   4 +-
 java/org/apache/coyote/ajp/AjpProcessor.java       |   6 +-
 .../apache/el/parser/AstCompositeExpression.java   |   4 +-
 .../org/apache/el/parser/ELParserTokenManager.java |  16 +-
 java/org/apache/el/parser/SimpleCharStream.java    |   8 +-
 java/org/apache/el/parser/SimpleNode.java          |   4 +-
 java/org/apache/el/util/ReflectionUtil.java        |  10 +-
 java/org/apache/jasper/JspC.java                   |  12 +-
 java/org/apache/jasper/compiler/Collector.java     |   4 +-
 .../jasper/compiler/DefaultErrorHandler.java       |  22 +--
 .../apache/jasper/compiler/ELFunctionMapper.java   |   3 +-
 java/org/apache/jasper/compiler/Generator.java     | 209 ++++++++++-----------
 java/org/apache/jasper/compiler/JDTCompiler.java   |  14 +-
 .../apache/jasper/compiler/JspRuntimeContext.java  |  22 +--
 java/org/apache/jasper/compiler/JspUtil.java       |  18 +-
 java/org/apache/jasper/compiler/Node.java          |   6 +-
 java/org/apache/jasper/compiler/Parser.java        |   8 +-
 .../apache/jasper/compiler/ParserController.java   |   3 +-
 .../apache/jasper/compiler/ScriptingVariabler.java |  24 +--
 java/org/apache/jasper/compiler/SmapUtil.java      |  20 +-
 java/org/apache/jasper/compiler/Validator.java     |  42 ++---
 .../jasper/runtime/JspApplicationContextImpl.java  |   4 +-
 .../apache/jasper/runtime/JspContextWrapper.java   |   3 +-
 .../apache/jasper/runtime/JspRuntimeLibrary.java   |  35 ++--
 java/org/apache/jasper/runtime/JspWriterImpl.java  |   3 +-
 .../apache/jasper/servlet/JspCServletContext.java  |  11 +-
 .../jasper/tagplugins/jstl/core/ForEach.java       |   9 +-
 .../apache/jasper/tagplugins/jstl/core/When.java   |   3 +-
 java/org/apache/juli/ClassLoaderLogManager.java    |   7 +-
 .../org/apache/naming/factory/SendMailFactory.java |   3 +-
 java/org/apache/tomcat/buildutil/SignCode.java     |  12 +-
 java/org/apache/tomcat/buildutil/Txt2Html.java     |  26 ++-
 .../tomcat/dbcp/dbcp2/DelegatingConnection.java    |   7 +-
 .../datasources/InstanceKeyDataSourceFactory.java  |   8 +-
 .../apache/tomcat/dbcp/pool2/KeyedObjectPool.java  |   5 +-
 java/org/apache/tomcat/dbcp/pool2/PoolUtils.java   |   4 +-
 .../dbcp/pool2/impl/GenericKeyedObjectPool.java    |  21 +--
 .../tomcat/dbcp/pool2/impl/GenericObjectPool.java  |   8 +-
 .../dbcp/pool2/impl/SoftReferenceObjectPool.java   |   9 +-
 java/org/apache/tomcat/jni/Library.java            |  10 +-
 java/org/apache/tomcat/util/Diagnostics.java       |   4 +-
 .../org/apache/tomcat/util/IntrospectionUtils.java |  77 ++++----
 java/org/apache/tomcat/util/buf/ByteChunk.java     |   4 +-
 java/org/apache/tomcat/util/buf/HexUtils.java      |   8 +-
 java/org/apache/tomcat/util/buf/UriUtil.java       |   3 +-
 .../apache/tomcat/util/codec/binary/Base64.java    |   4 +-
 .../tomcat/util/descriptor/web/FilterMap.java      |   8 +-
 .../util/descriptor/web/SecurityCollection.java    |  12 +-
 .../util/descriptor/web/SecurityConstraint.java    |  20 +-
 .../tomcat/util/descriptor/web/WebRuleSet.java     |   7 +-
 java/org/apache/tomcat/util/digester/Digester.java |  14 +-
 java/org/apache/tomcat/util/file/Matcher.java      |   4 +-
 .../tomcat/util/http/Rfc6265CookieProcessor.java   |   3 +-
 .../org/apache/tomcat/util/http/parser/Cookie.java |   4 +-
 .../tomcat/util/json/JSONParserTokenManager.java   |   8 +-
 .../apache/tomcat/util/json/JavaCharStream.java    |  16 +-
 .../apache/tomcat/util/modeler/BaseModelMBean.java |   9 +-
 .../util/modeler/BaseNotificationBroadcaster.java  |   3 +-
 java/org/apache/tomcat/util/modeler/Registry.java  |  20 +-
 .../MbeansDescriptorsIntrospectionSource.java      |  60 +++---
 .../apache/tomcat/util/net/jsse/JSSESupport.java   |   8 +-
 .../tomcat/util/net/openssl/OpenSSLConf.java       |  14 +-
 .../tomcat/websocket/AuthenticatorFactory.java     |   4 +-
 .../tomcat/websocket/WsWebSocketContainer.java     |   4 +-
 .../apache/tomcat/jdbc/test/TestValidation.java    |   9 +-
 .../authenticator/TestFormAuthenticator.java       |  15 +-
 .../TestNonLoginAndBasicAuthenticator.java         |   9 +-
 .../TestSSOnonLoginAndBasicAuthenticator.java      |  18 +-
 .../TestSSOnonLoginAndDigestAuthenticator.java     |   6 +-
 .../catalina/connector/TestMaxConnections.java     |   8 +-
 .../catalina/connector/TestOutputBuffer.java       |   4 +-
 .../org/apache/catalina/connector/TestRequest.java |   7 +-
 .../apache/catalina/core/TestAsyncContextImpl.java |   3 +-
 .../apache/catalina/startup/SimpleHttpClient.java  |   6 +-
 .../catalina/tribes/demos/ChannelCreator.java      |  11 +-
 .../catalina/tribes/demos/CoordinationDemo.java    |   6 +-
 .../apache/catalina/tribes/demos/EchoRpcTest.java  |   4 +-
 .../catalina/tribes/demos/IntrospectionUtils.java  |  51 ++---
 .../org/apache/catalina/tribes/demos/LoadTest.java |   6 +-
 test/org/apache/catalina/tribes/demos/MapDemo.java |   4 +-
 .../group/TestGroupChannelMemberArrival.java       |  12 +-
 .../group/TestGroupChannelSenderConnections.java   |   8 +-
 .../interceptors/TestDomainFilterInterceptor.java  |   8 +-
 .../group/interceptors/TestOrderInterceptor.java   |  16 +-
 .../tribes/test/channel/TestDataIntegrity.java     |  16 +-
 .../tribes/test/channel/TestMulticastPackages.java |   8 +-
 .../tribes/test/channel/TestUdpPackages.java       |  16 +-
 test/org/apache/catalina/valves/Benchmarks.java    |   4 +-
 .../apache/coyote/http11/TestHttp11Processor.java  |   4 +-
 .../apache/jasper/compiler/TesterValidator.java    |  22 +--
 .../org/apache/juli/TestClassLoaderLogManager.java |   4 +-
 .../tomcat/util/http/parser/TestMediaType.java     |   6 +-
 webapps/docs/changelog.xml                         |   4 +
 .../examples/WEB-INF/classes/CookieExample.java    |   7 +-
 .../WEB-INF/classes/async/AsyncStockServlet.java   |   8 +-
 .../CompressionFilterTestServlet.java              |   3 +-
 .../CompressionResponseStream.java                 |   4 +-
 .../examples/WEB-INF/classes/util/HTMLFilter.java  |  32 ++--
 .../WEB-INF/classes/websocket/drawboard/Room.java  |   4 +-
 webapps/examples/WEB-INF/jsp/applet/Clock2.java    |   3 +-
 webapps/examples/jsp/checkbox/checkresult.jsp      |  16 +-
 webapps/examples/jsp/plugin/applet/Clock2.java     |   3 +-
 webapps/examples/jsp/sessions/carts.jsp            |   6 +-
 200 files changed, 1372 insertions(+), 1439 deletions(-)

diff --git a/java/jakarta/el/BeanELResolver.java b/java/jakarta/el/BeanELResolver.java
index 21a1af0..1487033 100644
--- a/java/jakarta/el/BeanELResolver.java
+++ b/java/jakarta/el/BeanELResolver.java
@@ -188,9 +188,9 @@ public class BeanELResolver extends ELResolver {
         try {
             BeanInfo info = Introspector.getBeanInfo(base.getClass());
             PropertyDescriptor[] pds = info.getPropertyDescriptors();
-            for (int i = 0; i < pds.length; i++) {
-                pds[i].setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
-                pds[i].setValue(TYPE, pds[i].getPropertyType());
+            for (PropertyDescriptor pd : pds) {
+                pd.setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
+                pd.setValue(TYPE, pd.getPropertyType());
             }
             return Arrays.asList((FeatureDescriptor[]) pds).iterator();
         } catch (IntrospectionException e) {
diff --git a/java/jakarta/el/Util.java b/java/jakarta/el/Util.java
index b265c50..352b716 100644
--- a/java/jakarta/el/Util.java
+++ b/java/jakarta/el/Util.java
@@ -380,11 +380,11 @@ class Util {
     private static final String paramString(Class<?>[] types) {
         if (types != null) {
             StringBuilder sb = new StringBuilder();
-            for (int i = 0; i < types.length; i++) {
-                if (types[i] == null) {
+            for (Class<?> type : types) {
+                if (type == null) {
                     sb.append("null, ");
                 } else {
-                    sb.append(types[i].getName()).append(", ");
+                    sb.append(type.getName()).append(", ");
                 }
             }
             if (sb.length() > 2) {
@@ -550,9 +550,9 @@ class Util {
         }
         Class<?>[] inf = type.getInterfaces();
         Method mp = null;
-        for (int i = 0; i < inf.length; i++) {
+        for (Class<?> aClass : inf) {
             try {
-                mp = inf[i].getMethod(m.getName(), m.getParameterTypes());
+                mp = aClass.getMethod(m.getName(), m.getParameterTypes());
                 mp = getMethod(mp.getDeclaringClass(), base, mp);
                 if (mp != null) {
                     return mp;
diff --git a/java/jakarta/servlet/ServletSecurityElement.java b/java/jakarta/servlet/ServletSecurityElement.java
index cc7f127..4f8d469 100644
--- a/java/jakarta/servlet/ServletSecurityElement.java
+++ b/java/jakarta/servlet/ServletSecurityElement.java
@@ -93,13 +93,13 @@ public class ServletSecurityElement extends HttpConstraintElement {
         List<HttpMethodConstraintElement> l = new ArrayList<>();
         HttpMethodConstraint[] constraints = annotation.httpMethodConstraints();
         if (constraints != null) {
-            for (int i = 0; i < constraints.length; i++) {
+            for (HttpMethodConstraint constraint : constraints) {
                 HttpMethodConstraintElement e =
-                    new HttpMethodConstraintElement(constraints[i].value(),
-                            new HttpConstraintElement(
-                                    constraints[i].emptyRoleSemantic(),
-                                    constraints[i].transportGuarantee(),
-                                    constraints[i].rolesAllowed()));
+                        new HttpMethodConstraintElement(constraint.value(),
+                                new HttpConstraintElement(
+                                        constraint.emptyRoleSemantic(),
+                                        constraint.transportGuarantee(),
+                                        constraint.rolesAllowed()));
                 l.add(e);
             }
         }
diff --git a/java/jakarta/servlet/http/HttpServlet.java b/java/jakarta/servlet/http/HttpServlet.java
index 56b4ce1..fde9847 100644
--- a/java/jakarta/servlet/http/HttpServlet.java
+++ b/java/jakarta/servlet/http/HttpServlet.java
@@ -443,8 +443,8 @@ public abstract class HttpServlet extends GenericServlet {
                     boolean allowPut = false;
                     boolean allowDelete = false;
 
-                    for (int i = 0; i < methods.length; i++) {
-                        switch (methods[i].getName()) {
+                    for (Method method : methods) {
+                        switch (method.getName()) {
                             case "doGet": {
                                 allowGet = true;
                                 allowHead = true;
diff --git a/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java b/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
index 88765d3..46eb703 100644
--- a/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
+++ b/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java
@@ -162,12 +162,12 @@ public class ImplicitObjectELResolver extends ELResolver {
     public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
         List<FeatureDescriptor> feats = new ArrayList<>(SCOPE_NAMES.length);
         FeatureDescriptor feat;
-        for (int i = 0; i < SCOPE_NAMES.length; i++) {
+        for (String scopeName : SCOPE_NAMES) {
             feat = new FeatureDescriptor();
-            feat.setDisplayName(SCOPE_NAMES[i]);
+            feat.setDisplayName(scopeName);
             feat.setExpert(false);
             feat.setHidden(false);
-            feat.setName(SCOPE_NAMES[i]);
+            feat.setName(scopeName);
             feat.setPreferred(true);
             feat.setValue(RESOLVABLE_AT_DESIGN_TIME, Boolean.TRUE);
             feat.setValue(TYPE, String.class);
@@ -258,8 +258,8 @@ public class ImplicitObjectELResolver extends ELResolver {
                                 .getCookies();
                         if (c != null) {
                             Vector<String> v = new Vector<>();
-                            for (int i = 0; i < c.length; i++) {
-                                v.add(c[i].getName());
+                            for (Cookie value : c) {
+                                v.add(value.getName());
                             }
                             return v.elements();
                         }
@@ -271,9 +271,9 @@ public class ImplicitObjectELResolver extends ELResolver {
                         Cookie[] c = ((HttpServletRequest) page.getRequest())
                                 .getCookies();
                         if (c != null) {
-                            for (int i = 0; i < c.length; i++) {
-                                if (name.equals(c[i].getName())) {
-                                    return c[i];
+                            for (Cookie value : c) {
+                                if (name.equals(value.getName())) {
+                                    return value;
                                 }
                             }
                         }
diff --git a/java/jakarta/servlet/jsp/tagext/TagAttributeInfo.java b/java/jakarta/servlet/jsp/tagext/TagAttributeInfo.java
index 2f54db4..fe8e245 100644
--- a/java/jakarta/servlet/jsp/tagext/TagAttributeInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/TagAttributeInfo.java
@@ -172,9 +172,9 @@ public class TagAttributeInfo {
      * @return The TagAttributeInfo reference with name "id"
      */
     public static TagAttributeInfo getIdAttribute(TagAttributeInfo a[]) {
-        for (int i = 0; i < a.length; i++) {
-            if (a[i].getName().equals(ID)) {
-                return a[i];
+        for (TagAttributeInfo tagAttributeInfo : a) {
+            if (tagAttributeInfo.getName().equals(ID)) {
+                return tagAttributeInfo;
             }
         }
         return null; // no such attribute
diff --git a/java/jakarta/servlet/jsp/tagext/TagData.java b/java/jakarta/servlet/jsp/tagext/TagData.java
index a53e2c3..f3b7522 100644
--- a/java/jakarta/servlet/jsp/tagext/TagData.java
+++ b/java/jakarta/servlet/jsp/tagext/TagData.java
@@ -62,8 +62,8 @@ public class TagData implements Cloneable {
         }
 
         if (atts != null) {
-            for (int i = 0; i < atts.length; i++) {
-                attributes.put((String) atts[i][0], atts[i][1]);
+            for (Object[] att : atts) {
+                attributes.put((String) att[0], att[1]);
             }
         }
     }
diff --git a/java/jakarta/servlet/jsp/tagext/TagLibraryInfo.java b/java/jakarta/servlet/jsp/tagext/TagLibraryInfo.java
index 64dba90..393dcb5 100644
--- a/java/jakarta/servlet/jsp/tagext/TagLibraryInfo.java
+++ b/java/jakarta/servlet/jsp/tagext/TagLibraryInfo.java
@@ -141,9 +141,9 @@ public abstract class TagLibraryInfo {
             return null;
         }
 
-        for (int i = 0; i < tags.length; i++) {
-            if (shortname.equals(tags[i].getTagName())) {
-                return tags[i];
+        for (TagInfo tag : tags) {
+            if (shortname.equals(tag.getTagName())) {
+                return tag;
             }
         }
         return null;
@@ -166,9 +166,9 @@ public abstract class TagLibraryInfo {
             return null;
         }
 
-        for (int i = 0; i < tagFiles.length; i++) {
-            if (tagFiles[i].getName().equals(shortname)) {
-                return tagFiles[i];
+        for (TagFileInfo tagFile : tagFiles) {
+            if (tagFile.getName().equals(shortname)) {
+                return tagFile;
             }
         }
         return null;
@@ -201,9 +201,9 @@ public abstract class TagLibraryInfo {
             return null;
         }
 
-        for (int i = 0; i < functions.length; i++) {
-            if (functions[i].getName().equals(name)) {
-                return functions[i];
+        for (FunctionInfo function : functions) {
+            if (function.getName().equals(name)) {
+                return function;
             }
         }
         return null;
diff --git a/java/org/apache/catalina/ant/jmx/JMXAccessorQueryTask.java b/java/org/apache/catalina/ant/jmx/JMXAccessorQueryTask.java
index df06f89..dbc4d80 100644
--- a/java/org/apache/catalina/ant/jmx/JMXAccessorQueryTask.java
+++ b/java/org/apache/catalina/ant/jmx/JMXAccessorQueryTask.java
@@ -141,10 +141,10 @@ public class JMXAccessorQueryTask extends JMXAccessorTask {
             MBeanAttributeInfo attrs[] = minfo.getAttributes();
             Object value = null;
 
-            for (int i = 0; i < attrs.length; i++) {
-                if (!attrs[i].isReadable())
+            for (MBeanAttributeInfo attr : attrs) {
+                if (!attr.isReadable())
                     continue;
-                String attName = attrs[i].getName();
+                String attName = attr.getName();
                 if (attName.indexOf('=') >= 0 || attName.indexOf(':') >= 0
                         || attName.indexOf(' ') >= 0) {
                     continue;
diff --git a/java/org/apache/catalina/authenticator/AuthenticatorBase.java b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
index 183b575..aa75c7b 100644
--- a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
+++ b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
@@ -1327,9 +1327,9 @@ public abstract class AuthenticatorBase extends ValveBase
         Container parent = context.getParent();
         while ((sso == null) && (parent != null)) {
             Valve valves[] = parent.getPipeline().getValves();
-            for (int i = 0; i < valves.length; i++) {
-                if (valves[i] instanceof SingleSignOn) {
-                    sso = (SingleSignOn) valves[i];
+            for (Valve valve : valves) {
+                if (valve instanceof SingleSignOn) {
+                    sso = (SingleSignOn) valve;
                     break;
                 }
             }
diff --git a/java/org/apache/catalina/authenticator/BasicAuthenticator.java b/java/org/apache/catalina/authenticator/BasicAuthenticator.java
index a34f08b..55a7b88 100644
--- a/java/org/apache/catalina/authenticator/BasicAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/BasicAuthenticator.java
@@ -209,8 +209,7 @@ public class BasicAuthenticator extends AuthenticatorBase {
                 // step past the auth method name
                 base64blobOffset = initialOffset + METHOD.length();
                 base64blobLength = authorization.getLength() - METHOD.length();
-            }
-            else {
+            } else {
                 // is this possible, or permitted?
                 throw new IllegalArgumentException(
                         "Authorization header method is not \"Basic\"");
@@ -253,8 +252,7 @@ public class BasicAuthenticator extends AuthenticatorBase {
             if (colon < 0) {
                 username = new String(decoded, charset);
                 // password will remain null!
-            }
-            else {
+            } else {
                 username = new String(decoded, 0, colon, charset);
                 password = new String(decoded, colon + 1, decoded.length - colon - 1, charset);
                 // tolerate surplus white space around credentials
diff --git a/java/org/apache/catalina/authenticator/FormAuthenticator.java b/java/org/apache/catalina/authenticator/FormAuthenticator.java
index b04d40e..c53f49c 100644
--- a/java/org/apache/catalina/authenticator/FormAuthenticator.java
+++ b/java/org/apache/catalina/authenticator/FormAuthenticator.java
@@ -650,8 +650,8 @@ public class FormAuthenticator
         SavedRequest saved = new SavedRequest();
         Cookie cookies[] = request.getCookies();
         if (cookies != null) {
-            for (int i = 0; i < cookies.length; i++) {
-                saved.addCookie(cookies[i]);
+            for (Cookie cookie : cookies) {
+                saved.addCookie(cookie);
             }
         }
         Enumeration<String> names = request.getHeaderNames();
diff --git a/java/org/apache/catalina/authenticator/SingleSignOn.java b/java/org/apache/catalina/authenticator/SingleSignOn.java
index 18f8791..36f9349 100644
--- a/java/org/apache/catalina/authenticator/SingleSignOn.java
+++ b/java/org/apache/catalina/authenticator/SingleSignOn.java
@@ -247,9 +247,9 @@ public class SingleSignOn extends ValveBase {
         Cookie cookie = null;
         Cookie cookies[] = request.getCookies();
         if (cookies != null) {
-            for (int i = 0; i < cookies.length; i++) {
-                if (cookieName.equals(cookies[i].getName())) {
-                    cookie = cookies[i];
+            for (Cookie value : cookies) {
+                if (cookieName.equals(value.getName())) {
+                    cookie = value;
                     break;
                 }
             }
diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java
index d7e55d1..ab113a7 100644
--- a/java/org/apache/catalina/connector/CoyoteAdapter.java
+++ b/java/org/apache/catalina/connector/CoyoteAdapter.java
@@ -818,14 +818,14 @@ public class CoyoteAdapter implements Adapter {
             if (wrapper != null) {
                 String[] methods = wrapper.getServletMethods();
                 if (methods != null) {
-                    for (int i=0; i < methods.length; i++) {
-                        if ("TRACE".equals(methods[i])) {
+                    for (String method : methods) {
+                        if ("TRACE".equals(method)) {
                             continue;
                         }
                         if (header == null) {
-                            header = methods[i];
+                            header = method;
                         } else {
-                            header += ", " + methods[i];
+                            header += ", " + method;
                         }
                     }
                 }
diff --git a/java/org/apache/catalina/connector/Request.java b/java/org/apache/catalina/connector/Request.java
index a40fc3f..58cc69c 100644
--- a/java/org/apache/catalina/connector/Request.java
+++ b/java/org/apache/catalina/connector/Request.java
@@ -1559,12 +1559,12 @@ public class Request implements HttpServletRequest {
                     context.getServletContext(), getRequest(), name, value);
         }
 
-        for (int i = 0; i < listeners.length; i++) {
-            if (!(listeners[i] instanceof ServletRequestAttributeListener)) {
+        for (Object o : listeners) {
+            if (!(o instanceof ServletRequestAttributeListener)) {
                 continue;
             }
             ServletRequestAttributeListener listener =
-                    (ServletRequestAttributeListener) listeners[i];
+                    (ServletRequestAttributeListener) o;
             try {
                 if (replaced) {
                     listener.attributeReplaced(event);
@@ -1596,12 +1596,12 @@ public class Request implements HttpServletRequest {
         ServletRequestAttributeEvent event =
                 new ServletRequestAttributeEvent(context.getServletContext(),
                         getRequest(), name, value);
-        for (int i = 0; i < listeners.length; i++) {
-            if (!(listeners[i] instanceof ServletRequestAttributeListener)) {
+        for (Object o : listeners) {
+            if (!(o instanceof ServletRequestAttributeListener)) {
                 continue;
             }
             ServletRequestAttributeListener listener =
-                    (ServletRequestAttributeListener) listeners[i];
+                    (ServletRequestAttributeListener) o;
             try {
                 listener.attributeRemoved(event);
             } catch (Throwable t) {
diff --git a/java/org/apache/catalina/core/ApplicationFilterFactory.java b/java/org/apache/catalina/core/ApplicationFilterFactory.java
index 0cdae4a..da5bc09 100644
--- a/java/org/apache/catalina/core/ApplicationFilterFactory.java
+++ b/java/org/apache/catalina/core/ApplicationFilterFactory.java
@@ -101,14 +101,14 @@ public final class ApplicationFilterFactory {
         String servletName = wrapper.getName();
 
         // Add the relevant path-mapped filters to this filter chain
-        for (int i = 0; i < filterMaps.length; i++) {
-            if (!matchDispatcher(filterMaps[i] ,dispatcher)) {
+        for (FilterMap map : filterMaps) {
+            if (!matchDispatcher(map, dispatcher)) {
                 continue;
             }
-            if (!matchFiltersURL(filterMaps[i], requestPath))
+            if (!matchFiltersURL(map, requestPath))
                 continue;
             ApplicationFilterConfig filterConfig = (ApplicationFilterConfig)
-                context.findFilterConfig(filterMaps[i].getFilterName());
+                    context.findFilterConfig(map.getFilterName());
             if (filterConfig == null) {
                 // FIXME - log configuration problem
                 continue;
@@ -117,14 +117,14 @@ public final class ApplicationFilterFactory {
         }
 
         // Add filters that match on servlet name second
-        for (int i = 0; i < filterMaps.length; i++) {
-            if (!matchDispatcher(filterMaps[i] ,dispatcher)) {
+        for (FilterMap filterMap : filterMaps) {
+            if (!matchDispatcher(filterMap, dispatcher)) {
                 continue;
             }
-            if (!matchFiltersServlet(filterMaps[i], servletName))
+            if (!matchFiltersServlet(filterMap, servletName))
                 continue;
             ApplicationFilterConfig filterConfig = (ApplicationFilterConfig)
-                context.findFilterConfig(filterMaps[i].getFilterName());
+                    context.findFilterConfig(filterMap.getFilterName());
             if (filterConfig == null) {
                 // FIXME - log configuration problem
                 continue;
@@ -161,8 +161,8 @@ public final class ApplicationFilterFactory {
         // Match on context relative request path
         String[] testPaths = filterMap.getURLPatterns();
 
-        for (int i = 0; i < testPaths.length; i++) {
-            if (matchFiltersURL(testPaths[i], requestPath)) {
+        for (String testPath : testPaths) {
+            if (matchFiltersURL(testPath, requestPath)) {
                 return true;
             }
         }
@@ -243,8 +243,8 @@ public final class ApplicationFilterFactory {
             return true;
         } else {
             String[] servletNames = filterMap.getServletNames();
-            for (int i = 0; i < servletNames.length; i++) {
-                if (servletName.equals(servletNames[i])) {
+            for (String name : servletNames) {
+                if (servletName.equals(name)) {
                     return true;
                 }
             }
diff --git a/java/org/apache/catalina/core/ApplicationHttpRequest.java b/java/org/apache/catalina/core/ApplicationHttpRequest.java
index 3b3d749..70498be 100644
--- a/java/org/apache/catalina/core/ApplicationHttpRequest.java
+++ b/java/org/apache/catalina/core/ApplicationHttpRequest.java
@@ -780,8 +780,8 @@ class ApplicationHttpRequest extends HttpServletRequestWrapper {
      */
     protected boolean isSpecial(String name) {
 
-        for (int i = 0; i < specials.length; i++) {
-            if (specials[i].equals(name))
+        for (String special : specials) {
+            if (special.equals(name))
                 return true;
         }
         return false;
diff --git a/java/org/apache/catalina/core/ApplicationRequest.java b/java/org/apache/catalina/core/ApplicationRequest.java
index e5cd032..b44506c 100644
--- a/java/org/apache/catalina/core/ApplicationRequest.java
+++ b/java/org/apache/catalina/core/ApplicationRequest.java
@@ -199,8 +199,8 @@ class ApplicationRequest extends ServletRequestWrapper {
      */
     protected boolean isSpecial(String name) {
 
-        for (int i = 0; i < specials.length; i++) {
-            if (specials[i].equals(name))
+        for (String special : specials) {
+            if (special.equals(name))
                 return true;
         }
         return false;
diff --git a/java/org/apache/catalina/core/ContainerBase.java b/java/org/apache/catalina/core/ContainerBase.java
index 03dae73..69620a1 100644
--- a/java/org/apache/catalina/core/ContainerBase.java
+++ b/java/org/apache/catalina/core/ContainerBase.java
@@ -905,8 +905,8 @@ public abstract class ContainerBase extends LifecycleMBeanBase
         // Start our child containers, if any
         Container children[] = findChildren();
         List<Future<Void>> results = new ArrayList<>();
-        for (int i = 0; i < children.length; i++) {
-            results.add(startStopExecutor.submit(new StartChild(children[i])));
+        for (Container child : children) {
+            results.add(startStopExecutor.submit(new StartChild(child)));
         }
 
         MultiThrowable multiThrowable = null;
@@ -972,8 +972,8 @@ public abstract class ContainerBase extends LifecycleMBeanBase
         // Stop our child containers, if any
         Container children[] = findChildren();
         List<Future<Void>> results = new ArrayList<>();
-        for (int i = 0; i < children.length; i++) {
-            results.add(startStopExecutor.submit(new StopChild(children[i])));
+        for (Container child : children) {
+            results.add(startStopExecutor.submit(new StopChild(child)));
         }
 
         boolean fail = false;
@@ -1352,9 +1352,9 @@ public abstract class ContainerBase extends LifecycleMBeanBase
                 }
                 container.backgroundProcess();
                 Container[] children = container.findChildren();
-                for (int i = 0; i < children.length; i++) {
-                    if (children[i].getBackgroundProcessorDelay() <= 0) {
-                        processChildren(children[i]);
+                for (Container child : children) {
+                    if (child.getBackgroundProcessorDelay() <= 0) {
+                        processChildren(child);
                     }
                 }
             } catch (Throwable t) {
diff --git a/java/org/apache/catalina/core/StandardContext.java b/java/org/apache/catalina/core/StandardContext.java
index 9647bd2..9539020 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -2930,18 +2930,18 @@ public class StandardContext extends ContainerBase
 
         // Validate the proposed constraint
         SecurityCollection collections[] = constraint.findCollections();
-        for (int i = 0; i < collections.length; i++) {
-            String patterns[] = collections[i].findPatterns();
+        for (SecurityCollection collection : collections) {
+            String patterns[] = collection.findPatterns();
             for (int j = 0; j < patterns.length; j++) {
                 patterns[j] = adjustURLPattern(patterns[j]);
                 if (!validateURLPattern(patterns[j]))
                     throw new IllegalArgumentException
-                        (sm.getString
-                         ("standardContext.securityConstraint.pattern",
-                          patterns[j]));
+                            (sm.getString
+                                    ("standardContext.securityConstraint.pattern",
+                                            patterns[j]));
             }
-            if (collections[i].findMethods().length > 0 &&
-                    collections[i].findOmittedMethods().length > 0) {
+            if (collection.findMethods().length > 0 &&
+                    collection.findOmittedMethods().length > 0) {
                 throw new IllegalArgumentException(sm.getString(
                         "standardContext.securityConstraint.mixHttpMethod"));
             }
@@ -3067,11 +3067,11 @@ public class StandardContext extends ContainerBase
             throw new IllegalArgumentException
                 (sm.getString("standardContext.filterMap.either"));
         */
-        for (int i = 0; i < urlPatterns.length; i++) {
-            if (!validateURLPattern(urlPatterns[i])) {
+        for (String urlPattern : urlPatterns) {
+            if (!validateURLPattern(urlPattern)) {
                 throw new IllegalArgumentException
-                    (sm.getString("standardContext.filterMap.pattern",
-                            urlPatterns[i]));
+                        (sm.getString("standardContext.filterMap.pattern",
+                                urlPattern));
             }
         }
     }
@@ -3331,11 +3331,11 @@ public class StandardContext extends ContainerBase
         }
 
         synchronized (wrapperLifecyclesLock) {
-            for (int i = 0; i < wrapperLifecycles.length; i++) {
+            for (String wrapperLifecycle : wrapperLifecycles) {
                 try {
-                    Class<?> clazz = Class.forName(wrapperLifecycles[i]);
+                    Class<?> clazz = Class.forName(wrapperLifecycle);
                     LifecycleListener listener =
-                        (LifecycleListener) clazz.getConstructor().newInstance();
+                            (LifecycleListener) clazz.getConstructor().newInstance();
                     wrapper.addLifecycleListener(listener);
                 } catch (Throwable t) {
                     ExceptionUtils.handleThrowable(t);
@@ -3346,9 +3346,9 @@ public class StandardContext extends ContainerBase
         }
 
         synchronized (wrapperListenersLock) {
-            for (int i = 0; i < wrapperListeners.length; i++) {
+            for (String wrapperListener : wrapperListeners) {
                 try {
-                    Class<?> clazz = Class.forName(wrapperListeners[i]);
+                    Class<?> clazz = Class.forName(wrapperListener);
                     ContainerListener listener =
                             (ContainerListener) clazz.getConstructor().newInstance();
                     wrapper.addContainerListener(listener);
@@ -3566,8 +3566,8 @@ public class StandardContext extends ContainerBase
     public boolean findSecurityRole(String role) {
 
         synchronized (securityRolesLock) {
-            for (int i = 0; i < securityRoles.length; i++) {
-                if (role.equals(securityRoles[i]))
+            for (String securityRole : securityRoles) {
+                if (role.equals(securityRole))
                     return true;
             }
         }
@@ -3625,8 +3625,8 @@ public class StandardContext extends ContainerBase
     public boolean findWelcomeFile(String name) {
 
         synchronized (welcomeFilesLock) {
-            for (int i = 0; i < welcomeFiles.length; i++) {
-                if (name.equals(welcomeFiles[i]))
+            for (String welcomeFile : welcomeFiles) {
+                if (name.equals(welcomeFile))
                     return true;
             }
         }
@@ -4211,8 +4211,8 @@ public class StandardContext extends ContainerBase
 
         Container[] children = findChildren();
         if (children != null) {
-            for( int i=0; i< children.length; i++ ) {
-                result += ((StandardWrapper)children[i]).getProcessingTime();
+            for (Container child : children) {
+                result += ((StandardWrapper) child).getProcessingTime();
             }
         }
 
@@ -4233,8 +4233,8 @@ public class StandardContext extends ContainerBase
 
         Container[] children = findChildren();
         if (children != null) {
-            for( int i=0; i< children.length; i++ ) {
-                time = ((StandardWrapper)children[i]).getMaxTime();
+            for (Container child : children) {
+                time = ((StandardWrapper) child).getMaxTime();
                 if (time > result)
                     result = time;
             }
@@ -4257,8 +4257,8 @@ public class StandardContext extends ContainerBase
 
         Container[] children = findChildren();
         if (children != null) {
-            for( int i=0; i< children.length; i++ ) {
-                time = ((StandardWrapper)children[i]).getMinTime();
+            for (Container child : children) {
+                time = ((StandardWrapper) child).getMinTime();
                 if (result < 0 || time < result)
                     result = time;
             }
@@ -4280,8 +4280,8 @@ public class StandardContext extends ContainerBase
 
         Container[] children = findChildren();
         if (children != null) {
-            for( int i=0; i< children.length; i++ ) {
-                result += ((StandardWrapper)children[i]).getRequestCount();
+            for (Container child : children) {
+                result += ((StandardWrapper) child).getRequestCount();
             }
         }
 
@@ -4301,8 +4301,8 @@ public class StandardContext extends ContainerBase
 
         Container[] children = findChildren();
         if (children != null) {
-            for( int i=0; i< children.length; i++ ) {
-                result += ((StandardWrapper)children[i]).getErrorCount();
+            for (Container child : children) {
+                result += ((StandardWrapper) child).getErrorCount();
             }
         }
 
@@ -4573,17 +4573,17 @@ public class StandardContext extends ContainerBase
         // Sort listeners in two arrays
         List<Object> eventListeners = new ArrayList<>();
         List<Object> lifecycleListeners = new ArrayList<>();
-        for (int i = 0; i < results.length; i++) {
-            if ((results[i] instanceof ServletContextAttributeListener)
-                || (results[i] instanceof ServletRequestAttributeListener)
-                || (results[i] instanceof ServletRequestListener)
-                || (results[i] instanceof HttpSessionIdListener)
-                || (results[i] instanceof HttpSessionAttributeListener)) {
-                eventListeners.add(results[i]);
+        for (Object result : results) {
+            if ((result instanceof ServletContextAttributeListener)
+                    || (result instanceof ServletRequestAttributeListener)
+                    || (result instanceof ServletRequestListener)
+                    || (result instanceof HttpSessionIdListener)
+                    || (result instanceof HttpSessionAttributeListener)) {
+                eventListeners.add(result);
             }
-            if ((results[i] instanceof ServletContextListener)
-                || (results[i] instanceof HttpSessionListener)) {
-                lifecycleListeners.add(results[i]);
+            if ((result instanceof ServletContextListener)
+                    || (result instanceof HttpSessionListener)) {
+                lifecycleListeners.add(result);
             }
         }
 
@@ -4622,11 +4622,11 @@ public class StandardContext extends ContainerBase
             noPluggabilityServletContext = new NoPluggabilityServletContext(getServletContext());
             tldEvent = new ServletContextEvent(noPluggabilityServletContext);
         }
-        for (int i = 0; i < instances.length; i++) {
-            if (!(instances[i] instanceof ServletContextListener))
+        for (Object instance : instances) {
+            if (!(instance instanceof ServletContextListener))
                 continue;
             ServletContextListener listener =
-                (ServletContextListener) instances[i];
+                    (ServletContextListener) instance;
             try {
                 fireContainerEvent("beforeContextInitialized", listener);
                 if (noPluggabilityListeners.contains(listener)) {
@@ -4639,8 +4639,8 @@ public class StandardContext extends ContainerBase
                 ExceptionUtils.handleThrowable(t);
                 fireContainerEvent("afterContextInitialized", listener);
                 getLogger().error
-                    (sm.getString("standardContext.listenerStart",
-                                  instances[i].getClass().getName()), t);
+                        (sm.getString("standardContext.listenerStart",
+                                instance.getClass().getName()), t);
                 ok = false;
             }
         }
@@ -4800,8 +4800,8 @@ public class StandardContext extends ContainerBase
 
         // Collect "load on startup" servlets that need to be initialized
         TreeMap<Integer, ArrayList<Wrapper>> map = new TreeMap<>();
-        for (int i = 0; i < children.length; i++) {
-            Wrapper wrapper = (Wrapper) children[i];
+        for (Container child : children) {
+            Wrapper wrapper = (Wrapper) child;
             int loadOnStartup = wrapper.getLoadOnStartup();
             if (loadOnStartup < 0)
                 continue;
@@ -5260,19 +5260,19 @@ public class StandardContext extends ContainerBase
         Map<String,String> mergedParams = new HashMap<>();
 
         String names[] = findParameters();
-        for (int i = 0; i < names.length; i++) {
-            mergedParams.put(names[i], findParameter(names[i]));
+        for (String s : names) {
+            mergedParams.put(s, findParameter(s));
         }
 
         ApplicationParameter params[] = findApplicationParameters();
-        for (int i = 0; i < params.length; i++) {
-            if (params[i].getOverride()) {
-                if (mergedParams.get(params[i].getName()) == null) {
-                    mergedParams.put(params[i].getName(),
-                            params[i].getValue());
+        for (ApplicationParameter param : params) {
+            if (param.getOverride()) {
+                if (mergedParams.get(param.getName()) == null) {
+                    mergedParams.put(param.getName(),
+                            param.getValue());
                 }
             } else {
-                mergedParams.put(params[i].getName(), params[i].getValue());
+                mergedParams.put(param.getName(), param.getValue());
             }
         }
 
@@ -5330,8 +5330,8 @@ public class StandardContext extends ContainerBase
             // Stop ContainerBackgroundProcessor thread
             threadStop();
 
-            for (int i = 0; i < children.length; i++) {
-                children[i].stop();
+            for (Container child : children) {
+                child.stop();
             }
 
             // Stop our filters
@@ -5841,13 +5841,13 @@ public class StandardContext extends ContainerBase
             ServletRequestEvent event =
                     new ServletRequestEvent(getServletContext(), request);
 
-            for (int i = 0; i < instances.length; i++) {
-                if (instances[i] == null)
+            for (Object instance : instances) {
+                if (instance == null)
                     continue;
-                if (!(instances[i] instanceof ServletRequestListener))
+                if (!(instance instanceof ServletRequestListener))
                     continue;
                 ServletRequestListener listener =
-                    (ServletRequestListener) instances[i];
+                        (ServletRequestListener) instance;
 
                 try {
                     listener.requestInitialized(event);
@@ -5855,7 +5855,7 @@ public class StandardContext extends ContainerBase
                     ExceptionUtils.handleThrowable(t);
                     getLogger().error(sm.getString(
                             "standardContext.requestListener.requestInit",
-                            instances[i].getClass().getName()), t);
+                            instance.getClass().getName()), t);
                     request.setAttribute(RequestDispatcher.ERROR_EXCEPTION, t);
                     return false;
                 }
diff --git a/java/org/apache/catalina/core/StandardHost.java b/java/org/apache/catalina/core/StandardHost.java
index 8a4a1a0..48e9dfb 100644
--- a/java/org/apache/catalina/core/StandardHost.java
+++ b/java/org/apache/catalina/core/StandardHost.java
@@ -664,8 +664,8 @@ public class StandardHost extends ContainerBase implements Host {
 
         synchronized (aliasesLock) {
             // Skip duplicate aliases
-            for (int i = 0; i < aliases.length; i++) {
-                if (aliases[i].equals(alias))
+            for (String s : aliases) {
+                if (s.equals(alias))
                     return;
             }
             // Add this alias to the list
diff --git a/java/org/apache/catalina/core/StandardServer.java b/java/org/apache/catalina/core/StandardServer.java
index 55cee1b..5a28f6f 100644
--- a/java/org/apache/catalina/core/StandardServer.java
+++ b/java/org/apache/catalina/core/StandardServer.java
@@ -697,9 +697,9 @@ public final class StandardServer extends LifecycleMBeanBase implements Server {
             return null;
         }
         synchronized (servicesLock) {
-            for (int i = 0; i < services.length; i++) {
-                if (name.equals(services[i].getName())) {
-                    return services[i];
+            for (Service service : services) {
+                if (name.equals(service.getName())) {
+                    return service;
                 }
             }
         }
@@ -926,8 +926,8 @@ public final class StandardServer extends LifecycleMBeanBase implements Server {
 
         // Start our defined Services
         synchronized (servicesLock) {
-            for (int i = 0; i < services.length; i++) {
-                services[i].start();
+            for (Service service : services) {
+                service.start();
             }
         }
 
@@ -988,8 +988,8 @@ public final class StandardServer extends LifecycleMBeanBase implements Server {
         fireLifecycleEvent(CONFIGURE_STOP_EVENT, null);
 
         // Stop our defined Services
-        for (int i = 0; i < services.length; i++) {
-            services[i].stop();
+        for (Service service : services) {
+            service.stop();
         }
 
         globalNamingResources.stop();
@@ -1053,16 +1053,16 @@ public final class StandardServer extends LifecycleMBeanBase implements Server {
             }
         }
         // Initialize our defined Services
-        for (int i = 0; i < services.length; i++) {
-            services[i].init();
+        for (Service service : services) {
+            service.init();
         }
     }
 
     @Override
     protected void destroyInternal() throws LifecycleException {
         // Destroy our defined Services
-        for (int i = 0; i < services.length; i++) {
-            services[i].destroy();
+        for (Service service : services) {
+            service.destroy();
         }
 
         globalNamingResources.destroy();
diff --git a/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java b/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
index 63702f7..169ed0f 100644
--- a/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
+++ b/java/org/apache/catalina/filters/CsrfPreventionFilterBase.java
@@ -108,9 +108,9 @@ public abstract class CsrfPreventionFilterBase extends FilterBase {
 
         randomSource.nextBytes(random);
 
-        for (int j = 0; j < random.length; j++) {
-            byte b1 = (byte) ((random[j] & 0xf0) >> 4);
-            byte b2 = (byte) (random[j] & 0x0f);
+        for (byte b : random) {
+            byte b1 = (byte) ((b & 0xf0) >> 4);
+            byte b2 = (byte) (b & 0x0f);
             if (b1 < 10) {
                 buffer.append((char) ('0' + b1));
             } else {
diff --git a/java/org/apache/catalina/filters/RemoteIpFilter.java b/java/org/apache/catalina/filters/RemoteIpFilter.java
index 7dca413..e37859b 100644
--- a/java/org/apache/catalina/filters/RemoteIpFilter.java
+++ b/java/org/apache/catalina/filters/RemoteIpFilter.java
@@ -924,8 +924,8 @@ public class RemoteIpFilter extends GenericFilter {
         if (forwardedProtocols.length == 0) {
             return false;
         }
-        for (int i = 0; i < forwardedProtocols.length; i++) {
-            if (!protocolHeaderHttpsValue.equalsIgnoreCase(forwardedProtocols[i])) {
+        for (String forwardedProtocol : forwardedProtocols) {
+            if (!protocolHeaderHttpsValue.equalsIgnoreCase(forwardedProtocol)) {
                 return false;
             }
         }
diff --git a/java/org/apache/catalina/filters/RequestDumperFilter.java b/java/org/apache/catalina/filters/RequestDumperFilter.java
index aad5956..7b62951 100644
--- a/java/org/apache/catalina/filters/RequestDumperFilter.java
+++ b/java/org/apache/catalina/filters/RequestDumperFilter.java
@@ -120,9 +120,9 @@ public class RequestDumperFilter extends GenericFilter {
             doLog("       contextPath", hRequest.getContextPath());
             Cookie cookies[] = hRequest.getCookies();
             if (cookies != null) {
-                for (int i = 0; i < cookies.length; i++) {
-                    doLog("            cookie", cookies[i].getName() +
-                            "=" + cookies[i].getValue());
+                for (Cookie cookie : cookies) {
+                    doLog("            cookie", cookie.getName() +
+                            "=" + cookie.getValue());
                 }
             }
             Enumeration<String> hnames = hRequest.getHeaderNames();
diff --git a/java/org/apache/catalina/ha/context/ReplicatedContext.java b/java/org/apache/catalina/ha/context/ReplicatedContext.java
index 2c90579..6030595 100644
--- a/java/org/apache/catalina/ha/context/ReplicatedContext.java
+++ b/java/org/apache/catalina/ha/context/ReplicatedContext.java
@@ -201,15 +201,15 @@ public class ReplicatedContext extends StandardContext implements MapOwner {
         }
         @Override
         public boolean hasMoreElements() {
-            for ( int i=0; i<e.length; i++ ) {
-                if ( e[i].hasMoreElements() ) return true;
+            for (Enumeration<T> tEnumeration : e) {
+                if (tEnumeration.hasMoreElements()) return true;
             }
             return false;
         }
         @Override
         public T nextElement() {
-            for ( int i=0; i<e.length; i++ ) {
-                if ( e[i].hasMoreElements() ) return e[i].nextElement();
+            for (Enumeration<T> tEnumeration : e) {
+                if (tEnumeration.hasMoreElements()) return tEnumeration.nextElement();
             }
             return null;
 
diff --git a/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java b/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java
index cccc25b..940f581 100644
--- a/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java
+++ b/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java
@@ -369,11 +369,11 @@ public class FarmWarDeployer extends ClusterListener
                     webapp));
         msg = factory.readMessage(msg);
         while (msg != null) {
-            for (int i = 0; i < members.length; i++) {
+            for (Member member : members) {
                 if (log.isDebugEnabled())
                     log.debug(sm.getString("farmWarDeployer.sendFragment",
-                            contextName, webapp, members[i]));
-                getCluster().send(msg, members[i]);
+                            contextName, webapp, member));
+                getCluster().send(msg, member);
             }
             msg = factory.readMessage(msg);
         }
@@ -542,8 +542,8 @@ public class FarmWarDeployer extends ClusterListener
         if (files == null) {
             files = new String[0];
         }
-        for (int i = 0; i < files.length; i++) {
-            File file = new File(dir, files[i]);
+        for (String s : files) {
+            File file = new File(dir, s);
             if (file.isDirectory()) {
                 undeployDir(file);
             } else {
diff --git a/java/org/apache/catalina/ha/deploy/WarWatcher.java b/java/org/apache/catalina/ha/deploy/WarWatcher.java
index bbec31a..81cac16 100644
--- a/java/org/apache/catalina/ha/deploy/WarWatcher.java
+++ b/java/org/apache/catalina/ha/deploy/WarWatcher.java
@@ -78,12 +78,12 @@ public class WarWatcher {
             list = new File[0];
         }
         //first make sure all the files are listed in our current status
-        for (int i = 0; i < list.length; i++) {
-            if(!list[i].exists())
+        for (File file : list) {
+            if (!file.exists())
                 log.warn(sm.getString("warWatcher.listedFileDoesNotExist",
-                                      list[i], watchDir));
+                        file, watchDir));
 
-            addWarInfo(list[i]);
+            addWarInfo(file);
         }
 
         // Check all the status codes and update the FarmDeployer
diff --git a/java/org/apache/catalina/ha/session/DeltaManager.java b/java/org/apache/catalina/ha/session/DeltaManager.java
index 99d4285..ef607e3 100644
--- a/java/org/apache/catalina/ha/session/DeltaManager.java
+++ b/java/org/apache/catalina/ha/session/DeltaManager.java
@@ -617,8 +617,8 @@ public class DeltaManager extends ClusterManagerBase{
         ByteArrayOutputStream fos = new ByteArrayOutputStream();
         try (ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(fos))) {
             oos.writeObject(Integer.valueOf(currentSessions.length));
-            for(int i=0 ; i < currentSessions.length;i++) {
-                ((DeltaSession)currentSessions[i]).writeObjectData(oos);
+            for (Session currentSession : currentSessions) {
+                ((DeltaSession) currentSession).writeObjectData(oos);
             }
             // Flush and close the output stream
             oos.flush();
@@ -817,8 +817,8 @@ public class DeltaManager extends ClusterManagerBase{
         // Expire all active sessions
         if (log.isInfoEnabled()) log.info(sm.getString("deltaManager.expireSessions", getName()));
         Session sessions[] = findSessions();
-        for (int i = 0; i < sessions.length; i++) {
-            DeltaSession session = (DeltaSession) sessions[i];
+        for (Session value : sessions) {
+            DeltaSession session = (DeltaSession) value;
             if (!session.isValid())
                 continue;
             try {
@@ -1046,9 +1046,9 @@ public class DeltaManager extends ClusterManagerBase{
             log.debug("Start expire all sessions " + getName() + " at " + timeNow +
                     " sessioncount " + sessions.length);
         }
-        for (int i = 0; i < sessions.length; i++) {
-            if (sessions[i] instanceof DeltaSession) {
-                DeltaSession session = (DeltaSession) sessions[i];
+        for (Session value : sessions) {
+            if (value instanceof DeltaSession) {
+                DeltaSession session = (DeltaSession) value;
                 if (session.isPrimarySession()) {
                     if (session.isValid()) {
                         session.expire();
diff --git a/java/org/apache/catalina/ha/session/DeltaRequest.java b/java/org/apache/catalina/ha/session/DeltaRequest.java
index 6491e15..c13da90 100644
--- a/java/org/apache/catalina/ha/session/DeltaRequest.java
+++ b/java/org/apache/catalina/ha/session/DeltaRequest.java
@@ -163,51 +163,51 @@ public class DeltaRequest implements Externalizable {
         if ( !this.sessionId.equals( session.getId() ) )
             throw new java.lang.IllegalArgumentException(sm.getString("deltaRequest.ssid.mismatch"));
         session.access();
-        for ( int i=0; i<actions.size(); i++ ) {
-            AttributeInfo info = actions.get(i);
-            switch ( info.getType() ) {
+        for (AttributeInfo info : actions) {
+            switch (info.getType()) {
                 case TYPE_ATTRIBUTE:
-                    if ( info.getAction() == ACTION_SET ) {
-                        if ( log.isTraceEnabled() ) log.trace("Session.setAttribute('"+info.getName()+"', '"+info.getValue()+"')");
-                        session.setAttribute(info.getName(), info.getValue(),notifyListeners,false);
-                    }  else {
-                        if ( log.isTraceEnabled() ) log.trace("Session.removeAttribute('"+info.getName()+"')");
-                        session.removeAttribute(info.getName(),notifyListeners,false);
+                    if (info.getAction() == ACTION_SET) {
+                        if (log.isTraceEnabled())
+                            log.trace("Session.setAttribute('" + info.getName() + "', '" + info.getValue() + "')");
+                        session.setAttribute(info.getName(), info.getValue(), notifyListeners, false);
+                    } else {
+                        if (log.isTraceEnabled()) log.trace("Session.removeAttribute('" + info.getName() + "')");
+                        session.removeAttribute(info.getName(), notifyListeners, false);
                     }
 
                     break;
                 case TYPE_ISNEW:
-                    if ( log.isTraceEnabled() ) log.trace("Session.setNew('"+info.getValue()+"')");
-                    session.setNew(((Boolean)info.getValue()).booleanValue(),false);
+                    if (log.isTraceEnabled()) log.trace("Session.setNew('" + info.getValue() + "')");
+                    session.setNew(((Boolean) info.getValue()).booleanValue(), false);
                     break;
                 case TYPE_MAXINTERVAL:
-                    if ( log.isTraceEnabled() ) log.trace("Session.setMaxInactiveInterval('"+info.getValue()+"')");
-                    session.setMaxInactiveInterval(((Integer)info.getValue()).intValue(),false);
+                    if (log.isTraceEnabled()) log.trace("Session.setMaxInactiveInterval('" + info.getValue() + "')");
+                    session.setMaxInactiveInterval(((Integer) info.getValue()).intValue(), false);
                     break;
                 case TYPE_PRINCIPAL:
                     Principal p = null;
                     if (info.getAction() == ACTION_SET) {
                         p = (Principal) info.getValue();
                     }
-                    session.setPrincipal(p,false);
+                    session.setPrincipal(p, false);
                     break;
                 case TYPE_AUTHTYPE:
                     String authType = null;
-                    if ( info.getAction() == ACTION_SET ) {
-                        authType = (String)info.getValue();
+                    if (info.getAction() == ACTION_SET) {
+                        authType = (String) info.getValue();
                     }
-                    session.setAuthType(authType,false);
+                    session.setAuthType(authType, false);
                     break;
                 case TYPE_LISTENER:
                     SessionListener listener = (SessionListener) info.getValue();
                     if (info.getAction() == ACTION_SET) {
-                        session.addSessionListener(listener,false);
+                        session.addSessionListener(listener, false);
                     } else {
-                        session.removeSessionListener(listener,false);
+                        session.removeSessionListener(listener, false);
                     }
                     break;
-                default :
-                    throw new java.lang.IllegalArgumentException(sm.getString("deltaRequest.invalidAttributeInfoType", info));
+                default:
+                    throw new IllegalArgumentException(sm.getString("deltaRequest.invalidAttributeInfoType", info));
             }//switch
         }//for
         session.endAccess();
@@ -268,8 +268,7 @@ public class DeltaRequest implements Externalizable {
                     log.error(sm.getString("deltaRequest.removeUnable"),x);
                     info = new AttributeInfo();
                 }
-            }
-            else {
+            } else {
                 info = new AttributeInfo();
             }
             info.readExternal(in);
diff --git a/java/org/apache/catalina/ha/session/DeltaSession.java b/java/org/apache/catalina/ha/session/DeltaSession.java
index 469f8bb..8d0e6c2 100644
--- a/java/org/apache/catalina/ha/session/DeltaSession.java
+++ b/java/org/apache/catalina/ha/session/DeltaSession.java
@@ -939,12 +939,12 @@ public class DeltaSession extends StandardSession implements Externalizable,Clus
         String keys[] = keys();
         List<String> saveNames = new ArrayList<>();
         List<Object> saveValues = new ArrayList<>();
-        for (int i = 0; i < keys.length; i++) {
+        for (String key : keys) {
             Object value = null;
-            value = attributes.get(keys[i]);
-            if (value != null && !exclude(keys[i], value) &&
-                    isAttributeDistributable(keys[i], value)) {
-                saveNames.add(keys[i]);
+            value = attributes.get(key);
+            if (value != null && !exclude(key, value) &&
+                    isAttributeDistributable(key, value)) {
+                saveNames.add(key);
                 saveValues.add(value);
             }
         }
diff --git a/java/org/apache/catalina/ha/tcp/ReplicationValve.java b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
index 85e9c1a..144dbbb 100644
--- a/java/org/apache/catalina/ha/tcp/ReplicationValve.java
+++ b/java/org/apache/catalina/ha/tcp/ReplicationValve.java
@@ -543,11 +543,11 @@ public class ReplicationValve
     protected void sendInvalidSessions(ClusterManager manager) {
         String[] invalidIds=manager.getInvalidatedSessions();
         if ( invalidIds.length > 0 ) {
-            for ( int i=0;i<invalidIds.length; i++ ) {
+            for (String invalidId : invalidIds) {
                 try {
-                    send(manager,invalidIds[i]);
-                } catch ( Exception x ) {
-                    log.error(sm.getString("ReplicationValve.send.invalid.failure",invalidIds[i]),x);
+                    send(manager, invalidId);
+                } catch (Exception x) {
+                    log.error(sm.getString("ReplicationValve.send.invalid.failure", invalidId), x);
                 }
             }
         }
diff --git a/java/org/apache/catalina/loader/WebappClassLoaderBase.java b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
index 4d83153..42dad40 100644
--- a/java/org/apache/catalina/loader/WebappClassLoaderBase.java
+++ b/java/org/apache/catalina/loader/WebappClassLoaderBase.java
@@ -1953,20 +1953,20 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
             Method expungeStaleEntriesMethod = tlmClass.getDeclaredMethod("expungeStaleEntries");
             expungeStaleEntriesMethod.setAccessible(true);
 
-            for (int i = 0; i < threads.length; i++) {
+            for (Thread thread : threads) {
                 Object threadLocalMap;
-                if (threads[i] != null) {
+                if (thread != null) {
 
                     // Clear the first map
-                    threadLocalMap = threadLocalsField.get(threads[i]);
-                    if (null != threadLocalMap){
+                    threadLocalMap = threadLocalsField.get(thread);
+                    if (null != threadLocalMap) {
                         expungeStaleEntriesMethod.invoke(threadLocalMap);
                         checkThreadLocalMapForLeaks(threadLocalMap, tableField);
                     }
 
                     // Clear the second map
-                    threadLocalMap =inheritableThreadLocalsField.get(threads[i]);
-                    if (null != threadLocalMap){
+                    threadLocalMap = inheritableThreadLocalsField.get(thread);
+                    if (null != threadLocalMap) {
                         expungeStaleEntriesMethod.invoke(threadLocalMap);
                         checkThreadLocalMapForLeaks(threadLocalMap, tableField);
                     }
@@ -1999,8 +1999,7 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
         if (map != null) {
             Object[] table = (Object[]) internalTableField.get(map);
             if (table != null) {
-                for (int j =0; j < table.length; j++) {
-                    Object obj = table[j];
+                for (Object obj : table) {
                     if (obj != null) {
                         boolean keyLoadedByWebapp = false;
                         boolean valueLoadedByWebapp = false;
@@ -2041,14 +2040,15 @@ public abstract class WebappClassLoaderBase extends URLClassLoader
                                             "webappClassLoader.checkThreadLocalsForLeaks.badValue",
                                             args[3]), e);
                                     args[4] = sm.getString(
-                                    "webappClassLoader.checkThreadLocalsForLeaks.unknown");
+                                            "webappClassLoader.checkThreadLocalsForLeaks.unknown");
                                 }
                             }
                             if (valueLoadedByWebapp) {
                                 log.error(sm.getString(
                                         "webappClassLoader.checkThreadLocalsForLeaks",
                                         args));
-                            } else if (value == null) {
+                            }
+                            else if (value == null) {
                                 if (log.isDebugEnabled()) {
                                     log.debug(sm.getString(
                                             "webappClassLoader.checkThreadLocalsForLeaksNull",
diff --git a/java/org/apache/catalina/loader/WebappLoader.java b/java/org/apache/catalina/loader/WebappLoader.java
index 03c738b..0e03855 100644
--- a/java/org/apache/catalina/loader/WebappLoader.java
+++ b/java/org/apache/catalina/loader/WebappLoader.java
@@ -242,8 +242,8 @@ public class WebappLoader extends LifecycleMBeanBase implements Loader{
     public String getLoaderRepositoriesString() {
         String repositories[]=getLoaderRepositories();
         StringBuilder sb=new StringBuilder();
-        for( int i=0; i<repositories.length ; i++ ) {
-            sb.append( repositories[i]).append(":");
+        for (String repository : repositories) {
+            sb.append(repository).append(":");
         }
         return sb.toString();
     }
@@ -495,20 +495,20 @@ public class WebappLoader extends LifecycleMBeanBase implements Loader{
     private boolean buildClassPath(StringBuilder classpath, ClassLoader loader) {
         if (loader instanceof URLClassLoader) {
             URL repositories[] = ((URLClassLoader) loader).getURLs();
-                for (int i = 0; i < repositories.length; i++) {
-                    String repository = repositories[i].toString();
-                    if (repository.startsWith("file://"))
-                        repository = UDecoder.URLDecode(repository.substring(7), StandardCharsets.UTF_8);
-                    else if (repository.startsWith("file:"))
-                        repository = UDecoder.URLDecode(repository.substring(5), StandardCharsets.UTF_8);
-                    else
-                        continue;
-                    if (repository == null)
-                        continue;
-                    if (classpath.length() > 0)
-                        classpath.append(File.pathSeparator);
-                    classpath.append(repository);
-                }
+            for (URL url : repositories) {
+                String repository = url.toString();
+                if (repository.startsWith("file://"))
+                    repository = UDecoder.URLDecode(repository.substring(7), StandardCharsets.UTF_8);
+                else if (repository.startsWith("file:"))
+                    repository = UDecoder.URLDecode(repository.substring(5), StandardCharsets.UTF_8);
+                else
+                    continue;
+                if (repository == null)
+                    continue;
+                if (classpath.length() > 0)
+                    classpath.append(File.pathSeparator);
+                classpath.append(repository);
+            }
         } else if (loader == ClassLoader.getSystemClassLoader()){
             // Java 9 onwards. The internal class loaders no longer extend
             // URLCLassLoader
diff --git a/java/org/apache/catalina/manager/HTMLManagerServlet.java b/java/org/apache/catalina/manager/HTMLManagerServlet.java
index 37657ba..5bcd1d4 100644
--- a/java/org/apache/catalina/manager/HTMLManagerServlet.java
+++ b/java/org/apache/catalina/manager/HTMLManagerServlet.java
@@ -1015,10 +1015,9 @@ public final class HTMLManagerServlet extends ManagerServlet {
             return 0;
         }
         int nbAffectedSessions = 0;
-        for (int i = 0; i < sessionIds.length; ++i) {
-            String sessionId = sessionIds[i];
+        for (String sessionId : sessionIds) {
             HttpSession session =
-                getSessionForNameAndId(cn, sessionId, smClient).getSession();
+                    getSessionForNameAndId(cn, sessionId, smClient).getSession();
             if (null == session) {
                 // Shouldn't happen, but let's play nice...
                 if (debug >= 1) {
diff --git a/java/org/apache/catalina/manager/ManagerServlet.java b/java/org/apache/catalina/manager/ManagerServlet.java
index 44f0db5..58c2ed5 100644
--- a/java/org/apache/catalina/manager/ManagerServlet.java
+++ b/java/org/apache/catalina/manager/ManagerServlet.java
@@ -1069,11 +1069,11 @@ public class ManagerServlet extends HttpServlet implements ContainerServlet {
         writer.println(smClient.getString("managerServlet.listed",
                                     host.getName()));
         Container[] contexts = host.findChildren();
-        for (int i = 0; i < contexts.length; i++) {
-            Context context = (Context) contexts[i];
-            if (context != null ) {
+        for (Container container : contexts) {
+            Context context = (Context) container;
+            if (context != null) {
                 String displayPath = context.getPath();
-                if( displayPath.equals("") )
+                if (displayPath.equals(""))
                     displayPath = "/";
                 if (context.getState().isAvailable()) {
                     writer.println(smClient.getString("managerServlet.listitem",
@@ -1296,13 +1296,13 @@ public class ManagerServlet extends HttpServlet implements ContainerServlet {
             int[] timeout = new int[maxCount + 1];
             int notimeout = 0;
             int expired = 0;
-            for (int i = 0; i < sessions.length; i++) {
-                int time = (int) (sessions[i].getIdleTimeInternal() / 1000L);
-                if (idle >= 0 && time >= idle*60) {
-                    sessions[i].expire();
+            for (Session session : sessions) {
+                int time = (int) (session.getIdleTimeInternal() / 1000L);
+                if (idle >= 0 && time >= idle * 60) {
+                    session.expire();
                     expired++;
                 }
-                time=time/60/histoInterval;
+                time = time / 60 / histoInterval;
                 if (time < 0)
                     notimeout++;
                 else if (time >= maxCount)
diff --git a/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java b/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java
index fa03b6b..1ff22e0 100644
--- a/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java
+++ b/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java
@@ -319,9 +319,8 @@ public final class HTMLHostManagerServlet extends HostManagerServlet {
 
         TreeMap<String,String> sortedHostNamesMap = new TreeMap<>();
 
-        for (int i = 0; i < hostNames.length; i++) {
-            String displayPath = hostNames[i];
-            sortedHostNamesMap.put(displayPath, hostNames[i]);
+        for (String displayPath : hostNames) {
+            sortedHostNamesMap.put(displayPath, displayPath);
         }
 
         String hostsStart =
diff --git a/java/org/apache/catalina/manager/host/HostManagerServlet.java b/java/org/apache/catalina/manager/host/HostManagerServlet.java
index df9116d..b18f413 100644
--- a/java/org/apache/catalina/manager/host/HostManagerServlet.java
+++ b/java/org/apache/catalina/manager/host/HostManagerServlet.java
@@ -519,8 +519,8 @@ public class HostManagerServlet
         writer.println(smClient.getString("hostManagerServlet.listed",
                 engine.getName()));
         Container[] hosts = engine.findChildren();
-        for (int i = 0; i < hosts.length; i++) {
-            Host host = (Host) hosts[i];
+        for (Container container : hosts) {
+            Host host = (Host) container;
             String name = host.getName();
             String[] aliases = host.findAliases();
             writer.println(smClient.getString("hostManagerServlet.listitem",
diff --git a/java/org/apache/catalina/manager/util/SessionUtils.java b/java/org/apache/catalina/manager/util/SessionUtils.java
index d14deb4..a1701f9 100644
--- a/java/org/apache/catalina/manager/util/SessionUtils.java
+++ b/java/org/apache/catalina/manager/util/SessionUtils.java
@@ -86,18 +86,18 @@ public class SessionUtils {
             Locale locale = null;
 
             // First search "known locations"
-            for (int i = 0; i < LOCALE_TEST_ATTRIBUTES.length; ++i) {
-                Object obj = in_session.getAttribute(LOCALE_TEST_ATTRIBUTES[i]);
+            for (String localeTestAttribute : LOCALE_TEST_ATTRIBUTES) {
+                Object obj = in_session.getAttribute(localeTestAttribute);
                 if (obj instanceof Locale) {
                     locale = (Locale) obj;
                     break;
                 }
-                obj = in_session.getAttribute(LOCALE_TEST_ATTRIBUTES[i].toLowerCase(Locale.ENGLISH));
+                obj = in_session.getAttribute(localeTestAttribute.toLowerCase(Locale.ENGLISH));
                 if (obj instanceof Locale) {
                     locale = (Locale) obj;
                     break;
                 }
-                obj = in_session.getAttribute(LOCALE_TEST_ATTRIBUTES[i].toUpperCase(Locale.ENGLISH));
+                obj = in_session.getAttribute(localeTestAttribute.toUpperCase(Locale.ENGLISH));
                 if (obj instanceof Locale) {
                     locale = (Locale) obj;
                     break;
@@ -181,18 +181,18 @@ public class SessionUtils {
         try {
             Object user = null;
             // First search "known locations"
-            for (int i = 0; i < USER_TEST_ATTRIBUTES.length; ++i) {
-                Object obj = httpSession.getAttribute(USER_TEST_ATTRIBUTES[i]);
+            for (String userTestAttribute : USER_TEST_ATTRIBUTES) {
+                Object obj = httpSession.getAttribute(userTestAttribute);
                 if (null != obj) {
                     user = obj;
                     break;
                 }
-                obj = httpSession.getAttribute(USER_TEST_ATTRIBUTES[i].toLowerCase(Locale.ENGLISH));
+                obj = httpSession.getAttribute(userTestAttribute.toLowerCase(Locale.ENGLISH));
                 if (null != obj) {
                     user = obj;
                     break;
                 }
-                obj = httpSession.getAttribute(USER_TEST_ATTRIBUTES[i].toUpperCase(Locale.ENGLISH));
+                obj = httpSession.getAttribute(userTestAttribute.toUpperCase(Locale.ENGLISH));
                 if (null != obj) {
                     user = obj;
                     break;
diff --git a/java/org/apache/catalina/mapper/Mapper.java b/java/org/apache/catalina/mapper/Mapper.java
index 5e57db5..a5f9dc2 100644
--- a/java/org/apache/catalina/mapper/Mapper.java
+++ b/java/org/apache/catalina/mapper/Mapper.java
@@ -554,8 +554,8 @@ public final class Mapper {
                 if (removeMap(oldWrappers, newWrappers, name)) {
                     // Recalculate nesting
                     context.nesting = 0;
-                    for (int i = 0; i < newWrappers.length; i++) {
-                        int slashCount = slashCount(newWrappers[i].name);
+                    for (MappedWrapper newWrapper : newWrappers) {
+                        int slashCount = slashCount(newWrapper.name);
                         if (slashCount > context.nesting) {
                             context.nesting = slashCount;
                         }
diff --git a/java/org/apache/catalina/mbeans/ContainerMBean.java b/java/org/apache/catalina/mbeans/ContainerMBean.java
index d696782..e8bc8c1 100644
--- a/java/org/apache/catalina/mbeans/ContainerMBean.java
+++ b/java/org/apache/catalina/mbeans/ContainerMBean.java
@@ -136,11 +136,11 @@ public class ContainerMBean extends BaseCatalinaMBean<ContainerBase> {
 
         if (container != null) {
             Valve[] valves = container.getPipeline().getValves();
-            for (int i = 0; i < valves.length; i++) {
-                if (valves[i] instanceof JmxEnabled) {
-                    ObjectName voname = ((JmxEnabled) valves[i]).getObjectName();
+            for (Valve valve : valves) {
+                if (valve instanceof JmxEnabled) {
+                    ObjectName voname = ((JmxEnabled) valve).getObjectName();
                     if (voname.equals(oname)) {
-                        container.getPipeline().removeValve(valves[i]);
+                        container.getPipeline().removeValve(valve);
                     }
                 }
             }
diff --git a/java/org/apache/catalina/mbeans/MBeanFactory.java b/java/org/apache/catalina/mbeans/MBeanFactory.java
index 3c7bd1e..050031b 100644
--- a/java/org/apache/catalina/mbeans/MBeanFactory.java
+++ b/java/org/apache/catalina/mbeans/MBeanFactory.java
@@ -172,8 +172,8 @@ public class MBeanFactory {
         String domain = oname.getDomain();
         if (container instanceof Server) {
             Service[] services = ((Server)container).findServices();
-            for (int i = 0; i < services.length; i++) {
-                service = (StandardService) services[i];
+            for (Service value : services) {
+                service = (StandardService) value;
                 if (domain.equals(service.getObjectName().getDomain())) {
                     break;
                 }
@@ -692,25 +692,26 @@ public class MBeanFactory {
 
         Connector conns[] = service.findConnectors();
 
-        for (int i = 0; i < conns.length; i++) {
+        for (Connector conn : conns) {
             String connAddress = null;
-            Object objConnAddress = conns[i].getProperty("address");
+            Object objConnAddress = conn.getProperty("address");
             if (objConnAddress != null) {
                 connAddress = ((InetAddress) objConnAddress).getHostAddress();
             }
-            String connPort = ""+conns[i].getPortWithOffset();
+            String connPort = "" + conn.getPortWithOffset();
 
             if (address == null) {
                 // Don't combine this with outer if or we could get an NPE in
                 // 'else if' below
                 if (connAddress == null && port.equals(connPort)) {
-                    service.removeConnector(conns[i]);
-                    conns[i].destroy();
+                    service.removeConnector(conn);
+                    conn.destroy();
                     break;
                 }
-            } else if (address.equals(connAddress) && port.equals(connPort)) {
-                service.removeConnector(conns[i]);
-                conns[i].destroy();
+            }
+            else if (address.equals(connAddress) && port.equals(connPort)) {
+                service.removeConnector(conn);
+                conn.destroy();
                 break;
             }
         }
@@ -876,10 +877,10 @@ public class MBeanFactory {
         ObjectName oname = new ObjectName(name);
         Container container = getParentContainerFromChild(oname);
         Valve[] valves = container.getPipeline().getValves();
-        for (int i = 0; i < valves.length; i++) {
-            ObjectName voname = ((JmxEnabled) valves[i]).getObjectName();
+        for (Valve valve : valves) {
+            ObjectName voname = ((JmxEnabled) valve).getObjectName();
             if (voname.equals(oname)) {
-                container.getPipeline().removeValve(valves[i]);
+                container.getPipeline().removeValve(valve);
             }
         }
     }
diff --git a/java/org/apache/catalina/mbeans/MBeanUtils.java b/java/org/apache/catalina/mbeans/MBeanUtils.java
index 67a5051..af95dc7 100644
--- a/java/org/apache/catalina/mbeans/MBeanUtils.java
+++ b/java/org/apache/catalina/mbeans/MBeanUtils.java
@@ -92,9 +92,9 @@ public class MBeanUtils {
 
         // Deal with exceptions to the standard rule
         String className = component.getClass().getName();
-        for (int i = 0; i < exceptions.length; i++) {
-            if (className.equals(exceptions[i][0])) {
-                return exceptions[i][1];
+        for (String[] exception : exceptions) {
+            if (className.equals(exception[0])) {
+                return exception[1];
             }
         }
 
diff --git a/java/org/apache/catalina/mbeans/NamingResourcesMBean.java b/java/org/apache/catalina/mbeans/NamingResourcesMBean.java
index 6a59455..81386e3 100644
--- a/java/org/apache/catalina/mbeans/NamingResourcesMBean.java
+++ b/java/org/apache/catalina/mbeans/NamingResourcesMBean.java
@@ -65,13 +65,13 @@ public class NamingResourcesMBean extends BaseModelMBean {
     public String[] getEnvironments() {
         ContextEnvironment[] envs = ((NamingResourcesImpl)this.resource).findEnvironments();
         List<String> results = new ArrayList<>();
-        for (int i = 0; i < envs.length; i++) {
+        for (ContextEnvironment env : envs) {
             try {
-                ObjectName oname = MBeanUtils.createObjectName(managed.getDomain(), envs[i]);
+                ObjectName oname = MBeanUtils.createObjectName(managed.getDomain(), env);
                 results.add(oname.toString());
             } catch (MalformedObjectNameException e) {
                 IllegalArgumentException iae = new IllegalArgumentException(
-                        sm.getString("namingResourcesMBean.createObjectNameError.environment", envs[i]));
+                        sm.getString("namingResourcesMBean.createObjectNameError.environment", env));
                 iae.initCause(e);
                 throw iae;
             }
@@ -88,13 +88,13 @@ public class NamingResourcesMBean extends BaseModelMBean {
     public String[] getResources() {
         ContextResource[] resources = ((NamingResourcesImpl)this.resource).findResources();
         List<String> results = new ArrayList<>();
-        for (int i = 0; i < resources.length; i++) {
+        for (ContextResource contextResource : resources) {
             try {
-                ObjectName oname = MBeanUtils.createObjectName(managed.getDomain(), resources[i]);
+                ObjectName oname = MBeanUtils.createObjectName(managed.getDomain(), contextResource);
                 results.add(oname.toString());
             } catch (MalformedObjectNameException e) {
                 IllegalArgumentException iae = new IllegalArgumentException(
-                        sm.getString("namingResourcesMBean.createObjectNameError.resource", resources[i]));
+                        sm.getString("namingResourcesMBean.createObjectNameError.resource", contextResource));
                 iae.initCause(e);
                 throw iae;
             }
@@ -112,14 +112,14 @@ public class NamingResourcesMBean extends BaseModelMBean {
         ContextResourceLink[] resourceLinks =
                 ((NamingResourcesImpl)this.resource).findResourceLinks();
         List<String> results = new ArrayList<>();
-        for (int i = 0; i < resourceLinks.length; i++) {
+        for (ContextResourceLink resourceLink : resourceLinks) {
             try {
                 ObjectName oname =
-                        MBeanUtils.createObjectName(managed.getDomain(), resourceLinks[i]);
+                        MBeanUtils.createObjectName(managed.getDomain(), resourceLink);
                 results.add(oname.toString());
             } catch (MalformedObjectNameException e) {
                 IllegalArgumentException iae = new IllegalArgumentException(
-                        sm.getString("namingResourcesMBean.createObjectNameError.resourceLink", resourceLinks[i]));
+                        sm.getString("namingResourcesMBean.createObjectNameError.resourceLink", resourceLink));
                 iae.initCause(e);
                 throw iae;
             }
diff --git a/java/org/apache/catalina/realm/GenericPrincipal.java b/java/org/apache/catalina/realm/GenericPrincipal.java
index 9c96707..72482d5 100644
--- a/java/org/apache/catalina/realm/GenericPrincipal.java
+++ b/java/org/apache/catalina/realm/GenericPrincipal.java
@@ -285,8 +285,8 @@ public class GenericPrincipal implements TomcatPrincipal, Serializable {
         StringBuilder sb = new StringBuilder("GenericPrincipal[");
         sb.append(this.name);
         sb.append("(");
-        for (int i = 0; i < roles.length; i++ ) {
-            sb.append( roles[i]).append(",");
+        for (String role : roles) {
+            sb.append(role).append(",");
         }
         sb.append(")]");
         return sb.toString();
diff --git a/java/org/apache/catalina/realm/JAASCallbackHandler.java b/java/org/apache/catalina/realm/JAASCallbackHandler.java
index 407414e..901031c 100644
--- a/java/org/apache/catalina/realm/JAASCallbackHandler.java
+++ b/java/org/apache/catalina/realm/JAASCallbackHandler.java
@@ -92,8 +92,7 @@ public class JAASCallbackHandler implements CallbackHandler {
 
         if (password != null && realm.hasMessageDigest()) {
             this.password = realm.getCredentialHandler().mutate(password);
-        }
-        else {
+        } else {
             this.password = password;
         }
         this.nonce = nonce;
@@ -183,44 +182,53 @@ public class JAASCallbackHandler implements CallbackHandler {
     public void handle(Callback callbacks[])
         throws IOException, UnsupportedCallbackException {
 
-        for (int i = 0; i < callbacks.length; i++) {
+        for (Callback callback : callbacks) {
 
-            if (callbacks[i] instanceof NameCallback) {
+            if (callback instanceof NameCallback) {
                 if (realm.getContainer().getLogger().isTraceEnabled())
                     realm.getContainer().getLogger().trace(sm.getString("jaasCallback.username", username));
-                ((NameCallback) callbacks[i]).setName(username);
-            } else if (callbacks[i] instanceof PasswordCallback) {
+                ((NameCallback) callback).setName(username);
+            }
+            else if (callback instanceof PasswordCallback) {
                 final char[] passwordcontents;
                 if (password != null) {
                     passwordcontents = password.toCharArray();
                 } else {
                     passwordcontents = new char[0];
                 }
-                ((PasswordCallback) callbacks[i]).setPassword
-                    (passwordcontents);
-            } else if (callbacks[i] instanceof TextInputCallback) {
-                TextInputCallback cb = ((TextInputCallback) callbacks[i]);
+                ((PasswordCallback) callback).setPassword
+                        (passwordcontents);
+            }
+            else if (callback instanceof TextInputCallback) {
+                TextInputCallback cb = ((TextInputCallback) callback);
                 if (cb.getPrompt().equals("nonce")) {
                     cb.setText(nonce);
-                } else if (cb.getPrompt().equals("nc")) {
+                }
+                else if (cb.getPrompt().equals("nc")) {
                     cb.setText(nc);
-                } else if (cb.getPrompt().equals("cnonce")) {
+                }
+                else if (cb.getPrompt().equals("cnonce")) {
                     cb.setText(cnonce);
-                } else if (cb.getPrompt().equals("qop")) {
+                }
+                else if (cb.getPrompt().equals("qop")) {
                     cb.setText(qop);
-                } else if (cb.getPrompt().equals("realmName")) {
+                }
+                else if (cb.getPrompt().equals("realmName")) {
                     cb.setText(realmName);
-                } else if (cb.getPrompt().equals("md5a2")) {
+                }
+                else if (cb.getPrompt().equals("md5a2")) {
                     cb.setText(md5a2);
-                } else if (cb.getPrompt().equals("authMethod")) {
+                }
+                else if (cb.getPrompt().equals("authMethod")) {
                     cb.setText(authMethod);
-                } else if (cb.getPrompt().equals("catalinaBase")) {
+                }
+                else if (cb.getPrompt().equals("catalinaBase")) {
                     cb.setText(realm.getContainer().getCatalinaBase().getAbsolutePath());
                 } else {
-                    throw new UnsupportedCallbackException(callbacks[i]);
+                    throw new UnsupportedCallbackException(callback);
                 }
             } else {
-                throw new UnsupportedCallbackException(callbacks[i]);
+                throw new UnsupportedCallbackException(callback);
             }
         }
     }
diff --git a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
index 75003f5..d7cdb4a 100644
--- a/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
+++ b/java/org/apache/catalina/realm/JAASMemoryLoginModule.java
@@ -196,8 +196,8 @@ public class JAASMemoryLoginModule extends MemoryRealm implements LoginModule {
             // JAASRealm
             if (principal instanceof GenericPrincipal) {
                 String roles[] = ((GenericPrincipal) principal).getRoles();
-                for (int i = 0; i < roles.length; i++) {
-                    subject.getPrincipals().add(new GenericPrincipal(roles[i]));
+                for (String role : roles) {
+                    subject.getPrincipals().add(new GenericPrincipal(role));
                 }
 
             }
diff --git a/java/org/apache/catalina/realm/JAASRealm.java b/java/org/apache/catalina/realm/JAASRealm.java
index 1d6d79f..ab85d2b 100644
--- a/java/org/apache/catalina/realm/JAASRealm.java
+++ b/java/org/apache/catalina/realm/JAASRealm.java
@@ -279,18 +279,18 @@ public class JAASRealm extends RealmBase {
             loader = Thread.currentThread().getContextClassLoader();
 
         String[] classNames = classNamesString.split("[ ]*,[ ]*");
-        for (int i=0; i<classNames.length; i++) {
-            if (classNames[i].length()==0) continue;
+        for (String className : classNames) {
+            if (className.length() == 0) continue;
             try {
-                Class<?> principalClass = Class.forName(classNames[i], false,
+                Class<?> principalClass = Class.forName(className, false,
                         loader);
                 if (Principal.class.isAssignableFrom(principalClass)) {
-                    classNamesList.add(classNames[i]);
+                    classNamesList.add(className);
                 } else {
-                    log.error(sm.getString("jaasRealm.notPrincipal", classNames[i]));
+                    log.error(sm.getString("jaasRealm.notPrincipal", className));
                 }
             } catch (ClassNotFoundException e) {
-                log.error(sm.getString("jaasRealm.classNotFound", classNames[i]));
+                log.error(sm.getString("jaasRealm.classNotFound", className));
             }
         }
     }
diff --git a/java/org/apache/catalina/realm/JNDIRealm.java b/java/org/apache/catalina/realm/JNDIRealm.java
index f3b4fd0..445834e 100644
--- a/java/org/apache/catalina/realm/JNDIRealm.java
+++ b/java/org/apache/catalina/realm/JNDIRealm.java
@@ -1648,8 +1648,7 @@ public class JNDIRealm extends RealmBase {
 
         if (userSubtree) {
             constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
-        }
-        else {
+        } else {
             constraints.setSearchScope(SearchControls.ONELEVEL_SCOPE);
         }
 
@@ -1882,8 +1881,7 @@ System.out.println("getUserBySearch " + username);
         if (connectionPassword != null) {
             context.addToEnvironment(Context.SECURITY_CREDENTIALS,
                                      connectionPassword);
-        }
-        else {
+        } else {
             context.removeFromEnvironment(Context.SECURITY_CREDENTIALS);
         }
     }
diff --git a/java/org/apache/catalina/realm/RealmBase.java b/java/org/apache/catalina/realm/RealmBase.java
index 3334452..de02cee 100644
--- a/java/org/apache/catalina/realm/RealmBase.java
+++ b/java/org/apache/catalina/realm/RealmBase.java
@@ -446,12 +446,12 @@ public abstract class RealmBase extends LifecycleMBeanBase implements Realm {
         if (log.isDebugEnabled())
             log.debug("Authenticating client certificate chain");
         if (validate) {
-            for (int i = 0; i < certs.length; i++) {
+            for (X509Certificate cert : certs) {
                 if (log.isDebugEnabled())
                     log.debug(" Checking validity for '" +
-                        certs[i].getSubjectDN().getName() + "'");
+                            cert.getSubjectDN().getName() + "'");
                 try {
-                    certs[i].checkValidity();
+                    cert.checkValidity();
                 } catch (Exception e) {
                     if (log.isDebugEnabled())
                         log.debug("  Validity exception", e);
@@ -577,21 +577,21 @@ public abstract class RealmBase extends LifecycleMBeanBase implements Realm {
                     constraints[i].included(uri, method));
             }
 
-            for(int j=0; j < collection.length; j++){
-                String [] patterns = collection[j].findPatterns();
+            for (SecurityCollection securityCollection : collection) {
+                String[] patterns = securityCollection.findPatterns();
 
                 // If patterns is null, continue to avoid an NPE
                 // See Bugzilla 30624
-                if ( patterns == null) {
+                if (patterns == null) {
                     continue;
                 }
 
-                for(int k=0; k < patterns.length; k++) {
+                for (String pattern : patterns) {
                     // Exact match including special case for the context root.
-                    if(uri.equals(patterns[k]) || patterns[k].length() == 0 && uri.equals("/")) {
+                    if (uri.equals(pattern) || pattern.length() == 0 && uri.equals("/")) {
                         found = true;
-                        if(collection[j].findMethod(method)) {
-                            if(results == null) {
+                        if (securityCollection.findMethod(method)) {
+                            if (results == null) {
                                 results = new ArrayList<>();
                             }
                             results.add(constraints[i]);
@@ -622,46 +622,46 @@ public abstract class RealmBase extends LifecycleMBeanBase implements Realm {
                     constraints[i].included(uri, method));
             }
 
-            for(int j=0; j < collection.length; j++){
-                String [] patterns = collection[j].findPatterns();
+            for (SecurityCollection securityCollection : collection) {
+                String[] patterns = securityCollection.findPatterns();
 
                 // If patterns is null, continue to avoid an NPE
                 // See Bugzilla 30624
-                if ( patterns == null) {
+                if (patterns == null) {
                     continue;
                 }
 
                 boolean matched = false;
                 int length = -1;
-                for(int k=0; k < patterns.length; k++) {
-                    String pattern = patterns[k];
-                    if(pattern.startsWith("/") && pattern.endsWith("/*") &&
-                       pattern.length() >= longest) {
+                for (String pattern : patterns) {
+                    if (pattern.startsWith("/") && pattern.endsWith("/*") &&
+                            pattern.length() >= longest) {
 
-                        if(pattern.length() == 2) {
+                        if (pattern.length() == 2) {
                             matched = true;
                             length = pattern.length();
-                        } else if(pattern.regionMatches(0,uri,0,
-                                                        pattern.length()-1) ||
-                                  (pattern.length()-2 == uri.length() &&
-                                   pattern.regionMatches(0,uri,0,
-                                                        pattern.length()-2))) {
+                        }
+                        else if (pattern.regionMatches(0, uri, 0,
+                                pattern.length() - 1) ||
+                                (pattern.length() - 2 == uri.length() &&
+                                        pattern.regionMatches(0, uri, 0,
+                                                pattern.length() - 2))) {
                             matched = true;
                             length = pattern.length();
                         }
                     }
                 }
-                if(matched) {
-                    if(length > longest) {
+                if (matched) {
+                    if (length > longest) {
                         found = false;
-                        if(results != null) {
+                        if (results != null) {
                             results.clear();
                         }
                         longest = length;
                     }
-                    if(collection[j].findMethod(method)) {
+                    if (securityCollection.findMethod(method)) {
                         found = true;
-                        if(results == null) {
+                        if (results == null) {
                             results = new ArrayList<>();
                         }
                         results.add(constraints[i]);
@@ -746,25 +746,24 @@ public abstract class RealmBase extends LifecycleMBeanBase implements Realm {
                     constraints[i].included(uri, method));
             }
 
-            for(int j=0; j < collection.length; j++){
-                String [] patterns = collection[j].findPatterns();
+            for (SecurityCollection securityCollection : collection) {
+                String[] patterns = securityCollection.findPatterns();
 
                 // If patterns is null, continue to avoid an NPE
                 // See Bugzilla 30624
-                if ( patterns == null) {
+                if (patterns == null) {
                     continue;
                 }
 
                 boolean matched = false;
-                for(int k = 0; k < patterns.length; k++) {
-                    String pattern = patterns[k];
+                for (String pattern : patterns) {
                     if (pattern.equals("/")) {
                         matched = true;
                         break;
                     }
                 }
-                if(matched) {
-                    if(results == null) {
+                if (matched) {
+                    if (results == null) {
                         results = new ArrayList<>();
                     }
                     results.add(constraints[i]);
@@ -820,9 +819,7 @@ public abstract class RealmBase extends LifecycleMBeanBase implements Realm {
         Principal principal = request.getPrincipal();
         boolean status = false;
         boolean denyfromall = false;
-        for(int i=0; i < constraints.length; i++) {
-            SecurityConstraint constraint = constraints[i];
-
+        for (SecurityConstraint constraint : constraints) {
             String roles[];
             if (constraint.getAllRoles()) {
                 // * means all roles defined in web.xml
@@ -842,31 +839,33 @@ public abstract class RealmBase extends LifecycleMBeanBase implements Realm {
                     log.debug("Passing all authenticated users");
                 }
                 status = true;
-            } else if (roles.length == 0 && !constraint.getAllRoles() &&
+            }
+            else if (roles.length == 0 && !constraint.getAllRoles() &&
                     !constraint.getAuthenticatedUsers()) {
-                if(constraint.getAuthConstraint()) {
-                    if( log.isDebugEnabled() )
+                if (constraint.getAuthConstraint()) {
+                    if (log.isDebugEnabled())
                         log.debug("No roles");
                     status = false; // No listed roles means no access at all
                     denyfromall = true;
                     break;
                 }
 
-                if(log.isDebugEnabled())
+                if (log.isDebugEnabled())
                     log.debug("Passing all access");
                 status = true;
-            } else if (principal == null) {
+            }
+            else if (principal == null) {
                 if (log.isDebugEnabled())
                     log.debug("  No user authenticated, cannot grant access");
             } else {
-                for (int j = 0; j < roles.length; j++) {
-                    if (hasRole(request.getWrapper(), principal, roles[j])) {
+                for (String role : roles) {
+                    if (hasRole(request.getWrapper(), principal, role)) {
                         status = true;
-                        if( log.isDebugEnabled() )
-                            log.debug( "Role found:  " + roles[j]);
+                        if (log.isDebugEnabled())
+                            log.debug("Role found:  " + role);
                     }
-                    else if( log.isDebugEnabled() )
-                        log.debug( "No role found:  " + roles[j]);
+                    else if (log.isDebugEnabled())
+                        log.debug("No role found:  " + role);
                 }
             }
         }
@@ -877,8 +876,7 @@ public abstract class RealmBase extends LifecycleMBeanBase implements Realm {
                 log.debug("Checking for all roles mode: " + allRolesMode);
             }
             // Check for an all roles(role-name="*")
-            for (int i = 0; i < constraints.length; i++) {
-                SecurityConstraint constraint = constraints[i];
+            for (SecurityConstraint constraint : constraints) {
                 String roles[];
                 // If the all roles mode exists, sets
                 if (constraint.getAllRoles()) {
@@ -1002,8 +1000,7 @@ public abstract class RealmBase extends LifecycleMBeanBase implements Realm {
                 log.debug("  No applicable security constraint defined");
             return true;
         }
-        for(int i=0; i < constraints.length; i++) {
-            SecurityConstraint constraint = constraints[i];
+        for (SecurityConstraint constraint : constraints) {
             String userConstraint = constraint.getUserConstraint();
             if (userConstraint == null) {
                 if (log.isDebugEnabled())
diff --git a/java/org/apache/catalina/session/FileStore.java b/java/org/apache/catalina/session/FileStore.java
index 0f63c84..0d0f41c 100644
--- a/java/org/apache/catalina/session/FileStore.java
+++ b/java/org/apache/catalina/session/FileStore.java
@@ -156,8 +156,8 @@ public final class FileStore extends StoreBase {
     @Override
     public void clear() throws IOException {
         String[] keys = keys();
-        for (int i = 0; i < keys.length; i++) {
-            remove(keys[i]);
+        for (String key : keys) {
+            remove(key);
         }
     }
 
diff --git a/java/org/apache/catalina/session/ManagerBase.java b/java/org/apache/catalina/session/ManagerBase.java
index 1356ac8..7d5ed97 100644
--- a/java/org/apache/catalina/session/ManagerBase.java
+++ b/java/org/apache/catalina/session/ManagerBase.java
@@ -629,8 +629,8 @@ public abstract class ManagerBase extends LifecycleMBeanBase implements Manager
 
         if(log.isDebugEnabled())
             log.debug("Start expire sessions " + getName() + " at " + timeNow + " sessioncount " + sessions.length);
-        for (int i = 0; i < sessions.length; i++) {
-            if (sessions[i]!=null && !sessions[i].isValid()) {
+        for (Session session : sessions) {
+            if (session != null && !session.isValid()) {
                 expireHere++;
             }
         }
diff --git a/java/org/apache/catalina/session/PersistentManagerBase.java b/java/org/apache/catalina/session/PersistentManagerBase.java
index bb669ac..97d8e29 100644
--- a/java/org/apache/catalina/session/PersistentManagerBase.java
+++ b/java/org/apache/catalina/session/PersistentManagerBase.java
@@ -428,8 +428,8 @@ public abstract class PersistentManagerBase extends ManagerBase
         int expireHere = 0 ;
         if(log.isDebugEnabled())
              log.debug("Start expire sessions " + getName() + " at " + timeNow + " sessioncount " + sessions.length);
-        for (int i = 0; i < sessions.length; i++) {
-            if (!sessions[i].isValid()) {
+        for (Session session : sessions) {
+            if (!session.isValid()) {
                 expiredSessions.incrementAndGet();
                 expireHere++;
             }
@@ -550,9 +550,9 @@ public abstract class PersistentManagerBase extends ManagerBase
         if (log.isDebugEnabled())
             log.debug(sm.getString("persistentManager.loading", String.valueOf(n)));
 
-        for (int i = 0; i < n; i++)
+        for (String id : ids)
             try {
-                swapIn(ids[i]);
+                swapIn(id);
             } catch (IOException e) {
                 log.error(sm.getString("persistentManager.storeLoadError"), e);
             }
@@ -622,9 +622,9 @@ public abstract class PersistentManagerBase extends ManagerBase
             log.debug(sm.getString("persistentManager.unloading",
                              String.valueOf(n)));
 
-        for (int i = 0; i < n; i++)
+        for (Session session : sessions)
             try {
-                swapOut(sessions[i]);
+                swapOut(session);
             } catch (IOException e) {
                 // This is logged in writeSession()
             }
@@ -887,8 +887,8 @@ public abstract class PersistentManagerBase extends ManagerBase
         } else {
             // Expire all active sessions
             Session sessions[] = findSessions();
-            for (int i = 0; i < sessions.length; i++) {
-                StandardSession session = (StandardSession) sessions[i];
+            for (Session value : sessions) {
+                StandardSession session = (StandardSession) value;
                 if (!session.isValid())
                     continue;
                 session.expire();
@@ -919,8 +919,8 @@ public abstract class PersistentManagerBase extends ManagerBase
 
         // Swap out all sessions idle longer than maxIdleSwap
         if (maxIdleSwap >= 0) {
-            for (int i = 0; i < sessions.length; i++) {
-                StandardSession session = (StandardSession) sessions[i];
+            for (Session value : sessions) {
+                StandardSession session = (StandardSession) value;
                 synchronized (session) {
                     if (!session.isValid())
                         continue;
@@ -933,9 +933,9 @@ public abstract class PersistentManagerBase extends ManagerBase
                         }
                         if (log.isDebugEnabled())
                             log.debug(sm.getString
-                                ("persistentManager.swapMaxIdle",
-                                 session.getIdInternal(),
-                                 Integer.valueOf(timeIdle)));
+                                    ("persistentManager.swapMaxIdle",
+                                            session.getIdInternal(),
+                                            Integer.valueOf(timeIdle)));
                         try {
                             swapOut(session);
                         } catch (IOException e) {
@@ -1013,8 +1013,8 @@ public abstract class PersistentManagerBase extends ManagerBase
 
         // Back up all sessions idle longer than maxIdleBackup
         if (maxIdleBackup >= 0) {
-            for (int i = 0; i < sessions.length; i++) {
-                StandardSession session = (StandardSession) sessions[i];
+            for (Session value : sessions) {
+                StandardSession session = (StandardSession) value;
                 synchronized (session) {
                     if (!session.isValid())
                         continue;
@@ -1028,9 +1028,9 @@ public abstract class PersistentManagerBase extends ManagerBase
                     if (timeIdle >= maxIdleBackup) {
                         if (log.isDebugEnabled())
                             log.debug(sm.getString
-                                ("persistentManager.backupMaxIdle",
-                                session.getIdInternal(),
-                                Integer.valueOf(timeIdle)));
+                                    ("persistentManager.backupMaxIdle",
+                                            session.getIdInternal(),
+                                            Integer.valueOf(timeIdle)));
 
                         try {
                             writeSession(session);
diff --git a/java/org/apache/catalina/session/StandardManager.java b/java/org/apache/catalina/session/StandardManager.java
index d6c7e70..3031601 100644
--- a/java/org/apache/catalina/session/StandardManager.java
+++ b/java/org/apache/catalina/session/StandardManager.java
@@ -387,8 +387,7 @@ public class StandardManager extends ManagerBase {
 
         // Expire all active sessions
         Session sessions[] = findSessions();
-        for (int i = 0; i < sessions.length; i++) {
-            Session session = sessions[i];
+        for (Session session : sessions) {
             try {
                 if (session.isValid()) {
                     session.expire();
diff --git a/java/org/apache/catalina/session/StandardSession.java b/java/org/apache/catalina/session/StandardSession.java
index 706f2f9..088a204 100644
--- a/java/org/apache/catalina/session/StandardSession.java
+++ b/java/org/apache/catalina/session/StandardSession.java
@@ -369,11 +369,11 @@ public class StandardSession implements HttpSession, Session, Serializable {
         if (listeners != null && listeners.length > 0) {
             HttpSessionEvent event =
                 new HttpSessionEvent(getSession());
-            for (int i = 0; i < listeners.length; i++) {
-                if (!(listeners[i] instanceof HttpSessionListener))
+            for (Object o : listeners) {
+                if (!(o instanceof HttpSessionListener))
                     continue;
                 HttpSessionListener listener =
-                    (HttpSessionListener) listeners[i];
+                        (HttpSessionListener) o;
                 try {
                     context.fireContainerEvent("beforeSessionCreated",
                             listener);
@@ -388,7 +388,7 @@ public class StandardSession implements HttpSession, Session, Serializable {
                         // Ignore
                     }
                     manager.getContext().getLogger().error
-                        (sm.getString("standardSession.sessionEvent"), t);
+                            (sm.getString("standardSession.sessionEvent"), t);
                 }
             }
         }
@@ -844,8 +844,8 @@ public class StandardSession implements HttpSession, Session, Serializable {
             ClassLoader oldContextClassLoader = null;
             try {
                 oldContextClassLoader = context.bind(Globals.IS_SECURITY_ENABLED, null);
-                for (int i = 0; i < keys.length; i++) {
-                    removeAttributeInternal(keys[i], notify);
+                for (String key : keys) {
+                    removeAttributeInternal(key, notify);
                 }
             } finally {
                 context.unbind(Globals.IS_SECURITY_ENABLED, oldContextClassLoader);
@@ -867,18 +867,18 @@ public class StandardSession implements HttpSession, Session, Serializable {
         // Notify ActivationListeners
         HttpSessionEvent event = null;
         String keys[] = keys();
-        for (int i = 0; i < keys.length; i++) {
-            Object attribute = attributes.get(keys[i]);
+        for (String key : keys) {
+            Object attribute = attributes.get(key);
             if (attribute instanceof HttpSessionActivationListener) {
                 if (event == null)
                     event = new HttpSessionEvent(getSession());
                 try {
-                    ((HttpSessionActivationListener)attribute)
-                        .sessionWillPassivate(event);
+                    ((HttpSessionActivationListener) attribute)
+                            .sessionWillPassivate(event);
                 } catch (Throwable t) {
                     ExceptionUtils.handleThrowable(t);
                     manager.getContext().getLogger().error
-                        (sm.getString("standardSession.attributeEvent"), t);
+                            (sm.getString("standardSession.attributeEvent"), t);
                 }
             }
         }
@@ -903,18 +903,18 @@ public class StandardSession implements HttpSession, Session, Serializable {
         // Notify ActivationListeners
         HttpSessionEvent event = null;
         String keys[] = keys();
-        for (int i = 0; i < keys.length; i++) {
-            Object attribute = attributes.get(keys[i]);
+        for (String key : keys) {
+            Object attribute = attributes.get(key);
             if (attribute instanceof HttpSessionActivationListener) {
                 if (event == null)
                     event = new HttpSessionEvent(getSession());
                 try {
-                    ((HttpSessionActivationListener)attribute)
-                        .sessionDidActivate(event);
+                    ((HttpSessionActivationListener) attribute)
+                            .sessionDidActivate(event);
                 } catch (Throwable t) {
                     ExceptionUtils.handleThrowable(t);
                     manager.getContext().getLogger().error
-                        (sm.getString("standardSession.attributeEvent"), t);
+                            (sm.getString("standardSession.attributeEvent"), t);
                 }
             }
         }
@@ -1457,11 +1457,11 @@ public class StandardSession implements HttpSession, Session, Serializable {
         if (listeners == null) {
             return;
         }
-        for (int i = 0; i < listeners.length; i++) {
-            if (!(listeners[i] instanceof HttpSessionAttributeListener)) {
+        for (Object o : listeners) {
+            if (!(o instanceof HttpSessionAttributeListener)) {
                 continue;
             }
-            HttpSessionAttributeListener listener = (HttpSessionAttributeListener) listeners[i];
+            HttpSessionAttributeListener listener = (HttpSessionAttributeListener) o;
             try {
                 if (unbound != null) {
                     if (unbound != value || manager.getNotifyAttributeListenerOnUnchangedValue()) {
@@ -1681,15 +1681,16 @@ public class StandardSession implements HttpSession, Session, Serializable {
         String keys[] = keys();
         List<String> saveNames = new ArrayList<>();
         List<Object> saveValues = new ArrayList<>();
-        for (int i = 0; i < keys.length; i++) {
-            Object value = attributes.get(keys[i]);
+        for (String key : keys) {
+            Object value = attributes.get(key);
             if (value == null) {
                 continue;
-            } else if (isAttributeDistributable(keys[i], value) && !exclude(keys[i], value)) {
-                saveNames.add(keys[i]);
+            }
+            else if (isAttributeDistributable(key, value) && !exclude(key, value)) {
+                saveNames.add(key);
                 saveValues.add(value);
             } else {
-                removeAttributeInternal(keys[i], true);
+                removeAttributeInternal(key, true);
             }
         }
 
@@ -1779,8 +1780,8 @@ public class StandardSession implements HttpSession, Session, Serializable {
             list = listeners.toArray(list);
         }
 
-        for (int i = 0; i < list.length; i++){
-            (list[i]).sessionEvent(event);
+        for (SessionListener sessionListener : list) {
+            sessionListener.sessionEvent(event);
         }
 
     }
@@ -1836,17 +1837,17 @@ public class StandardSession implements HttpSession, Session, Serializable {
         Object listeners[] = context.getApplicationEventListeners();
         if (listeners == null)
             return;
-        for (int i = 0; i < listeners.length; i++) {
-            if (!(listeners[i] instanceof HttpSessionAttributeListener))
+        for (Object o : listeners) {
+            if (!(o instanceof HttpSessionAttributeListener))
                 continue;
             HttpSessionAttributeListener listener =
-                (HttpSessionAttributeListener) listeners[i];
+                    (HttpSessionAttributeListener) o;
             try {
                 context.fireContainerEvent("beforeSessionAttributeRemoved",
                         listener);
                 if (event == null) {
                     event = new HttpSessionBindingEvent
-                        (getSession(), name, value);
+                            (getSession(), name, value);
                 }
                 listener.attributeRemoved(event);
                 context.fireContainerEvent("afterSessionAttributeRemoved",
@@ -1860,7 +1861,7 @@ public class StandardSession implements HttpSession, Session, Serializable {
                     // Ignore
                 }
                 manager.getContext().getLogger().error
-                    (sm.getString("standardSession.attributeEvent"), t);
+                        (sm.getString("standardSession.attributeEvent"), t);
             }
         }
     }
diff --git a/java/org/apache/catalina/session/StoreBase.java b/java/org/apache/catalina/session/StoreBase.java
index 9ce0fd9..a5c1609 100644
--- a/java/org/apache/catalina/session/StoreBase.java
+++ b/java/org/apache/catalina/session/StoreBase.java
@@ -154,9 +154,9 @@ public abstract class StoreBase extends LifecycleBase implements Store {
 
         long timeNow = System.currentTimeMillis();
 
-        for (int i = 0; i < keys.length; i++) {
+        for (String key : keys) {
             try {
-                StandardSession session = (StandardSession) load(keys[i]);
+                StandardSession session = (StandardSession) load(key);
                 if (session == null) {
                     continue;
                 }
@@ -165,14 +165,14 @@ public abstract class StoreBase extends LifecycleBase implements Store {
                     continue;
                 }
                 if (manager.getContext().getLogger().isDebugEnabled()) {
-                    manager.getContext().getLogger().debug(getStoreName()+ ": processExpires expire store session " + keys[i] );
+                    manager.getContext().getLogger().debug(getStoreName() + ": processExpires expire store session " + key);
                 }
                 boolean isLoaded = false;
                 if (manager instanceof PersistentManagerBase) {
-                    isLoaded = ((PersistentManagerBase) manager).isLoaded(keys[i]);
+                    isLoaded = ((PersistentManagerBase) manager).isLoaded(key);
                 } else {
                     try {
-                        if (manager.findSession(keys[i]) != null) {
+                        if (manager.findSession(key) != null) {
                             isLoaded = true;
                         }
                     } catch (IOException ioe) {
@@ -186,11 +186,11 @@ public abstract class StoreBase extends LifecycleBase implements Store {
                     // expire swapped out session
                     session.expire();
                 }
-                remove(keys[i]);
+                remove(key);
             } catch (Exception e) {
-                manager.getContext().getLogger().error("Session: "+keys[i]+"; ", e);
+                manager.getContext().getLogger().error("Session: " + key + "; ", e);
                 try {
-                    remove(keys[i]);
+                    remove(key);
                 } catch (IOException e2) {
                     manager.getContext().getLogger().error("Error removing key", e2);
                 }
diff --git a/java/org/apache/catalina/ssi/SSIServletExternalResolver.java b/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
index 09e6b40..ae5f3fe 100644
--- a/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
+++ b/java/org/apache/catalina/ssi/SSIServletExternalResolver.java
@@ -93,8 +93,7 @@ public class SSIServletExternalResolver implements SSIExternalResolver {
 
     @Override
     public void addVariableNames(Collection<String> variableNames) {
-        for (int i = 0; i < VARIABLE_NAMES.length; i++) {
-            String variableName = VARIABLE_NAMES[i];
+        for (String variableName : VARIABLE_NAMES) {
             String variableValue = getVariableValue(variableName);
             if (variableValue != null) {
                 variableNames.add(variableName);
diff --git a/java/org/apache/catalina/startup/Catalina.java b/java/org/apache/catalina/startup/Catalina.java
index 362d0d0..bc4f0f2 100644
--- a/java/org/apache/catalina/startup/Catalina.java
+++ b/java/org/apache/catalina/startup/Catalina.java
@@ -256,22 +256,28 @@ public class Catalina {
             return false;
         }
 
-        for (int i = 0; i < args.length; i++) {
+        for (String arg : args) {
             if (isConfig) {
-                configFile = args[i];
+                configFile = arg;
                 isConfig = false;
-            } else if (args[i].equals("-config")) {
+            }
+            else if (arg.equals("-config")) {
                 isConfig = true;
-            } else if (args[i].equals("-nonaming")) {
+            }
+            else if (arg.equals("-nonaming")) {
                 setUseNaming(false);
-            } else if (args[i].equals("-help")) {
+            }
+            else if (arg.equals("-help")) {
                 usage();
                 return false;
-            } else if (args[i].equals("start")) {
+            }
+            else if (arg.equals("start")) {
                 // NOOP
-            } else if (args[i].equals("configtest")) {
+            }
+            else if (arg.equals("configtest")) {
                 // NOOP
-            } else if (args[i].equals("stop")) {
+            }
+            else if (arg.equals("stop")) {
                 // NOOP
             } else {
                 usage();
diff --git a/java/org/apache/catalina/startup/ClassLoaderFactory.java b/java/org/apache/catalina/startup/ClassLoaderFactory.java
index aacc9f3..7a35dd6 100644
--- a/java/org/apache/catalina/startup/ClassLoaderFactory.java
+++ b/java/org/apache/catalina/startup/ClassLoaderFactory.java
@@ -85,8 +85,8 @@ public final class ClassLoaderFactory {
 
         // Add unpacked directories
         if (unpacked != null) {
-            for (int i = 0; i < unpacked.length; i++)  {
-                File file = unpacked[i];
+            for (File value : unpacked) {
+                File file = value;
                 if (!file.canRead())
                     continue;
                 file = new File(file.getCanonicalPath() + File.separator);
@@ -99,19 +99,18 @@ public final class ClassLoaderFactory {
 
         // Add packed directory JAR files
         if (packed != null) {
-            for (int i = 0; i < packed.length; i++) {
-                File directory = packed[i];
+            for (File directory : packed) {
                 if (!directory.isDirectory() || !directory.canRead())
                     continue;
                 String filenames[] = directory.list();
                 if (filenames == null) {
                     continue;
                 }
-                for (int j = 0; j < filenames.length; j++) {
-                    String filename = filenames[j].toLowerCase(Locale.ENGLISH);
+                for (String s : filenames) {
+                    String filename = s.toLowerCase(Locale.ENGLISH);
                     if (!filename.endsWith(".jar"))
                         continue;
-                    File file = new File(directory, filenames[j]);
+                    File file = new File(directory, s);
                     if (log.isDebugEnabled())
                         log.debug("  Including jar file " + file.getAbsolutePath());
                     URL url = file.toURI().toURL();
@@ -198,18 +197,18 @@ public final class ClassLoaderFactory {
                     if (filenames == null) {
                         continue;
                     }
-                    for (int j = 0; j < filenames.length; j++) {
-                        String filename = filenames[j].toLowerCase(Locale.ENGLISH);
+                    for (String s : filenames) {
+                        String filename = s.toLowerCase(Locale.ENGLISH);
                         if (!filename.endsWith(".jar"))
                             continue;
-                        File file = new File(directory, filenames[j]);
+                        File file = new File(directory, s);
                         file = file.getCanonicalFile();
                         if (!validateFile(file, RepositoryType.JAR)) {
                             continue;
                         }
                         if (log.isDebugEnabled())
                             log.debug("    Including glob jar file "
-                                + file.getAbsolutePath());
+                                    + file.getAbsolutePath());
                         URL url = buildClassLoaderUrl(file);
                         set.add(url);
                     }
diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java
index 18517e2..14eb4e6 100644
--- a/java/org/apache/catalina/startup/ContextConfig.java
+++ b/java/org/apache/catalina/startup/ContextConfig.java
@@ -794,8 +794,8 @@ public class ContextConfig implements LifecycleListener {
                 valves = pipeline.getValves();
             }
             if (valves != null) {
-                for (int i = 0; i < valves.length; i++) {
-                    log.debug("  " + valves[i].getClass().getName());
+                for (Valve valve : valves) {
+                    log.debug("  " + valve.getClass().getName());
                 }
             }
             log.debug("======================");
@@ -1026,29 +1026,29 @@ public class ContextConfig implements LifecycleListener {
 
         // Check role names used in <security-constraint> elements
         SecurityConstraint constraints[] = context.findConstraints();
-        for (int i = 0; i < constraints.length; i++) {
-            String roles[] = constraints[i].findAuthRoles();
-            for (int j = 0; j < roles.length; j++) {
-                if (!"*".equals(roles[j]) &&
-                    !context.findSecurityRole(roles[j])) {
-                    log.warn(sm.getString("contextConfig.role.auth", roles[j]));
-                    context.addSecurityRole(roles[j]);
+        for (SecurityConstraint constraint : constraints) {
+            String roles[] = constraint.findAuthRoles();
+            for (String role : roles) {
+                if (!"*".equals(role) &&
+                        !context.findSecurityRole(role)) {
+                    log.warn(sm.getString("contextConfig.role.auth", role));
+                    context.addSecurityRole(role);
                 }
             }
         }
 
         // Check role names used in <servlet> elements
         Container wrappers[] = context.findChildren();
-        for (int i = 0; i < wrappers.length; i++) {
-            Wrapper wrapper = (Wrapper) wrappers[i];
+        for (Container container : wrappers) {
+            Wrapper wrapper = (Wrapper) container;
             String runAs = wrapper.getRunAs();
             if ((runAs != null) && !context.findSecurityRole(runAs)) {
                 log.warn(sm.getString("contextConfig.role.runas", runAs));
                 context.addSecurityRole(runAs);
             }
             String names[] = wrapper.findSecurityReferences();
-            for (int j = 0; j < names.length; j++) {
-                String link = wrapper.findSecurityReference(names[j]);
+            for (String name : names) {
+                String link = wrapper.findSecurityReference(name);
                 if ((link != null) && !context.findSecurityRole(link)) {
                     log.warn(sm.getString("contextConfig.role.link", link));
                     context.addSecurityRole(link);
@@ -1832,8 +1832,7 @@ public class ContextConfig implements LifecycleListener {
                     } catch (MalformedURLException e) {
                         log.error(sm.getString("contextConfig.applicationUrl"));
                     }
-                }
-                else {
+                } else {
                     stream = servletContext.getResourceAsStream
                         (Constants.ApplicationWebXml);
                     try {
diff --git a/java/org/apache/catalina/startup/ExpandWar.java b/java/org/apache/catalina/startup/ExpandWar.java
index c9b9b74..a76acc2 100644
--- a/java/org/apache/catalina/startup/ExpandWar.java
+++ b/java/org/apache/catalina/startup/ExpandWar.java
@@ -354,8 +354,8 @@ public class ExpandWar {
         if (files == null) {
             files = new String[0];
         }
-        for (int i = 0; i < files.length; i++) {
-            File file = new File(dir, files[i]);
+        for (String s : files) {
+            File file = new File(dir, s);
             if (file.isDirectory()) {
                 deleteDir(file, logFailure);
             } else {
diff --git a/java/org/apache/catalina/startup/HomesUserDatabase.java b/java/org/apache/catalina/startup/HomesUserDatabase.java
index 35a5f9f..c1d15db 100644
--- a/java/org/apache/catalina/startup/HomesUserDatabase.java
+++ b/java/org/apache/catalina/startup/HomesUserDatabase.java
@@ -127,11 +127,11 @@ public final class HomesUserDatabase
             return;
         }
 
-        for (int i = 0; i < homeBaseFiles.length; i++) {
-            File homeDir = new File(homeBaseDir, homeBaseFiles[i]);
+        for (String homeBaseFile : homeBaseFiles) {
+            File homeDir = new File(homeBaseDir, homeBaseFile);
             if (!homeDir.isDirectory() || !homeDir.canRead())
                 continue;
-            homes.put(homeBaseFiles[i], homeDir.toString());
+            homes.put(homeBaseFile, homeDir.toString());
         }
     }
 }
diff --git a/java/org/apache/catalina/startup/HostConfig.java b/java/org/apache/catalina/startup/HostConfig.java
index b6c50fc..e3b3d13 100644
--- a/java/org/apache/catalina/startup/HostConfig.java
+++ b/java/org/apache/catalina/startup/HostConfig.java
@@ -513,11 +513,11 @@ public class HostConfig implements LifecycleListener {
         ExecutorService es = host.getStartStopExecutor();
         List<Future<?>> results = new ArrayList<>();
 
-        for (int i = 0; i < files.length; i++) {
-            File contextXml = new File(configBase, files[i]);
+        for (String file : files) {
+            File contextXml = new File(configBase, file);
 
-            if (files[i].toLowerCase(Locale.ENGLISH).endsWith(".xml")) {
-                ContextName cn = new ContextName(files[i], true);
+            if (file.toLowerCase(Locale.ENGLISH).endsWith(".xml")) {
+                ContextName cn = new ContextName(file, true);
 
                 if (isServiced(cn.getName()) || deploymentExists(cn.getName()))
                     continue;
@@ -722,17 +722,17 @@ public class HostConfig implements LifecycleListener {
         ExecutorService es = host.getStartStopExecutor();
         List<Future<?>> results = new ArrayList<>();
 
-        for (int i = 0; i < files.length; i++) {
+        for (String file : files) {
 
-            if (files[i].equalsIgnoreCase("META-INF"))
+            if (file.equalsIgnoreCase("META-INF"))
                 continue;
-            if (files[i].equalsIgnoreCase("WEB-INF"))
+            if (file.equalsIgnoreCase("WEB-INF"))
                 continue;
-            File war = new File(appBase, files[i]);
-            if (files[i].toLowerCase(Locale.ENGLISH).endsWith(".war") &&
-                    war.isFile() && !invalidWars.contains(files[i]) ) {
+            File war = new File(appBase, file);
+            if (file.toLowerCase(Locale.ENGLISH).endsWith(".war") &&
+                    war.isFile() && !invalidWars.contains(file)) {
 
-                ContextName cn = new ContextName(files[i], true);
+                ContextName cn = new ContextName(file, true);
 
                 if (isServiced(cn.getName())) {
                     continue;
@@ -765,8 +765,8 @@ public class HostConfig implements LifecycleListener {
                 // Check for WARs with /../ /./ or similar sequences in the name
                 if (!validateContextPath(appBase, cn.getBaseName())) {
                     log.error(sm.getString(
-                            "hostConfig.illegalWarName", files[i]));
-                    invalidWars.add(files[i]);
+                            "hostConfig.illegalWarName", file));
+                    invalidWars.add(file);
                     continue;
                 }
 
@@ -1029,15 +1029,15 @@ public class HostConfig implements LifecycleListener {
         ExecutorService es = host.getStartStopExecutor();
         List<Future<?>> results = new ArrayList<>();
 
-        for (int i = 0; i < files.length; i++) {
+        for (String file : files) {
 
-            if (files[i].equalsIgnoreCase("META-INF"))
+            if (file.equalsIgnoreCase("META-INF"))
                 continue;
-            if (files[i].equalsIgnoreCase("WEB-INF"))
+            if (file.equalsIgnoreCase("WEB-INF"))
                 continue;
-            File dir = new File(appBase, files[i]);
+            File dir = new File(appBase, file);
             if (dir.isDirectory()) {
-                ContextName cn = new ContextName(files[i], false);
+                ContextName cn = new ContextName(file, false);
 
                 if (isServiced(cn.getName()) || deploymentExists(cn.getName()))
                     continue;
@@ -1218,19 +1218,19 @@ public class HostConfig implements LifecycleListener {
             }
         }
         String[] watchedResources = context.findWatchedResources();
-        for (int i = 0; i < watchedResources.length; i++) {
-            File resource = new File(watchedResources[i]);
+        for (String watchedResource : watchedResources) {
+            File resource = new File(watchedResource);
             if (!resource.isAbsolute()) {
                 if (docBase != null) {
-                    resource = new File(docBaseFile, watchedResources[i]);
+                    resource = new File(docBaseFile, watchedResource);
                 } else {
-                    if(log.isDebugEnabled())
+                    if (log.isDebugEnabled())
                         log.debug("Ignoring non-existent WatchedResource '" +
                                 resource.getAbsolutePath() + "'");
                     continue;
                 }
             }
-            if(log.isDebugEnabled())
+            if (log.isDebugEnabled())
                 log.debug("Watching WatchedResource '" +
                         resource.getAbsolutePath() + "'");
             app.reloadResources.put(resource.getAbsolutePath(),
@@ -1356,12 +1356,12 @@ public class HostConfig implements LifecycleListener {
         }
         resources = app.reloadResources.keySet().toArray(new String[0]);
         boolean update = false;
-        for (int i = 0; i < resources.length; i++) {
-            File resource = new File(resources[i]);
+        for (String s : resources) {
+            File resource = new File(s);
             if (log.isDebugEnabled()) {
                 log.debug("Checking context[" + app.name + "] reload resource " + resource);
             }
-            long lastModified = app.reloadResources.get(resources[i]).longValue();
+            long lastModified = app.reloadResources.get(s).longValue();
             // File.lastModified() has a resolution of 1s (1000ms). The last
             // modified time has to be more than 1000ms ago to ensure that
             // modifications that take place in the same second are not
@@ -1378,7 +1378,7 @@ public class HostConfig implements LifecycleListener {
                 }
                 // Update times. More than one file may have been updated. We
                 // don't want to trigger a series of reloads.
-                app.reloadResources.put(resources[i],
+                app.reloadResources.put(s,
                         Long.valueOf(resource.lastModified()));
             }
             app.timestamp = System.currentTimeMillis();
@@ -1455,8 +1455,8 @@ public class HostConfig implements LifecycleListener {
         // Delete reload resources (to remove any remaining .xml descriptor)
         if (deleteReloadResources) {
             String[] resources2 = app.reloadResources.keySet().toArray(new String[0]);
-            for (int j = 0; j < resources2.length; j++) {
-                File current = new File(resources2[j]);
+            for (String s : resources2) {
+                File current = new File(s);
                 // Never delete per host context.xml defaults
                 if (Constants.HostContextXml.equals(current.getName())) {
                     continue;
@@ -1538,9 +1538,9 @@ public class HostConfig implements LifecycleListener {
     public void beforeStart() {
         if (host.getCreateDirs()) {
             File[] dirs = new File[] {host.getAppBaseFile(),host.getConfigBaseFile()};
-            for (int i=0; i<dirs.length; i++) {
-                if (!dirs[i].mkdirs() && !dirs[i].isDirectory()) {
-                    log.error(sm.getString("hostConfig.createDirs",dirs[i]));
+            for (File dir : dirs) {
+                if (!dir.mkdirs() && !dir.isDirectory()) {
+                    log.error(sm.getString("hostConfig.createDirs", dir));
                 }
             }
         }
@@ -1606,9 +1606,9 @@ public class HostConfig implements LifecycleListener {
             // Check for resources modification to trigger redeployment
             DeployedApplication[] apps =
                 deployed.values().toArray(new DeployedApplication[0]);
-            for (int i = 0; i < apps.length; i++) {
-                if (!isServiced(apps[i].name))
-                    checkResources(apps[i], false);
+            for (DeployedApplication app : apps) {
+                if (!isServiced(app.name))
+                    checkResources(app, false);
             }
 
             // Check for old versions of applications that can now be undeployed
diff --git a/java/org/apache/catalina/startup/SetAllPropertiesRule.java b/java/org/apache/catalina/startup/SetAllPropertiesRule.java
index d32f268..5115e32 100644
--- a/java/org/apache/catalina/startup/SetAllPropertiesRule.java
+++ b/java/org/apache/catalina/startup/SetAllPropertiesRule.java
@@ -36,7 +36,7 @@ public class SetAllPropertiesRule extends Rule {
     public SetAllPropertiesRule() {}
 
     public SetAllPropertiesRule(String[] exclude) {
-        for (int i=0; i<exclude.length; i++ ) if (exclude[i]!=null) this.excludes.put(exclude[i],exclude[i]);
+        for (String s : exclude) if (s != null) this.excludes.put(s, s);
     }
 
     // ----------------------------------------------------- Instance Variables
diff --git a/java/org/apache/catalina/startup/Tomcat.java b/java/org/apache/catalina/startup/Tomcat.java
index 16bcbab..be2d526 100644
--- a/java/org/apache/catalina/startup/Tomcat.java
+++ b/java/org/apache/catalina/startup/Tomcat.java
@@ -1289,8 +1289,8 @@ public class Tomcat {
      */
     public static void main(String[] args) throws Exception {
         // Process some command line parameters
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("--no-jmx")) {
+        for (String arg : args) {
+            if (arg.equals("--no-jmx")) {
                 Registry.disableRegistry();
             }
         }
diff --git a/java/org/apache/catalina/storeconfig/StandardContextSF.java b/java/org/apache/catalina/storeconfig/StandardContextSF.java
index a040ec3..3130a6f 100644
--- a/java/org/apache/catalina/storeconfig/StandardContextSF.java
+++ b/java/org/apache/catalina/storeconfig/StandardContextSF.java
@@ -338,20 +338,20 @@ public class StandardContextSF extends StoreFactoryBase {
         String tomcatwebxml = "WEB-INF/tomcat-web.xml";
 
         List<String> resource = new ArrayList<>();
-        for (int i = 0; i < wresources.length; i++) {
-            if (wresources[i].equals(confContext))
+        for (String wresource : wresources) {
+            if (wresource.equals(confContext))
                 continue;
-            if (wresources[i].equals(confWeb))
+            if (wresource.equals(confWeb))
                 continue;
-            if (wresources[i].equals(confHostDefault))
+            if (wresource.equals(confHostDefault))
                 continue;
-            if (wresources[i].equals(configFile))
+            if (wresource.equals(configFile))
                 continue;
-            if (wresources[i].equals(webxml))
+            if (wresource.equals(webxml))
                 continue;
-            if (wresources[i].equals(tomcatwebxml))
+            if (wresource.equals(tomcatwebxml))
                 continue;
-            resource.add(wresources[i]);
+            resource.add(wresource);
         }
         return resource.toArray(new String[0]);
     }
diff --git a/java/org/apache/catalina/storeconfig/StandardEngineSF.java b/java/org/apache/catalina/storeconfig/StandardEngineSF.java
index 290e623..582dde4 100644
--- a/java/org/apache/catalina/storeconfig/StandardEngineSF.java
+++ b/java/org/apache/catalina/storeconfig/StandardEngineSF.java
@@ -72,9 +72,9 @@ public class StandardEngineSF extends StoreFactoryBase {
             Valve valves[] = engine.getPipeline().getValves();
             if(valves != null && valves.length > 0 ) {
                 List<Valve> engineValves = new ArrayList<>() ;
-                for(int i = 0 ; i < valves.length ; i++ ) {
-                    if(!( valves[i] instanceof ClusterValve))
-                        engineValves.add(valves[i]);
+                for (Valve valve : valves) {
+                    if (!(valve instanceof ClusterValve))
+                        engineValves.add(valve);
                 }
                 storeElementArray(aWriter, indent, engineValves.toArray());
             }
diff --git a/java/org/apache/catalina/storeconfig/StandardHostSF.java b/java/org/apache/catalina/storeconfig/StandardHostSF.java
index 31368bf..917d14b 100644
--- a/java/org/apache/catalina/storeconfig/StandardHostSF.java
+++ b/java/org/apache/catalina/storeconfig/StandardHostSF.java
@@ -78,9 +78,9 @@ public class StandardHostSF extends StoreFactoryBase {
             Valve valves[] = host.getPipeline().getValves();
             if(valves != null && valves.length > 0 ) {
                 List<Valve> hostValves = new ArrayList<>() ;
-                for(int i = 0 ; i < valves.length ; i++ ) {
-                    if(!( valves[i] instanceof ClusterValve))
-                        hostValves.add(valves[i]);
+                for (Valve valve : valves) {
+                    if (!(valve instanceof ClusterValve))
+                        hostValves.add(valve);
                 }
                 storeElementArray(aWriter, indent, hostValves.toArray());
             }
diff --git a/java/org/apache/catalina/storeconfig/StoreAppender.java b/java/org/apache/catalina/storeconfig/StoreAppender.java
index 006886e..29a23ee 100644
--- a/java/org/apache/catalina/storeconfig/StoreAppender.java
+++ b/java/org/apache/catalina/storeconfig/StoreAppender.java
@@ -153,9 +153,9 @@ public class StoreAppender {
     public void printTagArray(PrintWriter aWriter, String tag, int indent,
             String[] elements) throws Exception {
         if (elements != null) {
-            for (int i = 0; i < elements.length; i++) {
+            for (String element : elements) {
                 printIndent(aWriter, indent);
-                printTagContent(aWriter, tag, elements[i]);
+                printTagContent(aWriter, tag, element);
             }
         }
     }
@@ -229,10 +229,10 @@ public class StoreAppender {
 
         // Create blank instance
         Object bean2 = defaultInstance(bean);
-        for (int i = 0; i < descriptors.length; i++) {
-            Object value = checkAttribute(desc, descriptors[i], descriptors[i].getName(), bean, bean2);
+        for (PropertyDescriptor descriptor : descriptors) {
+            Object value = checkAttribute(desc, descriptor, descriptor.getName(), bean, bean2);
             if (value != null) {
-                printAttribute(writer, indent, bean, desc, descriptors[i].getName(), bean2, value);
+                printAttribute(writer, indent, bean, desc, descriptor.getName(), bean2, value);
             }
         }
 
@@ -373,8 +373,8 @@ public class StoreAppender {
      */
     protected boolean isPersistable(Class<?> clazz) {
 
-        for (int i = 0; i < persistables.length; i++) {
-            if (persistables[i] == clazz || persistables[i].isAssignableFrom(clazz)) {
+        for (Class<?> persistable : persistables) {
+            if (persistable == clazz || persistable.isAssignableFrom(clazz)) {
                 return true;
             }
         }
diff --git a/java/org/apache/catalina/storeconfig/StoreFactoryBase.java b/java/org/apache/catalina/storeconfig/StoreFactoryBase.java
index 58e0cd2..6a9ffc1 100644
--- a/java/org/apache/catalina/storeconfig/StoreFactoryBase.java
+++ b/java/org/apache/catalina/storeconfig/StoreFactoryBase.java
@@ -185,9 +185,9 @@ public class StoreFactoryBase implements IStoreFactory {
     protected void storeElementArray(PrintWriter aWriter, int indent,
             Object[] elements) throws Exception {
         if (elements != null) {
-            for (int i = 0; i < elements.length; i++) {
+            for (Object element : elements) {
                 try {
-                    storeElement(aWriter, indent, elements[i]);
+                    storeElement(aWriter, indent, element);
                 } catch (IOException ioe) {
                     // ignore children report error them self!
                     // see StandardContext.storeWithBackup()
diff --git a/java/org/apache/catalina/tribes/ChannelException.java b/java/org/apache/catalina/tribes/ChannelException.java
index 6711385..9ec2924 100644
--- a/java/org/apache/catalina/tribes/ChannelException.java
+++ b/java/org/apache/catalina/tribes/ChannelException.java
@@ -86,8 +86,7 @@ public class ChannelException extends Exception {
             buf.append("; No faulty members identified.");
         } else {
             buf.append("; Faulty members:");
-            for ( int i=0; i<faultyMembers.size(); i++ ) {
-                FaultyMember mbr = faultyMembers.get(i);
+            for (FaultyMember mbr : faultyMembers) {
                 buf.append(mbr.getMember().getName());
                 buf.append("; ");
             }
diff --git a/java/org/apache/catalina/tribes/group/GroupChannel.java b/java/org/apache/catalina/tribes/group/GroupChannel.java
index 6177938..9bc45bd 100644
--- a/java/org/apache/catalina/tribes/group/GroupChannel.java
+++ b/java/org/apache/catalina/tribes/group/GroupChannel.java
@@ -330,14 +330,13 @@ public class GroupChannel extends ChannelInterceptorBase
             Member source = msg.getAddress();
             boolean rx = false;
             boolean delivered = false;
-            for ( int i=0; i<channelListeners.size(); i++ ) {
-                ChannelListener channelListener = channelListeners.get(i);
+            for (ChannelListener channelListener : channelListeners) {
                 if (channelListener != null && channelListener.accept(fwd, source)) {
                     channelListener.messageReceived(fwd, source);
                     delivered = true;
                     //if the message was accepted by an RPC channel, that channel
                     //is responsible for returning the reply, otherwise we send an absence reply
-                    if ( channelListener instanceof RpcChannel ) rx = true;
+                    if (channelListener instanceof RpcChannel) rx = true;
                 }
             }//for
             if ((!rx) && (fwd instanceof RpcMessage)) {
@@ -385,8 +384,7 @@ public class GroupChannel extends ChannelInterceptorBase
     @Override
     public void memberAdded(Member member) {
         //notify upwards
-        for (int i=0; i<membershipListeners.size(); i++ ) {
-            MembershipListener membershipListener = membershipListeners.get(i);
+        for (MembershipListener membershipListener : membershipListeners) {
             if (membershipListener != null) membershipListener.memberAdded(member);
         }
     }
@@ -399,8 +397,7 @@ public class GroupChannel extends ChannelInterceptorBase
     @Override
     public void memberDisappeared(Member member) {
         //notify upwards
-        for (int i=0; i<membershipListeners.size(); i++ ) {
-            MembershipListener membershipListener = membershipListeners.get(i);
+        for (MembershipListener membershipListener : membershipListeners) {
             if (membershipListener != null) membershipListener.memberDisappeared(member);
         }
     }
diff --git a/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java b/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java
index 653dfb1..f243514 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java
+++ b/java/org/apache/catalina/tribes/group/interceptors/FragmentationInterceptor.java
@@ -134,8 +134,8 @@ public class FragmentationInterceptor extends ChannelInterceptorBase implements
             remaining -= length;
 
         }
-        for ( int i=0; i<messages.length; i++ ) {
-            super.sendMessage(destination,messages[i],payload);
+        for (ChannelMessage message : messages) {
+            super.sendMessage(destination, message, payload);
         }
     }
 
@@ -144,9 +144,9 @@ public class FragmentationInterceptor extends ChannelInterceptorBase implements
         try {
             Set<FragKey> set = fragpieces.keySet();
             Object[] keys = set.toArray();
-            for ( int i=0; i<keys.length; i++ ) {
-                FragKey key = (FragKey)keys[i];
-                if ( key != null && key.expired(getExpire()) )
+            for (Object o : keys) {
+                FragKey key = (FragKey) o;
+                if (key != null && key.expired(getExpire()))
                     removeFragCollection(key);
             }
         }catch ( Exception x ) {
@@ -208,11 +208,11 @@ public class FragmentationInterceptor extends ChannelInterceptorBase implements
         public ChannelMessage assemble() {
             if ( !complete() ) throw new IllegalStateException(sm.getString("fragmentationInterceptor.fragments.missing"));
             int buffersize = 0;
-            for (int i=0; i<frags.length; i++ ) buffersize += frags[i].getLength();
+            for (XByteBuffer xByteBuffer : frags) buffersize += xByteBuffer.getLength();
             XByteBuffer buf = new XByteBuffer(buffersize,false);
             msg.setMessage(buf);
-            for ( int i=0; i<frags.length; i++ ) {
-                msg.getMessage().append(frags[i].getBytesDirect(),0,frags[i].getLength());
+            for (XByteBuffer frag : frags) {
+                msg.getMessage().append(frag.getBytesDirect(), 0, frag.getLength());
             }
             return msg;
         }
diff --git a/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java b/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
index c4c8ee0..4e6df7e 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
+++ b/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java
@@ -321,9 +321,9 @@ public class NonBlockingCoordinator extends ChannelInterceptorBase {
         Arrays.fill(merged,msg.getMembers());
         Arrays.fill(merged,getMembers());
         Member[] diff = Arrays.diff(merged,membership,local);
-        for ( int i=0; i<diff.length; i++ ) {
-            if (!alive(diff[i])) merged.removeMember(diff[i]);
-            else memberAdded(diff[i],false);
+        for (Member member : diff) {
+            if (!alive(member)) merged.removeMember(member);
+            else memberAdded(member, false);
         }
         fireInterceptorEvent(new CoordinationEvent(CoordinationEvent.EVT_POST_MERGE,this,"Post merge"));
         return merged;
@@ -749,10 +749,10 @@ public class NonBlockingCoordinator extends ChannelInterceptorBase {
             src = null;
             //view
             buf.append(view.length);
-            for (int i=0; i<view.length; i++ ) {
-                byte[] mbr = view[i].getData(false,false);
+            for (Member member : view) {
+                byte[] mbr = member.getData(false, false);
                 buf.append(mbr.length);
-                buf.append(mbr,0,mbr.length);
+                buf.append(mbr, 0, mbr.length);
             }
             //id
             buf.append(id.getBytes(),0,id.getBytes().length);
diff --git a/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java b/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
index ed9dfb9..89efe71 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
+++ b/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
@@ -73,24 +73,24 @@ public class OrderInterceptor extends ChannelInterceptorBase {
             return;
         }
         ChannelException cx = null;
-        for (int i=0; i<destination.length; i++ ) {
+        for (Member member : destination) {
             try {
                 int nr = 0;
                 outLock.writeLock().lock();
                 try {
-                    nr = incCounter(destination[i]);
+                    nr = incCounter(member);
                 } finally {
                     outLock.writeLock().unlock();
                 }
                 //reduce byte copy
                 msg.getMessage().append(nr);
                 try {
-                    getNext().sendMessage(new Member[] {destination[i]}, msg, payload);
+                    getNext().sendMessage(new Member[]{member}, msg, payload);
                 } finally {
                     msg.getMessage().trim(4);
                 }
-            }catch ( ChannelException x ) {
-                if ( cx == null ) cx = x;
+            } catch (ChannelException x) {
+                if (cx == null) cx = x;
                 cx.addFaultyMember(x.getFaultyMembers());
             }
         }//for
diff --git a/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java b/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
index c46d28f..746786e 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
+++ b/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
@@ -93,10 +93,10 @@ public class TcpFailureDetector extends ChannelInterceptorBase implements TcpFai
             super.sendMessage(destination, msg, payload);
         }catch ( ChannelException cx ) {
             FaultyMember[] mbrs = cx.getFaultyMembers();
-            for ( int i=0; i<mbrs.length; i++ ) {
-                if ( mbrs[i].getCause()!=null &&
-                     (!(mbrs[i].getCause() instanceof RemoteProcessException)) ) {//RemoteProcessException's are ok
-                    this.memberDisappeared(mbrs[i].getMember());
+            for (FaultyMember mbr : mbrs) {
+                if (mbr.getCause() != null &&
+                        (!(mbr.getCause() instanceof RemoteProcessException))) {//RemoteProcessException's are ok
+                    this.memberDisappeared(mbr.getMember());
                 }//end if
             }//for
             throw cx;
@@ -278,8 +278,7 @@ public class TcpFailureDetector extends ChannelInterceptorBase implements TcpFai
         //check suspect members if they are still alive,
         //if not, simply issue the memberDisappeared message
         Member[] keys = removeSuspects.keySet().toArray(new Member[0]);
-        for (int i = 0; i < keys.length; i++) {
-            Member m = keys[i];
+        for (Member m : keys) {
             if (membership.getMember(m) != null && (!memberAlive(m))) {
                 membership.removeMember(m);
                 if (m instanceof StaticMember) {
@@ -287,7 +286,7 @@ public class TcpFailureDetector extends ChannelInterceptorBase implements TcpFai
                 }
                 super.memberDisappeared(m);
                 removeSuspects.remove(m);
-                if(log.isInfoEnabled())
+                if (log.isInfoEnabled())
                     log.info(sm.getString("tcpFailureDetector.suspectMember.dead", m));
             } else {
                 if (removeSuspectsTimeout > 0) {
@@ -303,13 +302,12 @@ public class TcpFailureDetector extends ChannelInterceptorBase implements TcpFai
         //check add suspects members if they are alive now,
         //if they are, simply issue the memberAdded message
         keys = addSuspects.keySet().toArray(new Member[0]);
-        for (int i = 0; i < keys.length; i++) {
-            Member m = keys[i];
-            if ( membership.getMember(m) == null && (memberAlive(m))) {
+        for (Member m : keys) {
+            if (membership.getMember(m) == null && (memberAlive(m))) {
                 membership.memberAlive(m);
                 super.memberAdded(m);
                 addSuspects.remove(m);
-                if(log.isInfoEnabled())
+                if (log.isInfoEnabled())
                     log.info(sm.getString("tcpFailureDetector.suspectMember.alive", m));
             } //end if
         }
diff --git a/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java b/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
index 86f9b65..1b95671 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
+++ b/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
@@ -112,9 +112,9 @@ public class TwoPhaseCommitInterceptor extends ChannelInterceptorBase {
             long now = System.currentTimeMillis();
             @SuppressWarnings("unchecked")
             Map.Entry<UniqueId,MapEntry>[] entries = messages.entrySet().toArray(new Map.Entry[0]);
-            for (int i=0; i<entries.length; i++ ) {
-                MapEntry entry = entries[i].getValue();
-                if ( entry.expired(now,expire) ) {
+            for (Map.Entry<UniqueId, MapEntry> uniqueIdMapEntryEntry : entries) {
+                MapEntry entry = uniqueIdMapEntryEntry.getValue();
+                if (entry.expired(now, expire)) {
                     log.info(sm.getString("twoPhaseCommitInterceptor.expiredMessage", entry.id));
                     messages.remove(entry.id);
                 }
diff --git a/java/org/apache/catalina/tribes/io/ReplicationStream.java b/java/org/apache/catalina/tribes/io/ReplicationStream.java
index dfcd08a..e691dee 100644
--- a/java/org/apache/catalina/tribes/io/ReplicationStream.java
+++ b/java/org/apache/catalina/tribes/io/ReplicationStream.java
@@ -150,11 +150,11 @@ public final class ReplicationStream extends ObjectInputStream {
 
     public Class<?> findExternalClass(String name) throws ClassNotFoundException  {
         ClassNotFoundException cnfe = null;
-        for (int i=0; i<classLoaders.length; i++ ) {
+        for (ClassLoader classLoader : classLoaders) {
             try {
-                Class<?> clazz = Class.forName(name, false, classLoaders[i]);
+                Class<?> clazz = Class.forName(name, false, classLoader);
                 return clazz;
-            } catch ( ClassNotFoundException x ) {
+            } catch (ClassNotFoundException x) {
                 cnfe = x;
             }
         }
diff --git a/java/org/apache/catalina/tribes/membership/McastServiceImpl.java b/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
index f1858f1..ae95c62 100644
--- a/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
+++ b/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
@@ -419,10 +419,10 @@ public class McastServiceImpl extends MembershipProviderBase {
                     String name = Thread.currentThread().getName();
                     try {
                         Thread.currentThread().setName("Membership-MemberAdded.");
-                        for (int i=0; i<data.length; i++ ) {
+                        for (ChannelData datum : data) {
                             try {
-                                if (data[i]!=null && !member.equals(data[i].getAddress())) {
-                                    msgservice.messageReceived(data[i]);
+                                if (datum != null && !member.equals(datum.getAddress())) {
+                                    msgservice.messageReceived(datum);
                                 }
                             } catch (Throwable t) {
                                 if (t instanceof ThreadDeath) {
@@ -431,7 +431,7 @@ public class McastServiceImpl extends MembershipProviderBase {
                                 if (t instanceof VirtualMachineError) {
                                     throw (VirtualMachineError) t;
                                 }
-                                log.error(sm.getString("mcastServiceImpl.unableReceive.broadcastMessage"),t);
+                                log.error(sm.getString("mcastServiceImpl.unableReceive.broadcastMessage"), t);
                             }
                         }
                     }finally {
@@ -447,10 +447,9 @@ public class McastServiceImpl extends MembershipProviderBase {
     protected void checkExpired() {
         synchronized (expiredMutex) {
             Member[] expired = membership.expire(timeToExpiration);
-            for (int i = 0; i < expired.length; i++) {
-                final Member member = expired[i];
+            for (final Member member : expired) {
                 if (log.isDebugEnabled())
-                    log.debug("Mcast expire  member " + expired[i]);
+                    log.debug("Mcast expire  member " + member);
                 try {
                     Runnable t = new Runnable() {
                         @Override
@@ -459,7 +458,7 @@ public class McastServiceImpl extends MembershipProviderBase {
                             try {
                                 Thread.currentThread().setName("Membership-MemberExpired.");
                                 service.memberDisappeared(member);
-                            }finally {
+                            } finally {
                                 Thread.currentThread().setName(name);
                             }
 
diff --git a/java/org/apache/catalina/tribes/membership/Membership.java b/java/org/apache/catalina/tribes/membership/Membership.java
index be08c9e..99a6071 100644
--- a/java/org/apache/catalina/tribes/membership/Membership.java
+++ b/java/org/apache/catalina/tribes/membership/Membership.java
@@ -238,8 +238,8 @@ public class Membership implements Cloneable {
             if (list != null) {
                 Member[] result = new Member[list.size()];
                 list.toArray(result);
-                for (int j=0; j<result.length; j++) {
-                    removeMember(result[j]);
+                for (Member member : result) {
+                    removeMember(member);
                 }
                 return result;
             } else {
@@ -262,9 +262,9 @@ public class Membership implements Cloneable {
     public Member getMember(Member mbr) {
         Member[] members = this.members;
         if (members.length > 0) {
-            for (int i = 0; i < members.length; i++) {
-                if (members[i].equals(mbr)) {
-                    return members[i];
+            for (Member member : members) {
+                if (member.equals(mbr)) {
+                    return member;
                 }
             }
         }
diff --git a/java/org/apache/catalina/tribes/membership/MembershipServiceBase.java b/java/org/apache/catalina/tribes/membership/MembershipServiceBase.java
index aa6e121..399d230 100644
--- a/java/org/apache/catalina/tribes/membership/MembershipServiceBase.java
+++ b/java/org/apache/catalina/tribes/membership/MembershipServiceBase.java
@@ -86,9 +86,9 @@ public abstract class MembershipServiceBase implements MembershipService, Member
     @Override
     public Member findMemberByName(String name) {
         Member[] currentMembers = getMembers();
-        for (int i = 0; i < currentMembers.length; i++) {
-            if (name.equals(currentMembers[i].toString()))
-                return currentMembers[i];
+        for (Member currentMember : currentMembers) {
+            if (name.equals(currentMember.toString()))
+                return currentMember;
         }
         return null;
     }
diff --git a/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java b/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
index 04969f3..93b3385 100644
--- a/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
+++ b/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
@@ -141,8 +141,8 @@ public class StaticMembershipProvider extends MembershipProviderBase implements
         MemberMessage msg = new MemberMessage(membershipId, MemberMessage.MSG_START, service.getLocalMember(true));
         Response[] resp = rpcChannel.send(members, msg, RpcChannel.ALL_REPLY, sendOptions, rpcTimeout);
         if (resp.length > 0) {
-            for (int i = 0; i < resp.length; i++) {
-                messageReceived(resp[i].getMessage(), resp[i].getSource());
+            for (Response response : resp) {
+                messageReceived(response.getMessage(), response.getSource());
             }
         } else {
             log.warn(sm.getString("staticMembershipProvider.startMembership.noReplies"));
@@ -282,8 +282,8 @@ public class StaticMembershipProvider extends MembershipProviderBase implements
             try {
                 MemberMessage msg = new MemberMessage(membershipId, MemberMessage.MSG_PING, service.getLocalMember(true));
                 Response[] resp = rpcChannel.send(members, msg, RpcChannel.ALL_REPLY, sendOptions, rpcTimeout);
-                for (int i = 0; i < resp.length; i++) {
-                    messageReceived(resp[i].getMessage(), resp[i].getSource());
+                for (Response response : resp) {
+                    messageReceived(response.getMessage(), response.getSource());
                 }
             } catch (ChannelException ce) {
                 // Handle known failed members
diff --git a/java/org/apache/catalina/tribes/membership/cloud/AbstractStreamProvider.java b/java/org/apache/catalina/tribes/membership/cloud/AbstractStreamProvider.java
index 1c0d60b..717346a 100644
--- a/java/org/apache/catalina/tribes/membership/cloud/AbstractStreamProvider.java
+++ b/java/org/apache/catalina/tribes/membership/cloud/AbstractStreamProvider.java
@@ -121,11 +121,10 @@ public abstract class AbstractStreamProvider implements StreamProvider {
                 trustStore.load(null);
 
                 Collection<? extends Certificate> c = certFactory.generateCertificates(pemInputStream);
-                Iterator<? extends Certificate> i = c.iterator();
-                while (i.hasNext()) {
-                   X509Certificate cert = (X509Certificate)i.next();
-                   String alias = cert.getSubjectX500Principal().getName();
-                   trustStore.setCertificateEntry(alias, cert);
+                for (Certificate certificate : c) {
+                    X509Certificate cert = (X509Certificate) certificate;
+                    String alias = cert.getSubjectX500Principal().getName();
+                    trustStore.setCertificateEntry(alias, cert);
                 }
 
                 TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
diff --git a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
index fb2522e..9525694 100644
--- a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
+++ b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
@@ -276,11 +276,11 @@ public abstract class AbstractReplicatedMap<K,V>
                                                   msg, RpcChannel.ALL_REPLY,
                                                   (channelSendOptions),
                                                   (int) accessTimeout);
-                for (int i = 0; i < resp.length; i++) {
-                    MapMessage mapMsg = (MapMessage)resp[i].getMessage();
+                for (Response response : resp) {
+                    MapMessage mapMsg = (MapMessage) response.getMessage();
                     try {
                         mapMsg.deserialize(getExternalLoaders());
-                        Member member = resp[i].getSource();
+                        Member member = response.getSource();
                         State state = (State) mapMsg.getValue();
                         if (state.isAvailable()) {
                             memberAlive(member);
@@ -289,7 +289,7 @@ public abstract class AbstractReplicatedMap<K,V>
                                 if (log.isInfoEnabled())
                                     log.info(sm.getString("abstractReplicatedMap.ping.stateTransferredMember",
                                             member));
-                                if (mapMembers.containsKey(member) ) {
+                                if (mapMembers.containsKey(member)) {
                                     mapMembers.put(member, Long.valueOf(System.currentTimeMillis()));
                                 }
                             }
@@ -353,9 +353,9 @@ public abstract class AbstractReplicatedMap<K,V>
             Response[] resp = rpcChannel.send(members, msg,
                     RpcChannel.FIRST_REPLY, (channelSendOptions), rpcTimeout);
             if (resp.length > 0) {
-                for (int i = 0; i < resp.length; i++) {
-                    mapMemberAdded(resp[i].getSource());
-                    messageReceived(resp[i].getMessage(), resp[i].getSource());
+                for (Response response : resp) {
+                    mapMemberAdded(response.getSource());
+                    messageReceived(response.getMessage(), response.getSource());
                 }
             } else {
                 log.warn(sm.getString("abstractReplicatedMap.broadcast.noReplies"));
@@ -428,7 +428,7 @@ public abstract class AbstractReplicatedMap<K,V>
         synchronized (mapMembers) {
             @SuppressWarnings("unchecked") // mapMembers has the correct type
             HashMap<Member, Long> list = (HashMap<Member, Long>)mapMembers.clone();
-            for (int i=0; i<exclude.length;i++) list.remove(exclude[i]);
+            for (Member member : exclude) list.remove(member);
             return getMapMembers(list);
         }
     }
@@ -530,8 +530,8 @@ public abstract class AbstractReplicatedMap<K,V>
                         msg = (MapMessage) resp[0].getMessage();
                         msg.deserialize(getExternalLoaders());
                         ArrayList<?> list = (ArrayList<?>) msg.getValue();
-                        for (int i = 0; i < list.size(); i++) {
-                            messageReceived( (Serializable) list.get(i), resp[0].getSource());
+                        for (Object o : list) {
+                            messageReceived((Serializable) o, resp[0].getSource());
                         } //for
                     }
                     stateTransferred = true;
@@ -824,8 +824,8 @@ public abstract class AbstractReplicatedMap<K,V>
     public boolean inSet(Member m, Member[] set) {
         if ( set == null ) return false;
         boolean result = false;
-        for (int i = 0; i < set.length; i++ )
-            if (m.equals(set[i])) {
+        for (Member member : set)
+            if (m.equals(member)) {
                 result = true;
                 break;
             }
@@ -834,14 +834,14 @@ public abstract class AbstractReplicatedMap<K,V>
 
     public Member[] excludeFromSet(Member[] mbrs, Member[] set) {
         List<Member> result = new ArrayList<>();
-        for (int i=0; i<set.length; i++ ) {
+        for (Member member : set) {
             boolean include = true;
-            for (int j = 0; j < mbrs.length; j++ )
-                if (mbrs[j].equals(set[i])) {
+            for (Member mbr : mbrs)
+                if (mbr.equals(member)) {
                     include = false;
                     break;
                 }
-            if ( include ) result.add(set[i]);
+            if (include) result.add(member);
         }
         return result.toArray(new Member[0]);
     }
@@ -1119,11 +1119,10 @@ public abstract class AbstractReplicatedMap<K,V>
      */
     @Override
     public void putAll(Map<? extends K, ? extends V> m) {
-        Iterator<?> i = m.entrySet().iterator();
-        while ( i.hasNext() ) {
+        for (Entry<? extends K, ? extends V> value : m.entrySet()) {
             @SuppressWarnings("unchecked")
-            Map.Entry<K,V> entry = (Map.Entry<K,V>) i.next();
-            put(entry.getKey(),entry.getValue());
+            Entry<K, V> entry = (Entry<K, V>) value;
+            put(entry.getKey(), entry.getValue());
         }
     }
 
diff --git a/java/org/apache/catalina/tribes/transport/PooledSender.java b/java/org/apache/catalina/tribes/transport/PooledSender.java
index 049a401..175fb5d 100644
--- a/java/org/apache/catalina/tribes/transport/PooledSender.java
+++ b/java/org/apache/catalina/tribes/transport/PooledSender.java
@@ -151,8 +151,8 @@ public abstract class PooledSender extends AbstractSender implements MultiPointS
             DataSender[] list = new DataSender[notinuse.size()];
             notinuse.toArray(list);
             boolean result = false;
-            for (int i=0; i<list.length; i++) {
-                result = result | list[i].keepalive();
+            for (DataSender dataSender : list) {
+                result = result | dataSender.keepalive();
             }
             return result;
         }
@@ -206,12 +206,12 @@ public abstract class PooledSender extends AbstractSender implements MultiPointS
             isOpen = false;
             Object[] unused = notinuse.toArray();
             Object[] used = inuse.toArray();
-            for (int i = 0; i < unused.length; i++) {
-                DataSender sender = (DataSender) unused[i];
+            for (Object value : unused) {
+                DataSender sender = (DataSender) value;
                 sender.disconnect();
             }//for
-            for (int i = 0; i < used.length; i++) {
-                DataSender sender = (DataSender) used[i];
+            for (Object o : used) {
+                DataSender sender = (DataSender) o;
                 sender.disconnect();
             }//for
             notinuse.clear();
diff --git a/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java b/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java
index 83ba44a..bdea6f2 100644
--- a/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java
+++ b/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java
@@ -196,37 +196,52 @@ public class NioReplicationTask extends AbstractRxTask {
 
         registerForRead(key,reader);//register to read new data, before we send it off to avoid dead locks
 
-        for ( int i=0; i<msgs.length; i++ ) {
+        /**
+         * Use send ack here if you want to ack the request to the remote
+         * server before completing the request
+         * This is considered an asynchronous request
+         */
+        /**
+         * Use send ack here if you want the request to complete on this
+         * server before sending the ack to the remote server
+         * This is considered a synchronized request
+         */
+        for (ChannelMessage msg : msgs) {
             /**
              * Use send ack here if you want to ack the request to the remote
              * server before completing the request
              * This is considered an asynchronous request
              */
-            if (ChannelData.sendAckAsync(msgs[i].getOptions())) sendAck(key,(WritableByteChannel)channel,Constants.ACK_COMMAND,saddr);
+            if (ChannelData.sendAckAsync(msg.getOptions()))
+                sendAck(key, (WritableByteChannel) channel, Constants.ACK_COMMAND, saddr);
             try {
-                if ( Logs.MESSAGES.isTraceEnabled() ) {
+                if (Logs.MESSAGES.isTraceEnabled()) {
                     try {
-                        Logs.MESSAGES.trace("NioReplicationThread - Received msg:" + new UniqueId(msgs[i].getUniqueId()) + " at " + new java.sql.Timestamp(System.currentTimeMillis()));
-                    }catch ( Throwable t ) {}
+                        Logs.MESSAGES.trace("NioReplicationThread - Received msg:" + new UniqueId(msg.getUniqueId()) + " at " + new java.sql.Timestamp(System.currentTimeMillis()));
+                    } catch (Throwable t) {
+                    }
                 }
                 //process the message
-                getCallback().messageDataReceived(msgs[i]);
+                getCallback().messageDataReceived(msg);
                 /**
                  * Use send ack here if you want the request to complete on this
                  * server before sending the ack to the remote server
                  * This is considered a synchronized request
                  */
-                if (ChannelData.sendAckSync(msgs[i].getOptions())) sendAck(key,(WritableByteChannel)channel,Constants.ACK_COMMAND,saddr);
-            }catch ( RemoteProcessException e ) {
-                if ( log.isDebugEnabled() ) log.error(sm.getString("nioReplicationTask.process.clusterMsg.failed"),e);
-                if (ChannelData.sendAckSync(msgs[i].getOptions())) sendAck(key,(WritableByteChannel)channel,Constants.FAIL_ACK_COMMAND,saddr);
-            }catch ( Exception e ) {
-                log.error(sm.getString("nioReplicationTask.process.clusterMsg.failed"),e);
-                if (ChannelData.sendAckSync(msgs[i].getOptions())) sendAck(key,(WritableByteChannel)channel,Constants.FAIL_ACK_COMMAND,saddr);
+                if (ChannelData.sendAckSync(msg.getOptions()))
+                    sendAck(key, (WritableByteChannel) channel, Constants.ACK_COMMAND, saddr);
+            } catch (RemoteProcessException e) {
+                if (log.isDebugEnabled()) log.error(sm.getString("nioReplicationTask.process.clusterMsg.failed"), e);
+                if (ChannelData.sendAckSync(msg.getOptions()))
+                    sendAck(key, (WritableByteChannel) channel, Constants.FAIL_ACK_COMMAND, saddr);
+            } catch (Exception e) {
+                log.error(sm.getString("nioReplicationTask.process.clusterMsg.failed"), e);
+                if (ChannelData.sendAckSync(msg.getOptions()))
+                    sendAck(key, (WritableByteChannel) channel, Constants.FAIL_ACK_COMMAND, saddr);
             }
-            if ( getUseBufferPool() ) {
-                BufferPool.getBufferPool().returnBuffer(msgs[i].getMessage());
-                msgs[i].setMessage(null);
+            if (getUseBufferPool()) {
+                BufferPool.getBufferPool().returnBuffer(msg.getMessage());
+                msg.setMessage(null);
             }
         }
 
diff --git a/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java b/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java
index 585d2cd..e6e5bdb 100644
--- a/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java
+++ b/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java
@@ -88,9 +88,9 @@ public class ParallelNioSender extends AbstractSender implements MultiPointSende
                         if ( x instanceof ChannelException ) cx = (ChannelException)x;
                         else cx = new ChannelException(sm.getString("parallelNioSender.send.failed"), x);
                     }
-                    for (int i=0; i<senders.length; i++ ) {
-                        if (!senders[i].isComplete()) {
-                            cx.addFaultyMember(senders[i].getDestination(),x);
+                    for (NioSender sender : senders) {
+                        if (!sender.isComplete()) {
+                            cx.addFaultyMember(sender.getDestination(), x);
                         }
                     }
                     throw cx;
@@ -105,9 +105,9 @@ public class ParallelNioSender extends AbstractSender implements MultiPointSende
                     cx = new ChannelException(sm.getString("parallelNioSender.operation.timedout",
                             Long.toString(getTimeout())));
                 }
-                for (int i=0; i<senders.length; i++ ) {
-                    if (!senders[i].isComplete()) {
-                        cx.addFaultyMember(senders[i].getDestination(),cxtimeout);
+                for (NioSender sender : senders) {
+                    if (!sender.isComplete()) {
+                        cx.addFaultyMember(sender.getDestination(), cxtimeout);
                     }
                 }
                 throw cx;
@@ -232,12 +232,12 @@ public class ParallelNioSender extends AbstractSender implements MultiPointSende
 
     private void connect(NioSender[] senders) throws ChannelException {
         ChannelException x = null;
-        for (int i=0; i<senders.length; i++ ) {
+        for (NioSender sender : senders) {
             try {
-                senders[i].connect();
-            }catch ( IOException io ) {
-                if ( x==null ) x = new ChannelException(io);
-                x.addFaultyMember(senders[i].getDestination(),io);
+                sender.connect();
+            } catch (IOException io) {
+                if (x == null) x = new ChannelException(io);
+                x.addFaultyMember(sender.getDestination(), io);
             }
         }
         if ( x != null ) throw x;
@@ -245,12 +245,12 @@ public class ParallelNioSender extends AbstractSender implements MultiPointSende
 
     private void setData(NioSender[] senders, byte[] data) throws ChannelException {
         ChannelException x = null;
-        for (int i=0; i<senders.length; i++ ) {
+        for (NioSender sender : senders) {
             try {
-                senders[i].setMessage(data);
-            }catch ( IOException io ) {
-                if ( x==null ) x = new ChannelException(io);
-                x.addFaultyMember(senders[i].getDestination(),io);
+                sender.setMessage(data);
+            } catch (IOException io) {
+                if (x == null) x = new ChannelException(io);
+                x.addFaultyMember(sender.getDestination(), io);
             }
         }
         if ( x != null ) throw x;
@@ -293,14 +293,14 @@ public class ParallelNioSender extends AbstractSender implements MultiPointSende
     private synchronized void close() throws ChannelException  {
         ChannelException x = null;
         Object[] members = nioSenders.keySet().toArray();
-        for (int i=0; i<members.length; i++ ) {
-            Member mbr = (Member)members[i];
+        for (Object member : members) {
+            Member mbr = (Member) member;
             try {
                 NioSender sender = nioSenders.get(mbr);
                 sender.disconnect();
-            }catch ( Exception e ) {
-                if ( x == null ) x = new ChannelException(e);
-                x.addFaultyMember(mbr,e);
+            } catch (Exception e) {
+                if (x == null) x = new ChannelException(e);
+                x.addFaultyMember(mbr, e);
             }
             nioSenders.remove(mbr);
         }
diff --git a/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java b/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java
index 8741504..4abc3dd 100644
--- a/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java
+++ b/java/org/apache/catalina/tribes/transport/nio/PooledParallelSender.java
@@ -39,8 +39,8 @@ public class PooledParallelSender extends PooledSender implements PooledParallel
             ChannelException cx = new ChannelException(sm.getString(
                     "pooledParallelSender.unable.retrieveSender.timeout",
                     Long.toString(getMaxWait())));
-            for (int i = 0; i < destination.length; i++)
-                cx.addFaultyMember(destination[i], new NullPointerException(sm.getString("pooledParallelSender.unable.retrieveSender")));
+            for (Member member : destination)
+                cx.addFaultyMember(member, new NullPointerException(sm.getString("pooledParallelSender.unable.retrieveSender")));
             throw cx;
         } else {
             try {
diff --git a/java/org/apache/catalina/tribes/util/Arrays.java b/java/org/apache/catalina/tribes/util/Arrays.java
index 89bea76..36ff86a 100644
--- a/java/org/apache/catalina/tribes/util/Arrays.java
+++ b/java/org/apache/catalina/tribes/util/Arrays.java
@@ -109,7 +109,7 @@ public class Arrays {
 
     public static int add(int[] data) {
         int result = 0;
-        for (int i=0;i<data.length; i++ ) result += data[i];
+        for (int datum : data) result += datum;
         return result;
     }
 
@@ -141,7 +141,7 @@ public class Arrays {
         AbsoluteOrder.absoluteOrder(m1);
         AbsoluteOrder.absoluteOrder(m2);
         ArrayList<Member> list = new ArrayList<>(java.util.Arrays.asList(m1));
-        for (int i=0; i<m2.length; i++) if ( !list.contains(m2[i]) ) list.add(m2[i]);
+        for (Member member : m2) if (!list.contains(member)) list.add(member);
         Member[] result = new Member[list.size()];
         list.toArray(result);
         AbsoluteOrder.absoluteOrder(result);
@@ -149,15 +149,15 @@ public class Arrays {
     }
 
     public static void fill(Membership mbrship, Member[] m) {
-        for (int i=0; i<m.length; i++ ) mbrship.addMember(m[i]);
+        for (Member member : m) mbrship.addMember(member);
     }
 
     public static Member[] diff(Membership complete, Membership local, Member ignore) {
         List<Member> result = new ArrayList<>();
         Member[] comp = complete.getMembers();
-        for ( int i=0; i<comp.length; i++ ) {
-            if ( ignore!=null && ignore.equals(comp[i]) ) continue;
-            if ( local.getMember(comp[i]) == null ) result.add(comp[i]);
+        for (Member member : comp) {
+            if (ignore != null && ignore.equals(member)) continue;
+            if (local.getMember(member) == null) result.add(member);
         }
         return result.toArray(new Member[0]);
     }
@@ -169,7 +169,7 @@ public class Arrays {
     public static Member[] extract(Member[] all, Member[] remove) {
         List<Member> alist = java.util.Arrays.asList(all);
         ArrayList<Member> list = new ArrayList<>(alist);
-        for (int i=0; i<remove.length; i++ ) list.remove(remove[i]);
+        for (Member member : remove) list.remove(member);
         return list.toArray(new Member[0]);
     }
 
@@ -192,8 +192,7 @@ public class Arrays {
             return 0;
 
         int result = 1;
-        for (int i=0; i<a.length; i++) {
-            byte element = a[i];
+        for (byte element : a) {
             result = 31 * result + element;
         }
         return result;
diff --git a/java/org/apache/catalina/util/DOMWriter.java b/java/org/apache/catalina/util/DOMWriter.java
index ee99305..96f6567 100644
--- a/java/org/apache/catalina/util/DOMWriter.java
+++ b/java/org/apache/catalina/util/DOMWriter.java
@@ -63,8 +63,7 @@ public class DOMWriter {
                 out.print('<');
                 out.print(node.getLocalName());
                 Attr attrs[] = sortAttributes(node.getAttributes());
-                for (int i = 0; i < attrs.length; i++) {
-                    Attr attr = attrs[i];
+                for (Attr attr : attrs) {
                     out.print(' ');
                     out.print(attr.getLocalName());
 
diff --git a/java/org/apache/catalina/util/ExtensionValidator.java b/java/org/apache/catalina/util/ExtensionValidator.java
index b495a52..45c6fd4 100644
--- a/java/org/apache/catalina/util/ExtensionValidator.java
+++ b/java/org/apache/catalina/util/ExtensionValidator.java
@@ -344,15 +344,15 @@ public final class ExtensionValidator {
                 if (files == null) {
                     continue;
                 }
-                for (int i = 0; i < files.length; i++) {
-                    if (files[i].getName().toLowerCase(Locale.ENGLISH).endsWith(".jar") &&
-                            files[i].isFile()) {
+                for (File file : files) {
+                    if (file.getName().toLowerCase(Locale.ENGLISH).endsWith(".jar") &&
+                            file.isFile()) {
                         try {
-                            addSystemResource(files[i]);
+                            addSystemResource(file);
                         } catch (IOException e) {
                             log.error
-                                (sm.getString
-                                 ("extensionValidator.failload", files[i]), e);
+                                    (sm.getString
+                                            ("extensionValidator.failload", file), e);
                         }
                     }
                 }
diff --git a/java/org/apache/catalina/util/URLEncoder.java b/java/org/apache/catalina/util/URLEncoder.java
index f23dc40..d686377 100644
--- a/java/org/apache/catalina/util/URLEncoder.java
+++ b/java/org/apache/catalina/util/URLEncoder.java
@@ -170,9 +170,8 @@ public final class URLEncoder implements Cloneable {
                     continue;
                 }
                 byte[] ba = buf.toByteArray();
-                for (int j = 0; j < ba.length; j++) {
+                for (byte toEncode : ba) {
                     // Converting each byte in the buffer
-                    byte toEncode = ba[j];
                     rewrittenPath.append('%');
                     int low = toEncode & 0x0f;
                     int high = (toEncode & 0xf0) >> 4;
diff --git a/java/org/apache/catalina/valves/AbstractAccessLogValve.java b/java/org/apache/catalina/valves/AbstractAccessLogValve.java
index fe3fee1..d9c653a 100644
--- a/java/org/apache/catalina/valves/AbstractAccessLogValve.java
+++ b/java/org/apache/catalina/valves/AbstractAccessLogValve.java
@@ -712,8 +712,8 @@ public abstract class AbstractAccessLogValve extends ValveBase implements Access
             result = new CharArrayWriter(128);
         }
 
-        for (int i = 0; i < logElements.length; i++) {
-            logElements[i].addElement(result, date, request, response, time);
+        for (AccessLogElement logElement : logElements) {
+            logElement.addElement(result, date, request, response, time);
         }
 
         log(result);
@@ -1515,9 +1515,9 @@ public abstract class AbstractAccessLogValve extends ValveBase implements Access
             String value = "-";
             Cookie[] c = request.getCookies();
             if (c != null) {
-                for (int i = 0; i < c.length; i++) {
-                    if (header.equals(c[i].getName())) {
-                        value = c[i].getValue();
+                for (Cookie cookie : c) {
+                    if (header.equals(cookie.getName())) {
+                        value = cookie.getValue();
                         break;
                     }
                 }
diff --git a/java/org/apache/catalina/valves/RemoteIpValve.java b/java/org/apache/catalina/valves/RemoteIpValve.java
index c9a77e5..53191e5 100644
--- a/java/org/apache/catalina/valves/RemoteIpValve.java
+++ b/java/org/apache/catalina/valves/RemoteIpValve.java
@@ -782,8 +782,8 @@ public class RemoteIpValve extends ValveBase {
         if (forwardedProtocols.length == 0) {
             return false;
         }
-        for (int i = 0; i < forwardedProtocols.length; i++) {
-            if (!protocolHeaderHttpsValue.equalsIgnoreCase(forwardedProtocols[i])) {
+        for (String forwardedProtocol : forwardedProtocols) {
+            if (!protocolHeaderHttpsValue.equalsIgnoreCase(forwardedProtocol)) {
                 return false;
             }
         }
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteRule.java b/java/org/apache/catalina/valves/rewrite/RewriteRule.java
index 0b47cb2..833a12c 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteRule.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteRule.java
@@ -53,14 +53,14 @@ public class RewriteRule {
         }
         Pattern.compile(patternString, flags);
         // Parse conditions
-        for (int i = 0; i < conditions.length; i++) {
-            conditions[i].parse(maps);
+        for (RewriteCond condition : conditions) {
+            condition.parse(maps);
         }
         // Parse flag which have substitution values
         if (isEnv()) {
-            for (int i = 0; i < envValue.size(); i++) {
+            for (String s : envValue) {
                 Substitution newEnvSubstitution = new Substitution();
-                newEnvSubstitution.setSub(envValue.get(i));
+                newEnvSubstitution.setSub(s);
                 newEnvSubstitution.parse(maps);
                 envSubstitution.add(newEnvSubstitution);
                 envResult.add(new ThreadLocal<String>());
diff --git a/java/org/apache/catalina/valves/rewrite/RewriteValve.java b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
index aa4bb7c..20d8ba0 100644
--- a/java/org/apache/catalina/valves/rewrite/RewriteValve.java
+++ b/java/org/apache/catalina/valves/rewrite/RewriteValve.java
@@ -200,11 +200,11 @@ public class RewriteValve extends ValveBase {
         if (mapsConfiguration.size() > 0) {
             buffer.append("\r\n");
         }
-        for (int i = 0; i < rules.length; i++) {
-            for (int j = 0; j < rules[i].getConditions().length; j++) {
-                buffer.append(rules[i].getConditions()[j].toString()).append("\r\n");
+        for (RewriteRule rule : rules) {
+            for (int j = 0; j < rule.getConditions().length; j++) {
+                buffer.append(rule.getConditions()[j].toString()).append("\r\n");
             }
-            buffer.append(rules[i].toString()).append("\r\n").append("\r\n");
+            buffer.append(rule.toString()).append("\r\n").append("\r\n");
         }
         return buffer.toString();
     }
@@ -230,16 +230,16 @@ public class RewriteValve extends ValveBase {
                             conditions.get(i).setOrnext(true);
                         }
                     }
-                    for (int i = 0; i < conditions.size(); i++) {
+                    for (RewriteCond condition : conditions) {
                         if (containerLog.isDebugEnabled()) {
-                            RewriteCond cond = conditions.get(i);
+                            RewriteCond cond = condition;
                             containerLog.debug("Add condition " + cond.getCondPattern()
                                     + " test " + cond.getTestString() + " to rule with pattern "
                                     + rule.getPatternString() + " and substitution "
                                     + rule.getSubstitutionString() + (cond.isOrnext() ? " [OR]" : "")
                                     + (cond.isNocase() ? " [NC]" : ""));
                         }
-                        rule.addCondition(conditions.get(i));
+                        rule.addCondition(condition);
                     }
                     conditions.clear();
                     rules.add(rule);
@@ -263,8 +263,8 @@ public class RewriteValve extends ValveBase {
         this.rules = rules.toArray(new RewriteRule[0]);
 
         // Finish parsing the rules
-        for (int i = 0; i < this.rules.length; i++) {
-            this.rules[i].parse(maps);
+        for (RewriteRule rule : this.rules) {
+            rule.parse(maps);
         }
     }
 
diff --git a/java/org/apache/catalina/valves/rewrite/Substitution.java b/java/org/apache/catalina/valves/rewrite/Substitution.java
index 58ad20e..121fc1e 100644
--- a/java/org/apache/catalina/valves/rewrite/Substitution.java
+++ b/java/org/apache/catalina/valves/rewrite/Substitution.java
@@ -315,8 +315,8 @@ public class Substitution {
 
     private String evaluateSubstitution(SubstitutionElement[] elements, Matcher rule, Matcher cond, Resolver resolver) {
         StringBuffer buf = new StringBuffer();
-        for (int i = 0; i < elements.length; i++) {
-            buf.append(elements[i].evaluate(rule, cond, resolver));
+        for (SubstitutionElement element : elements) {
+            buf.append(element.evaluate(rule, cond, resolver));
         }
         return buf.toString();
     }
diff --git a/java/org/apache/coyote/CompressionConfig.java b/java/org/apache/coyote/CompressionConfig.java
index f55c2dd..5f4d333 100644
--- a/java/org/apache/coyote/CompressionConfig.java
+++ b/java/org/apache/coyote/CompressionConfig.java
@@ -309,8 +309,8 @@ public class CompressionConfig {
         if (value == null) {
             return false;
         }
-        for (int i = 0; i < sArray.length; i++) {
-            if (value.startsWith(sArray[i])) {
+        for (String s : sArray) {
+            if (value.startsWith(s)) {
                 return true;
             }
         }
diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java b/java/org/apache/coyote/ajp/AjpProcessor.java
index 596dbcf..d24a818 100644
--- a/java/org/apache/coyote/ajp/AjpProcessor.java
+++ b/java/org/apache/coyote/ajp/AjpProcessor.java
@@ -586,8 +586,7 @@ public class AjpProcessor extends AbstractProcessor {
         else if (messageLength == 0) {
             // Zero length message.
             return true;
-        }
-        else {
+        } else {
             if (messageLength > message.getBuffer().length) {
                 // Message too long for the buffer
                 // Need to trigger a 400 response
@@ -1013,8 +1012,7 @@ public class AjpProcessor extends AbstractProcessor {
             int hC = Constants.getResponseAjpIndex(hN.toString());
             if (hC > 0) {
                 responseMessage.appendInt(hC);
-            }
-            else {
+            } else {
                 responseMessage.appendBytes(hN);
             }
             MessageBytes hV=headers.getValue(i);
diff --git a/java/org/apache/el/parser/AstCompositeExpression.java b/java/org/apache/el/parser/AstCompositeExpression.java
index 82ed6a6..2f59277 100644
--- a/java/org/apache/el/parser/AstCompositeExpression.java
+++ b/java/org/apache/el/parser/AstCompositeExpression.java
@@ -45,8 +45,8 @@ public final class AstCompositeExpression extends SimpleNode {
         StringBuilder sb = new StringBuilder(16);
         Object obj = null;
         if (this.children != null) {
-            for (int i = 0; i < this.children.length; i++) {
-                obj = this.children[i].getValue(ctx);
+            for (Node child : this.children) {
+                obj = child.getValue(ctx);
                 if (obj != null) {
                     sb.append(ELSupport.coerceToString(ctx, obj));
                 }
diff --git a/java/org/apache/el/parser/ELParserTokenManager.java b/java/org/apache/el/parser/ELParserTokenManager.java
index d621765..1a7522a 100644
--- a/java/org/apache/el/parser/ELParserTokenManager.java
+++ b/java/org/apache/el/parser/ELParserTokenManager.java
@@ -194,9 +194,7 @@ private int jjMoveNfa_0(int startState, int curPos)
                default : break;
             }
          } while(i != startsAt);
-      }
-      else
-      {
+      } else {
          int hiByte = (int)(curChar >> 8);
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
@@ -976,9 +974,7 @@ private int jjMoveNfa_2(int startState, int curPos)
                default : break;
             }
          } while(i != startsAt);
-      }
-      else
-      {
+      } else {
          int hiByte = (int)(curChar >> 8);
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
@@ -1751,9 +1747,7 @@ private int jjMoveNfa_1(int startState, int curPos)
                default : break;
             }
          } while(i != startsAt);
-      }
-      else
-      {
+      } else {
          int hiByte = (int)(curChar >> 8);
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
@@ -2045,9 +2039,7 @@ public Token getNextToken()
        if (jjnewLexState[jjmatchedKind] != -1)
          curLexState = jjnewLexState[jjmatchedKind];
            return matchedToken;
-        }
-        else
-        {
+        } else {
          if (jjnewLexState[jjmatchedKind] != -1)
            curLexState = jjnewLexState[jjmatchedKind];
            continue EOFLoop;
diff --git a/java/org/apache/el/parser/SimpleCharStream.java b/java/org/apache/el/parser/SimpleCharStream.java
index 0984071..5f1f39e 100644
--- a/java/org/apache/el/parser/SimpleCharStream.java
+++ b/java/org/apache/el/parser/SimpleCharStream.java
@@ -60,9 +60,7 @@ public class SimpleCharStream
         bufcolumn = newbufcolumn;
 
         maxNextCharInd = (bufpos += (bufsize - tokenBegin));
-      }
-      else
-      {
+      } else {
         System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
         buffer = newbuffer;
 
@@ -432,9 +430,7 @@ public class SimpleCharStream
     if (bufpos >= tokenBegin)
     {
       len = bufpos - tokenBegin + inBuf + 1;
-    }
-    else
-    {
+    } else {
       len = bufsize - tokenBegin + bufpos + 1 + inBuf;
     }
 
diff --git a/java/org/apache/el/parser/SimpleNode.java b/java/org/apache/el/parser/SimpleNode.java
index e2a2789..9eca64c 100644
--- a/java/org/apache/el/parser/SimpleNode.java
+++ b/java/org/apache/el/parser/SimpleNode.java
@@ -141,8 +141,8 @@ public abstract class SimpleNode extends ELSupport implements Node {
     public void accept(NodeVisitor visitor) throws Exception {
         visitor.visit(this);
         if (this.children != null && this.children.length > 0) {
-            for (int i = 0; i < this.children.length; i++) {
-                this.children[i].accept(visitor);
+            for (Node child : this.children) {
+                child.accept(visitor);
             }
         }
     }
diff --git a/java/org/apache/el/util/ReflectionUtil.java b/java/org/apache/el/util/ReflectionUtil.java
index f35f7c8..8aa81ff 100644
--- a/java/org/apache/el/util/ReflectionUtil.java
+++ b/java/org/apache/el/util/ReflectionUtil.java
@@ -433,9 +433,9 @@ public class ReflectionUtil {
         }
         Class<?>[] inf = type.getInterfaces();
         Method mp = null;
-        for (int i = 0; i < inf.length; i++) {
+        for (Class<?> aClass : inf) {
             try {
-                mp = inf[i].getMethod(m.getName(), m.getParameterTypes());
+                mp = aClass.getMethod(m.getName(), m.getParameterTypes());
                 mp = getMethod(mp.getDeclaringClass(), base, mp);
                 if (mp != null) {
                     return mp;
@@ -463,11 +463,11 @@ public class ReflectionUtil {
     private static final String paramString(Class<?>[] types) {
         if (types != null) {
             StringBuilder sb = new StringBuilder();
-            for (int i = 0; i < types.length; i++) {
-                if (types[i] == null) {
+            for (Class<?> type : types) {
+                if (type == null) {
                     sb.append("null, ");
                 } else {
-                    sb.append(types[i].getName()).append(", ");
+                    sb.append(type.getName()).append(", ");
                 }
             }
             if (sb.length() > 2) {
diff --git a/java/org/apache/jasper/JspC.java b/java/org/apache/jasper/JspC.java
index c973f29..1d97ce5 100644
--- a/java/org/apache/jasper/JspC.java
+++ b/java/org/apache/jasper/JspC.java
@@ -1726,19 +1726,19 @@ public class JspC extends Task implements Options {
             if (lib.exists() && lib.isDirectory()) {
                 String[] libs = lib.list();
                 if (libs != null) {
-                    for (int i = 0; i < libs.length; i++) {
-                        if( libs[i].length() <5 ) continue;
-                        String ext=libs[i].substring( libs[i].length() - 4 );
-                        if (! ".jar".equalsIgnoreCase(ext)) {
+                    for (String s : libs) {
+                        if (s.length() < 5) continue;
+                        String ext = s.substring(s.length() - 4);
+                        if (!".jar".equalsIgnoreCase(ext)) {
                             if (".tld".equalsIgnoreCase(ext)) {
                                 log.warn(Localizer.getMessage("jspc.warning.tldInWebInfLib"));
                             }
                             continue;
                         }
                         try {
-                            File libFile = new File(lib, libs[i]);
+                            File libFile = new File(lib, s);
                             classPath = classPath + File.pathSeparator
-                                + libFile.getAbsolutePath();
+                                    + libFile.getAbsolutePath();
                             urls.add(libFile.getAbsoluteFile().toURI().toURL());
                         } catch (IOException ioe) {
                             // failing a toCanonicalPath on a file that
diff --git a/java/org/apache/jasper/compiler/Collector.java b/java/org/apache/jasper/compiler/Collector.java
index 48f6d0f..cd0f38d 100644
--- a/java/org/apache/jasper/compiler/Collector.java
+++ b/java/org/apache/jasper/compiler/Collector.java
@@ -165,8 +165,8 @@ class Collector {
                 scriptingElementSeen = true;
 
             Node.JspAttribute[] attrs = n.getJspAttributes();
-            for (int i = 0; i < attrs.length; i++) {
-                if (attrs[i].isExpression()) {
+            for (Node.JspAttribute attr : attrs) {
+                if (attr.isExpression()) {
                     scriptingElementSeen = true;
                     break;
                 }
diff --git a/java/org/apache/jasper/compiler/DefaultErrorHandler.java b/java/org/apache/jasper/compiler/DefaultErrorHandler.java
index d3e2eec..3b6cb9c 100644
--- a/java/org/apache/jasper/compiler/DefaultErrorHandler.java
+++ b/java/org/apache/jasper/compiler/DefaultErrorHandler.java
@@ -71,29 +71,29 @@ class DefaultErrorHandler implements ErrorHandler {
         Object[] args = null;
         StringBuilder buf = new StringBuilder();
 
-        for (int i=0; i < details.length; i++) {
-            if (details[i].getJspBeginLineNumber() >= 0) {
-                args = new Object[] {
-                        Integer.valueOf(details[i].getJspBeginLineNumber()),
-                        details[i].getJspFileName() };
+        for (JavacErrorDetail detail : details) {
+            if (detail.getJspBeginLineNumber() >= 0) {
+                args = new Object[]{
+                        Integer.valueOf(detail.getJspBeginLineNumber()),
+                        detail.getJspFileName()};
                 buf.append(System.lineSeparator());
                 buf.append(System.lineSeparator());
                 buf.append(Localizer.getMessage("jsp.error.single.line.number",
                         args));
                 buf.append(System.lineSeparator());
-                buf.append(details[i].getErrorMessage());
+                buf.append(detail.getErrorMessage());
                 buf.append(System.lineSeparator());
-                buf.append(details[i].getJspExtract());
+                buf.append(detail.getJspExtract());
             } else {
-                args = new Object[] {
-                        Integer.valueOf(details[i].getJavaLineNumber()),
-                        details[i].getJavaFileName() };
+                args = new Object[]{
+                        Integer.valueOf(detail.getJavaLineNumber()),
+                        detail.getJavaFileName()};
                 buf.append(System.lineSeparator());
                 buf.append(System.lineSeparator());
                 buf.append(Localizer.getMessage("jsp.error.java.line.number",
                         args));
                 buf.append(System.lineSeparator());
-                buf.append(details[i].getErrorMessage());
+                buf.append(detail.getErrorMessage());
             }
         }
         buf.append(System.lineSeparator());
diff --git a/java/org/apache/jasper/compiler/ELFunctionMapper.java b/java/org/apache/jasper/compiler/ELFunctionMapper.java
index 37fd5b5..9a8acc6 100644
--- a/java/org/apache/jasper/compiler/ELFunctionMapper.java
+++ b/java/org/apache/jasper/compiler/ELFunctionMapper.java
@@ -239,8 +239,7 @@ public class ELFunctionMapper {
                         int iArray = params[k].indexOf('[');
                         if (iArray < 0) {
                             ds.append(params[k] + ".class");
-                        }
-                        else {
+                        } else {
                             String baseType = params[k].substring(0, iArray);
                             ds.append("java.lang.reflect.Array.newInstance(");
                             ds.append(baseType);
diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java
index e2e95a9..867f404 100644
--- a/java/org/apache/jasper/compiler/Generator.java
+++ b/java/org/apache/jasper/compiler/Generator.java
@@ -322,9 +322,9 @@ class Generator {
                     if (attrNames.length > 0) {
                         poolName.append('&');
                     }
-                    for (int i = 0; i < attrNames.length; i++) {
+                    for (String attrName : attrNames) {
                         poolName.append('_');
-                        poolName.append(attrNames[i]);
+                        poolName.append(attrName);
                     }
                 }
                 if (hasEmptyBody) {
@@ -359,13 +359,13 @@ class Generator {
                     VariableInfo[] varInfos = n.getVariableInfos();
 
                     if (varInfos.length > 0) {
-                        for (int i = 0; i < varInfos.length; i++) {
-                            String varName = varInfos[i].getVarName();
+                        for (VariableInfo varInfo : varInfos) {
+                            String varName = varInfo.getVarName();
                             String tmpVarName = "_jspx_" + varName + "_"
                                     + n.getCustomNestingLevel();
                             if (!vars.contains(tmpVarName)) {
                                 vars.add(tmpVarName);
-                                out.printin(varInfos[i].getClassName());
+                                out.printin(varInfo.getClassName());
                                 out.print(" ");
                                 out.print(tmpVarName);
                                 out.print(" = ");
@@ -374,12 +374,13 @@ class Generator {
                             }
                         }
                     } else {
-                        for (int i = 0; i < tagVarInfos.length; i++) {
-                            String varName = tagVarInfos[i].getNameGiven();
+                        for (TagVariableInfo tagVarInfo : tagVarInfos) {
+                            String varName = tagVarInfo.getNameGiven();
                             if (varName == null) {
                                 varName = n.getTagData().getAttributeString(
-                                        tagVarInfos[i].getNameFromAttribute());
-                            } else if (tagVarInfos[i].getNameFromAttribute() != null) {
+                                        tagVarInfo.getNameFromAttribute());
+                            }
+                            else if (tagVarInfo.getNameFromAttribute() != null) {
                                 // alias
                                 continue;
                             }
@@ -387,7 +388,7 @@ class Generator {
                                     + n.getCustomNestingLevel();
                             if (!vars.contains(tmpVarName)) {
                                 vars.add(tmpVarName);
-                                out.printin(tagVarInfos[i].getClassName());
+                                out.printin(tagVarInfo.getClassName());
                                 out.print(" ");
                                 out.print(tmpVarName);
                                 out.print(" = ");
@@ -1865,21 +1866,19 @@ class Generator {
             // a later test as per JSP.5.3
             VariableInfo[] infos = n.getVariableInfos();
             if (infos != null && infos.length > 0) {
-                for (int i = 0; i < infos.length; i++) {
-                    VariableInfo info = infos[i];
+                for (VariableInfo info : infos) {
                     if (info != null && info.getVarName() != null)
                         pageInfo.getVarInfoNames().add(info.getVarName());
                 }
             }
             TagVariableInfo[] tagInfos = n.getTagVariableInfos();
             if (tagInfos != null && tagInfos.length > 0) {
-                for (int i = 0; i < tagInfos.length; i++) {
-                    TagVariableInfo tagInfo = tagInfos[i];
+                for (TagVariableInfo tagInfo : tagInfos) {
                     if (tagInfo != null) {
                         String name = tagInfo.getNameGiven();
                         if (name == null) {
                             String nameFromAttribute =
-                                tagInfo.getNameFromAttribute();
+                                    tagInfo.getNameFromAttribute();
                             name = n.getAttributeValue(nameFromAttribute);
                         }
                         pageInfo.getVarInfoNames().add(name);
@@ -2711,8 +2710,7 @@ class Generator {
 
             List<Object> vec = n.getScriptingVars(scope);
             if (vec != null) {
-                for (int i = 0; i < vec.size(); i++) {
-                    Object elem = vec.get(i);
+                for (Object elem : vec) {
                     if (elem instanceof VariableInfo) {
                         VariableInfo varInfo = (VariableInfo) elem;
                         if (varInfo.getDeclare()) {
@@ -2728,7 +2726,8 @@ class Generator {
                             if (varName == null) {
                                 varName = n.getTagData().getAttributeString(
                                         tagVarInfo.getNameFromAttribute());
-                            } else if (tagVarInfo.getNameFromAttribute() != null) {
+                            }
+                            else if (tagVarInfo.getNameFromAttribute() != null) {
                                 // alias
                                 continue;
                             }
@@ -2773,14 +2772,14 @@ class Generator {
             List<Object> declaredVariables = n.getScriptingVars(scope);
 
             if (varInfos.length > 0) {
-                for (int i = 0; i < varInfos.length; i++) {
-                    if (varInfos[i].getScope() != scope)
+                for (VariableInfo varInfo : varInfos) {
+                    if (varInfo.getScope() != scope)
                         continue;
                     // If the scripting variable has been declared, skip codes
                     // for saving and restoring it.
-                    if (declaredVariables.contains(varInfos[i]))
+                    if (declaredVariables.contains(varInfo))
                         continue;
-                    String varName = varInfos[i].getVarName();
+                    String varName = varInfo.getVarName();
                     String tmpVarName = "_jspx_" + varName + "_"
                             + n.getCustomNestingLevel();
                     out.printin(tmpVarName);
@@ -2789,18 +2788,19 @@ class Generator {
                     out.println(";");
                 }
             } else {
-                for (int i = 0; i < tagVarInfos.length; i++) {
-                    if (tagVarInfos[i].getScope() != scope)
+                for (TagVariableInfo tagVarInfo : tagVarInfos) {
+                    if (tagVarInfo.getScope() != scope)
                         continue;
                     // If the scripting variable has been declared, skip codes
                     // for saving and restoring it.
-                    if (declaredVariables.contains(tagVarInfos[i]))
+                    if (declaredVariables.contains(tagVarInfo))
                         continue;
-                    String varName = tagVarInfos[i].getNameGiven();
+                    String varName = tagVarInfo.getNameGiven();
                     if (varName == null) {
                         varName = n.getTagData().getAttributeString(
-                                tagVarInfos[i].getNameFromAttribute());
-                    } else if (tagVarInfos[i].getNameFromAttribute() != null) {
+                                tagVarInfo.getNameFromAttribute());
+                    }
+                    else if (tagVarInfo.getNameFromAttribute() != null) {
                         // alias
                         continue;
                     }
@@ -2843,14 +2843,14 @@ class Generator {
             List<Object> declaredVariables = n.getScriptingVars(scope);
 
             if (varInfos.length > 0) {
-                for (int i = 0; i < varInfos.length; i++) {
-                    if (varInfos[i].getScope() != scope)
+                for (VariableInfo varInfo : varInfos) {
+                    if (varInfo.getScope() != scope)
                         continue;
                     // If the scripting variable has been declared, skip codes
                     // for saving and restoring it.
-                    if (declaredVariables.contains(varInfos[i]))
+                    if (declaredVariables.contains(varInfo))
                         continue;
-                    String varName = varInfos[i].getVarName();
+                    String varName = varInfo.getVarName();
                     String tmpVarName = "_jspx_" + varName + "_"
                             + n.getCustomNestingLevel();
                     out.printin(varName);
@@ -2859,18 +2859,19 @@ class Generator {
                     out.println(";");
                 }
             } else {
-                for (int i = 0; i < tagVarInfos.length; i++) {
-                    if (tagVarInfos[i].getScope() != scope)
+                for (TagVariableInfo tagVarInfo : tagVarInfos) {
+                    if (tagVarInfo.getScope() != scope)
                         continue;
                     // If the scripting variable has been declared, skip codes
                     // for saving and restoring it.
-                    if (declaredVariables.contains(tagVarInfos[i]))
+                    if (declaredVariables.contains(tagVarInfo))
                         continue;
-                    String varName = tagVarInfos[i].getNameGiven();
+                    String varName = tagVarInfo.getNameGiven();
                     if (varName == null) {
                         varName = n.getTagData().getAttributeString(
-                                tagVarInfos[i].getNameFromAttribute());
-                    } else if (tagVarInfos[i].getNameFromAttribute() != null) {
+                                tagVarInfo.getNameFromAttribute());
+                    }
+                    else if (tagVarInfo.getNameFromAttribute() != null) {
                         // alias
                         continue;
                     }
@@ -2906,30 +2907,31 @@ class Generator {
             }
 
             if (varInfos.length > 0) {
-                for (int i = 0; i < varInfos.length; i++) {
-                    if (varInfos[i].getScope() == scope) {
-                        out.printin(varInfos[i].getVarName());
+                for (VariableInfo varInfo : varInfos) {
+                    if (varInfo.getScope() == scope) {
+                        out.printin(varInfo.getVarName());
                         out.print(" = (");
-                        out.print(varInfos[i].getClassName());
+                        out.print(varInfo.getClassName());
                         out.print(") _jspx_page_context.findAttribute(");
-                        out.print(quote(varInfos[i].getVarName()));
+                        out.print(quote(varInfo.getVarName()));
                         out.println(");");
                     }
                 }
             } else {
-                for (int i = 0; i < tagVarInfos.length; i++) {
-                    if (tagVarInfos[i].getScope() == scope) {
-                        String name = tagVarInfos[i].getNameGiven();
+                for (TagVariableInfo tagVarInfo : tagVarInfos) {
+                    if (tagVarInfo.getScope() == scope) {
+                        String name = tagVarInfo.getNameGiven();
                         if (name == null) {
                             name = n.getTagData().getAttributeString(
-                                    tagVarInfos[i].getNameFromAttribute());
-                        } else if (tagVarInfos[i].getNameFromAttribute() != null) {
+                                    tagVarInfo.getNameFromAttribute());
+                        }
+                        else if (tagVarInfo.getNameFromAttribute() != null) {
                             // alias
                             continue;
                         }
                         out.printin(name);
                         out.print(" = (");
-                        out.print(tagVarInfos[i].getClassName());
+                        out.print(tagVarInfo.getClassName());
                         out.print(") _jspx_page_context.findAttribute(");
                         out.print(quote(name));
                         out.println(");");
@@ -3096,8 +3098,8 @@ class Generator {
                     sb.append("new java.lang.Class[] {");
 
                     String[] p = attr.getParameterTypeNames();
-                    for (int i = 0; i < p.length; i++) {
-                        sb.append(JspUtil.toJavaSourceTypeFromTld(p[i]));
+                    for (String s : p) {
+                        sb.append(JspUtil.toJavaSourceTypeFromTld(s));
                         sb.append(',');
                     }
                     if (p.length > 0) {
@@ -3132,9 +3134,9 @@ class Generator {
             String aliasMapVar = null;
 
             boolean aliasSeen = false;
-            for (int i = 0; i < tagVars.length; i++) {
+            for (TagVariableInfo tagVar : tagVars) {
 
-                String nameFrom = tagVars[i].getNameFromAttribute();
+                String nameFrom = tagVar.getNameFromAttribute();
                 if (nameFrom != null) {
                     String aliasedName = n.getAttributeValue(nameFrom);
                     if (aliasedName == null)
@@ -3149,7 +3151,7 @@ class Generator {
                     }
                     out.printin(aliasMapVar);
                     out.print(".put(");
-                    out.print(quote(tagVars[i].getNameGiven()));
+                    out.print(quote(tagVar.getNameGiven()));
                     out.print(", ");
                     out.print(quote(aliasedName));
                     out.println(");");
@@ -3506,8 +3508,7 @@ class Generator {
      */
     private void genCommonPostamble() {
         // Append any methods that were generated in the buffer.
-        for (int i = 0; i < methodsBuffered.size(); i++) {
-            GenBuffer methodBuffer = methodsBuffered.get(i);
+        for (GenBuffer methodBuffer : methodsBuffered) {
             methodBuffer.adjustJavaLines(out.getJavaLine() - 1);
             out.printMultiLn(methodBuffer.toString());
         }
@@ -3843,34 +3844,34 @@ class Generator {
 
         // Declare attributes
         TagAttributeInfo[] attrInfos = tagInfo.getAttributes();
-        for (int i = 0; i < attrInfos.length; i++) {
+        for (TagAttributeInfo info : attrInfos) {
             out.printin("private ");
-            if (attrInfos[i].isFragment()) {
+            if (info.isFragment()) {
                 out.print("jakarta.servlet.jsp.tagext.JspFragment ");
             } else {
-                out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
+                out.print(JspUtil.toJavaSourceType(info.getTypeName()));
                 out.print(" ");
             }
             out.print(JspUtil.makeJavaIdentifierForAttribute(
-                    attrInfos[i].getName()));
+                    info.getName()));
             out.println(";");
         }
         out.println();
 
         // Define attribute getter and setter methods
-        for (int i = 0; i < attrInfos.length; i++) {
+        for (TagAttributeInfo attrInfo : attrInfos) {
             String javaName =
-                JspUtil.makeJavaIdentifierForAttribute(attrInfos[i].getName());
+                    JspUtil.makeJavaIdentifierForAttribute(attrInfo.getName());
 
             // getter method
             out.printin("public ");
-            if (attrInfos[i].isFragment()) {
+            if (attrInfo.isFragment()) {
                 out.print("jakarta.servlet.jsp.tagext.JspFragment ");
             } else {
-                out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
+                out.print(JspUtil.toJavaSourceType(attrInfo.getTypeName()));
                 out.print(" ");
             }
-            out.print(toGetterMethod(attrInfos[i].getName()));
+            out.print(toGetterMethod(attrInfo.getName()));
             out.println(" {");
             out.pushIndent();
             out.printin("return this.");
@@ -3882,12 +3883,12 @@ class Generator {
 
             // setter method
             out.printin("public void ");
-            out.print(toSetterMethodName(attrInfos[i].getName()));
-            if (attrInfos[i].isFragment()) {
+            out.print(toSetterMethodName(attrInfo.getName()));
+            if (attrInfo.isFragment()) {
                 out.print("(jakarta.servlet.jsp.tagext.JspFragment ");
             } else {
                 out.print("(");
-                out.print(JspUtil.toJavaSourceType(attrInfos[i].getTypeName()));
+                out.print(JspUtil.toJavaSourceType(attrInfo.getTypeName()));
                 out.print(" ");
             }
             out.print(javaName);
@@ -3901,7 +3902,7 @@ class Generator {
             if (ctxt.isTagFile()) {
                 // Tag files should also set jspContext attributes
                 out.printin("jspContext.setAttribute(\"");
-                out.print(attrInfos[i].getName());
+                out.print(attrInfo.getName());
                 out.print("\", ");
                 out.print(javaName);
                 out.println(");");
@@ -3927,9 +3928,9 @@ class Generator {
         // Determine if there are any aliases
         boolean aliasSeen = false;
         TagVariableInfo[] tagVars = tagInfo.getTagVariableInfos();
-        for (int i = 0; i < tagVars.length; i++) {
-            if (tagVars[i].getNameFromAttribute() != null
-                    && tagVars[i].getNameGiven() != null) {
+        for (TagVariableInfo var : tagVars) {
+            if (var.getNameFromAttribute() != null
+                    && var.getNameGiven() != null) {
                 aliasSeen = true;
                 break;
             }
@@ -3946,35 +3947,35 @@ class Generator {
         out.printil("java.util.ArrayList _jspx_at_begin = null;");
         out.printil("java.util.ArrayList _jspx_at_end = null;");
 
-        for (int i = 0; i < tagVars.length; i++) {
+        for (TagVariableInfo tagVar : tagVars) {
 
-            switch (tagVars[i].getScope()) {
-            case VariableInfo.NESTED:
-                if (!nestedSeen) {
-                    out.printil("_jspx_nested = new java.util.ArrayList();");
-                    nestedSeen = true;
-                }
-                out.printin("_jspx_nested.add(");
-                break;
+            switch (tagVar.getScope()) {
+                case VariableInfo.NESTED:
+                    if (!nestedSeen) {
+                        out.printil("_jspx_nested = new java.util.ArrayList();");
+                        nestedSeen = true;
+                    }
+                    out.printin("_jspx_nested.add(");
+                    break;
 
-            case VariableInfo.AT_BEGIN:
-                if (!atBeginSeen) {
-                    out.printil("_jspx_at_begin = new java.util.ArrayList();");
-                    atBeginSeen = true;
-                }
-                out.printin("_jspx_at_begin.add(");
-                break;
+                case VariableInfo.AT_BEGIN:
+                    if (!atBeginSeen) {
+                        out.printil("_jspx_at_begin = new java.util.ArrayList();");
+                        atBeginSeen = true;
+                    }
+                    out.printin("_jspx_at_begin.add(");
+                    break;
 
-            case VariableInfo.AT_END:
-                if (!atEndSeen) {
-                    out.printil("_jspx_at_end = new java.util.ArrayList();");
-                    atEndSeen = true;
-                }
-                out.printin("_jspx_at_end.add(");
-                break;
+                case VariableInfo.AT_END:
+                    if (!atEndSeen) {
+                        out.printil("_jspx_at_end = new java.util.ArrayList();");
+                        atEndSeen = true;
+                    }
+                    out.printin("_jspx_at_end.add(");
+                    break;
             } // switch
 
-            out.print(quote(tagVars[i].getNameGiven()));
+            out.print(quote(tagVar.getNameGiven()));
             out.println(");");
         }
         if (aliasSeen) {
@@ -4119,16 +4120,16 @@ class Generator {
                 BeanInfo tagClassInfo = Introspector
                         .getBeanInfo(tagHandlerClass);
                 PropertyDescriptor[] pd = tagClassInfo.getPropertyDescriptors();
-                for (int i = 0; i < pd.length; i++) {
+                for (PropertyDescriptor propertyDescriptor : pd) {
                     /*
                      * FIXME: should probably be checking for things like
                      * pageContext, bodyContent, and parent here -akv
                      */
-                    if (pd[i].getWriteMethod() != null) {
-                        methodMaps.put(pd[i].getName(), pd[i].getWriteMethod());
+                    if (propertyDescriptor.getWriteMethod() != null) {
+                        methodMaps.put(propertyDescriptor.getName(), propertyDescriptor.getWriteMethod());
                     }
-                    if (pd[i].getPropertyEditorClass() != null)
-                        propertyEditorMaps.put(pd[i].getName(), pd[i]
+                    if (propertyDescriptor.getPropertyEditorClass() != null)
+                        propertyEditorMaps.put(propertyDescriptor.getName(), propertyDescriptor
                                 .getPropertyEditorClass());
                 }
             } catch (IntrospectionException ie) {
@@ -4363,8 +4364,7 @@ class Generator {
         public void generatePostamble() {
             ServletWriter out = this.classBuffer.getOut();
             // Generate all fragment methods:
-            for (int i = 0; i < fragments.size(); i++) {
-                Fragment fragment = fragments.get(i);
+            for (Fragment fragment : fragments) {
                 fragment.getGenBuffer().adjustJavaLines(out.getJavaLine() - 1);
                 out.printMultiLn(fragment.getGenBuffer().toString());
             }
@@ -4438,8 +4438,7 @@ class Generator {
         }
 
         public void adjustJavaLines(int offset) {
-            for (int i = 0; i < fragments.size(); i++) {
-                Fragment fragment = fragments.get(i);
+            for (Fragment fragment : fragments) {
                 fragment.getGenBuffer().adjustJavaLines(offset);
             }
         }
diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java
index bf64637..bcb9f84 100644
--- a/java/org/apache/jasper/compiler/JDTCompiler.java
+++ b/java/org/apache/jasper/compiler/JDTCompiler.java
@@ -439,11 +439,10 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler {
                     try {
                         if (result.hasProblems()) {
                             IProblem[] problems = result.getProblems();
-                            for (int i = 0; i < problems.length; i++) {
-                                IProblem problem = problems[i];
+                            for (IProblem problem : problems) {
                                 if (problem.isError()) {
                                     String name =
-                                        new String(problems[i].getOriginatingFileName());
+                                            new String(problem.getOriginatingFileName());
                                     try {
                                         problemList.add(ErrorDispatcher.createJavacError
                                                 (name, pageNodes, new StringBuilder(problem.getMessage()),
@@ -456,14 +455,13 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler {
                         }
                         if (problemList.isEmpty()) {
                             ClassFile[] classFiles = result.getClassFiles();
-                            for (int i = 0; i < classFiles.length; i++) {
-                                ClassFile classFile = classFiles[i];
+                            for (ClassFile classFile : classFiles) {
                                 char[][] compoundName =
-                                    classFile.getCompoundName();
+                                        classFile.getCompoundName();
                                 StringBuilder classFileName = new StringBuilder(outputDir).append('/');
                                 for (int j = 0;
                                      j < compoundName.length; j++) {
-                                    if(j > 0)
+                                    if (j > 0)
                                         classFileName.append('/');
                                     classFileName.append(compoundName[j]);
                                 }
@@ -471,7 +469,7 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler {
                                 classFileName.append(".class");
                                 try (FileOutputStream fout = new FileOutputStream(
                                         classFileName.toString());
-                                        BufferedOutputStream bos = new BufferedOutputStream(fout)) {
+                                     BufferedOutputStream bos = new BufferedOutputStream(fout)) {
                                     bos.write(bytes);
                                 }
                             }
diff --git a/java/org/apache/jasper/compiler/JspRuntimeContext.java b/java/org/apache/jasper/compiler/JspRuntimeContext.java
index cacd78f..5069bf2 100644
--- a/java/org/apache/jasper/compiler/JspRuntimeContext.java
+++ b/java/org/apache/jasper/compiler/JspRuntimeContext.java
@@ -374,11 +374,11 @@ public final class JspRuntimeContext {
         compileCheckInProgress = true;
 
         Object [] wrappers = jsps.values().toArray();
-        for (int i = 0; i < wrappers.length; i++ ) {
-            JspServletWrapper jsw = (JspServletWrapper)wrappers[i];
+        for (Object wrapper : wrappers) {
+            JspServletWrapper jsw = (JspServletWrapper) wrapper;
             JspCompilationContext ctxt = jsw.getJspEngineContext();
             // Sync on JspServletWrapper when calling ctxt.compile()
-            synchronized(jsw) {
+            synchronized (jsw) {
                 try {
                     ctxt.compile();
                     if (jsw.getReload()) {
@@ -457,16 +457,16 @@ public final class JspRuntimeContext {
         if (parentClassLoader instanceof URLClassLoader) {
             URL [] urls = ((URLClassLoader)parentClassLoader).getURLs();
 
-            for (int i = 0; i < urls.length; i++) {
+            for (URL url : urls) {
                 // Tomcat can use URLs other than file URLs. However, a protocol
                 // other than file: will generate a bad file system path, so
                 // only add file: protocol URLs to the classpath.
 
-                if (urls[i].getProtocol().equals("file") ) {
+                if (url.getProtocol().equals("file")) {
                     try {
                         // Need to decode the URL, primarily to convert %20
                         // sequences back to spaces
-                        String decoded = urls[i].toURI().getPath();
+                        String decoded = url.toURI().getPath();
                         cpath.append(decoded + File.pathSeparator);
                     } catch (URISyntaxException e) {
                         log.warn(Localizer.getMessage("jsp.warning.classpathUrl"), e);
@@ -592,14 +592,14 @@ public final class JspRuntimeContext {
         if (jspIdleTimeout > 0) {
             long unloadBefore = now - jspIdleTimeout;
             Object [] wrappers = jsps.values().toArray();
-            for (int i = 0; i < wrappers.length; i++ ) {
-                JspServletWrapper jsw = (JspServletWrapper)wrappers[i];
-                synchronized(jsw) {
+            for (Object wrapper : wrappers) {
+                JspServletWrapper jsw = (JspServletWrapper) wrapper;
+                synchronized (jsw) {
                     if (jsw.getLastUsageTime() < unloadBefore) {
                         if (log.isDebugEnabled()) {
                             log.debug(Localizer.getMessage("jsp.message.jsp_removed_idle",
-                                                           jsw.getJspUri(), context.getContextPath(),
-                                                           "" + (now-jsw.getLastUsageTime())));
+                                    jsw.getJspUri(), context.getContextPath(),
+                                    "" + (now - jsw.getLastUsageTime())));
                         }
                         if (jspQueue != null) {
                             jspQueue.remove(jsw.getUnloadHandle());
diff --git a/java/org/apache/jasper/compiler/JspUtil.java b/java/org/apache/jasper/compiler/JspUtil.java
index 63ba1d3..1ca9d46 100644
--- a/java/org/apache/jasper/compiler/JspUtil.java
+++ b/java/org/apache/jasper/compiler/JspUtil.java
@@ -167,16 +167,16 @@ public class JspUtil {
          */
         String missingAttribute = null;
 
-        for (int i = 0; i < validAttributes.length; i++) {
+        for (ValidAttribute value : validAttributes) {
             int attrPos;
-            if (validAttributes[i].mandatory) {
-                attrPos = temp.indexOf(validAttributes[i].name);
+            if (value.mandatory) {
+                attrPos = temp.indexOf(value.name);
                 if (attrPos != -1) {
                     temp.remove(attrPos);
                     valid = true;
                 } else {
                     valid = false;
-                    missingAttribute = validAttributes[i].name;
+                    missingAttribute = value.name;
                     break;
                 }
             }
@@ -197,8 +197,8 @@ public class JspUtil {
         // Now check to see if the rest of the attributes are valid too.
         for(String attribute : temp) {
             valid = false;
-            for (int i = 0; i < validAttributes.length; i++) {
-                if (attribute.equals(validAttributes[i].name)) {
+            for (ValidAttribute validAttribute : validAttributes) {
+                if (attribute.equals(validAttribute.name)) {
                     valid = true;
                     break;
                 }
@@ -742,12 +742,12 @@ public class JspUtil {
     public static final String makeJavaPackage(String path) {
         String classNameComponents[] = path.split("/");
         StringBuilder legalClassNames = new StringBuilder();
-        for (int i = 0; i < classNameComponents.length; i++) {
-            if (classNameComponents[i].length() > 0) {
+        for (String classNameComponent : classNameComponents) {
+            if (classNameComponent.length() > 0) {
                 if (legalClassNames.length() > 0) {
                     legalClassNames.append('.');
                 }
-                legalClassNames.append(makeJavaIdentifier(classNameComponents[i]));
+                legalClassNames.append(makeJavaIdentifier(classNameComponent));
             }
         }
         return legalClassNames.toString();
diff --git a/java/org/apache/jasper/compiler/Node.java b/java/org/apache/jasper/compiler/Node.java
index 6f70e38..52b87f7 100644
--- a/java/org/apache/jasper/compiler/Node.java
+++ b/java/org/apache/jasper/compiler/Node.java
@@ -1720,9 +1720,9 @@ abstract class Node implements TagConstants {
             boolean result = false;
 
             TagAttributeInfo[] attributes = tagInfo.getAttributes();
-            for (int i = 0; i < attributes.length; i++) {
-                if (attributes[i].getName().equals(name)
-                        && attributes[i].isFragment()) {
+            for (TagAttributeInfo attribute : attributes) {
+                if (attribute.getName().equals(name)
+                        && attribute.isFragment()) {
                     result = true;
                     break;
                 }
diff --git a/java/org/apache/jasper/compiler/Parser.java b/java/org/apache/jasper/compiler/Parser.java
index 4750561..499098b 100644
--- a/java/org/apache/jasper/compiler/Parser.java
+++ b/java/org/apache/jasper/compiler/Parser.java
@@ -1736,12 +1736,12 @@ class Parser implements TagConstants {
         if (n instanceof Node.CustomTag) {
             TagInfo tagInfo = ((Node.CustomTag) n).getTagInfo();
             TagAttributeInfo[] tldAttrs = tagInfo.getAttributes();
-            for (int i = 0; i < tldAttrs.length; i++) {
-                if (name.equals(tldAttrs[i].getName())) {
-                    if (tldAttrs[i].isFragment()) {
+            for (TagAttributeInfo tldAttr : tldAttrs) {
+                if (name.equals(tldAttr.getName())) {
+                    if (tldAttr.isFragment()) {
                         return TagInfo.BODY_CONTENT_SCRIPTLESS;
                     }
-                    if (tldAttrs[i].canBeRequestTime()) {
+                    if (tldAttr.canBeRequestTime()) {
                         return TagInfo.BODY_CONTENT_JSP;
                     }
                 }
diff --git a/java/org/apache/jasper/compiler/ParserController.java b/java/org/apache/jasper/compiler/ParserController.java
index 3e690aa..e3d33d2 100644
--- a/java/org/apache/jasper/compiler/ParserController.java
+++ b/java/org/apache/jasper/compiler/ParserController.java
@@ -445,8 +445,7 @@ class ParserController implements TagConstants {
             boolean isDirective = jspReader.matches("%@");
             if (isDirective) {
                 jspReader.skipSpaces();
-            }
-            else {
+            } else {
                 isDirective = jspReader.matches("jsp:directive.");
             }
             if (!isDirective) {
diff --git a/java/org/apache/jasper/compiler/ScriptingVariabler.java b/java/org/apache/jasper/compiler/ScriptingVariabler.java
index a2682f2..7b1d958 100644
--- a/java/org/apache/jasper/compiler/ScriptingVariabler.java
+++ b/java/org/apache/jasper/compiler/ScriptingVariabler.java
@@ -105,34 +105,34 @@ class ScriptingVariabler {
             }
 
             if (varInfos.length > 0) {
-                for (int i=0; i<varInfos.length; i++) {
-                    if (varInfos[i].getScope() != scope
-                            || !varInfos[i].getDeclare()) {
+                for (VariableInfo varInfo : varInfos) {
+                    if (varInfo.getScope() != scope
+                            || !varInfo.getDeclare()) {
                         continue;
                     }
-                    String varName = varInfos[i].getVarName();
+                    String varName = varInfo.getVarName();
 
                     Integer currentRange = scriptVars.get(varName);
                     if (currentRange == null ||
                             ownRange.compareTo(currentRange) > 0) {
                         scriptVars.put(varName, ownRange);
-                        vec.add(varInfos[i]);
+                        vec.add(varInfo);
                     }
                 }
             } else {
-                for (int i=0; i<tagVarInfos.length; i++) {
-                    if (tagVarInfos[i].getScope() != scope
-                            || !tagVarInfos[i].getDeclare()) {
+                for (TagVariableInfo tagVarInfo : tagVarInfos) {
+                    if (tagVarInfo.getScope() != scope
+                            || !tagVarInfo.getDeclare()) {
                         continue;
                     }
-                    String varName = tagVarInfos[i].getNameGiven();
+                    String varName = tagVarInfo.getNameGiven();
                     if (varName == null) {
                         varName = n.getTagData().getAttributeString(
-                                        tagVarInfos[i].getNameFromAttribute());
+                                tagVarInfo.getNameFromAttribute());
                         if (varName == null) {
                             err.jspError(n,
                                     "jsp.error.scripting.variable.missing_name",
-                                    tagVarInfos[i].getNameFromAttribute());
+                                    tagVarInfo.getNameFromAttribute());
                         }
                     }
 
@@ -140,7 +140,7 @@ class ScriptingVariabler {
                     if (currentRange == null ||
                             ownRange.compareTo(currentRange) > 0) {
                         scriptVars.put(varName, ownRange);
-                        vec.add(tagVarInfos[i]);
+                        vec.add(tagVarInfo);
                     }
                 }
             }
diff --git a/java/org/apache/jasper/compiler/SmapUtil.java b/java/org/apache/jasper/compiler/SmapUtil.java
index 6695e15..86d2187 100644
--- a/java/org/apache/jasper/compiler/SmapUtil.java
+++ b/java/org/apache/jasper/compiler/SmapUtil.java
@@ -308,8 +308,8 @@ public class SmapUtil {
         void writeAttrForSDE(int index) {
             writeU2(index);
             writeU4(sdeAttr.length);
-            for (int i = 0; i < sdeAttr.length; ++i) {
-                writeU1(sdeAttr[i]);
+            for (byte b : sdeAttr) {
+                writeU1(b);
             }
         }
 
@@ -363,8 +363,8 @@ public class SmapUtil {
         }
 
         void writeBytes(byte[] bytes) {
-            for (int i = 0; i < bytes.length; ++i) {
-                gen[genPos++] = bytes[i];
+            for (byte aByte : bytes) {
+                gen[genPos++] = aByte;
             }
         }
 
@@ -595,14 +595,14 @@ public class SmapUtil {
             java.util.ArrayList<Integer> extraSmap = n.getExtraSmap();
 
             if (extraSmap != null) {
-                for (int i = 0; i < extraSmap.size(); i++) {
+                for (Integer integer : extraSmap) {
                     iOutputStartLine += iOutputLineIncrement;
                     smap.addLineData(
-                        iInputStartLine+extraSmap.get(i).intValue(),
-                        fileName,
-                        1,
-                        iOutputStartLine,
-                        iOutputLineIncrement);
+                            iInputStartLine + integer.intValue(),
+                            fileName,
+                            1,
+                            iOutputStartLine,
+                            iOutputLineIncrement);
                 }
             }
         }
diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java
index d1c0519..0e30afe 100644
--- a/java/org/apache/jasper/compiler/Validator.java
+++ b/java/org/apache/jasper/compiler/Validator.java
@@ -855,25 +855,25 @@ class Validator {
             String customActionUri = n.getURI();
             Attributes attrs = n.getAttributes();
             int attrsSize = (attrs == null) ? 0 : attrs.getLength();
-            for (int i = 0; i < tldAttrs.length; i++) {
+            for (TagAttributeInfo tldAttr : tldAttrs) {
                 String attr = null;
                 if (attrs != null) {
-                    attr = attrs.getValue(tldAttrs[i].getName());
+                    attr = attrs.getValue(tldAttr.getName());
                     if (attr == null) {
-                        attr = attrs.getValue(customActionUri, tldAttrs[i]
+                        attr = attrs.getValue(customActionUri, tldAttr
                                 .getName());
                     }
                 }
-                Node.NamedAttribute na = n.getNamedAttributeNode(tldAttrs[i]
+                Node.NamedAttribute na = n.getNamedAttributeNode(tldAttr
                         .getName());
 
-                if (tldAttrs[i].isRequired() && attr == null && na == null) {
-                    err.jspError(n, "jsp.error.missing_attribute", tldAttrs[i]
+                if (tldAttr.isRequired() && attr == null && na == null) {
+                    err.jspError(n, "jsp.error.missing_attribute", tldAttr
                             .getName(), n.getLocalName());
                 }
                 if (attr != null && na != null) {
                     err.jspError(n, "jsp.error.duplicate.name.jspattribute",
-                            tldAttrs[i].getName());
+                            tldAttr.getName());
                 }
             }
 
@@ -1296,7 +1296,7 @@ class Validator {
                 Node.NamedAttribute na = (Node.NamedAttribute) naNodes
                         .getNode(i);
                 boolean found = false;
-                for (int j = 0; j < tldAttrs.length; j++) {
+                for (TagAttributeInfo tldAttr : tldAttrs) {
                     /*
                      * See above comment about namespace matches. For named
                      * attributes, we use the prefix instead of URI as the match
@@ -1306,11 +1306,11 @@ class Validator {
                      * that the prefix of the named attribute's name matches to.
                      */
                     String attrPrefix = na.getPrefix();
-                    if (na.getLocalName().equals(tldAttrs[j].getName())
+                    if (na.getLocalName().equals(tldAttr.getName())
                             && (attrPrefix == null || attrPrefix.length() == 0 || attrPrefix
-                                    .equals(n.getPrefix()))) {
+                            .equals(n.getPrefix()))) {
                         jspAttrs[start + i] = new Node.JspAttribute(na,
-                                tldAttrs[j], false);
+                                tldAttr, false);
                         NamedAttributeVisitor nav = null;
                         if (na.getBody() != null) {
                             nav = new NamedAttributeVisitor();
@@ -1795,13 +1795,13 @@ class Validator {
                 errMsg.append(Localizer.getMessage(
                         "jsp.error.tei.invalid.attributes", n.getQName()));
                 errMsg.append("</h3>");
-                for (int i = 0; i < errors.length; i++) {
+                for (ValidationMessage error : errors) {
                     errMsg.append("<p>");
-                    if (errors[i].getId() != null) {
-                        errMsg.append(errors[i].getId());
+                    if (error.getId() != null) {
+                        errMsg.append(error.getId());
                         errMsg.append(": ");
                     }
-                    errMsg.append(errors[i].getMessage());
+                    errMsg.append(error.getMessage());
                     errMsg.append("</p>");
                 }
 
@@ -1883,10 +1883,8 @@ class Validator {
         StringBuilder errMsg = null;
         ErrorDispatcher errDisp = compiler.getErrorDispatcher();
 
-        for (Iterator<TagLibraryInfo> iter =
-            compiler.getPageInfo().getTaglibs().iterator(); iter.hasNext();) {
+        for (Object o : compiler.getPageInfo().getTaglibs()) {
 
-            Object o = iter.next();
             if (!(o instanceof TagLibraryInfoImpl))
                 continue;
             TagLibraryInfoImpl tli = (TagLibraryInfoImpl) o;
@@ -1901,12 +1899,12 @@ class Validator {
                         "jsp.error.tlv.invalid.page", tli.getShortName(),
                         compiler.getPageInfo().getJspFile()));
                 errMsg.append("</h3>");
-                for (int i = 0; i < errors.length; i++) {
-                    if (errors[i] != null) {
+                for (ValidationMessage error : errors) {
+                    if (error != null) {
                         errMsg.append("<p>");
-                        errMsg.append(errors[i].getId());
+                        errMsg.append(error.getId());
                         errMsg.append(": ");
-                        errMsg.append(errors[i].getMessage());
+                        errMsg.append(error.getMessage());
                         errMsg.append("</p>");
                     }
                 }
diff --git a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
index ad39da6..bd1f377 100644
--- a/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
+++ b/java/org/apache/jasper/runtime/JspApplicationContextImpl.java
@@ -110,8 +110,8 @@ public class JspApplicationContextImpl implements JspApplicationContext {
 
     protected void fireListeners(ELContext elContext) {
         ELContextEvent event = new ELContextEvent(elContext);
-        for (int i = 0; i < this.contextListeners.size(); i++) {
-            this.contextListeners.get(i).contextCreated(event);
+        for (ELContextListener contextListener : this.contextListeners) {
+            contextListener.contextCreated(event);
         }
     }
 
diff --git a/java/org/apache/jasper/runtime/JspContextWrapper.java b/java/org/apache/jasper/runtime/JspContextWrapper.java
index d7c0956..707bdd2 100644
--- a/java/org/apache/jasper/runtime/JspContextWrapper.java
+++ b/java/org/apache/jasper/runtime/JspContextWrapper.java
@@ -103,8 +103,7 @@ public class JspContextWrapper extends PageContext implements VariableResolver {
         this.invokingJspCtxt = (PageContext) jspContext;
         if (jspContext instanceof JspContextWrapper) {
             rootJspCtxt = ((JspContextWrapper)jspContext).rootJspCtxt;
-        }
-        else {
+        } else {
             rootJspCtxt = invokingJspCtxt;
         }
         this.nestedVars = nestedVars;
diff --git a/java/org/apache/jasper/runtime/JspRuntimeLibrary.java b/java/org/apache/jasper/runtime/JspRuntimeLibrary.java
index 9a0783c..cfb6e75 100644
--- a/java/org/apache/jasper/runtime/JspRuntimeLibrary.java
+++ b/java/org/apache/jasper/runtime/JspRuntimeLibrary.java
@@ -318,11 +318,11 @@ public class JspRuntimeLibrary {
                 if ( info != null ) {
                     java.beans.PropertyDescriptor pd[]
                             = info.getPropertyDescriptors();
-                    for (int i = 0 ; i < pd.length ; i++) {
-                        if ( pd[i].getName().equals(prop) ) {
-                            method = pd[i].getWriteMethod();
-                            type   = pd[i].getPropertyType();
-                            propertyEditorClass = pd[i].getPropertyEditorClass();
+                    for (java.beans.PropertyDescriptor propertyDescriptor : pd) {
+                        if (propertyDescriptor.getName().equals(prop)) {
+                            method = propertyDescriptor.getWriteMethod();
+                            type = propertyDescriptor.getPropertyType();
+                            propertyEditorClass = propertyDescriptor.getPropertyEditorClass();
                             break;
                         }
                     }
@@ -762,10 +762,10 @@ public class JspRuntimeLibrary {
             try {
                 java.beans.BeanInfo info = java.beans.Introspector.getBeanInfo(beanClass);
                 java.beans.PropertyDescriptor pd[] = info.getPropertyDescriptors();
-                for (int i = 0 ; i < pd.length ; i++) {
-                    if ( pd[i].getName().equals(prop) ) {
-                        result = pd[i].getWriteMethod();
-                        type = pd[i].getPropertyType();
+                for (java.beans.PropertyDescriptor propertyDescriptor : pd) {
+                    if (propertyDescriptor.getName().equals(prop)) {
+                        result = propertyDescriptor.getWriteMethod();
+                        type = propertyDescriptor.getPropertyType();
                         break;
                     }
                 }
@@ -802,10 +802,10 @@ public class JspRuntimeLibrary {
             try {
                 java.beans.BeanInfo info = java.beans.Introspector.getBeanInfo(beanClass);
                 java.beans.PropertyDescriptor pd[] = info.getPropertyDescriptors();
-                for (int i = 0 ; i < pd.length ; i++) {
-                    if (pd[i].getName().equals(prop)) {
-                        result = pd[i].getReadMethod();
-                        type = pd[i].getPropertyType();
+                for (java.beans.PropertyDescriptor propertyDescriptor : pd) {
+                    if (propertyDescriptor.getName().equals(prop)) {
+                        result = propertyDescriptor.getReadMethod();
+                        type = propertyDescriptor.getPropertyType();
                         break;
                     }
                 }
@@ -908,8 +908,7 @@ public class JspRuntimeLibrary {
                 if (uri.lastIndexOf('/') >= 0)
                     uri = uri.substring(0, uri.lastIndexOf('/'));
             }
-        }
-        else {
+        } else {
             uri = hrequest.getServletPath();
             if (uri.lastIndexOf('/') >= 0)
                 uri = uri.substring(0, uri.lastIndexOf('/'));
@@ -1002,11 +1001,11 @@ public class JspRuntimeLibrary {
                     continue;
                 }
                 byte[] ba = buf.toByteArray();
-                for (int j = 0; j < ba.length; j++) {
+                for (byte b : ba) {
                     out.append('%');
                     // Converting each byte in the buffer
-                    out.append(Character.forDigit((ba[j]>>4) & 0xf, 16));
-                    out.append(Character.forDigit(ba[j] & 0xf, 16));
+                    out.append(Character.forDigit((b >> 4) & 0xf, 16));
+                    out.append(Character.forDigit(b & 0xf, 16));
                 }
                 buf.reset();
             }
diff --git a/java/org/apache/jasper/runtime/JspWriterImpl.java b/java/org/apache/jasper/runtime/JspWriterImpl.java
index 24eb0bd..3f1b1e3 100644
--- a/java/org/apache/jasper/runtime/JspWriterImpl.java
+++ b/java/org/apache/jasper/runtime/JspWriterImpl.java
@@ -197,8 +197,7 @@ public class JspWriterImpl extends JspWriter {
         if (bufferSize == 0) {
             initOut();
             out.write(c);
-        }
-        else {
+        } else {
             if (nextChar >= bufferSize)
                 if (autoFlush)
                     flushBuffer();
diff --git a/java/org/apache/jasper/servlet/JspCServletContext.java b/java/org/apache/jasper/servlet/JspCServletContext.java
index 80a9727..a4c50eb 100644
--- a/java/org/apache/jasper/servlet/JspCServletContext.java
+++ b/java/org/apache/jasper/servlet/JspCServletContext.java
@@ -445,12 +445,13 @@ public class JspCServletContext implements ServletContext {
             if (theBaseDir.isDirectory()) {
                 String theFiles[] = theBaseDir.list();
                 if (theFiles != null) {
-                    for (int i = 0; i < theFiles.length; i++) {
-                        File testFile = new File(basePath + File.separator + theFiles[i]);
+                    for (String theFile : theFiles) {
+                        File testFile = new File(basePath + File.separator + theFile);
                         if (testFile.isFile()) {
-                            thePaths.add(path + theFiles[i]);
-                        } else if (testFile.isDirectory()) {
-                            thePaths.add(path + theFiles[i] + "/");
+                            thePaths.add(path + theFile);
+                        }
+                        else if (testFile.isDirectory()) {
+                            thePaths.add(path + theFile + "/");
                         }
                     }
                 }
diff --git a/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java b/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java
index 2605e83..0fa6da6 100644
--- a/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java
+++ b/java/org/apache/jasper/tagplugins/jstl/core/ForEach.java
@@ -57,8 +57,7 @@ public final class ForEach implements TagPlugin {
             ctxt.generateJavaSource("; " + index + "+=");
             ctxt.generateAttribute("step");
             ctxt.generateJavaSource(") {");
-        }
-        else {
+        } else {
             ctxt.generateJavaSource("; " + index + "++) {");
         }
 
@@ -189,15 +188,13 @@ public final class ForEach implements TagPlugin {
         if (hasEnd) {
             if (hasStep) {
                 ctxt.generateJavaSource(indexV + "+=" + stepV + ";");
-            }
-            else {
+            } else {
                 ctxt.generateJavaSource(indexV + "++;");
             }
             if (hasBegin) {
                 ctxt.generateJavaSource("if(" + beginV + "+" + indexV +
                         ">"+ endV + ")");
-            }
-            else {
+            } else {
                 ctxt.generateJavaSource("if(" + indexV + ">" + endV + ")");
             }
             ctxt.generateJavaSource("break;");
diff --git a/java/org/apache/jasper/tagplugins/jstl/core/When.java b/java/org/apache/jasper/tagplugins/jstl/core/When.java
index 2661f6e..176b1ce 100644
--- a/java/org/apache/jasper/tagplugins/jstl/core/When.java
+++ b/java/org/apache/jasper/tagplugins/jstl/core/When.java
@@ -35,8 +35,7 @@ public final class When implements TagPlugin {
         if ("true".equals(parentContext.getPluginAttribute("hasBeenHere"))) {
             ctxt.generateJavaSource("} else if(");
             // See comment below for the reason we generate the extra "}" here.
-        }
-        else {
+        } else {
             ctxt.generateJavaSource("if(");
             parentContext.setPluginAttribute("hasBeenHere", "true");
         }
diff --git a/java/org/apache/juli/ClassLoaderLogManager.java b/java/org/apache/juli/ClassLoaderLogManager.java
index b8adb3e..26db219 100644
--- a/java/org/apache/juli/ClassLoaderLogManager.java
+++ b/java/org/apache/juli/ClassLoaderLogManager.java
@@ -485,8 +485,7 @@ public class ClassLoaderLogManager extends LogManager {
                     Permission perm = ace.getPermission();
                     if (perm instanceof FilePermission && perm.getActions().equals("read")) {
                         log.warning("Reading " + perm.getName() + " is not permitted. See \"per context logging\" in the default catalina.policy file.");
-                    }
-                    else {
+                    } else {
                         log.warning("Reading logging.properties is not permitted in some context. See \"per context logging\" in the default catalina.policy file.");
                         log.warning("Original error was: " + ace.getMessage());
                     }
@@ -751,9 +750,7 @@ public class ClassLoaderLogManager extends LogManager {
         }
 
         void setParentLogger(final Logger parent) {
-            for (final Iterator<LogNode> iter =
-                children.values().iterator(); iter.hasNext();) {
-                final LogNode childNode = iter.next();
+            for (final LogNode childNode : children.values()) {
                 if (childNode.logger == null) {
                     childNode.setParentLogger(parent);
                 } else {
diff --git a/java/org/apache/naming/factory/SendMailFactory.java b/java/org/apache/naming/factory/SendMailFactory.java
index 7395d44..326dd51 100644
--- a/java/org/apache/naming/factory/SendMailFactory.java
+++ b/java/org/apache/naming/factory/SendMailFactory.java
@@ -125,8 +125,7 @@ public class SendMailFactory implements ObjectFactory
                     return mds;
                 }
             } );
-        }
-        else { // We can't create an instance of the DataSource
+        } else { // We can't create an instance of the DataSource
             return null;
         }
     }
diff --git a/java/org/apache/tomcat/buildutil/SignCode.java b/java/org/apache/tomcat/buildutil/SignCode.java
index e6b6008..58e235f 100644
--- a/java/org/apache/tomcat/buildutil/SignCode.java
+++ b/java/org/apache/tomcat/buildutil/SignCode.java
@@ -152,8 +152,8 @@ public class SignCode extends Task {
             File basedir = ds.getBasedir();
             String[] files = ds.getIncludedFiles();
             if (files.length > 0) {
-                for (int i = 0; i < files.length; i++) {
-                    File file = new File(basedir, files[i]);
+                for (String s : files) {
+                    File file = new File(basedir, s);
                     filesToSign.add(file);
                 }
             }
@@ -399,12 +399,12 @@ public class SignCode extends Task {
         ByteArrayInputStream bais = new ByteArrayInputStream(Base64.decodeBase64(data));
         try (ZipInputStream zis = new ZipInputStream(bais)) {
             byte[] buf = new byte[32 * 1024];
-            for (int i = 0; i < files.size(); i ++) {
-                try (FileOutputStream fos = new FileOutputStream(files.get(i))) {
+            for (File file : files) {
+                try (FileOutputStream fos = new FileOutputStream(file)) {
                     zis.getNextEntry();
                     int numRead;
-                    while ( (numRead = zis.read(buf)) >= 0) {
-                        fos.write(buf, 0 , numRead);
+                    while ((numRead = zis.read(buf)) >= 0) {
+                        fos.write(buf, 0, numRead);
                     }
                 }
             }
diff --git a/java/org/apache/tomcat/buildutil/Txt2Html.java b/java/org/apache/tomcat/buildutil/Txt2Html.java
index 40b8484..836fc62 100644
--- a/java/org/apache/tomcat/buildutil/Txt2Html.java
+++ b/java/org/apache/tomcat/buildutil/Txt2Html.java
@@ -100,21 +100,19 @@ public class Txt2Html
             DirectoryScanner ds = fs.getDirectoryScanner(getProject());
             File basedir = ds.getBasedir();
             String[] files = ds.getIncludedFiles();
-            for( int i = 0; i < files.length; i++ ) {
-                File from = new File( basedir, files[i] );
-                File to = new File( todir, files[i] + ".html" );
-                if( !to.exists() ||
-                    (from.lastModified() > to.lastModified()) )
-                {
-                    log( "Converting file '" + from.getAbsolutePath() +
-                        "' to '" + to.getAbsolutePath(), Project.MSG_VERBOSE );
+            for (String file : files) {
+                File from = new File(basedir, file);
+                File to = new File(todir, file + ".html");
+                if (!to.exists() ||
+                        (from.lastModified() > to.lastModified())) {
+                    log("Converting file '" + from.getAbsolutePath() +
+                            "' to '" + to.getAbsolutePath(), Project.MSG_VERBOSE);
                     try {
-                        convert( from, to );
-                    }
-                    catch( IOException e ) {
-                        throw new BuildException( "Could not convert '" +
-                            from.getAbsolutePath() + "' to '" +
-                            to.getAbsolutePath() + "'", e );
+                        convert(from, to);
+                    } catch (IOException e) {
+                        throw new BuildException("Could not convert '" +
+                                from.getAbsolutePath() + "' to '" +
+                                to.getAbsolutePath() + "'", e);
                     }
                     count++;
                 }
diff --git a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java
index 737f171..dcffecc 100644
--- a/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java
+++ b/java/org/apache/tomcat/dbcp/dbcp2/DelegatingConnection.java
@@ -620,16 +620,15 @@ public class DelegatingConnection<C extends Connection> extends AbandonedTrace i
         final List<AbandonedTrace> traces = getTrace();
         if (traces != null && !traces.isEmpty()) {
             final List<Exception> thrownList = new ArrayList<>();
-            final Iterator<AbandonedTrace> traceIter = traces.iterator();
-            while (traceIter.hasNext()) {
-                final Object trace = traceIter.next();
+            for (Object trace : traces) {
                 if (trace instanceof Statement) {
                     try {
                         ((Statement) trace).close();
                     } catch (Exception e) {
                         thrownList.add(e);
                     }
-                } else if (trace instanceof ResultSet) {
+                }
+                else if (trace instanceof ResultSet) {
                     // DBCP-265: Need to close the result sets that are
                     // generated via DatabaseMetaData
                     try {
diff --git a/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSourceFactory.java b/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSourceFactory.java
index df46b3f..cf68e28 100644
--- a/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSourceFactory.java
+++ b/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSourceFactory.java
@@ -47,9 +47,7 @@ abstract class InstanceKeyDataSourceFactory implements ObjectFactory {
 
     static synchronized String registerNewInstance(final InstanceKeyDataSource ds) {
         int max = 0;
-        final Iterator<String> iterator = instanceMap.keySet().iterator();
-        while (iterator.hasNext()) {
-            final String s = iterator.next();
+        for (String s : instanceMap.keySet()) {
             if (s != null) {
                 try {
                     max = Math.max(max, Integer.parseInt(s));
@@ -84,10 +82,8 @@ abstract class InstanceKeyDataSourceFactory implements ObjectFactory {
     public static void closeAll() throws Exception {
         // Get iterator to loop over all instances of this data source.
         final List<Throwable> exceptionList = new ArrayList<>(instanceMap.size());
-        final Iterator<Entry<String, InstanceKeyDataSource>> instanceIterator = instanceMap.entrySet().iterator();
-        while (instanceIterator.hasNext()) {
+        for (Entry<String, InstanceKeyDataSource> next : instanceMap.entrySet()) {
             // Bullet-proof to avoid anything else but problems from InstanceKeyDataSource#close().
-            final Entry<String, InstanceKeyDataSource> next = instanceIterator.next();
             if (next != null) {
                 final InstanceKeyDataSource value = next.getValue();
                 if (value != null) {
diff --git a/java/org/apache/tomcat/dbcp/pool2/KeyedObjectPool.java b/java/org/apache/tomcat/dbcp/pool2/KeyedObjectPool.java
index fc18acc..298e5c6 100644
--- a/java/org/apache/tomcat/dbcp/pool2/KeyedObjectPool.java
+++ b/java/org/apache/tomcat/dbcp/pool2/KeyedObjectPool.java
@@ -108,9 +108,8 @@ public interface KeyedObjectPool<K, V> extends Closeable {
         if (keys == null) {
             throw new IllegalArgumentException(PoolUtils.MSG_NULL_KEYS);
         }
-        final Iterator<K> iter = keys.iterator();
-        while (iter.hasNext()) {
-            addObjects(iter.next(), count);
+        for (K key : keys) {
+            addObjects(key, count);
         }
     }
 
diff --git a/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java b/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java
index 08ae83c..7ea099e 100644
--- a/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java
+++ b/java/org/apache/tomcat/dbcp/pool2/PoolUtils.java
@@ -198,9 +198,7 @@ public final class PoolUtils {
             throw new IllegalArgumentException(MSG_NULL_KEYS);
         }
         final Map<K, TimerTask> tasks = new HashMap<>(keys.size());
-        final Iterator<K> iter = keys.iterator();
-        while (iter.hasNext()) {
-            final K key = iter.next();
+        for (K key : keys) {
             final TimerTask task = checkMinIdle(keyedPool, key, minIdle, period);
             tasks.put(key, task);
         }
diff --git a/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java b/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java
index 5762962..9cfa174 100644
--- a/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java
+++ b/java/org/apache/tomcat/dbcp/pool2/impl/GenericKeyedObjectPool.java
@@ -599,10 +599,9 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
      */
     @Override
     public void clear() {
-        final Iterator<K> iter = poolMap.keySet().iterator();
 
-        while (iter.hasNext()) {
-            clear(iter.next());
+        for (K k : poolMap.keySet()) {
+            clear(k);
         }
     }
 
@@ -708,9 +707,8 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
             jmxUnregister();
 
             // Release any threads that were waiting for an object
-            final Iterator<ObjectDeque<T>> iter = poolMap.values().iterator();
-            while (iter.hasNext()) {
-                iter.next().getIdleObjects().interuptTakeWaiters();
+            for (ObjectDeque<T> tObjectDeque : poolMap.values()) {
+                tObjectDeque.getIdleObjects().interuptTakeWaiters();
             }
             // This clear cleans up the keys now any waiting threads have been
             // interrupted
@@ -1359,16 +1357,14 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
     public Map<String,Integer> getNumActivePerKey() {
         final HashMap<String,Integer> result = new HashMap<>();
 
-        final Iterator<Entry<K,ObjectDeque<T>>> iter = poolMap.entrySet().iterator();
-        while (iter.hasNext()) {
-            final Entry<K,ObjectDeque<T>> entry = iter.next();
+        for (Entry<K, ObjectDeque<T>> entry : poolMap.entrySet()) {
             if (entry != null) {
                 final K key = entry.getKey();
                 final ObjectDeque<T> objectDequeue = entry.getValue();
                 if (key != null && objectDequeue != null) {
                     result.put(key.toString(), Integer.valueOf(
                             objectDequeue.getAllObjects().size() -
-                            objectDequeue.getIdleObjects().size()));
+                                    objectDequeue.getIdleObjects().size()));
                 }
             }
         }
@@ -1388,11 +1384,10 @@ public class GenericKeyedObjectPool<K, T> extends BaseGenericObjectPool<T>
         int result = 0;
 
         if (getBlockWhenExhausted()) {
-            final Iterator<ObjectDeque<T>> iter = poolMap.values().iterator();
 
-            while (iter.hasNext()) {
+            for (ObjectDeque<T> tObjectDeque : poolMap.values()) {
                 // Assume no overflow
-                result += iter.next().getIdleObjects().getTakeQueueLength();
+                result += tObjectDeque.getIdleObjects().getTakeQueueLength();
             }
         }
 
diff --git a/java/org/apache/tomcat/dbcp/pool2/impl/GenericObjectPool.java b/java/org/apache/tomcat/dbcp/pool2/impl/GenericObjectPool.java
index b2a83dc..13a4075 100644
--- a/java/org/apache/tomcat/dbcp/pool2/impl/GenericObjectPool.java
+++ b/java/org/apache/tomcat/dbcp/pool2/impl/GenericObjectPool.java
@@ -1052,9 +1052,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         final long timeout =
                 now - (ac.getRemoveAbandonedTimeout() * 1000L);
         final ArrayList<PooledObject<T>> remove = new ArrayList<>();
-        final Iterator<PooledObject<T>> it = allObjects.values().iterator();
-        while (it.hasNext()) {
-            final PooledObject<T> pooledObject = it.next();
+        for (PooledObject<T> pooledObject : allObjects.values()) {
             synchronized (pooledObject) {
                 if (pooledObject.getState() == PooledObjectState.ALLOCATED &&
                         pooledObject.getLastUsedTime() <= timeout) {
@@ -1065,9 +1063,7 @@ public class GenericObjectPool<T> extends BaseGenericObjectPool<T>
         }
 
         // Now remove the abandoned objects
-        final Iterator<PooledObject<T>> itr = remove.iterator();
-        while (itr.hasNext()) {
-            final PooledObject<T> pooledObject = itr.next();
+        for (PooledObject<T> pooledObject : remove) {
             if (ac.getLogAbandoned()) {
                 pooledObject.printStackTrace(ac.getLogWriter());
             }
diff --git a/java/org/apache/tomcat/dbcp/pool2/impl/SoftReferenceObjectPool.java b/java/org/apache/tomcat/dbcp/pool2/impl/SoftReferenceObjectPool.java
index e417b48..e989692 100644
--- a/java/org/apache/tomcat/dbcp/pool2/impl/SoftReferenceObjectPool.java
+++ b/java/org/apache/tomcat/dbcp/pool2/impl/SoftReferenceObjectPool.java
@@ -331,10 +331,9 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
     @Override
     public synchronized void clear() {
         if (null != factory) {
-            final Iterator<PooledSoftReference<T>> iter = idleReferences.iterator();
-            while (iter.hasNext()) {
+            for (PooledSoftReference<T> idleReference : idleReferences) {
                 try {
-                    final PooledSoftReference<T> ref = iter.next();
+                    final PooledSoftReference<T> ref = idleReference;
                     if (null != ref.getObject()) {
                         factory.destroyObject(ref);
                     }
@@ -391,9 +390,7 @@ public class SoftReferenceObjectPool<T> extends BaseObjectPool<T> {
      * @return PooledSoftReference wrapping a soft reference to obj
      */
     private PooledSoftReference<T> findReference(final T obj) {
-        final Iterator<PooledSoftReference<T>> iterator = allReferences.iterator();
-        while (iterator.hasNext()) {
-            final PooledSoftReference<T> reference = iterator.next();
+        for (PooledSoftReference<T> reference : allReferences) {
             if (reference.getObject() != null && reference.getObject().equals(obj)) {
                 return reference;
             }
diff --git a/java/org/apache/tomcat/jni/Library.java b/java/org/apache/tomcat/jni/Library.java
index 9034e23..c6c1398 100644
--- a/java/org/apache/tomcat/jni/Library.java
+++ b/java/org/apache/tomcat/jni/Library.java
@@ -64,9 +64,9 @@ public final class Library {
         if (!loaded) {
             String path = System.getProperty("java.library.path");
             String [] paths = path.split(File.pathSeparator);
-            for (int i = 0; i < NAMES.length; i++) {
+            for (String value : NAMES) {
                 try {
-                    System.loadLibrary(NAMES[i]);
+                    System.loadLibrary(value);
                     loaded = true;
                 } catch (ThreadDeath t) {
                     throw t;
@@ -75,9 +75,9 @@ public final class Library {
                     // the JNI code identical between Tomcat 6/7/8/9
                     throw t;
                 } catch (Throwable t) {
-                    String name = System.mapLibraryName(NAMES[i]);
-                    for (int j = 0; j < paths.length; j++) {
-                        java.io.File fd = new java.io.File(paths[j] , name);
+                    String name = System.mapLibraryName(value);
+                    for (String s : paths) {
+                        File fd = new File(s, name);
                         if (fd.exists()) {
                             // File exists but failed to load
                             throw t;
diff --git a/java/org/apache/tomcat/util/Diagnostics.java b/java/org/apache/tomcat/util/Diagnostics.java
index 31ce11f..674099c 100644
--- a/java/org/apache/tomcat/util/Diagnostics.java
+++ b/java/org/apache/tomcat/util/Diagnostics.java
@@ -316,8 +316,8 @@ public class Diagnostics {
         StackTraceElement[] stes = ti.getStackTrace();
         Object[] monitorDepths = new Object[stes.length];
         MonitorInfo[] mis = ti.getLockedMonitors();
-        for (int i = 0; i < mis.length; i++) {
-            monitorDepths[mis[i].getLockedStackDepth()] = mis[i];
+        for (MonitorInfo monitorInfo : mis) {
+            monitorDepths[monitorInfo.getLockedStackDepth()] = monitorInfo;
         }
         for (int i = 0; i < stes.length; i++) {
             StackTraceElement ste = stes[i];
diff --git a/java/org/apache/tomcat/util/IntrospectionUtils.java b/java/org/apache/tomcat/util/IntrospectionUtils.java
index eef8980..49e8303 100644
--- a/java/org/apache/tomcat/util/IntrospectionUtils.java
+++ b/java/org/apache/tomcat/util/IntrospectionUtils.java
@@ -63,24 +63,24 @@ public final class IntrospectionUtils {
             Method setPropertyMethodBool = null;
 
             // First, the ideal case - a setFoo( String ) method
-            for (int i = 0; i < methods.length; i++) {
-                Class<?> paramT[] = methods[i].getParameterTypes();
-                if (setter.equals(methods[i].getName()) && paramT.length == 1
+            for (Method item : methods) {
+                Class<?> paramT[] = item.getParameterTypes();
+                if (setter.equals(item.getName()) && paramT.length == 1
                         && "java.lang.String".equals(paramT[0].getName())) {
 
-                    methods[i].invoke(o, new Object[] { value });
+                    item.invoke(o, new Object[]{value});
                     return true;
                 }
             }
 
             // Try a setFoo ( int ) or ( boolean )
-            for (int i = 0; i < methods.length; i++) {
+            for (Method method : methods) {
                 boolean ok = true;
-                if (setter.equals(methods[i].getName())
-                        && methods[i].getParameterTypes().length == 1) {
+                if (setter.equals(method.getName())
+                        && method.getParameterTypes().length == 1) {
 
                     // match - find the type and invoke it
-                    Class<?> paramType = methods[i].getParameterTypes()[0];
+                    Class<?> paramType = method.getParameterTypes()[0];
                     Object params[] = new Object[1];
 
                     // Try a setFoo ( int )
@@ -91,22 +91,25 @@ public final class IntrospectionUtils {
                         } catch (NumberFormatException ex) {
                             ok = false;
                         }
-                    // Try a setFoo ( long )
-                    }else if ("java.lang.Long".equals(paramType.getName())
-                                || "long".equals(paramType.getName())) {
-                            try {
-                                params[0] = Long.valueOf(value);
-                            } catch (NumberFormatException ex) {
-                                ok = false;
-                            }
+                        // Try a setFoo ( long )
+                    }
+                    else if ("java.lang.Long".equals(paramType.getName())
+                            || "long".equals(paramType.getName())) {
+                        try {
+                            params[0] = Long.valueOf(value);
+                        } catch (NumberFormatException ex) {
+                            ok = false;
+                        }
 
                         // Try a setFoo ( boolean )
-                    } else if ("java.lang.Boolean".equals(paramType.getName())
+                    }
+                    else if ("java.lang.Boolean".equals(paramType.getName())
                             || "boolean".equals(paramType.getName())) {
                         params[0] = Boolean.valueOf(value);
 
                         // Try a setFoo ( InetAddress )
-                    } else if ("java.net.InetAddress".equals(paramType
+                    }
+                    else if ("java.net.InetAddress".equals(paramType
                             .getName())) {
                         try {
                             params[0] = InetAddress.getByName(value);
@@ -124,17 +127,17 @@ public final class IntrospectionUtils {
                     }
 
                     if (ok) {
-                        methods[i].invoke(o, params);
+                        method.invoke(o, params);
                         return true;
                     }
                 }
 
                 // save "setProperty" for later
-                if ("setProperty".equals(methods[i].getName())) {
-                    if (methods[i].getReturnType()==Boolean.TYPE){
-                        setPropertyMethodBool = methods[i];
-                    }else {
-                        setPropertyMethodVoid = methods[i];
+                if ("setProperty".equals(method.getName())) {
+                    if (method.getReturnType() == Boolean.TYPE) {
+                        setPropertyMethodBool = method;
+                    } else {
+                        setPropertyMethodVoid = method;
                     }
 
                 }
@@ -184,17 +187,17 @@ public final class IntrospectionUtils {
             Method getPropertyMethod = null;
 
             // First, the ideal case - a getFoo() method
-            for (int i = 0; i < methods.length; i++) {
-                Class<?> paramT[] = methods[i].getParameterTypes();
-                if (getter.equals(methods[i].getName()) && paramT.length == 0) {
-                    return methods[i].invoke(o, (Object[]) null);
+            for (Method method : methods) {
+                Class<?> paramT[] = method.getParameterTypes();
+                if (getter.equals(method.getName()) && paramT.length == 0) {
+                    return method.invoke(o, (Object[]) null);
                 }
-                if (isGetter.equals(methods[i].getName()) && paramT.length == 0) {
-                    return methods[i].invoke(o, (Object[]) null);
+                if (isGetter.equals(method.getName()) && paramT.length == 0) {
+                    return method.invoke(o, (Object[]) null);
                 }
 
-                if ("getProperty".equals(methods[i].getName())) {
-                    getPropertyMethod = methods[i];
+                if ("getProperty".equals(method.getName())) {
+                    getPropertyMethod = method;
                 }
             }
 
@@ -345,11 +348,11 @@ public final class IntrospectionUtils {
     public static Method findMethod(Class<?> c, String name,
             Class<?> params[]) {
         Method methods[] = findMethods(c);
-        for (int i = 0; i < methods.length; i++) {
-            if (methods[i].getName().equals(name)) {
-                Class<?> methodParams[] = methods[i].getParameterTypes();
+        for (Method method : methods) {
+            if (method.getName().equals(name)) {
+                Class<?> methodParams[] = method.getParameterTypes();
                 if (params == null && methodParams.length == 0) {
-                    return methods[i];
+                    return method;
                 }
                 if (params.length != methodParams.length) {
                     continue;
@@ -362,7 +365,7 @@ public final class IntrospectionUtils {
                     }
                 }
                 if (found) {
-                    return methods[i];
+                    return method;
                 }
             }
         }
diff --git a/java/org/apache/tomcat/util/buf/ByteChunk.java b/java/org/apache/tomcat/util/buf/ByteChunk.java
index aa268ef..6cc4d47 100644
--- a/java/org/apache/tomcat/util/buf/ByteChunk.java
+++ b/java/org/apache/tomcat/util/buf/ByteChunk.java
@@ -806,8 +806,8 @@ public final class ByteChunk extends AbstractChunk {
         int blen = b.length;
         int offset = start;
         while (offset < end) {
-            for (int i = 0; i < blen; i++) {
-                if (bytes[offset] == b[i]) {
+            for (byte value : b) {
+                if (bytes[offset] == value) {
                     return offset;
                 }
             }
diff --git a/java/org/apache/tomcat/util/buf/HexUtils.java b/java/org/apache/tomcat/util/buf/HexUtils.java
index ab453fd..977205e 100644
--- a/java/org/apache/tomcat/util/buf/HexUtils.java
+++ b/java/org/apache/tomcat/util/buf/HexUtils.java
@@ -81,10 +81,10 @@ public final class HexUtils {
 
         StringBuilder sb = new StringBuilder(bytes.length << 1);
 
-        for(int i = 0; i < bytes.length; ++i) {
-            sb.append(hex[(bytes[i] & 0xf0) >> 4])
-                .append(hex[(bytes[i] & 0x0f)])
-                ;
+        for (byte aByte : bytes) {
+            sb.append(hex[(aByte & 0xf0) >> 4])
+                    .append(hex[(aByte & 0x0f)])
+            ;
         }
 
         return sb.toString();
diff --git a/java/org/apache/tomcat/util/buf/UriUtil.java b/java/org/apache/tomcat/util/buf/UriUtil.java
index 6eecfda..fa56150 100644
--- a/java/org/apache/tomcat/util/buf/UriUtil.java
+++ b/java/org/apache/tomcat/util/buf/UriUtil.java
@@ -49,9 +49,8 @@ public final class UriUtil {
             StringBuffer sb = new StringBuffer(custom.length() * 3);
             // Deliberately use the platform's default encoding
             byte[] ba = custom.getBytes();
-            for (int j = 0; j < ba.length; j++) {
+            for (byte toEncode : ba) {
                 // Converting each byte in the buffer
-                byte toEncode = ba[j];
                 sb.append('%');
                 int low = toEncode & 0x0f;
                 int high = (toEncode & 0xf0) >> 4;
diff --git a/java/org/apache/tomcat/util/codec/binary/Base64.java b/java/org/apache/tomcat/util/codec/binary/Base64.java
index ab89854..72cfd54 100644
--- a/java/org/apache/tomcat/util/codec/binary/Base64.java
+++ b/java/org/apache/tomcat/util/codec/binary/Base64.java
@@ -541,8 +541,8 @@ public class Base64 extends BaseNCodec {
      * @since 1.5
      */
     public static boolean isBase64(final byte[] arrayOctet) {
-        for (int i = 0; i < arrayOctet.length; i++) {
-            if (!isBase64(arrayOctet[i]) && !isWhiteSpace(arrayOctet[i])) {
+        for (byte b : arrayOctet) {
+            if (!isBase64(b) && !isWhiteSpace(b)) {
                 return false;
             }
         }
diff --git a/java/org/apache/tomcat/util/descriptor/web/FilterMap.java b/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
index a6958d3..958e98c 100644
--- a/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
+++ b/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
@@ -207,13 +207,13 @@ public class FilterMap extends XmlEncodingBase implements Serializable {
         StringBuilder sb = new StringBuilder("FilterMap[");
         sb.append("filterName=");
         sb.append(this.filterName);
-        for (int i = 0; i < servletNames.length; i++) {
+        for (String servletName : servletNames) {
             sb.append(", servletName=");
-            sb.append(servletNames[i]);
+            sb.append(servletName);
         }
-        for (int i = 0; i < urlPatterns.length; i++) {
+        for (String urlPattern : urlPatterns) {
             sb.append(", urlPattern=");
-            sb.append(urlPatterns[i]);
+            sb.append(urlPattern);
         }
         sb.append("]");
         return sb.toString();
diff --git a/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java b/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java
index 4a0dae5..a0c6d15 100644
--- a/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java
+++ b/java/org/apache/tomcat/util/descriptor/web/SecurityCollection.java
@@ -224,15 +224,15 @@ public class SecurityCollection extends XmlEncodingBase implements Serializable
         if (methods.length == 0 && omittedMethods.length == 0)
             return true;
         if (methods.length > 0) {
-            for (int i = 0; i < methods.length; i++) {
-                if (methods[i].equals(method))
+            for (String s : methods) {
+                if (s.equals(method))
                     return true;
             }
             return false;
         }
         if (omittedMethods.length > 0) {
-            for (int i = 0; i < omittedMethods.length; i++) {
-                if (omittedMethods[i].equals(method))
+            for (String omittedMethod : omittedMethods) {
+                if (omittedMethod.equals(method))
                     return false;
             }
         }
@@ -267,8 +267,8 @@ public class SecurityCollection extends XmlEncodingBase implements Serializable
      * @return <code>true</code> if the pattern is part of the collection
      */
     public boolean findPattern(String pattern) {
-        for (int i = 0; i < patterns.length; i++) {
-            if (patterns[i].equals(pattern))
+        for (String s : patterns) {
+            if (s.equals(pattern))
                 return true;
         }
         return false;
diff --git a/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java b/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
index 6ea10a6..a3008f8 100644
--- a/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
+++ b/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
@@ -306,8 +306,8 @@ public class SecurityConstraint extends XmlEncodingBase implements Serializable
 
         if (role == null)
             return false;
-        for (int i = 0; i < authRoles.length; i++) {
-            if (role.equals(authRoles[i]))
+        for (String authRole : authRoles) {
+            if (role.equals(authRole))
                 return true;
         }
         return false;
@@ -337,9 +337,9 @@ public class SecurityConstraint extends XmlEncodingBase implements Serializable
     public SecurityCollection findCollection(String name) {
         if (name == null)
             return null;
-        for (int i = 0; i < collections.length; i++) {
-            if (name.equals(collections[i].getName()))
-                return collections[i];
+        for (SecurityCollection collection : collections) {
+            if (name.equals(collection.getName()))
+                return collection;
         }
         return null;
     }
@@ -370,12 +370,12 @@ public class SecurityConstraint extends XmlEncodingBase implements Serializable
             return false;
 
         // Check all of the collections included in this constraint
-        for (int i = 0; i < collections.length; i++) {
-            if (!collections[i].findMethod(method))
+        for (SecurityCollection collection : collections) {
+            if (!collection.findMethod(method))
                 continue;
-            String patterns[] = collections[i].findPatterns();
-            for (int j = 0; j < patterns.length; j++) {
-                if (matchPattern(uri, patterns[j]))
+            String patterns[] = collection.findPatterns();
+            for (String pattern : patterns) {
+                if (matchPattern(uri, pattern))
                     return true;
             }
         }
diff --git a/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java b/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
index 5fee965..132c8d588 100644
--- a/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
+++ b/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
@@ -1033,12 +1033,11 @@ final class CallMethodMultiRule extends CallMethodRule {
             return;
         }
 
-        for (int j = 0; j < multiParams.size(); j++) {
-            Object param = multiParams.get(j);
-            if(param == null || (param instanceof String
+        for (Object param : multiParams) {
+            if (param == null || (param instanceof String
                     && !String.class.isAssignableFrom(paramTypes[multiParamIndex]))) {
                 paramValues[multiParamIndex] =
-                    IntrospectionUtils.convert((String) param, paramTypes[multiParamIndex]);
+                        IntrospectionUtils.convert((String) param, paramTypes[multiParamIndex]);
             } else {
                 paramValues[multiParamIndex] = param;
             }
diff --git a/java/org/apache/tomcat/util/digester/Digester.java b/java/org/apache/tomcat/util/digester/Digester.java
index c583e48..59e191d 100644
--- a/java/org/apache/tomcat/util/digester/Digester.java
+++ b/java/org/apache/tomcat/util/digester/Digester.java
@@ -101,10 +101,10 @@ public class Digester extends DefaultHandler2 {
                 String className = classNamesTokenizer.nextToken().trim();
                 ClassLoader[] cls = new ClassLoader[] { Digester.class.getClassLoader(),
                         Thread.currentThread().getContextClassLoader() };
-                for (int i = 0; i < cls.length; i++) {
+                for (ClassLoader cl : cls) {
                     try {
-                        Class<?> clazz = Class.forName(className, true, cls[i]);
-                        sourcesList.add((IntrospectionUtils.PropertySource) clazz.getConstructor().newInstance());
+                        Class<?> clazz = Class.forName(className, true, cl);
+                        sourcesList.add((PropertySource) clazz.getConstructor().newInstance());
                         break;
                     } catch (Throwable t) {
                         ExceptionUtils.handleThrowable(t);
@@ -938,9 +938,9 @@ public class Digester extends DefaultHandler2 {
         List<Rule> rules = matches.pop();
         if ((rules != null) && (rules.size() > 0)) {
             String bodyText = this.bodyText.toString().intern();
-            for (int i = 0; i < rules.size(); i++) {
+            for (Rule value : rules) {
                 try {
-                    Rule rule = rules.get(i);
+                    Rule rule = value;
                     if (debug) {
                         log.debug("  Fire body() for " + rule);
                     }
@@ -1198,9 +1198,9 @@ public class Digester extends DefaultHandler2 {
         List<Rule> rules = getRules().match(namespaceURI, match);
         matches.push(rules);
         if ((rules != null) && (rules.size() > 0)) {
-            for (int i = 0; i < rules.size(); i++) {
+            for (Rule value : rules) {
                 try {
-                    Rule rule = rules.get(i);
+                    Rule rule = value;
                     if (debug) {
                         log.debug("  Fire begin() for " + rule);
                     }
diff --git a/java/org/apache/tomcat/util/file/Matcher.java b/java/org/apache/tomcat/util/file/Matcher.java
index 17e5251..876abee 100644
--- a/java/org/apache/tomcat/util/file/Matcher.java
+++ b/java/org/apache/tomcat/util/file/Matcher.java
@@ -106,8 +106,8 @@ public final class Matcher {
         char ch;
 
         boolean containsStar = false;
-        for (int i = 0; i < patArr.length; i++) {
-            if (patArr[i] == '*') {
+        for (char c : patArr) {
+            if (c == '*') {
                 containsStar = true;
                 break;
             }
diff --git a/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java b/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java
index f726681..d747880 100644
--- a/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java
+++ b/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java
@@ -236,8 +236,7 @@ public class Rfc6265CookieProcessor extends CookieProcessorBase {
     private void validatePath(String path) {
         char[] chars = path.toCharArray();
 
-        for (int i = 0; i < chars.length; i++) {
-            char ch = chars[i];
+        for (char ch : chars) {
             if (ch < 0x20 || ch > 0x7E || ch == ';') {
                 throw new IllegalArgumentException(sm.getString(
                         "rfc6265CookieProcessor.invalidPath", path));
diff --git a/java/org/apache/tomcat/util/http/parser/Cookie.java b/java/org/apache/tomcat/util/http/parser/Cookie.java
index 176b2bb..17410f8 100644
--- a/java/org/apache/tomcat/util/http/parser/Cookie.java
+++ b/java/org/apache/tomcat/util/http/parser/Cookie.java
@@ -415,12 +415,12 @@ public class Cookie {
     private static SkipResult skipBytes(ByteBuffer bb, byte[] target) {
         int mark = bb.position();
 
-        for (int i = 0; i < target.length; i++) {
+        for (byte b : target) {
             if (!bb.hasRemaining()) {
                 bb.position(mark);
                 return SkipResult.EOF;
             }
-            if (bb.get() != target[i]) {
+            if (bb.get() != b) {
                 bb.position(mark);
                 return SkipResult.NOT_FOUND;
             }
diff --git a/java/org/apache/tomcat/util/json/JSONParserTokenManager.java b/java/org/apache/tomcat/util/json/JSONParserTokenManager.java
index d037108..65b359f 100644
--- a/java/org/apache/tomcat/util/json/JSONParserTokenManager.java
+++ b/java/org/apache/tomcat/util/json/JSONParserTokenManager.java
@@ -515,9 +515,7 @@ private int jjMoveNfa_0(int startState, int curPos)
                default : break;
             }
          } while(i != startsAt);
-      }
-      else
-      {
+      } else {
          int hiByte = (curChar >> 8);
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
@@ -651,9 +649,7 @@ public Token getNextToken()
       {
          matchedToken = jjFillToken();
          return matchedToken;
-      }
-      else
-      {
+      } else {
          continue EOFLoop;
       }
    }
diff --git a/java/org/apache/tomcat/util/json/JavaCharStream.java b/java/org/apache/tomcat/util/json/JavaCharStream.java
index aa07267..1390f1d 100644
--- a/java/org/apache/tomcat/util/json/JavaCharStream.java
+++ b/java/org/apache/tomcat/util/json/JavaCharStream.java
@@ -127,9 +127,7 @@ class JavaCharStream
         bufcolumn = newbufcolumn;
 
         bufpos += (bufsize - tokenBegin);
-    }
-    else
-    {
+    } else {
         System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
         buffer = newbuffer;
 
@@ -173,9 +171,7 @@ class JavaCharStream
       {
         --bufpos;
         backup(0);
-      }
-      else
-      {
+      } else {
         bufline[bufpos] = line;
         bufcolumn[bufpos] = column;
       }
@@ -357,9 +353,7 @@ class JavaCharStream
         backup(backSlashCnt - 1);
         return '\\';
       }
-    }
-    else
-    {
+    } else {
       UpdateLineColumn(c);
       return c;
     }
@@ -595,9 +589,7 @@ class JavaCharStream
     if (bufpos >= tokenBegin)
     {
       len = bufpos - tokenBegin + inBuf + 1;
-    }
-    else
-    {
+    } else {
       len = bufsize - tokenBegin + bufpos + 1 + inBuf;
     }
 
diff --git a/java/org/apache/tomcat/util/modeler/BaseModelMBean.java b/java/org/apache/tomcat/util/modeler/BaseModelMBean.java
index ceed91c..ed3ef63 100644
--- a/java/org/apache/tomcat/util/modeler/BaseModelMBean.java
+++ b/java/org/apache/tomcat/util/modeler/BaseModelMBean.java
@@ -217,9 +217,9 @@ public class BaseModelMBean implements DynamicMBean, MBeanRegistration,
 
         // Prepare our response, eating all exceptions
         AttributeList response = new AttributeList();
-        for (int i = 0; i < names.length; i++) {
+        for (String name : names) {
             try {
-                response.add(new Attribute(names[i],getAttribute(names[i])));
+                response.add(new Attribute(name, getAttribute(name)));
             } catch (Exception e) {
                 // Not having a particular attribute in the response
                 // is the indication of a getter problem
@@ -461,9 +461,8 @@ public class BaseModelMBean implements DynamicMBean, MBeanRegistration,
         // Prepare and return our response, eating all exceptions
         String names[] = new String[attributes.size()];
         int n = 0;
-        Iterator<?> items = attributes.iterator();
-        while (items.hasNext()) {
-            Attribute item = (Attribute) items.next();
+        for (Object attribute : attributes) {
+            Attribute item = (Attribute) attribute;
             names[n++] = item.getName();
             try {
                 setAttribute(item);
diff --git a/java/org/apache/tomcat/util/modeler/BaseNotificationBroadcaster.java b/java/org/apache/tomcat/util/modeler/BaseNotificationBroadcaster.java
index 7566bb3..9795cf8 100644
--- a/java/org/apache/tomcat/util/modeler/BaseNotificationBroadcaster.java
+++ b/java/org/apache/tomcat/util/modeler/BaseNotificationBroadcaster.java
@@ -95,8 +95,7 @@ public class BaseNotificationBroadcaster implements NotificationBroadcaster {
                             oldFilter.clear();
                         } else {
                             if (oldNames.length != 0) {
-                                for (int i = 0; i < newNames.length; i++)
-                                    oldFilter.addAttribute(newNames[i]);
+                                for (String newName : newNames) oldFilter.addAttribute(newName);
                             }
                         }
                         return;
diff --git a/java/org/apache/tomcat/util/modeler/Registry.java b/java/org/apache/tomcat/util/modeler/Registry.java
index 41d24b7..43e1dd6 100644
--- a/java/org/apache/tomcat/util/modeler/Registry.java
+++ b/java/org/apache/tomcat/util/modeler/Registry.java
@@ -363,9 +363,9 @@ public class Registry implements RegistryMBean, MBeanRegistration {
         }
 
         MBeanAttributeInfo attInfo[] = info.getAttributes();
-        for (int i = 0; i < attInfo.length; i++) {
-            if (attName.equals(attInfo[i].getName())) {
-                type = attInfo[i].getType();
+        for (MBeanAttributeInfo mBeanAttributeInfo : attInfo) {
+            if (attName.equals(mBeanAttributeInfo.getName())) {
+                type = mBeanAttributeInfo.getType();
                 return type;
             }
         }
@@ -389,9 +389,9 @@ public class Registry implements RegistryMBean, MBeanRegistration {
             return null;
         }
         MBeanOperationInfo attInfo[] = info.getOperations();
-        for (int i = 0; i < attInfo.length; i++) {
-            if (opName.equals(attInfo[i].getName())) {
-                return attInfo[i];
+        for (MBeanOperationInfo mBeanOperationInfo : attInfo) {
+            if (opName.equals(mBeanOperationInfo.getName())) {
+                return mBeanOperationInfo;
             }
         }
         return null;
@@ -419,10 +419,10 @@ public class Registry implements RegistryMBean, MBeanRegistration {
             return null;
         }
         MBeanOperationInfo attInfo[] = info.getOperations();
-        for (int i = 0; i < attInfo.length; i++) {
-            if (opName.equals(attInfo[i].getName())
-                && argCount == attInfo[i].getSignature().length) {
-                return attInfo[i];
+        for (MBeanOperationInfo mBeanOperationInfo : attInfo) {
+            if (opName.equals(mBeanOperationInfo.getName())
+                    && argCount == mBeanOperationInfo.getSignature().length) {
+                return mBeanOperationInfo;
             }
         }
         return null;
diff --git a/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsIntrospectionSource.java b/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsIntrospectionSource.java
index 83b80e1..ad00ff7 100644
--- a/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsIntrospectionSource.java
+++ b/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsIntrospectionSource.java
@@ -131,8 +131,8 @@ public class MbeansDescriptorsIntrospectionSource extends ModelerSource
      * @return boolean True if class is supported
      */
     private boolean supportedType(Class<?> ret) {
-        for (int i = 0; i < supportedTypes.length; i++) {
-            if (ret == supportedTypes[i]) {
+        for (Class<?> supportedType : supportedTypes) {
+            if (ret == supportedType) {
                 return true;
             }
         }
@@ -195,76 +195,78 @@ public class MbeansDescriptorsIntrospectionSource extends ModelerSource
             Hashtable<String,Method> getAttMap, Hashtable<String,Method> setAttMap,
             Hashtable<String,Method> invokeAttMap) {
 
-        for (int j = 0; j < methods.length; ++j) {
-            String name = methods[j].getName();
+        for (Method method : methods) {
+            String name = method.getName();
 
-            if (Modifier.isStatic(methods[j].getModifiers())) {
+            if (Modifier.isStatic(method.getModifiers())) {
                 continue;
             }
-            if (!Modifier.isPublic(methods[j].getModifiers())) {
+            if (!Modifier.isPublic(method.getModifiers())) {
                 if (log.isDebugEnabled()) {
-                    log.debug("Not public " + methods[j] );
+                    log.debug("Not public " + method);
                 }
                 continue;
             }
-            if (methods[j].getDeclaringClass() == Object.class) {
+            if (method.getDeclaringClass() == Object.class) {
                 continue;
             }
-            Class<?> params[] = methods[j].getParameterTypes();
+            Class<?> params[] = method.getParameterTypes();
 
-            if (name.startsWith("get") && params.length==0) {
-                Class<?> ret = methods[j].getReturnType();
+            if (name.startsWith("get") && params.length == 0) {
+                Class<?> ret = method.getReturnType();
                 if (!supportedType(ret)) {
                     if (log.isDebugEnabled()) {
-                        log.debug("Unsupported type " + methods[j]);
+                        log.debug("Unsupported type " + method);
                     }
                     continue;
                 }
-                name=unCapitalize(name.substring(3));
+                name = unCapitalize(name.substring(3));
 
-                getAttMap.put(name, methods[j]);
+                getAttMap.put(name, method);
                 // just a marker, we don't use the value
-                attMap.put(name, methods[j]);
-            } else if(name.startsWith("is") && params.length == 0) {
-                Class<?> ret = methods[j].getReturnType();
+                attMap.put(name, method);
+            }
+            else if (name.startsWith("is") && params.length == 0) {
+                Class<?> ret = method.getReturnType();
                 if (Boolean.TYPE != ret) {
                     if (log.isDebugEnabled()) {
-                        log.debug("Unsupported type " + methods[j] + " " + ret );
+                        log.debug("Unsupported type " + method + " " + ret);
                     }
                     continue;
                 }
                 name = unCapitalize(name.substring(2));
 
-                getAttMap.put(name, methods[j]);
+                getAttMap.put(name, method);
                 // just a marker, we don't use the value
-                attMap.put(name, methods[j]);
+                attMap.put(name, method);
 
-            } else if (name.startsWith("set") && params.length == 1) {
+            }
+            else if (name.startsWith("set") && params.length == 1) {
                 if (!supportedType(params[0])) {
                     if (log.isDebugEnabled()) {
-                        log.debug("Unsupported type " + methods[j] + " " + params[0]);
+                        log.debug("Unsupported type " + method + " " + params[0]);
                     }
                     continue;
                 }
                 name = unCapitalize(name.substring(3));
-                setAttMap.put(name, methods[j]);
-                attMap.put(name, methods[j]);
+                setAttMap.put(name, method);
+                attMap.put(name, method);
             } else {
                 if (params.length == 0) {
-                    if (specialMethods.get(methods[j].getName()) != null) {
+                    if (specialMethods.get(method.getName()) != null) {
                         continue;
                     }
-                    invokeAttMap.put(name, methods[j]);
+                    invokeAttMap.put(name, method);
                 } else {
                     boolean supported = true;
-                    for (int i = 0; i < params.length; i++ ) {
-                        if (!supportedType(params[i])) {
+                    for (Class<?> param : params) {
+                        if (!supportedType(param)) {
                             supported = false;
                             break;
                         }
                     }
                     if (supported) {
-                        invokeAttMap.put( name, methods[j]);
+                        invokeAttMap.put(name, method);
                     }
                 }
             }
diff --git a/java/org/apache/tomcat/util/net/jsse/JSSESupport.java b/java/org/apache/tomcat/util/net/jsse/JSSESupport.java
index 0bdc7f2..98c6eb9 100644
--- a/java/org/apache/tomcat/util/net/jsse/JSSESupport.java
+++ b/java/org/apache/tomcat/util/net/jsse/JSSESupport.java
@@ -157,10 +157,10 @@ public class JSSESupport implements SSLSupport, SSLSessionManager {
         if ( ssl_session == null)
             return null;
         StringBuilder buf=new StringBuilder();
-        for(int x=0; x<ssl_session.length; x++) {
-            String digit=Integer.toHexString(ssl_session[x]);
-            if (digit.length()<2) buf.append('0');
-            if (digit.length()>2) digit=digit.substring(digit.length()-2);
+        for (byte b : ssl_session) {
+            String digit = Integer.toHexString(b);
+            if (digit.length() < 2) buf.append('0');
+            if (digit.length() > 2) digit = digit.substring(digit.length() - 2);
             buf.append(digit);
         }
         return buf.toString();
diff --git a/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java b/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java
index 2c255f2..9f2d1ca 100644
--- a/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java
+++ b/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java
@@ -48,8 +48,8 @@ public class OpenSSLConf implements Serializable {
         String name;
         String value;
         int rc;
-        for (int i = 0; i < commands.size(); i++) {
-            cmd = commands.get(i);
+        for (OpenSSLConfCmd command : commands) {
+            cmd = command;
             name = cmd.getName();
             value = cmd.getValue();
             if (name == null) {
@@ -70,7 +70,8 @@ public class OpenSSLConf implements Serializable {
                 log.error(sm.getString("opensslconf.failedCommand", name, value,
                         Integer.toString(rc)));
                 result = false;
-            } else if (log.isDebugEnabled()) {
+            }
+            else if (log.isDebugEnabled()) {
                 log.debug(sm.getString("opensslconf.resultCommand", name, value,
                         Integer.toString(rc)));
             }
@@ -88,8 +89,8 @@ public class OpenSSLConf implements Serializable {
         String name;
         String value;
         int rc;
-        for (int i = 0; i < commands.size(); i++) {
-            cmd = commands.get(i);
+        for (OpenSSLConfCmd command : commands) {
+            cmd = command;
             name = cmd.getName();
             value = cmd.getValue();
             if (name == null) {
@@ -110,7 +111,8 @@ public class OpenSSLConf implements Serializable {
                 log.error(sm.getString("opensslconf.failedCommand", name, value,
                         Integer.toString(rc)));
                 result = false;
-            } else if (log.isDebugEnabled()) {
+            }
+            else if (log.isDebugEnabled()) {
                 log.debug(sm.getString("opensslconf.resultCommand", name, value,
                         Integer.toString(rc)));
             }
diff --git a/java/org/apache/tomcat/websocket/AuthenticatorFactory.java b/java/org/apache/tomcat/websocket/AuthenticatorFactory.java
index 0d28da4..116ab67 100644
--- a/java/org/apache/tomcat/websocket/AuthenticatorFactory.java
+++ b/java/org/apache/tomcat/websocket/AuthenticatorFactory.java
@@ -54,10 +54,8 @@ public class AuthenticatorFactory {
 
     private static Authenticator loadAuthenticators(String authScheme) {
         ServiceLoader<Authenticator> serviceLoader = ServiceLoader.load(Authenticator.class);
-        Iterator<Authenticator> auths = serviceLoader.iterator();
 
-        while (auths.hasNext()) {
-            Authenticator auth = auths.next();
+        for (Authenticator auth : serviceLoader) {
             if (auth.getSchemeName().equalsIgnoreCase(authScheme))
                 return auth;
         }
diff --git a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
index e849648..b938ade 100644
--- a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
+++ b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
@@ -432,9 +432,7 @@ public class WsWebSocketContainer implements WebSocketContainer, BackgroundProce
 
                     return connectToServerRecursive(endpoint, clientEndpointConfiguration, path, redirectSet);
 
-                }
-
-                else {
+                } else {
                     throw new DeploymentException(sm.getString("wsWebSocketContainer.invalidStatus",
                             Integer.toString(httpResponse.status)));
                 }
diff --git a/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestValidation.java b/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestValidation.java
index a557b82..85b53b3 100644
--- a/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestValidation.java
+++ b/modules/jdbc-pool/src/test/java/org/apache/tomcat/jdbc/test/TestValidation.java
@@ -192,8 +192,7 @@ public class TestValidation extends DefaultTestCase {
         Assert.assertFalse("No transaction must be running after connection is obtained", mockCxn2.isRunningTransaction());
         if (validationOutcome == ValidationOutcome.SUCCESS) {
             Assert.assertEquals("Connection with successful validation is reused", mockCxn1, mockCxn2);
-        }
-        else {
+        } else {
             Assert.assertNotEquals("Connection with failed validation must not be returned again", mockCxn1, mockCxn2);
         }
     }
@@ -404,8 +403,7 @@ public class TestValidation extends DefaultTestCase {
 
         if (validationOutcome == ValidationOutcome.SUCCESS) {
             Assert.assertEquals("Pool must contain 1 idle connection at this time", datasource.getIdle(), 1);
-        }
-        else {
+        } else {
             Assert.assertEquals("Pool must not contain any idle connection at this time", datasource.getIdle(), 0);
         }
     }
@@ -640,8 +638,7 @@ public class TestValidation extends DefaultTestCase {
         public boolean execute(String sql) throws SQLException {
             if (connection.getValidationOutcome()==ValidationOutcome.SUCCESS) {
                 return false;
-            }
-            else {
+            } else {
                 throw new SQLException("Simulated validation query failure");
             }
         }
diff --git a/test/org/apache/catalina/authenticator/TestFormAuthenticator.java b/test/org/apache/catalina/authenticator/TestFormAuthenticator.java
index bf85206..081b7b5 100644
--- a/test/org/apache/catalina/authenticator/TestFormAuthenticator.java
+++ b/test/org/apache/catalina/authenticator/TestFormAuthenticator.java
@@ -338,8 +338,7 @@ public class TestFormAuthenticator extends TomcatBaseTest {
         String originalSessionId = null;
         if (serverWillUseCookies && clientShouldUseCookies) {
             originalSessionId = client.getSessionId();
-        }
-        else {
+        } else {
             originalSessionId = client.extractPathSessionId(loginUri);
         }
         client.reset();
@@ -372,8 +371,7 @@ public class TestFormAuthenticator extends TomcatBaseTest {
         String newSessionId = null;
         if (serverWillUseCookies && clientShouldUseCookies) {
             newSessionId = client.getSessionId();
-        }
-        else {
+        } else {
             newSessionId = client.extractPathSessionId(protectedUri);
         }
         boolean sessionIdIsChanged = !(originalSessionId.equals(newSessionId));
@@ -470,13 +468,11 @@ public class TestFormAuthenticator extends TomcatBaseTest {
             requestHead.append(method).append(" ");
             if (isFullQualUri) {
                 requestHead.append(resourceUri);
-            }
-            else {
+            } else {
                 if (resourceUri == null) {
                     // the default relative url
                     requestHead.append(PROTECTED_RESOURCE_URL);
-                }
-                else {
+                } else {
                     requestHead.append(PROTECTED_RELATIVE_PATH)
                             .append(resourceUri);
                 }
@@ -614,8 +610,7 @@ public class TestFormAuthenticator extends TomcatBaseTest {
                         SESSION_PATH_PARAMETER_TAILS);
                 if (parser.hasMoreElements()) {
                     sessionId = parser.nextToken();
-                }
-                else {
+                } else {
                     sessionId = url.substring(iStart);
                 }
             }
diff --git a/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java b/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java
index f497314..5475355 100644
--- a/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java
+++ b/test/org/apache/catalina/authenticator/TestNonLoginAndBasicAuthenticator.java
@@ -369,8 +369,7 @@ public class TestNonLoginAndBasicAuthenticator extends TomcatBaseTest {
         if (expectedRC != HttpServletResponse.SC_OK) {
             Assert.assertEquals(expectedRC, rc);
             Assert.assertTrue(bc.getLength() > 0);
-        }
-        else {
+        } else {
             Assert.assertEquals("OK", bc.toString());
         }
     }
@@ -383,8 +382,7 @@ public class TestNonLoginAndBasicAuthenticator extends TomcatBaseTest {
 
         if (useCookie) {
             addCookies(reqHeaders);
-        }
-        else {
+        } else {
             if (credentials != null) {
                 List<String> auth = new ArrayList<>();
                 auth.add(credentials.getCredentials());
@@ -411,8 +409,7 @@ public class TestNonLoginAndBasicAuthenticator extends TomcatBaseTest {
                 }
                 Assert.assertTrue(methodFound);
             }
-        }
-        else {
+        } else {
             Assert.assertEquals("OK", bc.toString());
             List<String> newCookies = respHeaders.get(SERVER_COOKIE_HEADER);
             if (newCookies != null) {
diff --git a/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java b/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java
index 1b4b33f..4c26933 100644
--- a/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java
+++ b/test/org/apache/catalina/authenticator/TestSSOnonLoginAndBasicAuthenticator.java
@@ -361,8 +361,7 @@ public class TestSSOnonLoginAndBasicAuthenticator extends TomcatBaseTest {
         if (expectedRC != HttpServletResponse.SC_OK) {
             Assert.assertEquals(expectedRC, rc);
             Assert.assertTrue(bc.getLength() > 0);
-        }
-        else {
+        } else {
             Assert.assertEquals("OK", bc.toString());
         }
 }
@@ -376,8 +375,7 @@ public class TestSSOnonLoginAndBasicAuthenticator extends TomcatBaseTest {
 
         if (useCookie && (cookies != null)) {
             addCookies(reqHeaders);
-        }
-        else {
+        } else {
             if (credentials != null) {
                 List<String> auth = new ArrayList<>();
                 auth.add(credentials.getCredentials());
@@ -404,8 +402,7 @@ public class TestSSOnonLoginAndBasicAuthenticator extends TomcatBaseTest {
                 }
                 Assert.assertTrue(methodFound);
             }
-        }
-        else {
+        } else {
             String thePage = bc.toString();
             Assert.assertNotNull(thePage);
             Assert.assertTrue(thePage.startsWith("OK"));
@@ -415,8 +412,7 @@ public class TestSSOnonLoginAndBasicAuthenticator extends TomcatBaseTest {
                     // harvest cookies whenever the server sends some new ones
                     cookies = newCookies;
                 }
-            }
-            else {
+            } else {
                 encodedURL = "";
                 final String start = "<a href=\"";
                 final String end = "\">";
@@ -608,9 +604,9 @@ public class TestSSOnonLoginAndBasicAuthenticator extends TomcatBaseTest {
 
         ManagerBase manager = (ManagerBase) activeContext.getManager();
         Session[] sessions = manager.findSessions();
-        for (int i = 0; i < sessions.length; i++) {
-            if (sessions[i]!=null && sessions[i].isValid()) {
-                sessions[i].setMaxInactiveInterval(EXTRA_DELAY_SECS);
+        for (Session session : sessions) {
+            if (session != null && session.isValid()) {
+                session.setMaxInactiveInterval(EXTRA_DELAY_SECS);
                 // leave it to be expired by the manager
             }
         }
diff --git a/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java b/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
index ba7bdae..c4efc3e 100644
--- a/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
+++ b/test/org/apache/catalina/authenticator/TestSSOnonLoginAndDigestAuthenticator.java
@@ -216,8 +216,7 @@ public class TestSSOnonLoginAndDigestAuthenticator extends TomcatBaseTest {
         if (expectedReject) {
             Assert.assertEquals(expectedRC, rc);
             Assert.assertTrue(bc.getLength() > 0);
-        }
-        else {
+        } else {
             Assert.assertEquals(200, rc);
             Assert.assertEquals("OK", bc.toString());
             saveCookies(respHeaders);
@@ -249,8 +248,7 @@ public class TestSSOnonLoginAndDigestAuthenticator extends TomcatBaseTest {
         if (expectedReject1) {
             Assert.assertEquals(expectedRC1, rc);
             Assert.assertTrue(bc.getLength() > 0);
-        }
-        else {
+        } else {
             Assert.assertEquals(200, rc);
             Assert.assertEquals("OK", bc.toString());
             saveCookies(respHeaders1);
diff --git a/test/org/apache/catalina/connector/TestMaxConnections.java b/test/org/apache/catalina/connector/TestMaxConnections.java
index 833b9e9..d3bf552 100644
--- a/test/org/apache/catalina/connector/TestMaxConnections.java
+++ b/test/org/apache/catalina/connector/TestMaxConnections.java
@@ -44,12 +44,12 @@ public class TestMaxConnections extends TomcatBaseTest {
             t[i] = new ConnectThread();
             t[i].setName("ConnectThread["+i+"]");
         }
-        for (int i=0; i<t.length; i++) {
-            t[i].start();
+        for (ConnectThread thread : t) {
+            thread.start();
             Thread.sleep(50);
         }
-        for (int i=0; i<t.length; i++) {
-            t[i].join();
+        for (ConnectThread connectThread : t) {
+            connectThread.join();
         }
 
         Assert.assertEquals(MAX_CONNECTIONS, SimpleServlet.getMaxConnections());
diff --git a/test/org/apache/catalina/connector/TestOutputBuffer.java b/test/org/apache/catalina/connector/TestOutputBuffer.java
index 78855a0..1a7029d 100644
--- a/test/org/apache/catalina/connector/TestOutputBuffer.java
+++ b/test/org/apache/catalina/connector/TestOutputBuffer.java
@@ -205,8 +205,8 @@ public class TestOutputBuffer extends TomcatBaseTest{
             resp.setContentType("text/plain");
             Writer w = resp.getWriter();
 
-            for (int i = 0; i < chars.length; i++) {
-                w.write(chars[i]);
+            for (char aChar : chars) {
+                w.write(aChar);
             }
         }
     }
diff --git a/test/org/apache/catalina/connector/TestRequest.java b/test/org/apache/catalina/connector/TestRequest.java
index be2ad40..ad99d50 100644
--- a/test/org/apache/catalina/connector/TestRequest.java
+++ b/test/org/apache/catalina/connector/TestRequest.java
@@ -527,14 +527,13 @@ public class TestRequest extends TomcatBaseTest {
 
                 java.util.Arrays.sort(values);
 
-                for(int i=0; i<values.length; ++i)
-                {
-                    if(first)
+                for (String value : values) {
+                    if (first)
                         first = false;
                     else
                         out.print(",");
 
-                    out.print(name + "=" + values[i]);
+                    out.print(name + "=" + value);
                 }
             }
         }
diff --git a/test/org/apache/catalina/core/TestAsyncContextImpl.java b/test/org/apache/catalina/core/TestAsyncContextImpl.java
index 1e2122f..b320100 100644
--- a/test/org/apache/catalina/core/TestAsyncContextImpl.java
+++ b/test/org/apache/catalina/core/TestAsyncContextImpl.java
@@ -2481,8 +2481,7 @@ public class TestAsyncContextImpl extends TomcatBaseTest {
                 throws ServletException, IOException {
             if (req.getAttribute("timeout") != null) {
                 resp.sendError(503);
-            }
-            else {
+            } else {
                 final AsyncContext context = req.startAsync();
                 context.setTimeout(5000);
                 context.addListener(new AsyncListener() {
diff --git a/test/org/apache/catalina/startup/SimpleHttpClient.java b/test/org/apache/catalina/startup/SimpleHttpClient.java
index 79ab7b2..dd24d4e 100644
--- a/test/org/apache/catalina/startup/SimpleHttpClient.java
+++ b/test/org/apache/catalina/startup/SimpleHttpClient.java
@@ -229,8 +229,7 @@ public abstract class SimpleHttpClient {
             if (requestPart != null) {
                 if (first) {
                     first = false;
-                }
-                else {
+                } else {
                     Thread.sleep(requestPause);
                 }
                 writer.write(requestPart);
@@ -320,8 +319,7 @@ public abstract class SimpleHttpClient {
                 int read = reader.read(body);
                 Assert.assertEquals(contentLength, read);
                 builder.append(body);
-            }
-            else {
+            } else {
                 // not using content length, so just read it line by line
                 String line = null;
                 try {
diff --git a/test/org/apache/catalina/tribes/demos/ChannelCreator.java b/test/org/apache/catalina/tribes/demos/ChannelCreator.java
index 778726c..b27b18b 100644
--- a/test/org/apache/catalina/tribes/demos/ChannelCreator.java
+++ b/test/org/apache/catalina/tribes/demos/ChannelCreator.java
@@ -192,10 +192,9 @@ public class ChannelCreator {
         sender.setRxBufSize(43800);
         sender.setTxBufSize(25188);
 
-        Iterator<Object> i = transportProperties.keySet().iterator();
-        while ( i.hasNext() ) {
-            String key = (String)i.next();
-            IntrospectionUtils.setProperty(sender,key,transportProperties.getProperty(key));
+        for (Object o : transportProperties.keySet()) {
+            String key = (String) o;
+            IntrospectionUtils.setProperty(sender, key, transportProperties.getProperty(key));
         }
         ps.setTransport(sender);
 
@@ -237,8 +236,8 @@ public class ChannelCreator {
         }
         if ( staticMembers.size() > 0 ) {
             StaticMembershipInterceptor smi = new StaticMembershipInterceptor();
-            for (int x=0; x<staticMembers.size(); x++ ) {
-                smi.addStaticMember(staticMembers.get(x));
+            for (Member staticMember : staticMembers) {
+                smi.addStaticMember(staticMember);
             }
             channel.addInterceptor(smi);
         }
diff --git a/test/org/apache/catalina/tribes/demos/CoordinationDemo.java b/test/org/apache/catalina/tribes/demos/CoordinationDemo.java
index e214f40..f70a5e4 100644
--- a/test/org/apache/catalina/tribes/demos/CoordinationDemo.java
+++ b/test/org/apache/catalina/tribes/demos/CoordinationDemo.java
@@ -132,7 +132,7 @@ public class CoordinationDemo {
                 args = tokenize(l);
             }
         }
-        for ( int i=0; i<status.length; i++ ) status[i].stop();
+        for (Status value : status) value.stop();
     }
 
     private void cmdStop(String[] args) {
@@ -317,7 +317,7 @@ public class CoordinationDemo {
                 synchronized (System.err) {
                     System.err.println("Start failed:");
                     StackTraceElement[] els = x.getStackTrace();
-                    for (int i = 0; i < els.length; i++) System.err.println(els[i].toString());
+                    for (StackTraceElement el : els) System.err.println(el.toString());
                 }
                 status = "Start failed:"+x.getMessage();
                 error = x;
@@ -342,7 +342,7 @@ public class CoordinationDemo {
                 synchronized (System.err) {
                     System.err.println("Stop failed:");
                     StackTraceElement[] els = x.getStackTrace();
-                    for (int i = 0; i < els.length; i++) System.err.println(els[i].toString());
+                    for (StackTraceElement el : els) System.err.println(el.toString());
                 }
 
                 status = "Stop failed:"+x.getMessage();
diff --git a/test/org/apache/catalina/tribes/demos/EchoRpcTest.java b/test/org/apache/catalina/tribes/demos/EchoRpcTest.java
index 59f1003..cd0fee6 100644
--- a/test/org/apache/catalina/tribes/demos/EchoRpcTest.java
+++ b/test/org/apache/catalina/tribes/demos/EchoRpcTest.java
@@ -82,8 +82,8 @@ public class EchoRpcTest implements RpcCallback, Runnable {
                 long start = System.currentTimeMillis();
                 Response[] resp = rpc.send(channel.getMembers(),msg,options,Channel.SEND_OPTIONS_DEFAULT,timeout);
                 System.out.println("Send of ["+msg+"] completed. Nr of responses="+resp.length+" Time:"+(System.currentTimeMillis()-start)+" ms.");
-                for ( int i=0; i<resp.length; i++ ) {
-                    System.out.println("Received a response message from ["+resp[i].getSource().getName()+"] with data ["+resp[i].getMessage()+"]");
+                for (Response response : resp) {
+                    System.out.println("Received a response message from [" + response.getSource().getName() + "] with data [" + response.getMessage() + "]");
                 }
                 Thread.sleep(pause);
             }catch(Exception x){
diff --git a/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java b/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java
index a443c05..0392218 100644
--- a/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java
+++ b/test/org/apache/catalina/tribes/demos/IntrospectionUtils.java
@@ -53,24 +53,24 @@ public final class IntrospectionUtils {
             Method setPropertyMethodBool = null;
 
             // First, the ideal case - a setFoo( String ) method
-            for (int i = 0; i < methods.length; i++) {
-                Class<?> paramT[] = methods[i].getParameterTypes();
-                if (setter.equals(methods[i].getName()) && paramT.length == 1
+            for (Method item : methods) {
+                Class<?> paramT[] = item.getParameterTypes();
+                if (setter.equals(item.getName()) && paramT.length == 1
                         && "java.lang.String".equals(paramT[0].getName())) {
 
-                    methods[i].invoke(o, new Object[] { value });
+                    item.invoke(o, new Object[]{value});
                     return true;
                 }
             }
 
             // Try a setFoo ( int ) or ( boolean )
-            for (int i = 0; i < methods.length; i++) {
+            for (Method method : methods) {
                 boolean ok = true;
-                if (setter.equals(methods[i].getName())
-                        && methods[i].getParameterTypes().length == 1) {
+                if (setter.equals(method.getName())
+                        && method.getParameterTypes().length == 1) {
 
                     // match - find the type and invoke it
-                    Class<?> paramType = methods[i].getParameterTypes()[0];
+                    Class<?> paramType = method.getParameterTypes()[0];
                     Object params[] = new Object[1];
 
                     // Try a setFoo ( int )
@@ -81,22 +81,25 @@ public final class IntrospectionUtils {
                         } catch (NumberFormatException ex) {
                             ok = false;
                         }
-                    // Try a setFoo ( long )
-                    }else if ("java.lang.Long".equals(paramType.getName())
-                                || "long".equals(paramType.getName())) {
-                            try {
-                                params[0] = Long.valueOf(value);
-                            } catch (NumberFormatException ex) {
-                                ok = false;
-                            }
+                        // Try a setFoo ( long )
+                    }
+                    else if ("java.lang.Long".equals(paramType.getName())
+                            || "long".equals(paramType.getName())) {
+                        try {
+                            params[0] = Long.valueOf(value);
+                        } catch (NumberFormatException ex) {
+                            ok = false;
+                        }
 
                         // Try a setFoo ( boolean )
-                    } else if ("java.lang.Boolean".equals(paramType.getName())
+                    }
+                    else if ("java.lang.Boolean".equals(paramType.getName())
                             || "boolean".equals(paramType.getName())) {
                         params[0] = Boolean.valueOf(value);
 
                         // Try a setFoo ( InetAddress )
-                    } else if ("java.net.InetAddress".equals(paramType
+                    }
+                    else if ("java.net.InetAddress".equals(paramType
                             .getName())) {
                         try {
                             params[0] = InetAddress.getByName(value);
@@ -114,17 +117,17 @@ public final class IntrospectionUtils {
                     }
 
                     if (ok) {
-                        methods[i].invoke(o, params);
+                        method.invoke(o, params);
                         return true;
                     }
                 }
 
                 // save "setProperty" for later
-                if ("setProperty".equals(methods[i].getName())) {
-                    if (methods[i].getReturnType()==Boolean.TYPE){
-                        setPropertyMethodBool = methods[i];
-                    }else {
-                        setPropertyMethodVoid = methods[i];
+                if ("setProperty".equals(method.getName())) {
+                    if (method.getReturnType() == Boolean.TYPE) {
+                        setPropertyMethodBool = method;
+                    } else {
+                        setPropertyMethodVoid = method;
                     }
 
                 }
diff --git a/test/org/apache/catalina/tribes/demos/LoadTest.java b/test/org/apache/catalina/tribes/demos/LoadTest.java
index b139ca8..337f7e4 100644
--- a/test/org/apache/catalina/tribes/demos/LoadTest.java
+++ b/test/org/apache/catalina/tribes/demos/LoadTest.java
@@ -136,7 +136,7 @@ public class LoadTest implements MembershipListener,ChannelListener, Runnable {
                         if ( debug ) log.error("Unable to send message:"+x.getMessage(),x);
                         log.error("Unable to send message:"+x.getMessage());
                         ChannelException.FaultyMember[] faulty = x.getFaultyMembers();
-                        for (int i=0; i<faulty.length; i++ ) log.error("Faulty: "+faulty[i]);
+                        for (ChannelException.FaultyMember faultyMember : faulty) log.error("Faulty: " + faultyMember);
                         --counter;
                         if ( this.breakonChannelException ) throw x;
                     }
@@ -230,8 +230,8 @@ public class LoadTest implements MembershipListener,ChannelListener, Runnable {
 
     public static void printArray(byte[] data) {
         System.out.print("{");
-        for (int i=0; i<data.length; i++ ) {
-            System.out.print(data[i]);
+        for (byte datum : data) {
+            System.out.print(datum);
             System.out.print(",");
         }
         System.out.println("} size:"+data.length);
diff --git a/test/org/apache/catalina/tribes/demos/MapDemo.java b/test/org/apache/catalina/tribes/demos/MapDemo.java
index a45c84e..2863857 100644
--- a/test/org/apache/catalina/tribes/demos/MapDemo.java
+++ b/test/org/apache/catalina/tribes/demos/MapDemo.java
@@ -231,8 +231,8 @@ public class MapDemo implements ChannelListener, MembershipListener{
             public StringBuilder getMemberNames(Member[] members){
                 StringBuilder buf = new StringBuilder();
                 if ( members!=null ) {
-                    for (int i=0;i<members.length; i++ ) {
-                        buf.append(members[i].getName());
+                    for (Member member : members) {
+                        buf.append(member.getName());
                         buf.append("; ");
                     }
                 }
diff --git a/test/org/apache/catalina/tribes/group/TestGroupChannelMemberArrival.java b/test/org/apache/catalina/tribes/group/TestGroupChannelMemberArrival.java
index c09c05b..fb7c960 100644
--- a/test/org/apache/catalina/tribes/group/TestGroupChannelMemberArrival.java
+++ b/test/org/apache/catalina/tribes/group/TestGroupChannelMemberArrival.java
@@ -64,11 +64,11 @@ public class TestGroupChannelMemberArrival {
             };
             threads[i] = t;
         }
-        for (int i = 0; i < threads.length; i++) {
-            threads[i].start();
+        for (Thread value : threads) {
+            value.start();
         }
-        for (int i = 0; i < threads.length; i++) {
-            threads[i].join();
+        for (Thread thread : threads) {
+            thread.join();
         }
         Thread.sleep(5000);
         System.out.println(System.currentTimeMillis()
@@ -99,9 +99,9 @@ public class TestGroupChannelMemberArrival {
     @After
     public void tearDown() throws Exception {
 
-        for (int i = 0; i < channels.length; i++) {
+        for (ManagedChannel channel : channels) {
             try {
-                channels[i].stop(Channel.DEFAULT);
+                channel.stop(Channel.DEFAULT);
             } catch (Exception ignore) {
                 // Ignore
             }
diff --git a/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java b/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java
index 27b5697..61941b4 100644
--- a/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java
+++ b/test/org/apache/catalina/tribes/group/TestGroupChannelSenderConnections.java
@@ -51,8 +51,8 @@ public class TestGroupChannelSenderConnections extends LoggingBaseTest {
             channels[i].addChannelListener(listeners[i]);
         }
         TesterUtil.addRandomDomain(channels);
-        for (int i = 0; i < channels.length; i++) {
-            channels[i].start(Channel.SND_RX_SEQ|Channel.SND_TX_SEQ);
+        for (ManagedChannel channel : channels) {
+            channel.start(Channel.SND_RX_SEQ | Channel.SND_TX_SEQ);
         }
     }
 
@@ -116,8 +116,8 @@ public class TestGroupChannelSenderConnections extends LoggingBaseTest {
     @Override
     public void tearDown() throws Exception {
         try {
-            for (int i = 0; i < channels.length; i++) {
-                channels[i].stop(Channel.DEFAULT);
+            for (ManagedChannel channel : channels) {
+                channel.stop(Channel.DEFAULT);
             }
         } finally {
             super.tearDown();
diff --git a/test/org/apache/catalina/tribes/group/interceptors/TestDomainFilterInterceptor.java b/test/org/apache/catalina/tribes/group/interceptors/TestDomainFilterInterceptor.java
index 199b005..e03ddec 100644
--- a/test/org/apache/catalina/tribes/group/interceptors/TestDomainFilterInterceptor.java
+++ b/test/org/apache/catalina/tribes/group/interceptors/TestDomainFilterInterceptor.java
@@ -73,8 +73,8 @@ public class TestDomainFilterInterceptor {
             };
             threads[i] = t;
         }
-        for (int i=0; i<threads.length; i++ ) threads[i].start();
-        for (int i=0; i<threads.length; i++ ) threads[i].join();
+        for (Thread value : threads) value.start();
+        for (Thread thread : threads) thread.join();
         System.out.println("All channels started.");
         for (int i=listeners.length-1; i>=0; i-- ) {
             Assert.assertEquals("Checking member arrival length",0,listeners[i].members.size());
@@ -84,9 +84,9 @@ public class TestDomainFilterInterceptor {
     @After
     public void tearDown() throws Exception {
 
-        for (int i = 0; i < channels.length; i++) {
+        for (ManagedChannel channel : channels) {
             try {
-                channels[i].stop(Channel.DEFAULT);
+                channel.stop(Channel.DEFAULT);
             } catch (Exception ignore) {
                 // Ignore
             }
diff --git a/test/org/apache/catalina/tribes/group/interceptors/TestOrderInterceptor.java b/test/org/apache/catalina/tribes/group/interceptors/TestOrderInterceptor.java
index 61cb530..c2e76a1 100644
--- a/test/org/apache/catalina/tribes/group/interceptors/TestOrderInterceptor.java
+++ b/test/org/apache/catalina/tribes/group/interceptors/TestOrderInterceptor.java
@@ -90,8 +90,8 @@ public class TestOrderInterceptor {
             channels[0].send(dest,Integer.valueOf(value.getAndAdd(1)),0);
         }
         Thread.sleep(5000);
-        for ( int i=0; i<test.length; i++ ) {
-            Assert.assertFalse(test[i].fail);
+        for (TestListener testListener : test) {
+            Assert.assertFalse(testListener.fail);
         }
     }
 
@@ -118,19 +118,19 @@ public class TestOrderInterceptor {
         for (int i=0;i<threads.length;i++) {
             threads[i] = new Thread(run);
         }
-        for (int i=0;i<threads.length;i++) {
-            threads[i].start();
+        for (Thread item : threads) {
+            item.start();
         }
-        for (int i=0;i<threads.length;i++) {
-            threads[i].join();
+        for (Thread thread : threads) {
+            thread.join();
         }
         if (!exceptionQueue.isEmpty()) {
             Assert.fail("Exception while sending in threads: "
                     + exceptionQueue.remove().toString());
         }
         Thread.sleep(5000);
-        for ( int i=0; i<test.length; i++ ) {
-            Assert.assertFalse(test[i].fail);
+        for (TestListener testListener : test) {
+            Assert.assertFalse(testListener.fail);
         }
     }
 
diff --git a/test/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java b/test/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java
index 229294b..218eca2 100644
--- a/test/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java
+++ b/test/org/apache/catalina/tribes/test/channel/TestDataIntegrity.java
@@ -77,8 +77,12 @@ public class TestDataIntegrity {
                 }
             };
         }
-        for (int x=0; x<threads.length; x++ ) { threads[x].start();}
-        for (int x=0; x<threads.length; x++ ) { threads[x].join();}
+        for (Thread value : threads) {
+            value.start();
+        }
+        for (Thread thread : threads) {
+            thread.join();
+        }
         //sleep for 50 sec, let the other messages in
         long start = System.currentTimeMillis();
         while ( (System.currentTimeMillis()-start)<15000 && msgCount*threadCount!=listener1.count) Thread.sleep(500);
@@ -104,8 +108,12 @@ public class TestDataIntegrity {
                     }
                 };
             }
-            for (int x=0; x<threads.length; x++ ) { threads[x].start();}
-            for (int x=0; x<threads.length; x++ ) { threads[x].join();}
+        for (Thread value : threads) {
+            value.start();
+        }
+        for (Thread thread : threads) {
+            thread.join();
+        }
             //sleep for 50 sec, let the other messages in
             long start = System.currentTimeMillis();
             while ( (System.currentTimeMillis()-start)<25000 && msgCount*threadCount!=listener1.count) Thread.sleep(500);
diff --git a/test/org/apache/catalina/tribes/test/channel/TestMulticastPackages.java b/test/org/apache/catalina/tribes/test/channel/TestMulticastPackages.java
index 80c49e9..b4a1018 100644
--- a/test/org/apache/catalina/tribes/test/channel/TestMulticastPackages.java
+++ b/test/org/apache/catalina/tribes/test/channel/TestMulticastPackages.java
@@ -130,8 +130,12 @@ public class TestMulticastPackages {
                 }
             };
         }
-        for (int x=0; x<threads.length; x++ ) { threads[x].start();}
-        for (int x=0; x<threads.length; x++ ) { threads[x].join();}
+        for (Thread value : threads) {
+            value.start();
+        }
+        for (Thread thread : threads) {
+            thread.join();
+        }
         //sleep for 50 sec, let the other messages in
         long start = System.currentTimeMillis();
         while ( (System.currentTimeMillis()-start)<25000 && msgCount*threadCount!=listener1.count.get()) Thread.sleep(500);
diff --git a/test/org/apache/catalina/tribes/test/channel/TestUdpPackages.java b/test/org/apache/catalina/tribes/test/channel/TestUdpPackages.java
index 08d9f1b..990232c 100644
--- a/test/org/apache/catalina/tribes/test/channel/TestUdpPackages.java
+++ b/test/org/apache/catalina/tribes/test/channel/TestUdpPackages.java
@@ -122,8 +122,12 @@ public class TestUdpPackages {
                 }
             };
         }
-        for (int x=0; x<threads.length; x++ ) { threads[x].start();}
-        for (int x=0; x<threads.length; x++ ) { threads[x].join();}
+        for (Thread value : threads) {
+            value.start();
+        }
+        for (Thread thread : threads) {
+            thread.join();
+        }
         //sleep for 50 sec, let the other messages in
         long start = System.currentTimeMillis();
         while ( (System.currentTimeMillis()-start)<25000 && msgCount*threadCount!=listener1.count.get()) Thread.sleep(500);
@@ -170,8 +174,12 @@ public class TestUdpPackages {
                 }
             };
         }
-        for (int x=0; x<threads.length; x++ ) { threads[x].start();}
-        for (int x=0; x<threads.length; x++ ) { threads[x].join();}
+        for (Thread value : threads) {
+            value.start();
+        }
+        for (Thread thread : threads) {
+            thread.join();
+        }
         //sleep for 50 sec, let the other messages in
         long start = System.currentTimeMillis();
         while ( (System.currentTimeMillis()-start)<25000 && msgCount*threadCount!=listener1.count.get()) Thread.sleep(500);
diff --git a/test/org/apache/catalina/valves/Benchmarks.java b/test/org/apache/catalina/valves/Benchmarks.java
index 52c9cd5..752ebad 100644
--- a/test/org/apache/catalina/valves/Benchmarks.java
+++ b/test/org/apache/catalina/valves/Benchmarks.java
@@ -461,8 +461,8 @@ public class Benchmarks {
     private static class BenchmarkTest {
         public void doTest(int threadCount, Runnable[] tests) throws Exception {
             for (int iterations = 1000000; iterations < 10000001; iterations += 1000000) {
-                for (int i = 0; i < tests.length; i++) {
-                    doTestInternal(threadCount, iterations, tests[i]);
+                for (Runnable test : tests) {
+                    doTestInternal(threadCount, iterations, test);
                 }
             }
         }
diff --git a/test/org/apache/coyote/http11/TestHttp11Processor.java b/test/org/apache/coyote/http11/TestHttp11Processor.java
index f85bdcc..0ef395e 100644
--- a/test/org/apache/coyote/http11/TestHttp11Processor.java
+++ b/test/org/apache/coyote/http11/TestHttp11Processor.java
@@ -1635,9 +1635,7 @@ public class TestHttp11Processor extends TomcatBaseTest {
             if (null == req.getServerName())
             {
                 out.print("request.getServerName() is null");
-            }
-            else
-            {
+            } else {
                 out.print("request.getServerName() is [" + req.getServerName() + "]");
             }
 
diff --git a/test/org/apache/jasper/compiler/TesterValidator.java b/test/org/apache/jasper/compiler/TesterValidator.java
index 465d28c..751e8d5 100644
--- a/test/org/apache/jasper/compiler/TesterValidator.java
+++ b/test/org/apache/jasper/compiler/TesterValidator.java
@@ -42,26 +42,26 @@ public class TesterValidator {
     private static void doTestBug53867() {
         int count = 100000;
 
-        for (int j = 0; j < bug53867TestData.length; j++) {
-            Assert.assertEquals(doTestBug53867OldVersion(bug53867TestData[j]),
-                    Escape.xml(bug53867TestData[j]));
+        for (String testDatum : bug53867TestData) {
+            Assert.assertEquals(doTestBug53867OldVersion(testDatum),
+                    Escape.xml(testDatum));
         }
 
         for (int i = 0; i < 100; i++) {
-            for (int j = 0; j < bug53867TestData.length; j++) {
-                doTestBug53867OldVersion(bug53867TestData[j]);
+            for (String bug53867TestDatum : bug53867TestData) {
+                doTestBug53867OldVersion(bug53867TestDatum);
             }
         }
         for (int i = 0; i < 100; i++) {
-            for (int j = 0; j < bug53867TestData.length; j++) {
-                Escape.xml(bug53867TestData[j]);
+            for (String bug53867TestDatum : bug53867TestData) {
+                Escape.xml(bug53867TestDatum);
             }
         }
 
         long start = System.currentTimeMillis();
         for (int i = 0; i < count; i++) {
-            for (int j = 0; j < bug53867TestData.length; j++) {
-                doTestBug53867OldVersion(bug53867TestData[j]);
+            for (String bug53867TestDatum : bug53867TestData) {
+                doTestBug53867OldVersion(bug53867TestDatum);
             }
         }
         System.out.println(
@@ -69,8 +69,8 @@ public class TesterValidator {
 
         start = System.currentTimeMillis();
         for (int i = 0; i < count; i++) {
-            for (int j = 0; j < bug53867TestData.length; j++) {
-                Escape.xml(bug53867TestData[j]);
+            for (String bug53867TestDatum : bug53867TestData) {
+                Escape.xml(bug53867TestDatum);
             }
         }
         System.out.println(
diff --git a/test/org/apache/juli/TestClassLoaderLogManager.java b/test/org/apache/juli/TestClassLoaderLogManager.java
index 5a40400..641a52b 100644
--- a/test/org/apache/juli/TestClassLoaderLogManager.java
+++ b/test/org/apache/juli/TestClassLoaderLogManager.java
@@ -73,8 +73,8 @@ public class TestClassLoaderLogManager {
             // Ignore
         }
 
-        for (int i = 0; i < createThreads.length; i ++) {
-            createThreads[i].setRunning(false);
+        for (LoggerCreateThread createThread : createThreads) {
+            createThread.setRunning(false);
         }
 
         Assert.assertTrue(listThread.isRunning());
diff --git a/test/org/apache/tomcat/util/http/parser/TestMediaType.java b/test/org/apache/tomcat/util/http/parser/TestMediaType.java
index 6f16f14..35a1d74 100644
--- a/test/org/apache/tomcat/util/http/parser/TestMediaType.java
+++ b/test/org/apache/tomcat/util/http/parser/TestMediaType.java
@@ -260,9 +260,9 @@ public class TestMediaType {
         Assert.assertEquals(SUBTYPE.trim(), m.getSubtype());
 
         // Check the parameters
-        for (int i = 0; i <  parameters.length; i++) {
-            Assert.assertEquals(parameters[i].getValue().trim(),
-                    m.getParameterValue(parameters[i].getName().trim()));
+        for (Parameter parameter : parameters) {
+            Assert.assertEquals(parameter.getValue().trim(),
+                    m.getParameterValue(parameter.getName().trim()));
         }
     }
 
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 830cd63..6f1aebb 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -226,6 +226,10 @@
         Update the packaged version of the Tomcat Native Library to 1.2.24.
         (markt)
       </update>
+      <scode>
+        Refactor to use enhanced for loops where possible. Pull request by Lars
+        Grefer. (markt)
+      </scode>
     </changelog>
   </subsection>
 </section>
diff --git a/webapps/examples/WEB-INF/classes/CookieExample.java b/webapps/examples/WEB-INF/classes/CookieExample.java
index b91b52d..d84be95 100644
--- a/webapps/examples/WEB-INF/classes/CookieExample.java
+++ b/webapps/examples/WEB-INF/classes/CookieExample.java
@@ -91,14 +91,13 @@ public class CookieExample extends HttpServlet {
                 sessionId = session.getId();
             }
             out.println(rb.getString("cookies.cookies") + "<br>");
-            for (int i = 0; i < cookies.length; i++) {
-                Cookie cookie = cookies[i];
+            for (Cookie cookie : cookies) {
                 String cName = cookie.getName();
                 String cValue = cookie.getValue();
                 out.print("Cookie Name: " + HTMLFilter.filter(cName) + "<br>");
                 out.println("  Cookie Value: "
-                            + HTMLFilter.filter(CookieFilter.filter(cName, cValue, sessionId))
-                            + "<br><br>");
+                        + HTMLFilter.filter(CookieFilter.filter(cName, cValue, sessionId))
+                        + "<br><br>");
             }
         } else {
             out.println(rb.getString("cookies.no-cookies"));
diff --git a/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java b/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java
index d000070..40674b4 100644
--- a/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java
+++ b/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java
@@ -76,9 +76,7 @@ public class AsyncStockServlet extends HttpServlet implements TickListener, Asyn
 
     @Override
     public void tick(Stock stock) {
-        Iterator<AsyncContext> it = clients.iterator();
-        while (it.hasNext()) {
-            AsyncContext actx = it.next();
+        for (AsyncContext actx : clients) {
             try {
                 writeStock(actx, stock);
             } catch (Exception e) {
@@ -109,9 +107,7 @@ public class AsyncStockServlet extends HttpServlet implements TickListener, Asyn
     public void shutdown() {
         // The web application is shutting down. Complete any AsyncContexts
         // associated with an active client.
-        Iterator<AsyncContext> it = clients.iterator();
-        while (it.hasNext()) {
-            AsyncContext actx = it.next();
+        for (AsyncContext actx : clients) {
             try {
                 actx.complete();
             } catch (Exception e) {
diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java
index 32563b6..88cdd45 100644
--- a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java
@@ -46,8 +46,7 @@ public class CompressionFilterTestServlet extends HttpServlet {
             out.println(name);
             if (name.indexOf("gzip") != -1) {
                 out.println("gzip supported -- able to compress");
-            }
-            else {
+            } else {
                 out.println("gzip not supported");
             }
         }
diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java
index dd11523..1479e34 100644
--- a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java
@@ -425,8 +425,8 @@ public class CompressionResponseStream extends ServletOutputStream {
     private boolean startsWithStringArray(String sArray[], String value) {
         if (value == null)
            return false;
-        for (int i = 0; i < sArray.length; i++) {
-            if (value.startsWith(sArray[i])) {
+        for (String s : sArray) {
+            if (value.startsWith(s)) {
                 return true;
             }
         }
diff --git a/webapps/examples/WEB-INF/classes/util/HTMLFilter.java b/webapps/examples/WEB-INF/classes/util/HTMLFilter.java
index 29463fb..938bb5a 100644
--- a/webapps/examples/WEB-INF/classes/util/HTMLFilter.java
+++ b/webapps/examples/WEB-INF/classes/util/HTMLFilter.java
@@ -42,22 +42,22 @@ public final class HTMLFilter {
         char content[] = new char[message.length()];
         message.getChars(0, message.length(), content, 0);
         StringBuilder result = new StringBuilder(content.length + 50);
-        for (int i = 0; i < content.length; i++) {
-            switch (content[i]) {
-            case '<':
-                result.append("&lt;");
-                break;
-            case '>':
-                result.append("&gt;");
-                break;
-            case '&':
-                result.append("&amp;");
-                break;
-            case '"':
-                result.append("&quot;");
-                break;
-            default:
-                result.append(content[i]);
+        for (char c : content) {
+            switch (c) {
+                case '<':
+                    result.append("&lt;");
+                    break;
+                case '>':
+                    result.append("&gt;");
+                    break;
+                case '&':
+                    result.append("&amp;");
+                    break;
+                case '"':
+                    result.append("&quot;");
+                    break;
+                default:
+                    result.append(c);
             }
         }
         return result.toString();
diff --git a/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java b/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
index 3fd0a9c..a25adc8 100644
--- a/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
+++ b/webapps/examples/WEB-INF/classes/websocket/drawboard/Room.java
@@ -371,9 +371,9 @@ public final class Room {
 
                 // Run the cached runnables.
                 if (cachedRunnables != null) {
-                    for (int i = 0; i < cachedRunnables.size(); i++) {
+                    for (Runnable cachedRunnable : cachedRunnables) {
                         if (!closed) {
-                            cachedRunnables.get(i).run();
+                            cachedRunnable.run();
                         }
                     }
                     cachedRunnables = null;
diff --git a/webapps/examples/WEB-INF/jsp/applet/Clock2.java b/webapps/examples/WEB-INF/jsp/applet/Clock2.java
index c745815..128cfbd 100644
--- a/webapps/examples/WEB-INF/jsp/applet/Clock2.java
+++ b/webapps/examples/WEB-INF/jsp/applet/Clock2.java
@@ -95,8 +95,7 @@ public class Clock2 extends Applet implements Runnable {
             if (d<0) {
                 d=d+2*x+3;
                 x++;
-            }
-            else {
+            } else {
                 d=d+2*(x-y)+5;
                 x++;
                 y--;
diff --git a/webapps/examples/jsp/checkbox/checkresult.jsp b/webapps/examples/jsp/checkbox/checkresult.jsp
index a8400e9..ecbbacf 100644
--- a/webapps/examples/jsp/checkbox/checkresult.jsp
+++ b/webapps/examples/jsp/checkbox/checkresult.jsp
@@ -29,11 +29,11 @@ The checked fruits (got using request) are: <br>
 <ul>
 <%
     if (fruits != null) {
-      for (int i = 0; i < fruits.length; i++) {
+        for (String fruit : fruits) {
 %>
-<li>
-<%
-          out.println (util.HTMLFilter.filter(fruits[i]));
+    <li>
+            <%
+          out.println (util.HTMLFilter.filter(fruit));
       }
     } else out.println ("none selected");
 %>
@@ -49,11 +49,11 @@ The checked fruits (got using beans) are <br>
 <ul>
 <%
     if (!fruits[0].equals("1")) {
-      for (int i = 0; i < fruits.length; i++) {
+        for (String fruit : fruits) {
 %>
-<li>
-<%
-          out.println (util.HTMLFilter.filter(fruits[i]));
+    <li>
+            <%
+          out.println (util.HTMLFilter.filter(fruit));
       }
     } else out.println ("none selected");
 %>
diff --git a/webapps/examples/jsp/plugin/applet/Clock2.java b/webapps/examples/jsp/plugin/applet/Clock2.java
index 4ea737a..17bd9dd 100644
--- a/webapps/examples/jsp/plugin/applet/Clock2.java
+++ b/webapps/examples/jsp/plugin/applet/Clock2.java
@@ -95,8 +95,7 @@ public class Clock2 extends Applet implements Runnable {
             if (d<0) {
                 d=d+2*x+3;
                 x++;
-            }
-            else {
+            } else {
                 d=d+2*(x-y)+5;
                 x++;
                 y--;
diff --git a/webapps/examples/jsp/sessions/carts.jsp b/webapps/examples/jsp/sessions/carts.jsp
index 6fba47d..b5dc606 100644
--- a/webapps/examples/jsp/sessions/carts.jsp
+++ b/webapps/examples/jsp/sessions/carts.jsp
@@ -28,10 +28,10 @@
 <ol>
 <%
     String[] items = cart.getItems();
-    for (int i=0; i<items.length; i++) {
+    for (String item : items) {
 %>
-<li> <% out.print(util.HTMLFilter.filter(items[i])); %>
-<%
+    <li> <% out.print(util.HTMLFilter.filter(item)); %>
+            <%
     }
 %>
 </ol>


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