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

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new d11b11931d NIFI-14194 Added and Applied PMD Rule ForLoopCanBeForeach 
(#10072)
d11b11931d is described below

commit d11b11931db8c57fd06d95e0336bf0b76632cb11
Author: dan-s1 <[email protected]>
AuthorDate: Mon Jul 7 16:00:35 2025 -0400

    NIFI-14194 Added and Applied PMD Rule ForLoopCanBeForeach (#10072)
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../apache/nifi/web/HttpServletContentRequestContext.java   |  6 ++----
 .../nifi/serialization/record/ResultSetRecordSet.java       |  4 ++--
 .../java/org/apache/nifi/processors/mongodb/PutMongoIT.java | 13 ++++++-------
 .../processors/standard/db/impl/MySQLDatabaseAdapter.java   |  4 ++--
 .../test/java/org/apache/nifi/avro/TestWriteAvroResult.java |  4 ++--
 .../nifi/provenance/index/lucene/IndexDirectoryManager.java |  4 +---
 .../nifi/controller/status/history/MetricRollingBuffer.java |  2 ++
 .../status/history/VolatileComponentStatusRepository.java   |  4 ++--
 .../org/apache/nifi/remote/TestStandardRemoteGroupPort.java |  6 ++----
 .../protocol/socket/TestSocketFlowFileServerProtocol.java   |  3 +--
 .../cli/impl/result/registry/ExtensionMetadataResult.java   |  3 +--
 .../toolkit/cli/impl/result/registry/TagCountResult.java    |  3 +--
 pmd-ruleset.xml                                             |  2 +-
 13 files changed, 25 insertions(+), 33 deletions(-)

diff --git 
a/nifi-commons/nifi-content-viewer-utils/src/main/java/org/apache/nifi/web/HttpServletContentRequestContext.java
 
b/nifi-commons/nifi-content-viewer-utils/src/main/java/org/apache/nifi/web/HttpServletContentRequestContext.java
index ff5df2d032..0902e94794 100644
--- 
a/nifi-commons/nifi-content-viewer-utils/src/main/java/org/apache/nifi/web/HttpServletContentRequestContext.java
+++ 
b/nifi-commons/nifi-content-viewer-utils/src/main/java/org/apache/nifi/web/HttpServletContentRequestContext.java
@@ -58,10 +58,8 @@ public class HttpServletContentRequestContext implements 
ContentRequestContext {
         if (query != null) {
             final String[] queryParameters = query.split("&");
 
-            for (int i = 0; i < queryParameters.length; i++) {
-                if (queryParameters[0].startsWith("clusterNodeId=")) {
-                    rawClusterNodeId = 
StringUtils.substringAfterLast(queryParameters[0], "clusterNodeId=");
-                }
+            if (queryParameters[0].startsWith("clusterNodeId=")) {
+                rawClusterNodeId = 
StringUtils.substringAfterLast(queryParameters[0], "clusterNodeId=");
             }
         }
         final String clusterNodeId = rawClusterNodeId;
diff --git 
a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
 
b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
index 3357b06a7f..79dfe63d88 100644
--- 
a/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
+++ 
b/nifi-commons/nifi-record/src/main/java/org/apache/nifi/serialization/record/ResultSetRecordSet.java
@@ -380,8 +380,8 @@ public class ResultSetRecordSet implements RecordSet, 
Closeable {
             }
 
             Object valueToLookAt = null;
-            for (int i = 0; i < values.length; i++) {
-                valueToLookAt = values[i];
+            for (Object value : values) {
+                valueToLookAt = value;
                 if (valueToLookAt != null) {
                     break;
                 }
diff --git 
a/nifi-extension-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
 
b/nifi-extension-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
index e1e6eeeb1f..4521ca11e9 100644
--- 
a/nifi-extension-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
+++ 
b/nifi-extension-bundles/nifi-mongodb-bundle/nifi-mongodb-processors/src/test/java/org/apache/nifi/processors/mongodb/PutMongoIT.java
@@ -600,19 +600,18 @@ public class PutMongoIT extends MongoWriteTestBase {
         upsertOutput.assertAttributeEquals(PutMongo.ATTRIBUTE_UPSERT_ID, 
"Test");
 
         // test next flow files for update attributes
-        for (int i = 0; i < flowFilesForRelationship.size(); i++) {
-            
flowFilesForRelationship.get(i).assertAttributeNotExists(PutMongo.ATTRIBUTE_UPSERT_ID);
-            
flowFilesForRelationship.get(i).assertAttributeEquals(PutMongo.ATTRIBUTE_UPDATE_MATCH_COUNT,
 String.valueOf(1));
-            
flowFilesForRelationship.get(i).assertAttributeEquals(PutMongo.ATTRIBUTE_UPDATE_MODIFY_COUNT,
 String.valueOf(1));
+        for (MockFlowFile flowFile : flowFilesForRelationship) {
+            flowFile.assertAttributeNotExists(PutMongo.ATTRIBUTE_UPSERT_ID);
+            
flowFile.assertAttributeEquals(PutMongo.ATTRIBUTE_UPDATE_MATCH_COUNT, 
String.valueOf(1));
+            
flowFile.assertAttributeEquals(PutMongo.ATTRIBUTE_UPDATE_MODIFY_COUNT, 
String.valueOf(1));
         }
 
         Document query = new Document("_id", "Test");
         Document result = collection.find(query).first();
-        List array = (List) result.get("testArr");
+        List<Document> array = (List<Document>) result.get("testArr");
         assertNotNull(array, "Array was empty");
         assertEquals(3, array.size(), "Wrong size");
-        for (int index = 0; index < array.size(); index++) {
-            Document doc = (Document) array.get(index);
+        for (Document doc : array) {
             String msg = doc.getString("msg");
             assertNotNull(msg, "Msg was null");
             assertEquals(msg, "Hi", "Msg had wrong value");
diff --git 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/MySQLDatabaseAdapter.java
 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/MySQLDatabaseAdapter.java
index 0d11f27cd0..18ca534c8a 100644
--- 
a/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/MySQLDatabaseAdapter.java
+++ 
b/nifi-extension-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/db/impl/MySQLDatabaseAdapter.java
@@ -80,8 +80,8 @@ public class MySQLDatabaseAdapter extends 
GenericDatabaseAdapter {
                 .collect(Collectors.joining(", "));
 
         List<String> updateValues = new ArrayList<>();
-        for (int i = 0; i < columnNames.size(); i++) {
-            updateValues.add(columnNames.get(i) + " = ?");
+        for (String columnName : columnNames) {
+            updateValues.add(columnName + " = ?");
         }
         String parameterizedUpdateValues = String.join(", ", updateValues);
 
diff --git 
a/nifi-extension-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/avro/TestWriteAvroResult.java
 
b/nifi-extension-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/avro/TestWriteAvroResult.java
index 3844774704..9e455ca8ac 100644
--- 
a/nifi-extension-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/avro/TestWriteAvroResult.java
+++ 
b/nifi-extension-bundles/nifi-standard-services/nifi-record-serialization-services-bundle/nifi-record-serialization-services/src/test/java/org/apache/nifi/avro/TestWriteAvroResult.java
@@ -338,8 +338,8 @@ public abstract class TestWriteAvroResult {
                 assertEquals(objectArray.length, bb.remaining(),
                         "For field " + fieldName + ", byte buffer remaining 
should have been " + objectArray.length + " but was " + bb.remaining());
 
-                for (int i = 0; i < objectArray.length; i++) {
-                    assertEquals(objectArray[i], bb.get());
+                for (Object o : objectArray) {
+                    assertEquals(o, bb.get());
                 }
             } else if (recordValue instanceof Object[]) {
                 assertInstanceOf(Array.class, avroValue, fieldName + " should 
have been instanceof Array");
diff --git 
a/nifi-framework-bundle/nifi-framework-extensions/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/index/lucene/IndexDirectoryManager.java
 
b/nifi-framework-bundle/nifi-framework-extensions/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/index/lucene/IndexDirectoryManager.java
index 74bb5e1710..18a32dce4e 100644
--- 
a/nifi-framework-bundle/nifi-framework-extensions/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/index/lucene/IndexDirectoryManager.java
+++ 
b/nifi-framework-bundle/nifi-framework-extensions/nifi-provenance-repository-bundle/nifi-persistent-provenance-repository/src/main/java/org/apache/nifi/provenance/index/lucene/IndexDirectoryManager.java
@@ -161,9 +161,7 @@ public class IndexDirectoryManager {
         // start time of index N+1. So we determine the time range of each 
index and select an index only if
         // its start time is before the given timestamp and its end time is <= 
the given timestamp.
         for (final List<IndexLocation> locationList : 
startTimeWithFileByStorageDirectory.values()) {
-            for (int i = 0; i < locationList.size(); i++) {
-                final IndexLocation indexLoc = locationList.get(i);
-
+            for (IndexLocation indexLoc : locationList) {
                 final String partition = indexLoc.getPartitionName();
                 final IndexLocation activeLocation = 
activeIndices.get(partition);
                 if (indexLoc.equals(activeLocation)) {
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/status/history/MetricRollingBuffer.java
 
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/status/history/MetricRollingBuffer.java
index f6586f3b82..0a31797ec6 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/status/history/MetricRollingBuffer.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/status/history/MetricRollingBuffer.java
@@ -63,6 +63,7 @@ public class MetricRollingBuffer {
         return count;
     }
 
+    @SuppressWarnings("PMD.ForLoopCanBeForeach")
     public void expireBefore(final Date date) {
         if (snapshots == null) {
             return;
@@ -109,6 +110,7 @@ public class MetricRollingBuffer {
         writeIndex = initialSize;
     }
 
+    @SuppressWarnings("PMD.ForLoopCanBeForeach")
     private void compact() {
         final StatusSnapshot[] newArray = new StatusSnapshot[count + 1];
         int insertionIndex = 0;
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/status/history/VolatileComponentStatusRepository.java
 
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/status/history/VolatileComponentStatusRepository.java
index a5f67fc252..0238fd389d 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/status/history/VolatileComponentStatusRepository.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/status/history/VolatileComponentStatusRepository.java
@@ -237,8 +237,8 @@ public class VolatileComponentStatusRepository implements 
StatusHistoryRepositor
                     
snapshot.addStatusMetric(gcMetricDescriptorsDifferential.get(j), currentValue - 
previousValue);
                 }
             } else {
-                for (int j = 0; j < gcMetricDescriptorsDifferential.size(); 
j++) {
-                    
snapshot.addStatusMetric(gcMetricDescriptorsDifferential.get(j), 0L);
+                for (MetricDescriptor<List<GarbageCollectionStatus>> 
listMetricDescriptor : gcMetricDescriptorsDifferential) {
+                    snapshot.addStatusMetric(listMetricDescriptor, 0L);
                 }
             }
 
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/test/java/org/apache/nifi/remote/TestStandardRemoteGroupPort.java
 
b/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/test/java/org/apache/nifi/remote/TestStandardRemoteGroupPort.java
index b608410075..fcaa9cab7b 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/test/java/org/apache/nifi/remote/TestStandardRemoteGroupPort.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/test/java/org/apache/nifi/remote/TestStandardRemoteGroupPort.java
@@ -340,8 +340,7 @@ public class TestStandardRemoteGroupPort {
 
         // Execute onTrigger while offering new flow files.
         final List<MockFlowFile> flowFiles = new ArrayList<>();
-        for (int i = 0; i < expectedNumberOfPackets.length; i++) {
-            int numOfPackets = expectedNumberOfPackets[i];
+        for (int numOfPackets : expectedNumberOfPackets) {
             int startF = flowFiles.size();
             int endF = startF + numOfPackets;
             IntStream.range(startF, endF).forEach(f -> {
@@ -374,11 +373,10 @@ public class TestStandardRemoteGroupPort {
             final List<DataPacket> dataPackets = sentPackets.get(i);
             assertEquals(expectedNumberOfPackets[i], dataPackets.size());
 
-            for (int p = 0; p < dataPackets.size(); p++) {
+            for (DataPacket dataPacket : dataPackets) {
                 final FlowFile flowFile = flowFiles.get(f);
 
                 // Assert sent packet
-                final DataPacket dataPacket = dataPackets.get(p);
                 assertEquals(flowFile.getSize(), dataPacket.getSize());
 
                 // Assert provenance events (SEND and DROP)
diff --git 
a/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/test/java/org/apache/nifi/remote/protocol/socket/TestSocketFlowFileServerProtocol.java
 
b/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/test/java/org/apache/nifi/remote/protocol/socket/TestSocketFlowFileServerProtocol.java
index f6957aa8af..9fdd712647 100644
--- 
a/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/test/java/org/apache/nifi/remote/protocol/socket/TestSocketFlowFileServerProtocol.java
+++ 
b/nifi-framework-bundle/nifi-framework/nifi-site-to-site/src/test/java/org/apache/nifi/remote/protocol/socket/TestSocketFlowFileServerProtocol.java
@@ -169,8 +169,7 @@ public class TestSocketFlowFileServerProtocol {
             final int numPeers = dis.readInt();
             assertEquals(nodeInfoList.size(), numPeers);
 
-            for (int i = 0; i < nodeInfoList.size(); i++) {
-                final NodeInformation node = nodeInfoList.get(i);
+            for (final NodeInformation node : nodeInfoList) {
                 assertEquals(node.getSiteToSiteHostname(), dis.readUTF());
                 assertEquals(node.getSiteToSitePort().intValue(), 
dis.readInt());
                 assertEquals(node.isSiteToSiteSecure(), dis.readBoolean());
diff --git 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/result/registry/ExtensionMetadataResult.java
 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/result/registry/ExtensionMetadataResult.java
index c0ec9044ef..caa1fc6b7c 100644
--- 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/result/registry/ExtensionMetadataResult.java
+++ 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/result/registry/ExtensionMetadataResult.java
@@ -51,8 +51,7 @@ public class ExtensionMetadataResult extends 
AbstractWritableResult<List<Extensi
                 .column("Version", 8, 40, false)
                 .build();
 
-        for (int i = 0; i < extensionMetadata.size(); ++i) {
-            final ExtensionMetadata metadata = extensionMetadata.get(i);
+        for (final ExtensionMetadata metadata : extensionMetadata) {
             table.addRow(
                     metadata.getDisplayName(),
                     metadata.getBundleInfo().getBucketName(),
diff --git 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/result/registry/TagCountResult.java
 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/result/registry/TagCountResult.java
index f3fcd050bd..61d4c54487 100644
--- 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/result/registry/TagCountResult.java
+++ 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/result/registry/TagCountResult.java
@@ -48,8 +48,7 @@ public class TagCountResult extends 
AbstractWritableResult<List<TagCount>> {
                 .column("Count", 5, 20, false)
                 .build();
 
-        for (int i = 0; i < tagCounts.size(); ++i) {
-            final TagCount tagCount = tagCounts.get(i);
+        for (final TagCount tagCount : tagCounts) {
             table.addRow(tagCount.getTag(), 
String.valueOf(tagCount.getCount()));
         }
 
diff --git a/pmd-ruleset.xml b/pmd-ruleset.xml
index eb377bfa09..156d2e7ade 100644
--- a/pmd-ruleset.xml
+++ b/pmd-ruleset.xml
@@ -34,7 +34,7 @@ under the License.
 
     <rule ref="category/java/bestpractices.xml/AvoidMessageDigestField" />
     <rule ref="category/java/bestpractices.xml/AvoidReassigningCatchVariables" 
/>
-
+    <rule ref="category/java/bestpractices.xml/ForLoopCanBeForeach" />
     <rule ref="category/java/bestpractices.xml/PrimitiveWrapperInstantiation" 
/>
     <rule ref="category/java/bestpractices.xml/SimplifiableTestAssertion" />
     <rule ref="category/java/bestpractices.xml/UnusedPrivateField" />

Reply via email to